Buscar

Conceitos de Algoritmos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 111 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 111 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 111 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
Algoritmos 
 
 
Conceitos Introdutórios sobre 
Construção de Algoritmos 
 
 
Algoritmo 
Algoritmo não 
computacional 
cujo objetivo é 
usar um 
telefone público. S
E
Q
U
Ê
N
C
I
A
L 
 
DESVIO 
Início 
1. Tirar o fone do gancho; 
2. Ouvir o sinal de linha; 
3. Introduzir o cartão; 
4. Teclar o número desejado; 
5. Se der o sinal de chamar 
 5.1 Conversar; 
 5.2 Desligar; 
 5.3 Retirar o cartão; 
 6. Senão 
 6.1 Repetir; 
Fim. 
Algoritmo 
 Involuntariamente, já seguimos uma determinada 
seqüência de ações que, representadas neste 
algoritmo, fazem com que ele seja seguido 
naturalmente por pessoas, estabelecendo um padrão 
de comportamento. 
 É assim também com os algoritmos escritos para 
computador, você deve especificar todos os passos, 
para que o computador possa chegar ao objetivo. 
Introdução 
 Para que exista comunicação é necessário estabelecer 
padrões e regras que podem ser: 
 falados, escritos, desenhados e/ou representados em 
símbolos. 
Introdução 
 Exemplo 1 - Escovar os dentes pela manhã 
Introdução 
 Exemplo 2 – Trocar uma lâmpada queimada 
Introdução 
 Exemplo 3 – Resolver Equação do 2º Grau 
Problemas – Divisão de Água 
 Inicialmente o recipiente de 8 litros está cheio e os 
demais vazios; 
 Os recipientes não possuem escala de medição, sabe-
se apenas o volume total de cada; 
 Cada transferência(entre os recipientes) deve ser feita 
no volume total do recipiente receptor; 
 Ao final das transferências o recipiente com capacidade 
para 8 litros deve possuir apenas 4 litros de água e o 
recipiente de 5 litros deve possuir apenas 4 litros de 
água. 
Problemas – Divisão de Água 
 Solução: 
Problemas – Transporte Chinês 
 Transportar todos os elementos 
de um lado para outro do rio, 
sendo que: 
 Somente o pai, a mãe e o policial 
sabem pilotar o barco; 
 A mãe não pode ficar sozinha 
com os filhos; 
 O pai não pode ficar sozinho 
com as filhas; 
 O prisioneiro não pode ficar 
sozinho com nenhum integrante 
da família; 
 O barco só pode transportar 
duas pessoas por vez; 
 Você pode ir e vir com as 
pessoas quantas vezes precisar. 
11 
Formas de representar um algoritmo 
Como representar 
um algoritmo? 
12 
Formas de representar um algoritmo 
 Algoritmos podem ser representados, dentre outras 
maneiras, por: 
 
 DESCRIÇÃO NARRATIVA 
 Utiliza uma linguagem de escrita natural para descrever 
algoritmos. 
 
 FLUXOGRAMA (DIAGRAMA DE MÓDULOS) 
 Utiliza uma linguagem de representação gráfica para 
descrever algoritmos. 
 
 LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO) 
 Utiliza uma linguagem de escrita artificial para descrever 
algoritmos. 
13 
Formas de representar um algoritmo 
Exemplo: 
Algoritmo para converter uma 
temperatura em Fahrenheit 
para Celsius 
14 
Formas de representar um algoritmo 
 Linguagem algorítmica (pseudo-código) 
 A forma geral de um algoritmo em pseudo-código: 
 
Algoritmo <nome_do_algoritmo> 
[<declaração_de_variáveis>] 
Início 
 <corpo_do_algoritmo> 
Fim. 
 
15 
Formas de representar um algoritmo 
 LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO) 
 Onde: 
 
 Algoritmo 
 Indica o início da definição do algoritmo. 
 
 <nome_do_algoritmo> 
 Nome dado ao algoritmo para distingui-lo dos demais. 
 
 [<declaração_de_variáveis>] 
 Parte opcional onde são declaradas as variáveis globais 
usadas no algoritmo principal e, eventualmente, nos sub-
algoritmos. 
16 
Formas de representar um algoritmo 
 LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO) 
 Onde: 
 
 Início 
 Palavra que delimita o início do corpo do algoritmo. 
 
 <corpo_do_algoritmo> 
 Conjunto de instruções do algoritmo. 
 
 Fim. 
 Palavra que delimita o término do corpo do algoritmo. 
17 
Formas de representar um algoritmo 
 
 Pseudo-código do algoritmo Fahrenheit-Celsius 
 
 Algoritmo Fahrenheit-Celsius 
 Variaveis 
 Fahrenheit, Celsius: Real 
Início 
Ler (Fahrenheit) 
Celsius  5/9 * (Fahrenheit – 32) 
Escrever (Celsius) 
Fim. 
 
18 
Formas de representar um algoritmo 
 Ling. Algorítmica 
 
Algoritmo Fahrenheit-Celsius 
Variaveis 
 Fahrenheit, Celsius: Real 
Início 
 Ler (Fahrenheit) 
 Celsius  5/9 * (Fahrenheit – 32) 
 Escrever (Celsius) 
Fim. 
Fluxograma Desc. Narrativa 
 
Solicite a 
temperatura em 
Fahrenheit. 
Transforme de 
Fahrenheit para 
Celsius. 
Informe a 
temperatura em 
Celsius. 
Início 
Fahrenheit 
Celsius = 5/9 * 
(Fahrenheit – 32) 
Celsius 
Fim 
19 
Construindo algoritmos 
 Uma boa prática para construir algoritmos é dividir o 
problema em 3 fases (Entrada, Processamento e Saída). 
 Lembra-se do seu primeiro mantra de programação? 
 
 
 
 
 
 ENTRADA: São os dados de entrada do algoritmo. 
 PROCESSAMENTO: São os procedimentos utilizados para 
chegar ao resultado final. 
 SAÍDA: São os dados já processados. 
 
 
Entrada 
 
Processamento 
 
Saída 
 
20 
Construindo algoritmos 
 No algoritmo Fahrenheit-Celsius temos: 
 ENTRADA: Temperatura em Fahrenheit 
 PROCESSAMENTO: Celsius = 5/9 *(Fahrenheit – 32) 
 SAÍDA: Temperatura em Celsius 
 
 Num algoritmo para calcular a área de um triângulo 
temos: 
 ENTRADA: Base e Altura do triângulo 
 PROCESSAMENTO: Área = (Base * Altura)/2 
 SAÍDA: Área 
 
 
21 
Construindo algoritmos 
 
 
 
Dividir o problema em Entrada, 
Processamento e Saída 
irá ajudá-lo a ordenar corretamente as 
instruções do seus algoritmos. 
 
22 
Construindo algoritmos 
 
 
 
Por isso, antes de construir um algoritmo, 
pare para pensar e identificar: 
 
Que dados preciso para começar? – Entrada 
Quais são os cálculos e decisões? – Processamento 
Que dados devem ser exibidos? – Saída 
 
23 
Atividade 1 – Respostas 
 
1. Calcular e exibir a média ponderada de 2 notas dadas. 
(nota1= peso 6 e nota2= peso 4) 
 
 ENTRADA: nota1 e nota2 
 PROCESSAMENTO: médiaP=((nota1 * 6)+(nota2 * 4))/(6+4) 
 SAÍDA: médiaP 
 
 
 
24 
Atividade 1 – Respostas 
 
2. Reajustar um salário em 7,75%. 
 ENTRADA: salário 
 PROCESSAMENTO: salárioR = salário+(salário*0,0775) 
 SAÍDA: salárioR 
 
3. Calcular o desconto de 23% sobre o preço de um 
produto. 
 ENTRADA: preço 
 PROCESSAMENTO: desconto = preço*0,23 
 SAÍDA: desconto 
 
 
25 
Identificadores e Palavras Reservadas 
 
 Identificadores: 
 São nomes únicos definidos pelos programadores para 
identificar/distinguir os elementos de um algoritmo. 
 
 Palavras Reservadas 
 São instruções primitivas que têm significados pré-
determinados e fazem parte da estrutura de qualquer 
linguagem de programação. 
 
26 
Nomes de Identificadores 
 Algumas regras para os nomes de Identificadores: 
 1) Devem começar por um caractere alfabético. 
 2) Podem ser seguidos por mais caracteres alfabéticos e/ou 
numéricos. 
 3) Não é permitido o uso de espaço em branco ou de 
caracteres especiais, como: @, #, &, *, +, ?,$ (exceto o _ ). 
 4) Não poderá ser uma palavra reservada a uma instrução 
do algoritmo. 
 5) Devem ser significativos. 
 6) Não podem ser repetidos dentro de um mesmo 
algoritmo/sub-algoritmo. 
27 
Tipos de Dados 
 As fases de Entrada, Processamento e Saída podem 
manipular vários tipos primitivos de dados, a saber: Obs: Um Caractere SEMPRE deve estar entre “ ” 
 EX: “A”, “Fone 3333-33333”, “1”, 
 
Tipo Primitivo Descrição
Inteiro Representa o conjunto de números inteiros
Real Representa o conjunto de números reais
Caracter Representa um ou mais caracteres do teclado.
Lógico valor lógico (V ou F).Representa um
28 
Constante e Variável 
 
 Constante é um identificador que representa valores 
constantes, ou seja, que não variam no decorrer do 
algoritmo. 
 Seu uso poupa tempo quando tem que alterar o seu valor 
no algoritmo. 
 Ao trocar o valor de uma constante, todas as instruções que a 
usam irão manipular, automaticamente, o novo valor. 
29 
Variável e Constante 
 Variável é um endereço físico da memória principal, que é 
representado por um identificador que, ao longo do seu 
tempo de existência, pode armazenar vários conteúdos 
de um único tipo pré-determinado. 
Endereço Físico Identificador Conteúdo Tipo 
1000:2000 Nome “João” Caracter 
2001:3000 RG 12345 Inteiro 
3001:4000 Salário 999,99 Real 
4001:5000 Fumante F Lógico 
 
30 
Variável e Constante 
 Simplificando... 
 Considere que a memória principal do seu computador é 
um armário, onde cada gaveta é a uma variável. 
 
31 
Variável e Constante 
 
 Declaração de Constantes 
 <nome da constante> = <valor>; 
 • • • 
 <nome da constante> = <valor>; 
 
 Declaração de Variáveis 
 <var1, ..., varN>:<tipo de dado>; 
 • • • 
 <var1, ..., varN>:<tipo de dado>; 
32 
Variável e Constante 
 Exemplos corretos: 
 VARIAVEIS 
 notaMédia, Salário: Real; 
 contador: Inteiro; 
 achou: Lógico; 
 nome, sexo: Caracter; 
 
 CONSTANTES 
 PI = 3.1416 ; 
 MAX = 10 ; 
 OK = VERDADEIRO; 
 País = “Brasil”; 
 
33 
Expressões 
 Uma expressão é uma fórmula para processamento de 
um valor. 
 As principais expressões são as seguintes: 
 Aritméticas: Retornam um valor numérico (inteiro ou real). 
 EX: 10+(3+1)/2 
 Lógicas: Retornam um valor lógico V ou F. 
 EX: (3=2+1) e (3>2) 
 
 Obs: Ter atenção com as prioridades dos operadores ! 
 3+2*2 = 7 
 (3+2)*2 = 10 
 Use corretamente os parênteses! 
34 
Expressões 
 Expressões consistem de operandos e operadores. 
 
 Operandos são os elementos de uma expressão que 
sofrem uma ação. 
 Ex: variáveis, constantes ou outras expressões. 
 
 Operadores são os elementos de uma expressão que 
realizam a ação. 
 EX: aritméticos, lógicos e relacionais. 
 
 Na expressão 3 + 2 = 5, temos “3, 2 e 5” como operandos e 
“+ e =” como operadores. 
 
35 
Operadores 
 
 Os operadores podem ser classificados em: 
 Binários: atuam sobre dois operandos. 
 Ex: operadores aritméticos básicos (+ - * /) 
 Unários: atuam sobre um único operando. 
 Ex.: o sinal de (-) na frente de um número para inverter seu sinal. 
 
 
 Tipos de operadores da nossa linguagem: 
 Atribuição 
 Aritméticos 
 Relacionais 
 Lógicos ou Booleanos 
36 
Operadores 
 Atribuição: serve para atribuir um valor a uma variável. 
 Operador de atribuição “  ” 
 EX: 
 Nome  “Um nome”; 
 Idade  18; 
 Casado  F; 
 Salário  500,50; 
 
 A expressão do lado direito do operador é avaliada e seu 
resultado é armazenado na variável à esquerda. 
 Obs: A expressão deve retornar o mesmo tipo da variável ! 
37 
Operadores 
 Relacionais: são operadores binários (de mesma prioridade) 
que somente retornam os valores lógicos V ou F. 
 
 
 
 
 
 
 
 Estes somente são usados para efetuar comparações, as 
quais só podem ser feitas entre dados do mesmo tipo. 
 O resultado de uma comparação é sempre um valor lógico. 
Operador Comparação 
> maior que 
< menor que 
>= maior ou igual 
<= menor ou igual 
= igual 
<> diferente 
 
38 
Operadores 
 Exemplos: 
Operador Comparação Exemplo Resultado 
> maior que 4>3 V 
< menor que 4<3 F 
>= maior ou igual 4>=3 V 
<= menor ou igual 4<=3 F 
= igual 4=3 F 
<> diferente 4<>3 V 
 
39 
Operadores 
 Lógicos ou Booleanos: são usados para combinar 
expressões relacionais e lógicas. Também retornam 
como resultado valores lógicos V ou F. 
 
 
 
 
 
Operador Tipo Operação Prioridade 
NÃO Unário Negação 1 
E Binário Conjunção 2 
OU Binário Disjunção 3 
 
O
rd
e
m
 
p
ri
o
ri
d
a
d
e
 
Maior 
Menor 
40 
Operadores 
 Exemplos: 
Operador Operação Exemplo Resultado 
OU Disjunção V ou F V 
E Conjunção V e F F 
NÃO Negação Não V F 
 
41 
Operadores 
 
 Ordem de prioridades 
 
 
 
 
 
 
 Observações: 
 Operadores de igual prioridade, execução da esquerda 
para direita. 
 Para alterar a ordem de prioridade, utilizar parênteses. 
Operador Prioridade 
Aritméticos 1 
Relacional 2 
Lógico 3 
 
O
rd
e
m
 
p
ri
o
ri
d
a
d
e
 
Maior 
Menor 
42 
Sintaxe e Semântica 
 
 Sintaxe diz respeito à forma como as instruções devem 
ser escritas. 
 Conjunto de regras formais que especificam a composição 
dos algoritmos a partir de letras, dígitos e outros símbolos. 
 
A violação da sintaxe de uma instrução 
impede que o algoritmo seja executado! 
 
43 
Sintaxe e Semântica 
 Semântica diz respeito ao significado lógico das 
instruções que serão executadas pelo computador. 
 Conjunto de regras que especificam o “significado” de 
qualquer programa, sintaticamente válido. 
 
A violação da semântica de um algoritmo não 
impede que ele seja executado. Todavia, ele 
processará um resultado errado! 
 
44 
Sintaxe e Semântica 
 Exemplo de erro sintático: 
 Média: Inteiro 
 média  25/5 {pois toda divisão retorna um no Real} 
 “média” >= 7 {pois não se pode comparar tipos diferentes} 
 
 Exemplo de erro semântico: 
 Média: Real 
 Se (média >= 7) então 
 Escreva (“REPROVADO”); 
 Senão 
 Escreva (“APROVADO”); 
Sintaticamente a estrutura 
“SE-Então-Senão” está correta, 
mas semanticamente, NÃO. 
45 
Sintaxe e Semântica 
 
 
 
Os erros sintáticos são identificados 
pelos tradutores, enquanto que os 
erros semânticos não o são. 
 
Por isso que os erros semânticos 
exigem mais atenção para corrigi-los. 
 
46 
Instruções Primitivas 
 São os instruções básicas que efetuam tarefas essenciais 
para o recebimento e apresentação de dados. Estas são: 
 entrada; 
 saída. 
 
47 
 A instrução de entrada de dados permite que informações 
dos usuários sejam transferidas para a memória do 
computador (variáveis). Sua sintaxe pode ser: 
 Leia (var1) 
 Ex: Leia (nome) 
 Leia (var1, ..., varN) 
 Ex: Leia (nome, sexo) 
 
 A semântica: os dados são fornecidos ao computador por 
meio de um dispositivo de entrada (ex: teclado e mouse ) e 
armazenados nas posições de memória das variáveis. 
Instruções Primitivas 
48 
 Ex: 
 Algoritmo ExemploInstruçãoEntrada 
 Variaveis 
 preçoUnit, preçoTot: Real 
 Qtd: Inteiro 
 Início 
 Leia(preçoUnit, qtd) 
 preçoTot  preçoUnit * qtd 
 Fim. 
 
 
Instruções Primitivas 
49 
Instruções Primitivas 
 
 
 
Note I 
Quando uma variável é declarada, esta 
apenas reserva uma posição na RAM. Ou 
seja, o conteúdo dessa posição é vazio. 
Assim, a cada variável criada deve-se ler 
ou atribuir um valor a ela. 
 
50 
Instruções Primitivas 
 
 
 
Note II 
Diferente do operador “”, quesó atribui 
valores pré-definidos, a instrução LEIA 
permite qualquer entrada de dados válida. 
Ou seja, os valores das variáveis 
não são mais fixos. 
 
51 
 A instrução de saída de dados é o meio pelo qual 
variáveis, constantes e expressões têm seus dados 
exibidos pelos dispositivos de saída de um computador 
(ex: vídeo e impressora). Sua sintaxe pode ser: 
 Escreva (var1) 
 Ex: Escreva (salário) 
 Escreva (Var1, ..., varN) 
 Ex: Escreva (nome, endereço, cidade) 
 Escreva (“texto”) 
 Ex: Escreva (“Aula de programação”) 
 Escreva (“texto”, var1, ..., varN,“texto”,var1, ..., varN ) 
 Ex: Escreva (“nome e CPF = ”,nome, cpf,“ fone = ”,fone) 
Instruções Primitivas 
52 
Instruções Primitivas 
 
Atenção: 
Usa-se “,” (vírgula) para concatenar (juntar) 
 o valor de uma variável com um texto explicativo. 
 
Exemplo: 
 média  15/2; 
Escreva (“Média = ”,média) 
 
Média = 7,5 
 
53 
 Ex: 
 Algoritmo ExemploInstruçõesEntradaSaída 
 Variaveis 
 preçoUnit, preçoTot: Real 
 Qtd: Inteiro 
 Início 
 Leia(preçoUnit, qtd) 
 preçoTot  preçoUnit * qtd 
 Escreva(preçoTot) 
 Fim. 
 
 
Instruções Primitivas 
54 
Instruções Primitivas 
 
 
 
Note III 
Início 
 Leia(preçoUnit, qtd) 
 preçoTot  preçoUnit * qtd 
 Escreva(preçoTot) 
Fim 
55 
 
 Duas regras básicas para melhorar nossos algoritmos : 
 
 Toda operação de leitura deve antes enviar uma mensagem 
ao usuário informando que dados ele deve entrar. 
 
 Todo resultado enviado ao usuário deveria ser precedido de 
uma mensagem explicativa. 
 
Instruções Primitivas 
56 
Algoritmo ExemploInstruçõesEntradaSaída 
Variaveis 
 preçoUnit, preçoTot: Real 
 qtd: Inteiro 
Início 
 Escreva(“informe preço unitário e quantidade”) 
 Leia(preçoUnit, qtd) 
 preçoTot  preçoUnit * qtd 
 Escrever(“Preço total = ”, preçoTot) 
Fim. 
 
Instruções Primitivas 
57 
 
 Na estrutura de seqüência os comandos de um algoritmo 
são executados na ordem em que aparecem. 
 
 Uma estrutura de seqüência é delimitada pelas palavras-
reservadas Início e Fim e contém basicamente 
comandos de atribuição, de entrada e de saída. 
 
 Todos os algoritmos vistos até agora utilizam uma única 
estrutura seqüencial (Início-Fim). 
Estrutura de seqüência 
58 
 Dica Geral: Todo algoritmo deve ser feito visando a sua 
eficiência, clareza e manutenção. 
 Dicas específicas: 
 Pense de forma incremental e detalhada no problema a 
ser resolvido. 
 Quais são os dados de entrada? 
 Como estes dados devem ser processados? 
 Quais são os dados de saída? 
 Faça o algoritmo tão simples quanto possível. Isto 
facilita: 
 A leitura do algoritmo por outras pessoas. 
 A correção de erros quando estes existem. 
Dicas para escrever bons algoritmos 
59 
 Procure alinhar os comandos de acordo com o nível a que 
pertençam, isto é, destaque a estrutura na qual estão 
contidos. Este alinhamento é chamado de identação. 
 Exemplo genérico: 
Início 
 comando do algoritmo no nível 1; 
 subcomando dentro do nível 2; 
 subcomando dentro do nível 3; 
 comando do algoritmo no nível 1 
 Início 
 subcomando dentro do nível 2; 
 subcomando dentro do nível 2; 
 Fim 
Fim 
 
Dicas para escrever bons algoritmos 
60 
 
1) leia nome, idade e salário de um funcionário e exiba os 
mesmos dados, devendo ser o salário reajustado em 12%. 
Algortimo Reajuste 
Variaveis 
 nome: cadeia 
 idade: inteiro 
 salario, salarionovo: real 
Inicio 
 Leia (nome, idade, salario) 
 salarionovo  salario + (salario * 12%) 
 Escreva (“Nome =“, nome, “Idade=“, idade, “Salário=“, salarionovo) 
Fim. 
 
 
Atividade 1 - Faça um algoritmo que: 
61 
2) leia a base e a altura de um triângulo. Em seguida, escreva a 
área do mesmo. 
Algortimo Area 
Variaveis 
 base, altura, area: real 
Inicio 
 Leia (base, altura) 
 area  (base * altura) / 2 
 Escreva (“A área do triangulo é “, area) 
Fim. 
 
Atividade 1 - Faça um algoritmo que: 
2
ALTURABASE
ÁREA


62 
 
 São estruturas que, dada a avaliação de uma expressão 
lógica (condição), permitem a escolha de um fluxo de 
instruções a ser executado. 
 No máximo só podem existir dois fluxos de instruções: 
um, se a condição for V, e outro, se a condição for F. 
 
 Os tipos de estruturas de decisão são 3: 
 Decisão Simples ; 
 Decisão Composta ; 
 Decisão Múltipla. 
Estruturas de Decisão 
63 
 Na decisão simples, uma única expressão lógica é 
avaliada. 
 Sintaxes: 
 
 
 
Estrutura de Decisão Simples 
Seqüência 
Se <expressão lógica> Então 
 
 <comando1> ; 
 . . . 
 <comandoN> ; 
Fim-se. 
64 
 
 Semântica: Se a avaliação da condição for V, um conjunto de 
comandos do bloco verdade é executado e prossegue-se o 
fluxo. Caso a avaliação da condição for F, salta-se para o 
primeiro comando após o fim da estrutura de decisão simples. 
Estrutura de Decisão Simples 
Instrução(ões) 
executada(s) para 
expressão = V 
Executar 
comando(s) 
V F 
Exp. Lógica 
Não faz nada! 
65 
 
Algoritmo ExemploDecisãoSimples 
Variaveis 
 X: Inteiro 
Início 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Se (x > 0) Então 
 Escreva (“X > 0”) 
 Fim-se 
Fim. 
Estrutura de Decisão Simples 
66 
 Além de executar se a condição for V a decisão composta 
também executa se a condição for F. 
 Sintaxes : 
 
 Se <expressão lógica> Então 
 <instruções> 
Senão 
 <instruções> 
 Fim-se 
 
 
Estrutura de Decisão Composta 
67 
 
 Semântica: Se a avaliação da condição for V, um 
conjunto de comandos do bloco verdade é executado e 
prossegue-se o fluxo. Caso a avaliação da condição for F, 
um conjunto de comandos do bloco falsidade é 
executado e prossegue-se o fluxo. 
Estrutura de Decisão Composta 
Executar 
instrução(ões) 
V F 
Exp. Lógica 
Instrução(ões) 
executada(s) 
para 
expressão = V 
Instrução(ões) 
executada(s) 
para 
expressão = F 
Bloco F Bloco V 
68 
 
Algoritmo ExemploDecisãoComposta 
Variaveis 
 X: Inteiro 
Início 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Se (x > 0) Então 
 Escreva (“X > 0”) 
 Senão 
 Escreva (“X < 0”) 
 Fim-se 
Fim. 
 
Estrutura de Decisão Composta 
 
Os blocos V ou F nunca são 
executados ao mesmo tempo! 
 
Bloco V 
Bloco F 
69 
 O encadeamento de decisões 
composta é utilizado para aninhar 
as estruturas Se Então Senão. 
 
 
Estrutura de Decisão Composta 
Executar 
instrução(ões) 
V F 
Instrução(ões) 
executada(s) 
para 
expressão = V 
V F 
Exp. Lógica 
Exp. Lógica 
Instrução(ões) 
executada(s) 
para 
expressão = V 
Instrução(ões) 
executada(s) 
para 
expressão = F 
ou outras 
decisões 
compostas 
70 
 
Algoritmo ExemploDecisãoCompostaAninhada 
Variaveis 
 X: inteiro 
Início 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Se (x > 0) Então 
 Escreva (“X > 0”) 
 Senão 
 Se (x < 0) Então 
 Escreva (“X < 0”) 
 Senão 
 Escreva (“X = 0”) 
 Fim-se 
 Fim-se 
Fim. 
 
Estrutura de Decisão Composta 
71 
 
1) Se (x > 0) Então 
 Escreva (“X > 0”) 
 Se (x < 0) Então 
Escreva (“X < 0”) 
 Se (x = 0) Então 
Escreva (“X = 0”) 
 
 
Estrutura de Decisão Composta – ATENÇÃO! 
 
Se um número é >0, então ele não pode ser =0 ou <0. 
Por isso, o exemplo acima faztestes desnecessários! 
Note que todas as condições SEMPRE são testadas! 
Isso torna a execução do algoritmo mais lenta! 
 
Isso vai funcionar, 
mas é uma péssima prática! 
72 
Estrutura de Decisão Composta – ATENÇÃO! 
 
NOTE II 
Se existem condições mutuamente 
exclusivas (somente uma, e apenas uma, 
condição pode ser V), então sempre 
deve-se usar DECISÃO COMPOSTA 
para se obter algoritmos mais rápidos! 
 
73 
 
 2) Se (x MOD 2 = 0) Então 
 Se (x > 0) Então 
 Se (x/2 = 0) Então 
 Escreva (“X é par, positivo e múltiplo de 2”) 
Fim-se 
 Fim-se 
Fim-se 
 
Estrutura de Decisão Composta – ATENÇÃO! 
 
O encadeamento acima é o mesmo que: 
Se (x MOD 2 = 0) E (x > 0) E (x/2 = 0) Então 
 Escreva (“X é par, positivo e múltiplo de 2”) 
Fim-se 
74 
 
 A decisão múltipla é uma especialização da estrutura de 
decisão composta aninhada, que permite a execução de 
opções mutuamente exclusivas. 
 
 Sintaxe: 
Caso <Variavel> Seja 
 <Valor1> : <instrução(ões)> 
 . . . 
 <ValorN> : <instrução(ões)> 
 [ Senão <comando(s)>] opcional! 
Fim-Caso 
Estrutura de Decisão Múltipla 
75 
 
Algoritmo ExemploDecisãoMúltipla 
Variaveis 
 X: Caracter 
Início 
 Escreva(“Digite um caracter”) 
 Leia (x) 
 Caso (x) Seja 
“A”,“E”,“I”,“O”,“U” : Escreva (“Vogal”) 
“~”,“^”,“v” : Início 
 Escreva(“Operador”) 
 Escreva(“ Lógico”) 
 Fim 
Senão Escreva (“Caracter não reconhecido”) 
 Fim-Caso 
Fim. 
Estrutura de Decisão Múltipla 
76 
 Após desenvolver um algoritmo ele deverá ser testado. Este 
teste objetiva seguir as instruções do algoritmo para verificar se 
a solução está correta. 
 
 EX: Algoritmo ExemploTesteDeMesa 
 Variaveis 
 nota1, nota2, média: Real 
 situação: Cadeia 
Início 
 Ler (nota1, nota2) 
 média  (nota1+nota2)/2 
 Se (média >= 7) então 
 situação  “Aprovado” 
 Senão 
 situação  “Reprovado” 
 Escreva (Situação) 
Fim. 
Teste de Algoritmo 
Tabela de variáveis 
Nota1 Nota2 Média Situação 
7,0 8,5 7,75 Aprovado 
6,5 7,0 6,75 Reprovado 
8,0 6,0 7,0 Aprovado 
5,0 7,5 6,25 Reprovado 
 
77 
 
4) leia a idade de um nadador e exiba sua categoria 
segundo as regras: A(5 até 7); B(8 até 10); C(11 até 13); 
D(14 até 18) e E( Idade > 18) 
 
5) leia dois números inteiros, uma operação matemática 
(+,-,*,/) e faça o calculo destes números segundo a 
operação lida 
 
6) leia o nome e a idade de três pessoas e informe o nome 
da pessoa mais velha e o nome da pessoa mais nova. 
Considere que não existem idades iguais 
Atividade 2 - Faça um algoritmo que 
78 
 
 Existem situações em que o processamento de um valor 
uma única vez não é suficiente para resolver o problema. 
 
 Quando isto ocorre, deve-se utilizar uma estrutura de 
repetição. 
 
 Estruturas de repetição permitem que uma ou mais 
instruções sejam executadas um número definido de 
vezes, ou enquanto uma determinada condição não é 
alcançada. 
Estruturas de Repetição 
79 
 
 As estruturas de repetição também são conhecidas como 
Laços ou Loops. 
 
 As estruturas de repetição das linguagens de 
programação são de dois tipos: 
 Condicional 
 Repetem até satisfazer a condição de repetição. 
 São usadas quando não se sabe previamente quantas vezes 
deve-se executar as instruções do bloco de repetição. 
 Contada 
 Repetem um número contado (pré-definido) de vezes. 
 São usadas quando se sabe previamente quantas vezes 
deve-se executar as instruções do bloco de repetição. 
Estruturas de Repetição 
80 
 
 As estruturas de repetição condicional podem executar 
seus testes: 
 No Início 
 Enquanto/Faça 
 No Fim 
 Repita/Até 
 
 As estruturas de repetição contada utilizam uma variável 
para controlar a quantidade de repetições. 
 Para/Faça 
Estruturas de Repetição 
81 
 
 Exemplos: 
Estruturas de Repetição Condicional 
Algoritmo variávelContadora: 
... 
cont  0 
<estrutura de repetição> 
 ... 
 cont  cont + 1 
 ... 
<fim estrutura de repetição> 
... 
 
Algoritmo variávelAcumuladora: 
... 
soma  0 
<estrutura de repetição> 
 ... 
 soma  soma + X 
 ... 
<fim estrutura de repetição> 
... 
constante Variável 
82 
 Estrutura de repetição Enquanto/Faça 
 
 Sintaxe: 
Enquanto <expressão lógica> FAÇA 
 <Instrução1> 
 . . . 
 <InstruçãoN> 
Fim-Enquanto 
Estruturas de Repetição Condicional 
83 
 
 
 Semântica: 
 Faz o teste no início do laço. Se o 
resultado for V as instruções do 
laço são executadas. Volta-se para 
o início do laço e testa-se 
novamente a sua condição. Isto é 
repetido enquanto a condição 
testada for V. 
Estruturas de Repetição Condicional 
Executar 
outras instruções 
V 
F 
Instruções 
executadas 
para 
expressão = V 
Exp. Lógica 
 Estrutura de repetição Enquanto/Faça 
84 
Estruturas de Repetição Condicional 
 Estrutura de repetição Enquanto/Faça 
 
 Resumindo... 
 Não se sabe de antemão quantas vezes o bloco de 
repetição será executado. Isto é, ele pode ser executado 
várias vezes ou nenhuma vez. 
 Testa a condição antes de entrar na estrutura de repetição 
 Repete a execução do bloco de instruções toda vez que 
condição for V. 
 O bloco de instruções A execução do bloco é finalizada 
quando a condição for F. 
 
85 
Algoritmo ExemploEnquantoFaça 
Variaveis 
 x: Inteiro 
Início 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Enquanto (x<>0) faça 
 Se (x > 0) Então 
 Escreva (“X > 0”) 
 Senão 
 Escreva (“X < 0”) 
 Fim-se 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Fim-Enquanto; 
 Escreva (“X = 0”) 
Fim. 
 
Estruturas de Repetição Condicional 
86 
 
 Estrutura de repetição Repita/Até 
 
 Sintaxe: 
Repita 
 <Comando1> 
 . . . 
 <ComandoN> 
Até <expressão lógica> 
Estruturas de Repetição Condicional 
87 
 Semântica: 
 Efetua um teste lógico no fim do laço, 
garantindo que pelo menos uma vez as 
instruções deste são executadas. Ao 
contrário do enquanto, esta só repete o 
laço se o resultado do teste for F. 
Estruturas de Repetição Condicional 
Executar 
outras instruções 
F 
Instruções 
executadas 
até 
expressão = V 
Exp. Lógica 
V 
 
 Estrutura de repetição Repita/Até 
 
88 
Estruturas de Repetição Condicional 
 Estrutura de repetição Repita/Até 
 
 Resumindo... 
 Não se sabe de antemão quantas vezes o bloco de 
repetição será executado. Todavia é garantido que ele será 
executado pelo menos uma vez. 
 Testa a condição depois de entrar na estrutura de repetição. 
 Repete a execução do bloco de instruções toda vez que a 
condição for F. 
 A execução do bloco é finalizada quando a condição for V. 
 
89 
Algoritmo ExemploRepitaAté 
Variaveis 
 x: Inteiro 
Início 
 Repita 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Se (x > 0) Então 
 Escreva (“X > 0”) 
 Senão 
 Se (x < 0) Então 
 Escreva (“X < 0”) 
 Fim-se 
Fim-se 
 Até (x = 0); 
 Escreva (“X = 0”) 
Fim. 
Estruturas de Repetição Condicional 
90 
 
 
 
Estruturas de Repetição Condicional 
Toda repetição condicional pode ser 
representada por uma estrutura do tipo 
Enquanto/Faça ou Repita/Até. Todavia, 
perceba que a primeira repete somente 
quando a condição é V e a segunda 
somente quando a condição é F. Por isso, 
a condição deuma é a negação da outra. 
Note I 
91 
 
 
 
Estruturas de Repetição Condicional 
Nos laços condicionais a variável que é 
testada deve estar sempre associada a 
uma instrução que a atualize no interior 
do laço, pois, se isto não ocorrer, o 
algoritmo ficará repetindo 
indefinidamente este laço, gerando uma 
situação conhecida como “laço/loop” 
infinito”. 
Note II 
92 
Estruturas de Repetição Condicional 
Algoritmo ExemploEnquantoFaça_LoopInfinito 
Variaveis 
 x: Inteiro 
Início 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Enquanto (x<>0) faça 
 Se (x > 0) Então 
 Escreva (“X > 0”) 
 Senão 
 Escreva (“X < 0”) 
 Fim-se 
 Escreva(“Digite um valor”) 
 
 Fim Enquanto 
Fim. 
 
Leia (x) 
sem este Leia(x), o laço se 
repete infinitamente! 
93 
 Estrutura de repetição Para/Faça 
 Sintaxe: 
 
PARA <varContador> de <Início> até <Fim> FAÇA 
 <Instrução1> 
 . . . 
 <InstruçãoN> 
FIM-PARA 
 
Estrutura de Repetição Contada 
94 
 Estrutura de repetição Para/Faça 
 
Estrutura de Repetição Contada 
 Semântica: 
 Repete as instruções enquanto a 
variável contador não atingir o 
valor final. Ressalta-se que a 
variável contador é previamente 
inicializada e incrementada ou 
decrementada de uma constante 
a cada repetição. 
Executar 
outras instruções) 
V 
F 
Instruções 
executadas 
para 
expressão = V 
Incremento/ 
decremento 
Inicialização 
Início<=fim 
95 
Estrutura de Repetição Contada 
 Estrutura de repetição Para/Faça 
 
 Resumindo... 
 Sabe-se de antemão quantas vezes o bloco de repetição 
será executado. Isto é, repete enquanto o valor final não 
atingir o valor final da variável de controle. 
 Incrementa automaticamente a variável de controle cada 
vez que o bloco é executado (incremento 1 é o padrão). 
 A variável de controle deve ser um número inteiro. 
 A variável de controle não pode ser modificada dentro do 
bloco. 
96 
Algoritmo ExemploParaFaça 
Variaveis 
 x, i, contP: inteiro 
Início 
 contP0 
 Para i de 1 até 20 faça 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Se (x > 0) Então 
 contP  contP + 1 
 Fim-se 
 Fim-Para 
 Escreva (“positivos = ”, contP) 
Fim. 
 
Estrutura de Repetição Contada 
97 
 
 
 
Estrutura de Repetição Contada 
Pode-se implementar um laço PARA 
com um laço CONDICIONAL, entretanto 
o controle do incremento/decremento da 
variável contadora é seu. 
O laço PARA faz isso implicitamente! 
Atenção : 
98 
Algoritmo ExemploParaFaçaComEnquanto 
Variaveis x, i, contP: inteiro 
Início 
 contP0 
 i1 
 Enquanto (i <= 20) faça 
 Escreva(“Digite um valor”) 
 Leia (x) 
 Se (x > 0) Então 
 contP  contP + 1 
 Fim-se 
 i  i+1 {Incremento explícito da variável contadora} 
 Fim Enquanto 
 Escreva (“positivos = ”, contP) 
Fim. 
Estrutura de Repetição Contada 
99 
Algoritmo ExemploParaFaçaComRepita 
Variaveis x, i, contP: inteiro 
Início 
 contP0 
 i1 
 Repita 
 Escreva(“Digite um valor”) 
 Leia (x); 
 Se (x > 0) Então 
 contP  contP + 1 
 Fim-se 
 i  i+1; {Incremento explícito da variável contadora} 
 Até (i > 20) 
 Escreva (“positivos = ”+contP) 
Fim. 
Estrutura de Repetição Contada 
100 
Encadeando as Estruturas de Repetição 
 
 Semelhante às estruturas de decisão composta, as 
estruturas de repetição também podem ser 
encadeadas/aninhadas. 
 
 Esta abordagem é usada quando há a necessidade de 
se usar laços dentro de laços. 
 Por exemplo: fazer um algoritmo para gerar toda a tabuada 
de 1 a 10. 
101 
Encadeando as Estruturas de Repetição 
Algoritmo Tabuada 
Variaveis 
 r, n1, n2: inteiro 
Início 
 n11 
 Enquanto (n1<=10) faça 
 Para n2 de 1 até 10 faça 
 r  n1 * n2 
 Escreva (n1,“ X ”,n2,“ = ”,r) 
 Fim-Para 
 n1n1+1 
 Fim-Enquanto 
Fim. 
 
102 
Encadeando as Estruturas de Repetição 
 
Também pode-se encadear 
estruturas de repetição 
com estruturas de decisão. 
 
103 
Encadeando Diversas Estruturas 
Algoritmo TabuadaSomaComParidade 
Var r, n1, n2: inteiro 
Início 
n1:=1 
Enquanto (n1<=10) faça 
Para n2 1 até 10 faça 
r  n1 + n2 
Se (r mod 2 = 0) 
 Escreva (n1,“ + ”,n2,“ = ”,r, “ = Par”) 
Senão 
 Escreva (n1,“ + ”,n2,“ = ”,r, “ = Impar”) 
 Fim Para 
 n1n1+1 
Fim Enquanto 
Fim. 
 
Exercício Senha 
Algoritmo Senha 
Variaveis 
 senha, usuario: cadeia 
 controle: lógico 
Inicio 
 Repita 
 Leia (usuario) 
 Leia (senha) 
 Se (usuario=“”) ou (senha=usuario) 
 ou (senha=“12345”) ou 
 (senha=“senha”) Então 
 controle Falso 
 Escreva(“Acesso Invalido”) 
 Senão 
 controle  Verdadeiro 
 Escreva(“Acesso Permitido”) 
 Fim-se 
 Até (controle = Verdadeiro) 
Fim. 
Algoritmo Senha 
Variaveis 
 senha, usuario: cadeia 
 controle: logico 
Inicio 
 controle  Falso 
 Enquanto (controle=Falso) 
 Leia (usuario) 
 Leia (senha) 
 Se (usuario=“”) ou (senha=usuario) 
 ou (senha=“12345”) ou 
 (senha=“senha”) Então 
 controle  Falso 
 Escreva(“Acesso Invalido”) 
 Senão 
 controle  Verdadeiro 
 Escreva(“Acesso Permitido”) 
 Fim-se 
 Fim-Enquanto 104 
Exercício Senha 
Algoritmo Senha 
Variaveis 
 senha, usuario: cadeia 
Inicio 
 Repita 
 Leia (usuario) 
 Leia (senha) 
 Até ((usuario≠“”) e (senha ≠ usuario) 
 e (senha ≠“12345”) e 
 (senha ≠“senha”)) 
 Escreva (“Acesso Permitido”) 
Fim. 
Algoritmo Senha 
Variaveis 
 senha, usuario: cadeia 
 controle: lógico 
Inicio 
 controle  Falso 
 Repita 
 Se (controle = Verdadeiro) Então 
 Escreva(“Acesso Inválido”) 
 Fim-se 
 controle  Verdadeiro 
 Leia (usuario) 
 Leia (senha) 
 Até ((usuario≠“”) e (senha ≠ usuario) 
 e (senha ≠“12345”) e 
 (senha ≠“senha”)) 
 Escreva (“Acesso Permitido”) 
Fim. 
 105 
Vetores 
Vetor_de_Notas 
1 2 3 4 5 6 7 8 9 10 
INDICE 
IDENTIFICAÇÃO 
Vetor_de_Notas[ INDICE ] 
Vetor_de_Notas[ 3 ]  8,5 
 
Vetor_de_Notas[ 3 ] := 8,5 
 
Vetor_de_Notas[ 8 ] := 6,0 
8,5 6,0 
Declaração de Vetor 
Identificação : vetor [inicial..final] de <tipo_dados> 
Vetor_de_Notas : vetor [1..10] de real 
 
Identificação: array [inicio..fim] of <tipo_dados> 
Vetor_de_Notas: array [1..10] of real 
Vetor_de_Notas 
1 2 3 4 5 6 7 8 9 10 
Exemplo (Algoritmo) 
Leitura 
Para i de 1 até 10 faça 
 Escreva(“Entre com o número:”) 
 Leia(vetor_de_notas[i]) 
Fim-para 
Escrita 
Para i de 1 até 10 faça 
 Escreva(“Posição”, i, “=“,vetor_de_notas[i]) 
Fim-para 
 
Exemplo (Pascal) 
Leitura 
For i := 1 to 10 do 
Begin 
 write(‘Entre com o número:’); 
 readln(vetor_de_notas[i]); 
End; 
Escrita 
For i := 1 to 10 do 
Begin 
 writeln(‘Posição’, i, ‘=‘,vetor_de_notas[i]) 
End; 
 
Matriz 
 
 
 
 
 
 
 
 
 
 
 
1 2 3 4 5 6 7 8 9 10 
1 
2 
3 
4 
5 
Matriz[3,5] := 100 
Matriz[3,5]  100 
Matriz : array [1..5,1..10] of Integer; 
Matriz : vetor[1..5,1..10] de Inteiro; 
100 
Exemplo (Algoritmo) 
Leitura 
Para i de 1 até 5 faça 
 Para j de 1 até 10 faça 
 Escreva(“Entre com o número:”) 
 Leia(Matriz[i,j]) 
 Fim-Para 
Fim-para 
Escrita 
Para i de 1 até 5 faça 
 Para j de 1 até 10 faça 
 Escreva(“Posição”, i, j, “=“, Matriz[i,j]) 
 Fim-para 
Fim-para

Outros materiais