Rui Silva ([email protected])
Programação é o processo de escrita, teste e manutenção de um programa de computador. O programa é escrito numa linguagem de programação.
Resumidamente, podemos afirmar que existem quatro operações básicas que qualquer computador pode executar:
Exemplo:
resolvendo um problema... suponha que queríamos resolver o seguinte problema:
dados dois números, calcular a sua soma. Uma possível solução seria a seguinte:
Resolução em termos das operações básicas citadas anteriormente:
Em resumo, pode-se dizer que escrever algoritmos consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operações básicas citadas.
Esses passos que compõem o algoritmo são denominados de comandos. Os comandos de uma linguagem de programação podem estar mais próximos da máquina (linguagens de baixo nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto nível).
Uma linguagem de programação é um método padronizado para expressar instruções para um computador. É um conjunto de regras sintácticas e semânticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai actuar, como estes dados serão armazenados ou transmitidos e quais acções devem ser tomadas sob várias circunstâncias. O conjunto de palavras, compostos de acordo com essas regras, constitui o código fonte (Código fonte ou source code em inglês, é o conjunto de palavras escritas de forma ordenada, contendo instruções numa das linguagens de programação existentes no mercado, de maneira lógica) de um software (Software ou programa de computador é uma sequência de instruções a serem seguidas e/ ou executadas, na manipulação, redireccionamento ou modificação de um dado/ informação ou acontecimento). Esse código fonte é depois traduzido para código de máquina (todos os computadores possuem um conjunto de instruções que o seu processador é capaz de executar. Essas instruções, chamadas código máquina, são representadas por sequências de bits), que é executado pelo processador.
Um programa de computador é essencialmente um algoritmo que diz ao computador os passos específicos e em que ordens devem ser executados, como por exemplo, os passos a serem tomados para calcular as notas que serão impressas nos boletins dos alunos de uma escola.
Um algoritmo é uma sequência não ambígua de instruções que é executada até que determinada condição se verifique. Do livro “Linguagens de Programação” para o Ensino Profissional, de Artur Augusto Azul, Porto Editora:
A esse propósito, encontramos na Internet um exemplo curioso: Um algoritmo pode especificar que você calce primeiro as meias e os sapatos antes de vestir as calças, enquanto outro especifica que você deve primeiro vestir as calças e só depois calçar as meias e os sapatos. Fica claro que o primeiro algoritmo é mais difícil de executar do que o segundo.
O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita. O termo receita é utilizado no sentido de "lista de actividades que leva ao fim desejado". Isto é, um algoritmo é uma lista de actividades que, se executadas coerentemente, conforme estipulado na receita, leva sempre à resposta desejada.
Diferentes algoritmos podem realizar a mesma tarefa de várias maneiras, com performances necessariamente distintas para a completar.
Exemplo
Substituir uma lâmpada fundida
Exemplo
Substituir um pneu furado
Exemplo
Preparar bifes à milaneza
Exemplo
Calcular a área de um rectângulo
Uma constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um algoritmo. Por exemplo pi = 3.1415
A constante é classificada como sendo numérica (números), lógica (verdadeiro ou falso, um ou zero) ou literal (qualquer conjunto de caracteres).
Numérica: a representação de uma constante numérica é feita no sistema decimal, podendo ser um número com ou sem parte fraccionária. Pode ser negativa ou positiva de acordo com o sinal que precede os algarismos que compões o número.
Exemplos:
Lógica: Pode assumir os valores Verdadeiro ou Falso, Um ou Zero.
Literal: Qualquer sequência de caracteres. Deverá ser colocada entre aspas para que não seja confundida com outro elemento qualquer.
Exemplos:
Sabe-se da matemática que uma variável é uma representação simbólica dos elementos de um certo conjunto. Nos algoritmos a cada variável corresponde uma zona na memória, cujo conteúdo pode variar ao longo do tempo durante a execução do programa.
Embora uma variável possa assumir diferentes valores, só pode armazenar um único valor em cada instante.
A variável é identificada por um nome, formado por um ou mais caracteres devendo o primeiro ser uma letra. Alguns símbolos não podem ser utilizados para formar o nome de variáveis por se encontrarem reservados. Por exemplo:
/ * + - , ;
Também não é possível utilizar para definir o nome de uma variável as instruções utilizadas na linguagem, por exemplo
LER, ESCREVER, etc.
Exemplo de nomes permitidos:
Exemplo de nomes não permitidos:
É recomendável que os nomes sejam os mais significativos possíveis, isto é, que designem da melhor maneira a natureza dos valores que nelas estão armazenados.
As variáveis só podem armazenar valores de um mesmo tipo. Conforme o seu tipo a variável é classificada como sendo numérica, lógica ou literal.
Para indicar o tipo de uma variável é usada a declaração de variáveis. No momento em que se declara uma variável, é feita a associação do nome escolhido com a respectiva zona de memória que o mesmo passa a simbolizar. Qualquer referência ao nome implica a referência ao conteúdo da zona de memória.
A declaração de variáveis obedece à seguinte sintaxe:
DECLARAR lista_de_nomes_das_variáveis nome_do_tipo-de_dados
Exemplo:
O comentário é um instrumento muitas vezes ignorado mas de grande valia para a compreensão do algoritmo. Consiste num texto que aparece delimitado por um caracter especial (chavetas, pelicas, dupla barra). O comentário é ignorado e serve unicamente para explicar o significado do código onde foi inserido.
Exemplo:
Uma expressão é um conjunto de caracteres que pode representar variáveis ou constantes separados por operadores. As expressões podem ser aritméticas, literais, relacionais ou lógicas.
Denomina-se expressão aritmética aquela cujos operadores são aritméticos e cujos operandos são constantes e/ ou variáveis do tipo numérico. O conjunto de operações básicas adoptado é o que se conhece da matemática:
Operação | Operador |
---|---|
Adição | + |
Subtracção | - |
Multiplicação | * |
Divisão | / |
Potenciação | ^ |
As operações obedecem às seguintes regras de prioridade:
Uma expressão literal é formada por operadores literais e operandos que são constantes e/ ou variáveis do tipo literal. Existem várias operações possíveis com literais. O conjunto de operações básico adoptado varia com a linguagem, neste módulo vamos usar é o seguinte:
Operação | Operador |
Concatenação | + |
Exemplo:
supondo que a variável PrimeiroNome contém o literal "Rui P. " e a variável UltimoNome contém o literal "Silva", o valor fornecido pela expressão PrimeiroNome + UltimoNome seria o literal "Rui P. Silva".
Uma expressão relacional, ou simplesmente uma relação, é uma comparação realizada entre dois valores do mesmo tipo básico. Estes valores são representados na relação através de constantes, variáveis e/ ou expressões. Os operadores relacionais que indicam a comparação a ser realizada entre dois termos do mesmo tipo básico são:
Operação | Operador |
Igual a | = |
Diferente de | != ou >< |
Menor que | < |
Maior que | > |
Menor ou igual a | <= |
Maior ou igual a | >= |
O resultado obtido de uma relação é sempre um valor lógico.
É comum nos algoritmos surgirem situações em que a execução de uma acção ou uma sequência de acções está sujeita a condições. Esta condição é representada no texto do algoritmo por meio de uma expressão lógica.
Denomina-se expressão lógica à expressão cujos operadores são lógicos e cujos operadores são relações, constantes e/ ou variáveis do tipo lógico. Os operadores lógicos são:
Operação | Operador |
Conjunção | e |
Disjunção | ou |
Negação | não |
As tabelas de verdade destes operadores são as seguintes:
Tabela da Conjunção (e)
W | X | W e X |
Verdadeiro | Verdadeiro | Verdadeiro |
Verdadeiro | Falso | Falso |
Falso | Falso | Falso |
Falso | Verdadeiro | Falso |
Tabela da Disjunção (ou)
Q | B | Q ou B |
Verdadeiro | Verdadeiro | Verdadeiro |
Verdadeiro | Falso | Verdadeiro |
Falso | Falso | Falso |
Falso | Verdadeiro | Verdadeiro |
Tabela da Negação (não)
F | não F |
Verdadeiro | Falso |
Falso | Verdadeiro |
As operações obedecem à seguinte regra de prioridade.
Também nas operações lógicas vários níveis de parêntesis podem ser utilizados com a finalidade de estabelecer uma nova ordem de execução entre operadores lógicos.
O resultado obtido da avaliação de uma expressão lógica é sempre um valor lógico, isto é True ou False, Verdadeiro ou Falso, 1 ou 0.
O processo de atribuição de valores permite colocar valores de qualquer tipo básico numa variável previamente definida. A sintaxe utilizada para atribuir um determinado valor a uma variável é a seguinte:
Nome_da_variavel = expressão_do_tipo_da_variavel ou valor
Nome_da_variavel = Nome_da_variavel_a_ser_atribuida
Exemplo
algoritmo declarar Largura, Comprimento, Area numerico Largura = 75 Comprimento = 100 Area = Largura * Comprimento fim de algoritmo
Seja a seguinte situação: início de um programa que se encontra armazenado na memória principal de um computador. Como e quem determina o momento de entrada e/ ou saída de dados para o programa e a saída de resultados para o utilizador?
Isto é tarefa do programador quando descreve as acções a serem executadas. Os comandos de entrada e saída são as ferramentas para esta finalidade.
A sintaxe do comando de entrada é a seguinte:
LER lista_de_identificadores
Em que LER é uma palavra reservada e lista_de_identificadores representa o nome das variáveis e/ ou constantes, separadas por vírgulas, nas quais serão armazenados os valores provenientes de um meio de entrada (por exemplo o teclado).
Exemplo:
algoritmo declarar codigo, nota numerico ler codigo, nota ... fim de algoritmo
O programa através do comando (ou instrução) LER, espera que sejam introduzidos dois valores numéricos a partir de uma unidade de entrada. Os valores serão armazenados nas zonas de memória identificados pelos nomes codigo e nota.
A sintaxe do comando de saída é a seguinte:
ESCREVER lista_de_identificadores
.Em que ESCREVER é uma palavra reservada e lista_de_identificadores representa o nome das variáveis e/ ou constantes, separadas por vírgulas, cujos conteúdos serão mostrados ao utilizador através de um meio de saída (normalmente o monitor).
Exemplo:
algoritmo declarar idade numerico declarar nome literal ... idade = 18 nome = "Abreu Silva" escrever idade escrever nome fim de algoritmo
no exemplo seria escrito:
18
Abreu Silva
ou de uma forma mais elaborada
escrever "O ", nome, " tem ", idade, " anos."
seria escrito:
O Abreu Silva tem 18 anos
O conteúdo das variáveis nome e idade será exibido através de uma unidade de saída.
algoritmo declarar Largura, Comprimento, Area numerico escrever "Insira o valor da largura do terreno: " ler Largura escrever "Insira o valor do comprimento do terreno: " ler Comprimento Area = Largura * Comprimento escrever "A área do terreno é igual a ", Area fim de algoritmo
Além das operações aritméticas, anteriormente citadas, podem usar-se nas expressões aritméticas algumas funções muito comuns na matemática.
Abs(…) devolve o valor absoluto do argumento
Exemplo:
algoritmo declarar y, valor numerico y = - 125 valor = Abs(Y) escrever valor fim de algoritmo
no exemplo seria escrito:
125
Int(…) devolve a parte inteira do argumento
Exemplo:
algoritmo declarar p, q numerico p = 123.75 q = Int(p) escrever q fim de algoritmo
no exemplo seria escrito:
123
Sqr(…) devolve o quadrado do argumento
Exemplo:
algoritmo declarar h, quadrado numerico h = 12 quadrado = Sqr(h) escrever h, " elevado ao quadrado é igual a ", quadrado fim de algoritmo
no exemplo seria escrito:
12 elevado ao quadrado é igual a 144
Sqrt(…) devolve a raíz quadrada do argumento
Exemplo:
algoritmo declarar numero, raiz numerico numero = 81 raiz = Sqrt(Numero) escrever "A raiz quadrada de ", numero, " é igual a ", raiz fim de algoritmo
no exemplo seria escrito:
A raiz quadrada de 81 é igual a 9
Div devolve o resultado da divisão inteira
Exemplo:
algoritmo declarar q, resultado numerico q = 13 resultado = q Div 2 escrever "O resultado da divisão inteira de ", q, " por 2 é igual a ", resultado fim de algoritmo
no exemplo seria escrito:
O resultado da divisão inteira de 13 por 2 é igual a 6
Mod devolve o resto da divisão
Exemplo:
algoritmo declarar m, resultado numerico m = 13 resultado = m Mod 3 escrever "O resto da divisão de ", m, " por 3 é igual a ", resultado fim de algoritmo
no exemplo seria escrito:
O resto da divisão de 13 por 3 é igual a 1
Escreva um algoritmo que:
Num algoritmo aparecem em primeiro lugar as declarações de variáveis seguidas pelos comandos ou instruções que, se não houver indicação em contrário, deverão ser executados numa sequência linear.
algoritmo d1 d2 dn … c1 c2 cn fim de algoritmo
em que:
d1, d2, …, dn são declarações
c1, c2, …, cn são comandos
Exercícios:
A estrutura condicional permite a escolha do grupo de acções e estruturas a serem executadas quando determinada condição, representada por uma expressão lógica, é ou não satisfeita.
SE condição ENTÃO sequência de comandos FIM DE SE
A sequência de comandos só será executada se a condição for verdadeira.
Exemplo:
Ler três valores numéricos escrever uma mensagem se a soma dos dois primeiros números for maior do que o terceiro número.
algoritmo declarar a, b, c numérico ler a, b, c se a + b > c então escrever “Uma mensagem” fim de se fim de algoritmo
SE condição ENTÃO sequência de comandos A SENÃO sequência de comandos B FIM DE SE
A sequência de comandos A só será executada se a condição for verdadeira, a sequência de comandos B será executada se a condição for falsa.
Exemplo:
Dadas duas variáveis a e b numéricas, verificar se a é igual a b. Se a condição for verdadeira, colocar o valor 1 na variável x e o valor 2 na variável y. Se for falsa colocar o valor de x igual a -2 e o valor de y igual a -1. No final escrever x e y.
algoritmo declarar a, b, x, y numérico ler a, b se a = b então x = 1 y = 2 senão x = -2 y = -1 fim de se escrever x, y fim de algoritmo
Exercícios
Escreva um algoritmo que:
A estrutura de repetição permite que uma sequência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita (a condição de interrupção é representada por uma questão lógica).
Esta estrutura pode apresentar-se das seguintes formas:
REPETIR SE condição ENTÃO INTERROMPER FIM DE SE sequência de comandos FIM DE REPETIR
Nesta estrutura, a sequência de comandos será repetida enquanto a condição não for satisfeita. Quando a condição se verificar, a repetição será interrompida e a sequência de comandos que vier logo após a expressão fim de repetir será executada.
Exercício
Escreva um algoritmo que calcule a soma dos números entre 100 e 200, inclusivé. No final escrever o total.
REPETIR sequência de comandos A SE condição ENTÃO INTERROMPER FIM DE SE sequência de comandos B FIM DE REPETIR
Nesta estrutura, as sequências de comandos A e B, serão repetidas até que a condição seja satisfeita. Quando isto ocorrer a repetição será interrompida e a sequência de comandos que vier logo após a expressão fim de repetir será executada.
Exercícios
Escreva um algoritmo que calcule a soma dos números entre 100 e 200, inclusivé. No final escrever o total.
REPETIR sequência de comandos SE condição ENTÃO INTERROMPER FIM DE SE FIM DE REPETIR
Nesta estrutura, a sequência de comandos será repetida até que a condição seja satisfeita. Quando isto acontecer, a repetição será interrompida e a sequência de comandos que vier logo após a expressão fim de repetir será executada.
Exercícios
Escreva um algoritmo que calcule a soma dos números entre 100 e 200, inclusivé. No final escrever o total.
PARA Variável_Controlo = ValorInicial ATÉ ValorFinal FAZER sequência de comandos FIM DE PARA
Variável_Controlo é uma variável inteira, que será incrementada ou decrementada a partir do valor inicial até que atinja o valor final previamente estabelecido.
Valor_Inicial é o primeiro valor que a variável de controlo irá assumir. Valor_Final é o valor limite que a variável de controlo poderá assumir.
O PARA é uma estrutura de repetição incondicional, isto é, uma vez iniciada será executada quantas vezes estiver estipulado no intervalo entre ValorInicial e ValorFinal.
Exemplo
algoritmo declarar i, a, b numérico escrever(“menor número: “) ler a escrever(“maior número: “) ler b para i = a até b fazer escrever i fim para fim de algoritmo
Variáveis Compostas Unidimensionais, ou vectores correspondem a posições de memória identificadas pelo mesmo nome e individualizadas por um índice, cujo conteúdo é do mesmo tipo.
A atribuição de valores a cada posição de um vector processa-se da mesma forma como nas outas variáveis, com a excepção de ser necessário indicar especificamente qual a posição onde se irá efectuar essa atribuição.