UFCD 0134
ALGORITMIA
Textos e materiais retirados do livro "Aplicações Informáticas B - 12ºAno", Porto Editora, Autores Dalila Fonseca; Deolinda Pacheco; Fernando Marques; Ricardo Soares
1. INTRODUÇÃO
1.1 Linguagens naturais e linguagens formais
Linguagem - forma de comunicação, que utiliza símbolos e determinadas regras para os combinar.
Linguagens naturais
-
linguagem falada ou escrita
-
não foram projetadas pelas pessoas
-
são passíveis de várias interpretações e sofrem transformações naturais ao longo do tempo
Linguagens formais
-
são previamente projectáveis para determinados fins
-
são desenvolvidas de forma a evitar a ambiguidade e a redundância
Assim as linguagens de programação, entendidas pelos computadores, são linguagens formais construídas, isto é, do tipo formal:
Linguagem de programação: Sistema de escrita formal, constituído por um conjunto de regras para a escrita de programas de computador
Programa: conjunto de instruções numa linguagem de programação
Instrução: especificação ao processador da ação a executar
Existem milhares de linguagens de programação, estando divididas em dois níveis:
- baixo nível: quando a sua linguagem se aproxima mais da linguagem-máquina
- alto nível: quando a sua linguagem se aproxima mais da linguagem-humana. Estas linguagens necessitam de um interpretador para converter em linguagem-máquina, de forma ao computador compreender as instruções.
1.2 Algoritmos e pseudocódigo
Uma linguagem de programação tem como objetivo expressar um processo que, com o auxilio do computador, tende a resolver um problema.
Para resolver o problema é preciso criar um programa numa linguagem escolhida.
No entanto, para efetuar a passagem do problema para o programa, convém elaborar um algoritmo que possibilite a compreensão e a descrição do problema e que seja de fácil conversão para qualquer linguagem de programação.
Sendo assim, um algoritmo é uma sequência finita de instruções descritas de forma lógica, ordenada, clara e precisa a fim de resolver o problema.
Um algoritmo pode ser escrito com o auxílio de uma linguagem natural, utilizando expressões precisas. Mas existem outros modos de especificação, nomeadamente o fluxograma e o pseudocódigo.
No fluxograma utiliza-se uma representação gráfica.
No pseudocódigo utiliza-se uma representação textual (português estruturado)
Os fluxogramas utilizam símbolos gráficos para representar o fluxo das ações necessárias para resolver um problema, tal como é apresentado no quadro seguinte:
Os pseudocódigos utilizam uma representação textual (narrativa) constituída por palavras da linguagem natural e pela sintaxe característica das linguagens de programação estruturada.
Não existe uma notação standard do pseudocódigo, mas o quadro seguinte apresenta alguns elementos presentes numa linguagem de programação estruturada e que servem de base também às notações do pseudocódigo.
Para construir um algoritmo é necessário:
-
compreender o problema (o que se pretende)
-
identificar os dados de entrada (os dados que são fornecidos e a sua situação inicial)
-
identificar os dados de saída (os dados resultantes do processamento)
-
identificar as operações de processamento (os cálculos e as restrições para a obtenção dos dados de saída a partir dos dados de entrada)
-
elaborar o algoritmo, definindo:
-
as variáveis necessárias para armazenar as entradas e efetuar o processamento;
-
as instruções necessárias
6. testar o algoritmo
Numa abordagem estruturada, os programas podem ser divididos em duas partes:
-
declaram-se, por exemplo, os dados e as variáveis
-
definem-se as instruções que caracterizam as operações necessárias para atingir os objetivos
EXEMPLO: somar dois números
2. CONCEITOS FUNDAMENTAIS
2.1 Introdução
O computador é uma máquina constituída por hardware e software, que tem a capacidade de receber, armazenar e fornecer dados, depois de processados, de forma automática, rápida e precisa.
2.2. Dados
Um dado é uma informação processada por um programa de computador. Os dados são classificados (divididos) em 2 grandes categorias:
Dados simples
Dados estruturados
1. Dados Simples
São classificados em:
-
Números Inteiros (Integer)
-
Números Reais (Double)
-
Caracteres (String)
-
Lógicos (Boolean)
2. Dados Estruturados
São conjuntos de dados simples. Estão divididos em:
-
Arrays
-
Registos
Números Inteiros (Integer)
São valores numéricos, positivos ou negativos, sem a parte decimal (vírgula).
Os números inteiros podem representar valores de notas do aluno, idades de pessoas, distâncias em km, temperaturas, pontos de uma equipa, etc. Exemplos:
10
33
300
-5
0
100000
Números Reais (Double)
São valores numéricos, positivos ou negativos, com ponto decimal.
Podem ser valores de média de notas do aluno, valor de pi, comprimento microscópico de uma célula, etc. Exemplos:
431.82
3.1415
0.00012
-0.5
10000.001
Caracteres (String)
São valores alfanuméricos, isto é, conjuntos de caracteres que podem ter letras, números e outros caracteres. Estes dados têm, obrigatoriamente, o sinal de aspas (“) no princípio e no fim.
Os dados que têm letras e caracteres especiais, como nomes e moradas, são sempre do tipo STRING. Exemplos:
“Escola Secundária“
“10º ano”
“5 de Outubro de 1910“
“22º Centígrados“
““
“P.S.I. “
Lógicos (Boolean)
Os dados lógicos têm apenas 2 valores possíveis:
Verdadeiro (True)
Falso (False)
-----
2.3 Variáveis e constantes
Os dados dos programas podem ser de 2 tipos:
1. Variáveis
2. Constantes
1. Variável
É um dado que pode ser alterado durante o programa.
2. Constante
É um dado que nunca é alterado durante o programa.
Variáveis e constantes guardam os valores utilizados nos programas. As variáveis e as constantes têm um nome chamado identificador. Exemplos:
Largura
Comprimento
Area
Idade
Temperat
Nome_Aluno
Media
C
N1
As constantes são criadas e recebem um valor “fixo” durante um programa. Exemplos:
Max = 100
IVA = 0.23
Pi = 3.1415
Regras no nome de uma variável
O nome de uma variável:
1. Pode ter letras (maiúsculas ou minúsculas), algarismos e o símbolo underscore (para separar duas ou mais palavras).
2. Tem que começar por uma letra.
3. Não pode ter símbolos nem espaços. Exemplo: * + > < ( ) # ! ; , . : “ - & €
4. Deve evitar caracteres acentuados (regra não obrigatória).
5. Deve ter um máximo de 255 caracteres (é aconselhado não usar muitos caracteres para evitar erros).
6. Deve ser significativo (corresponder à sua função).
Exemplos de nomes válidos para variáveis:
Aluno
Idade
Comprimento
Area
Temperat
Temperatura_maxima (é válido mas não deve ser utilizado porque tem muitos caracteres)
Xyz (é válido mas não deve ser utilizado porque não é significativo)
Área (é válido mas não deve ser utilizado porque tem um carácter com acento)
Exemplos de nomes não válidos:
1aluno (não começa por uma letra)
Idade pessoa (tem espaço)
Tempº (tem símbolo)
C*L (tem símbolo)
Atribuir valores a variáveis
Utiliza-se o símbolo = para atribuir valores. Atribuir significa guardar um valor numa variável. Exemplos:
idade = 15
nome = “João“
media = 13.6
nomeAluno = TextBox1.Text
comp = TextBox1.Text
larg = TextBox2.Text
area = comp * larg
Operadores
Existem 3 tipos de operadores :
1. Aritméticos
2. Relacionais ou de comparação
3. Lógicos
1. Operadores Aritméticos
São utilizados para efectuar cálculos:
+ Somar
- Subtrair
* Multiplicar
/ Dividir
^ Expoente
2. Operadores Relacionais
Servem para comparar 2 valores:
= Igual a
> Maior que
< Menor que
>= Maior ou igual a
<= Menor ou igual a
<> Diferente de
3. Operadores lógicos
Utilizados para avaliar várias expressões:
AND ‘e’
OR ‘ou’
NOT ‘não’
Exemplos:
nota > 9 AND nota <= 20 … se a nota for positiva…
localidade = “porto” OR localidade = “PORTO”
NOT Nota >= 10 … se a nota não for positiva…
Expressões
Expressões são cálculos feitos com números, variáveis e operadores.
O valor calculado nas expressões é guardado numa variável.
Exemplo 1:
idade1 = 18
idade2 = 17
media = (idade1 + idade2) / 2
Exemplo 2:
preco = 8.50
ValorIva = preco * 0.23
Prioridade de operadores aritméticos
As expressões são calculadas atendendo à prioridade dos operadores.
As operações numa expressão são calculadas pela seguinte ordem:
1.Expoente ^
2.Multiplicação e divisão * /
3.Soma e subtracção + -
Os parêntesis permitem alterar a ordem natural dos operadores. Exemplo:
1 + 3 * 3 … = ?
(1 + 3) * 3 … = ?
---------------------------------------------------------------------------------------------------------------------------
Exercício de aplicação 3
---------------------------------------------------------------------------------------------------------------------------
1. Identifique os tipos de dados seguintes (Inteiro, real, caracteres ou lógico):
a) 545
b) “15 pontos”
c) -123
d) 10.1
e) -0.1
f) False
g) “a”
h) 1000
i) “Portugal”
j) True
k) 500.01
l) “123”
m) “Falso”
2. Indique qual o tipo de dados que se deve utilizar para guardar:
a) Idades de pessoas
b) Moradas e localidades
c) Preços de produtos
d) Notas de testes
e) Nomes de países
f) Altura, em metros, de pessoas
g) Médias de valores
h) Marcas de automóveis
i) Telefones
3. Indique se o nome de cada variável seguinte é Válido, Não é válido ou Válido mas não deve ser utilizado. Caso não seja válido, explique porquê.
a) nota
b) Peso1
c) Taxaiva
d) Primeiro aluno
e) Escola secundária
f) Melhor_nota
g) 40kms
h) %desconto
i) Distancia_percorrida
j) p1p
k) Estação
l) xp12ahz
m) pi
n) mes2
o) Ano2011
4. Calcule o valor das seguintes expressões:
a) valor = 5 * 4 + 2
b) a = 10 / 2 * 4
c) b = (3 + 4) * 3
d) c = 2 ^ 3
e) d = 4 + 8 / 2
f) media = (4 + 8) / 2
g) e = 3 + 6 * 5 – 10 / 2 - 5 ^ 2
h) f = 2 * (3 – 1 + 4 * 2) ^ 2
5. Dadas as expressões, calcule o valor da variável final:
a) Idade1 = 17
Idade2 = 14
Media = (Idade1 + Idade2) /2
b) Preco = 100
Iva = 0.23
PrecoFinal = Preco + Preco * Iva
c) N1 = 3
N2 = 2
N3 = 1
Dinheiro = 5 * N1 + 10 * N2 + 20 * N3
---------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
2.4 Operadores e expressões
Os operadores são elementos matemáticos que atuam sobre os operandos (variáveis e constantes), numa determinada expressão.
As expressões, por sua vez, são uma combinação de operandos e operadores e que, uma vez resolvidas, resultam num determinado valor.
2.4.1 Operadores aritméticos
Os operadores aritméticos permitem a realização de operações matemáticas com valores do tipo numérico, cujo resultado é ainda um valor do tipo numérico.
2.4.2 Operadores relacionais
Os operadores relacionais sao usados para efetuar comparações entre expressões, resultando sempre um dos valores lógicos, true (verdadeiro) ou false (falso).
2.4.3 Operadores lógicos
Os operadores lógicos realizam operações lógicas, devolvendo sempre um dos valores lógicos, true ou false.
Os resultados apresentados no quadro acima, têm por base os valores das tabelas de verdade de cada operador lógico, apresentado no seguinte quadro:
2.4.4 Prioridades dos operadores
Em expressões com vários operadores matemáticos, é necessário conhecer as regras de prioridade para obter os resultados corretos.
Importa referir que, tal como na matemática, o uso de parêntesis nas expressões dá prioridade às operações que se encontram dentro destes relativamente a outras que se encontram fora de parêntesi
-------------------------------------------------------------------------------------------------------------------------
Exercício de aplicação 4
-------------------------------------------------------------------------------------------------------------------------
3. TESTE E CONTROLO DE ERROS EM ALGORITMIA
O teste e controlo de erros num algoritmo permitem verificar se este resolve o problema pretendido. Para isso, utiliza-se a técnica de tracing (traçagem), que permite acompanhar passo-a-passo a execução do algoritmo, eliminando, desta forma, a possibilidade de erros.
O tracing consiste, assim, em testar um algoritmo com valores de entrada, observando o comportamento interno ao longo dos vários passos que compõem o algoritmo.
Na implementação desta técnica, começa-se por criar uma tabela (ver abaixo). Depois, coloca-se na primeira linha as variáveis, as condições ou expressões lógicas e as operações que se pretendem testar. De seguida, vão-se enumerando os passos na primeira coluna. Por último, preenche-se a tabela passo a passo, atribuindo às variáveis a e b os valores de entrada 4 e 5, respetivamente, e executando as operações presentes no algoritmo:
-------------------------------------------------------------------------------------------------------------------------
Exercício de aplicação 5
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
Exercício de aplicação 6
-------------------------------------------------------------------------------------------------------------------------
1. Considere o seguinte algoritmo, que permite calcular o perímetro de um triângulo equilátero:
Algoritmo equilatero;
Variáveis lado, perimetro: inteiro;
Início
Escrever ("Introduza o valor:");
Ler(lado);
perimetro <- lado * 3;
Escrever("Triângulo equilátero, lado=", lado," e perímetro=", perimetro);
Fim.
2. Preencha a tabela seguinte, identificando os elementos relativos à traçagem deste algoritmo, considerando os seguintes valores de entrada:
2.1 lado = 24
2.2 lado = 13
lado. perimetro <- lado * 3 Saída
1º passo a)
2º passo 24 b)
3º passo c) 72 Triângulo equilátero, lado=24 e perímetro=72
1º passo 13
2º passo 13 d)
3º passo 13 39 e)
3. Considere o algoritmo que se segue, que permite efetuar a leitura de três valores inteiros e calcular o triplo do primeiro valor, o produto do segundo valor com o terceiro e o quadrado do terceiro valor.
Algoritmo calcula_1;
Variáveis a, b, c, triplo, produto, quadrado: inteiro;
Início
Ler(a);
Ler(b);
Ler(c);
triplo <- a * 3;
produto <- b * c;
quadrado <- c ^ 2;
Escrever("O triplo de ", a, " é: ", triplo);
Escrever("O produto de ", b, " com ", c, " é: ", produto);
Escrever("O quadrado de ", c, " é: ", quadrado);
Fim.
Efetue a traçagem do algoritmo anterior, considerando os seguintes valores de entrada de dados:
[10,3,5] e [8,-1,0]
4. Considere o algoritmo que se segue, que permite calcular o quíntuplo da soma do dobro de dois números inteiros.
Algoritmo Quintuplo;
Variáveis num1, num2, soma_quad, quintuplo: inteiro;
Início
Escrever("Quais os números?");
Ler(num1, num2);
soma_quad <- num1 * 2 + num2 * 2;
quintuplo <- soma_quad * 5;
Escrever("O resultado da operação é: ", quintuplo);
Fim.
Apresente a traçagem para os seguintes valores
4.1. num1=5 e num2=3
4.2. num1=10 e num2=5
Teste
4. Instruções em Visual Basic
-
Declaração de variáveis
-
Instruções de Input (entrada de dados)
-
Instruções de Processamento
-
Instruções de Output (saída de resultados)
Exemplo:
Pretende-se calcular a área de um retângulo através dos valores do comprimento e da largura.
Declaração de variáveis
Declarar uma variável significa informar que o programa vai utilizar essa variável. Dim … As serve para declarar uma variável.
Depois da palavra As indica-se o tipo de dados que a variável vai guardar.
-
Dim Comprim As Integer Declara a variável Comprim para guardar nºs inteiros
-
Dim Largura As Integer Declara a variável Largura para guardar nºs inteiros
-
Dim Area As Integer Declara a variável Area para guardar nºs inteiros
Outros Exemplos:
-
Dim nome As String Declara a variável Nome para guardar caracteres
-
Dim media As Double Declara a variável Media para guardar n.ºs reais
-
Dim aprovado As Boolean Declara a ...
Instruções de Input
Estas instruções permitem guardar numa variável o valor introduzido num objeto pelo utilizador
Variável = Objeto.Propriedade
Comp = TextBox1.Text Guarda na variável Comp o valor escrito pelo utilizador no objeto TextBox1
Larg = TextBox2.text Guarda na variável Larg o valor da TextBox2
Instruções de Processamento
São instruções que permitem efetuar os cálculos aritméticos e lógicos
Area = Comp * Larg Guarda na variável Area a operação de multiplicação
Instruções de Output
Estas instruções permitem escrever dados calculados pelo computador no ecrã
Objeto.Propriedade = Valor
Label3.Text = Area Escreve no objeto Label 3 o valor guardado na variável Area
Outros Exemplos:
Label1.Text = “Olá Mundo!” Escreve na Label a frase indicada entre aspas
Label1.Text = “” Apaga o texto que estiver escrito no objeto label
Funções diversas
textbox1.clear limpar o conteúdo de uma textbox
math.sqrt(num) calcula a raiz quadrada de um número
math.round(num, n) faz o arredondamento do num para n casas decimais
exemplo: sendo num=15,256 então math.round(num, 1) dará o resultado de15.3
EXERCÍCIOS PRÁTICOS
Para cada um dos programas construa o Algoritmo (Pseudocódigo e Fluxograma) e por fim o programa em VisualBasic
ESTRUTURAS DE DECISÃO
If...Then...Else
Select Case ...
1
If...Then...Else
2
Select Case
3
Objecto ScroolBar
4
Objecto NumericUpDown
ESTRUTURAS DE REPETIÇÃO
For...Next
5
For...Next