13. O Que É Um Programa (Software)?

Um software ou programa de computador é uma sequência de instruções a serem seguidas e/ou executadas por um computador (processador) na manipulação, redirecionamento ou modificação de um dado/informação ou acontecimento. Wikipedia

Vamos dar um exemplo simples de um conjunto de instruções (programa) que manipulam o conteúdo de uma tabela.

Figura 68. Diagrama de blocos representando um programa e o conteúdo da memória no início e no final da execução do programa.

Diagrama de blocos representando um programa e o conteúdo da memória no início e no final da execução do programa.


A primeira linha da tabela, chamada de célula, representa o "endereço", a localização, do dado na memória do computador e a segunda linha, o conteúdo, representa o dado, ou a informação que será manipulado pelas instruções(comandos) do programa. A memória é, portanto, um dispositivo que guarda valores que podem ser acessados a qualquer momento pelo programa.

As linguagens de programação utilizam as variáveis para manipular as informações armazenadas na memória do computador.

13.1. Variável

Uma variável consiste em um elemento ao qual lhe damos um nome e lhe atribuímos um determinado tipo de informação. As variáveis podem ser consideradas como a base da programação.(Fonte: www.criarweb.com)

Deste modo poderíamos escrever em uma linguagem fictícia:

  • a=3

  • b=4

  • c=a+b

Se introduzíssemos um comando de impressão desta variável em nossa linguagem fictícia:

imprimir(c)

O resultado do programa seria:

7

Poderíamos da mesma forma trabalhar com variáveis que contivessem caracteres (letras) ou palavras (strings) e construir nosso programa:

  • a=Saber

  • b=é Poder

A variável que nós chamamos a possui um elemento de informação de tipo texto que é Saber. Assim como, a variável b contém o valor é Poder.

Poderíamos definir uma terceira variável que fosse a soma destas duas:

c=a+b

Com o comando imprimir(c) o resultado poderia ser:

Saber é Poder

Neste caso a operação soma implica em uma concatenação das variáveis.

Ao declararmos o tipo de uma variável, delimitamos o conjunto de valores que ela pode assumir e as operações que podemos executar com ela.

Suponha que você tem duas agendas de enderêços. Em uma delas você guarda endereços e telefones profissionais (empresas, vendedores etc) enquanto que na outra agenda você guarda os endereços dos seus(suas) amigos(as). As agendas são as variáveis e os enderêços são os conteúdos da variável. As agendas guardam conteúdos de tipos diferentes e são tratados de forma diferenciada.

Ok?

Tipos primitivos de dados:

  • Inteiro: (1, 2, 3 ...) abreviado por int pela linguagem C.

  • Caracter: (a, b, c, 1, 2, 3) abreviado por char pela linguagem C.

  • String: uma sequência de caracteres.

Se uma variável "A" é numérica e do tipo inteiro ela só pode assumir valores inteiros (1, 2, 3 ...) com os quais podem ser feitas operações aritméticas (+, -, * e /) ou lógicas (>, <, >=, <=) mas se a mesma variável é do tipo caracter, ela só pode receber conteúdos do tipo caracter (a, b, c, 1, 2, 3) e portanto não pode realizar operações matemáticas.

Atenção

Mas o valor 1 pode ser tanto um número quanto um caracter?

Uma variável numérica, pode assumir o valor "1" e neste caso o 1 é "representado" como um número pelo computador, podendo realizar operações aritméticas de soma (+), subtração(-), multiplicação(*) e divisão(/) ou operações lógicas (>, <, >=, <=).

Mas uma outra variável "caracter" pode também assumir o valor "1", e neste caso o "1" não é "representado" como um número mas como um caracter, como uma letra (a, b, c etc) tratando de forma diferenciada.

A variável string na linguagem Tcl/Tk

Em muitas linguagens de programação temos que declarar uma variável e ao mesmo tempo dizer que tipo de dado ela vai armazenar, número, texto etc, como na linguagem C. Com a linguagem Tcl/Tk só existe um tipo de dado chamado string, uma cadeia de caracteres, ou simplesmente texto. Se quisermos fazer contas em Tcl/Tk basta inserir os valores e o interpretador fará a conversão da variável para o tipo adequado durante a execução.

Na linguagem Tcl/Tk os comandos do exemplo anterior ficariam da seguinte forma:

set a "Saber "
set b "é Poder."
set c $a$b

E para exibir o resultado usaríamos o comando:

puts $c

Mas para a manipulação de variáveis numéricas usaríamos os comandos:

set a 3
set b 4
set c [expr $a + $b]
puts $c

Mais adiante vamos conhecer a linguagem Tcl/Tk sendo usada na automação de laboratórios.

13.2. O Desenvolvimento de Um Programa

Podemos resumir em 4 etapas básicas o desenvolvimento de um programa:

  1. Especificação do problema - entender as relações existentes entre os dados que são relevantes para o problema, criando uma estrutura lógica dos dados.

  2. Projeto em alto nível[1] - decidir que transformações serão efetuadas sobre os dados no algoritmo para resolver o problema

  3. Codificação - Escrita do código fonte do programa com o uso de uma Linguagem de Programação (Ex: C, Python, Tcl/Tk etc).

  4. Depuração - Verificação do comportamento e correção - avaliar se o programa satisfaz as especificações do problema.

13.2.1. O Diagrama de Blocos

O Diagrama de Bloco é uma ferramenta usada no desenvolvimento do programa cujo objetivo é descrever o método e a sequência que o programa deve seguir. É elaborado utilizando-se diversos símbolos geométricos, os quais estabelecerão as sequências de operações a serem efetuadas em um processamento computacional. Após a elaboração do diagrama de bloco, será realizada a codificação do programa em uma linguagem de programação.

Figura 69. Elementos de um diagrama de blocos.

Elementos de um diagrama de blocos.


13.2.2. Estruturas Básicas de Controle de Fluxo - Condicionais e Loops

A estrutura condicional "se" (if em inglês) permite a tomada de decisões ao longo da execução de um programa. Por exemplo selecionar qual bloco de instruções deve ser executado dependendo "se" uma condição foi (ou não) satisfeita.

Figura 70. Estrutura condicional "se" (if)

Estrutura condicional "se" (if)


Sintaxe simplificada da estrutura "se" (if) para a linguagem Tcl:

...
if { condição } {
     comando 1
} else {
     comando 2
}
...

Os loops servem para executar um comando ou script repetidamente.

O loop "enquanto"(while) executa um comando (ou vários) enquanto uma condição for verdadeira.

Figura 71. Loop "enquanto" (while)

Loop "enquanto" (while)


Sintaxe simplificada do loop "enquanto" (while) na linguagem Tcl:

...
while { condição } {
     comando 1
     comando 2
}
...

O loop "até" (for) começa pela definição de um contador e de um limite, em seguida um teste para verificar se o valor do contador ultrapassou o limite e após a execução do(s) comando(s) o incremento no valor do contador com repetição do teste. Quando o contador ultrapassar o limite estabelecido o programa "sai" do loop for.

Figura 72. Loop "até" (for)

Loop "até" (for)


Sintaxe simplificada do loop "até" (for) na linguagem Tcl:

...
for { Início Contador } { Contador maior que Limite? } { incrementa Contador } {
     comando(s)
}
...

Exercício 1

Montar um diagrama de fluxo para um programa que calcule a soma dos N números inteiros (1, 2, 3, ... N), imprimindo o resultado final.

Resolução! Mas antes tente fazer ! :)

13.2.2.1. Linguagens de Programação para iniciantes

http://www.hardware.com.br/livros/entendendo-linux/linguagens-programacao.html



[1] Alto Nível quer dizer, ao nível de compreensão humana, ou seja, quais as decisões que tomamos para resolver um problema.