Você está na página 1de 124

Algoritmos de Programação

Prof. Alan Alves Oliveira


Algoritmos

“A arte de programar consiste na arte de


organizar e dominar a complexidade”

Dijkstra
Algoritmos
• Definição:

“Um algoritmo é a descrição de um padrão de


comportamento, expressado em termos de um repertório
bem definido e finito de ações primitivas, das quais damos
por certo que elas podem ser executadas.”
(GUIMARÃES; LAGES, 1994, p.4)
Algoritmos
• Definição:

“Algoritmo é a descrição de um conjunto de comandos que,


obedecidos, resultam numa sucessão finita de ações.”
(FARRER et al., 1999 p.14)

“Um algoritmo pode ser definido como uma seqüência de


passos que visam a atingir um objetivo bem definido.”
(FORBELLONE; EBERSPACHER, 2005, p.3)
Algoritmos
• Questão para discussão:
– Você já teve contato com algum tipo de
algoritmo?
Algoritmos
• Apesar de estar intimamente ligado à
programação de computadores, o termo
algoritmo surgiu muito antes que isso;
• Rotinas simples do dia a dia podem ser
descritas em algoritmos:
– Trocar de roupa;
– Escovar os dentes;
– Tomar banho;
– Etc.
Algoritmos
• Várias áreas do conhecimento utilizam
algoritmos:
– Administração: um plano de ação é um
algoritmo;
– Matemática: diversos cálculos e teoremas são
algoritmos;
– Manufatura: a ficha técnica (ou engenharia) de
um produto é um algoritmo.
Algoritmos
• Características (CUNHA; MELLO, 2009, p. 8):
– Finitude:
• Um algoritmo deve sempre terminar após um
número finito de passos.
– Definição:
• Cada passo de um algoritmo deve ser precisamente
definido. As ações devem ser definidas
rigorosamente, sem ambiguidades.
Algoritmos
• Características (CUNHA; MELLO, 2009, p. 8):
– Entradas:
• Um algoritmo deve ter zero (0) ou mais entradas,
isto é, quantidades que lhe são fornecidas antes do
algoritmo iniciar.
– Saídas:
• Um algoritmo deve ter uma ou mais saídas, isto é,
quantidades que têm uma relação específica com as
entradas.
Algoritmos
• Características (CUNHA; MELLO, 2009, p. 8):
– Efetividade:
• ... todas as operações devem ser suficientemente
básicas de modo que possam ser ... executadas com
precisão, em um tempo finito, por uma pessoa
usando papel e lápis.
Algoritmos
• Abstração:
– Um algoritmo é um modelo que representa algo
do mundo real;
– Modelos servem para que possamos abstrair
uma realidade e nos focar apenas nos detalhes
que nos interessam.
Algoritmos
• Atividade:
– Em uma folha do seu caderno, escreva, em
forma de passos sequenciais, como é feita a
troca de um pneu furado em um carro.
Algoritmos
• O algoritmo e o computador:
– O algoritmo é bastante utilizado no meio
computacional, seja para construir hardware
(processadores), seja para desenvolver
programas;
– “... computadores são seguidores de
algoritmos.” (CUNHA; MELLO, 2009, p. 9);
Algoritmos
• O algoritmo e o computador:
– Para se escrever um algoritmo computacional
deve-se (CUNHA; MELLO, 2009, p. 9):
• Definir o problema;
• Planejar um algoritmo de solução;
• Codificar a solução;
• Testar o programa;
• Completar a documentação.
Algoritmos
• O algoritmo e o computador:
– Um algoritmo escrito com a finalidade de
construir um programa pode ser implementado
em qualquer linguagem de programação
sequencial (C, C++, C#, Delphi, Java, Pascal,
Visual Basic, etc.)
Algoritmos
• O algoritmo como software:
– Texto finito:
• Como já foi ressaltado antes, um algoritmo, assim
como um software, possui um conjunto finito de
instruções (ações) a serem executadas.
– Instruções elementares:
• A exemplo do software o algoritmo possui
comandos e/ou informações que devem ser
fornecidos ao executor. No caso do software o
executor é o computador.
Algoritmos
• O algoritmo como software:
– Receita metódica:
• Texto ou instruções precisas. No caso do software,
estas instruções são escritas em uma linguagem
de programação.
– Terminação:
• No caso do uso de estruturas de repetição (loops
ou laços), deve haver a terminação, ou seja, a
execução também é finita.
Algoritmos
• Questão para discussão:
– Um programa de computador, é um algoritmo?
Algoritmos
• Tipos de algoritmos:
– Algoritmo gráfico:
• Representado através de diagramas de blocos ou
diagramas de quadros;
• Um diagrama de bloco bastante conhecido é o
fluxograma;
Algoritmos
• Tipos de algoritmos:
– Algoritmo gráfico:
• Exemplo: um algoritmo para verificar se o aluno
foi aprovado:
Início Verdadeiro Soma >= Falso
60

Nota 1,
Nota 2,
Aprovado Reprovado
Nota 3

Soma
Nota 1 + Nota
2 + Nota 3 Fim
Algoritmos
• Tipos de algoritmos:
– Algoritmo descritivo:
• Expresso em forma de texto;
• O texto deve conter todos os passos a serem
executados, incluindo as entradas, decisões e
saídas;
• Pode ser representado em linguagem natural ou
em alguma linguagem técnica estruturada
(pseudolinguagem ou pseugocódigo ou portugol);
Algoritmos
• Tipos de algoritmos:
– Algoritmo descritivo:
• Exemplo: utilizando o mesmo algoritmo para
verificar se o aluno foi aprovado:
1. Obter as notas 1, 2 e 3.
2. Efetuar o cálculo da soma.
3. Se a soma for maior ou igual a 60 o aluno
está aprovado.
4. Se a soma for menor que 60 o aluno está
reprovado.
Algoritmos
• Tipos de algoritmos:
– Algoritmo descritivo:
• Perceba que o exemplo anterior foi escrito em
linguagem natural, sem preocupação com
formalização ou estruturação.
Algoritmos
• Tipos de algoritmos:
– Algoritmo codificado:
• Expresso em uma linguagem de programação
específica;
• Representa o próprio programa;
Algoritmos
• Tipos de algoritmos:
– Algoritmo codificado:
• Exemplo: ainda para verificar se o aluno foi
aprovado:
Algoritmos
• Tipos de algoritmos:
– Algoritmo codificado:
• O algoritmo apresentado na tela anterior foi
escrito na linguagem de programação Java;
• A entrada dos dados é feita através de caixas de
texto apresentadas ao usuário;
• A saída (mensagem informando se o aluno está
aprovado ou reprovado) é feita no console do
sistema.
Algoritmos
• Formas de representação:
– Um algoritmo pode ser representado de
diversas formas;
– A escolha da melhor forma dependerá da
finalidade do algoritmo;
– Manuais, receitas e guias, por exemplo, são
geralmente escritos em linguagem natural;
Algoritmos
• Formas de representação:
– Esquemas e modelos são geralmente
representados através de uma forma gráfica
(fluxograma);
– Para a programação, a melhor forma de
representar algoritmos é da forma descritiva,
utilizando-se uma linguagem estruturada,
conhecida por pseudolinguagem, pseudocódigo
ou portugol;
Algoritmos
• Formas de representação:
– O pseudocódigo está bastante próximo das
linguagens de programação sequenciais e, ao
mesmo tempo, da linguagem natural;
– O pseudocódigo possui regras para sua escrita,
isso o diferencia da linguagem natural;
Algoritmos
• Formas de representação:
– De agora em diante, vamos adotar o
pseudocódigo como forma de representação.
Para mais detalhes sobre as outras formas,
consulte Cunha; Melo (2009, pp. 11-15).
Algoritmos
• Estrutura de um algoritmo em pseudocódigo:
Programa <nome>
<declarações de variáveis>
<subalgoritmos>
Início
<comandos>
Fim

– A palavra reservada Programa inicia o algoritmo


e, logo após ela, deve colocado o nome do
programa que está sendo feito;
Algoritmos
• Estrutura de um algoritmo em pseudocódigo:
– O nome do programa é dado pelo
programador e deve seguir algumas regras:
• Deve começar com uma letra ou sublinhado;
• Não deve conter caracteres especiais como *, $, #,
@, etc.;
• Não deve conter espaços em branco;
• Pode conter números, porém, não pode começar
com um.
Algoritmos
• Estrutura de um algoritmo em pseudocódigo:
Programa <nome>
<declarações de variáveis>
<subalgoritmos>
Início
<comandos>
Fim

– Entre as palavras reservadas Programa e Início


devem ser feitas as declarações de variáveis e
definidos os subalgoritmos, quando for o caso;
– As instruções ou comandos são colocados entre
as palavras reservadas Início e Fim.
Algoritmos
• Estrutura de um algoritmo em pseudocódigo:
– Observação importante:
• Não existe um padrão ou estrutura únicos para a
criação de algoritmos. Podem ser encontradas
diferenças de padrão de um autor para o outro;
• Utilizaremos um conjunto de regras, porém, o que
realmente importa é que o aluno entenda a lógica
da criação do algoritmo. Assim, ele poderá
interpretar qualquer algoritmo, mesmo com
pequenas variações de padrão.
Tipos de dados
• Um algoritmo pode manipular diversos
valores para chegar ao resultado desejado;
• Definir tipos de dados é uma forma de tornar
o algoritmo mais claro e mais efetivo;
• Em ciência da computação isso se chama
tipagem de dados;
Tipos de dados
• Tipos de dados são, portanto, um conjunto de
valores sobre os quais pode ser aplicado um
conjunto de operações;
• A princípio, vamos trabalhar com três
conjuntos de tipos de dados:
– Numéricos;
– Alfanuméricos (literais) e
– Lógicos.
Tipos de dados
• Tipos de dados numéricos:
– Inteiro: {..., -2, -1, 0, 1, 2, ...};
– Real: abrange o conjunto de números inteiros,
fracionários e irracionais.
• Tipos de dados literais:
– Literal: consiste em uma cadeia de caracteres
alfanuméricos, incluindo caracteres especiais.
Os valores literais devem estar sempre entre
aspas duplas;
Tipos de dados
• Tipos de dados lógicos:
– Lógico: esse tipo de dados, a exemplo do que
acontece com o computador em nível físico, só
pode assumir um entre dois valores: verdadeiro
ou falso (o computador, em nível físico, só
entende zeros e uns)
Variáveis e Constantes
• A equação do segundo grau é representada,
matematicamente, pela seguinte expressão:
(ax2 + bx + c = 0);
• As letras a, b e c poderão assumir qualquer
valor, dependendo do cálculo a ser feito;
• Portanto, estas letras podem ser chamadas de
variáveis;
Variáveis e Constantes
• O conceito de variável na programação é o
mesmo;
• Podemos dizer que variáveis são símbolos que
podem assumir diversos valores durante o seu
tempo de vida (veremos tempo de vida de
uma variável mais adiante);
Variáveis e Constantes
• Toda e qualquer variável a ser utilizada no
algoritmo precisa ser declarada no local
especificado anteriormente, entre as palavras
reservadas Programa e Início;
• Na declaração de uma variável é obrigatória a
definição do seu tipo, de acordo com os tipos
de dados já vistos;
Variáveis e Constantes
• Vamos utilizar duas formas de declarar
variáveis e o aluno terá liberdade para
escolher qualquer uma delas. Porém, quando
utilizar uma das formas, torne-a padrão, ou
seja, não utilize, em um mesmo algoritmo, as
duas formas;
• Opção 1 (Java, C++):
– <Tipo> <Lista de variáveis>
Inteiro a, b, c; // Declara as variáveis: a, b e c
Variáveis e Constantes
• Opção 2 (Pascal):
– <Lista de variáveis> : <Tipo>
a, b, c : Inteiro; // Declara as variáveis: a, b e c
Variáveis e Constantes
• Vejamos um exemplo no contexto do
algoritmo:
Programa Exemplo
// Declaração de variáveis nas linhas abaixo
Inteiro Num1, Num2;
Literal Nome;
Início
<comandos>
Fim
Variáveis e Constantes
• As constantes, assim como as variáveis, são
símbolos que podem representar algum valor,
porém, esse valor é dado a ela na sua
declaração e não pode mais ser alterado;
• Para declarar uma constante acrescentamos,
antes da declaração, a palavra const.
Lembrando que o valor da constante deve ser
dado na sua declaração;
Variáveis e Constantes
• Exemplo:
Programa ExemploConstante
Inteiro Num1, Num2;
Const Real Pi <- 3.14; // Declaração da constante
Início
<comandos>
Fim
Instruções primitivas
• Para fazer nossos primeiros algoritmos
precisamos aprender três comandos básicos:
• O comando Escreva:
– É um comando de saída que permite que
alguma mensagem (geralmente o resultado do
algoritmo) seja dada ao usuário;
Instruções primitivas
• O comando Escreva:
– Exemplos:
// Escreve uma mensagem na tela
Escreva("Meu primeiro programa");

// Escreve o valor de uma variável na tela


Escreva(Num1);

// Escreve uma mensagem e logo após o valor de uma


// variável
Escreva("O resultado é:", Soma);
Instruções primitivas
• O comando Escreva:
– Exemplos:
// Um programa completo com o comando Escreva
Programa PrimeiroPrograma
Início
Escreva("Olá mundo!");
Fim
Instruções primitivas
• O comando <- (atribuição):
– Em muitos momentos no nosso algoritmo
precisaremos atribuir valores a variáveis. Isso é
feito através do comando de atribuição;
– Esse comando é representado por uma seta que
aponta para a esquerda (para representar esta
seta no computador, utilize o sinal de menor
seguido pelo hífen);
Instruções primitivas
• O comando <- (atribuição):
– Exemplos:
// Atribui um valor a uma variável
Num1 <- 100;

// Declara uma constante com atribuição de valor


Const Real Pi <- 3.14;

// Atribui uma expressão a uma variável


Soma <- Num1 + Num2;
Instruções primitivas
• O comando <- (atribuição):
– Exemplos:
// Um programa completo com o comando <-
Programa PrimeiroPrograma
Literal Msg;
Início
Msg <- "Olá mundo!“;
Escreva(Msg);
Fim
Instruções primitivas
• O comando Leia:
– O comando Leia é um comando de entrada, ou
seja, a forma como iremos solicitar dados do
usuário;
Instruções primitivas
• O comando Leia:
– Exemplos:
// Lê uma informação e atribui à variável
Leia(Num1);

// Lê três informações e atribui às variáveis.


// A primeira informação digitada vai para a
// primeira variável e assim por diante
Leia(Num1, Num2, Num3);
Instruções primitivas
• O comando Leia:
– Exemplos:
// Um programa completo com o comando Leia
Programa PrimeiroPrograma
Inteiro Num1, Num2, Num3, Soma;
Início
Leia(Num1, Num2, Num3);
Soma <- Num1 + Num2 + Num3;
Escreva("A soma é: ", Soma);
Fim
Instruções primitivas
• Perceba que no final de cada comando,
inclusive da declaração de variáveis,
utilizamos um ponto-e-vírgula;
• O ponto-e-vírgula define que o comando
terminou.
Comentários
• Para facilitar o entendimento do nosso
algoritmo e da lógica que foi utilizada para
solucionar um problema, podemos comentar
as ações;
• Os comentários, como você já deve ter
percebido nos exemplos, é feito após duas
barras (//);
Comentários
• Todas as linhas que começam com (//) são
ignoradas como ações, ou seja, não são
executadas;
• O programa abaixo não faz nada:
Programa Inútil
Início
// Escreva("Olá mundo");
Fim
Expressões
• Expressões aritméticas:
– Por hora, para fazermos nossos primeiros
exercícios com algoritmos, vamos aprender as
expressões aritméticas;
– Uma expressão aritmética é aquela que envolve
somente números, sejam eles do tipo real ou
inteiro;
Expressões
• Expressões aritméticas:
– Para realizar uma expressão aritmética,
precisaremos conhecer os operadores:
Operador Descrição
+ Soma e identificação de números positivos
- Subtração e identificação de números negativos
* Multiplicação
/ Divisão
DIV Parte inteira do quociente de uma divisão
MOD (Módulo) Resto da divisão
Expressões
• Expressões aritméticas:
– A expressão pode manipular valores, de forma
direta, ou variáveis, por exemplo:
// Uma expressão que manipula valores
(10 + 30) / 2

// Uma expressão que manipula valores contidos em


// variáveis
(a + b) / c

– Observação: A precedência matemática deve


ser obedecida;
Expressões
• Expressões aritméticas:
– Conforme já foi dito, uma expressão pode
conter operadores inteiros ou reais;
– Uma expressão que contém operadores inteiros
retornará, sempre, o resultado inteiro. Veja o
exemplo:
// Uma divisão com dois operadores inteiros
// O resultado dessa divisão é 0, porque os dois
// operadores são inteiros
2 / 4
Expressões
• Expressões aritméticas:
– Para garantir que o resultado retornará um
número real, se for o caso, pelo menos um dos
operadores deve ser, explicitamente, real. Veja
o exemplo:
// Uma divisão com um operador real e um inteiro
// O resultado dessa divisão é 0.5
2.0 / 4
Expressões
• Mais adiante, veremos expressões literais e
expressões lógicas.
Boas práticas
• Recuo:
– Um algoritmo representado em
pseudolinguagem, assim como o programa que
será desenvolvido com ele, deve ser
visualmente organizado;
– Essa regra não afeta o resultado do algoritmo,
porém, é extremamente importante para quem
vai analisá-lo;
Boas práticas
• Recuo:
– Até agora estamos vendo algoritmos simples,
de poucas linhas, mas, imagine um algoritmo ou
programa de 100 linhas sem uma organização
visual;
Boas práticas
• Recuo:
– Vamos ver dois exemplos:

Programa Resultado Programa Resultado


Inteiro nota1, nota2, nota3, soma; Inteiro nota1, nota2, nota3, soma;
Literal resultado; Literal resultado;
Início Início
Leia(nota1, nota2, nota3); Leia(nota1, nota2, nota3);
soma <- nota1 + nota2 + nota3; soma <- nota1 + nota2 + nota3;
Se (soma >= 60) Então
resultado <- "Aprovado“; Se (soma >= 60) Então
Senão resultado <- "Aprovado“;
Resultado <- "Reprovado“; Senão
Fim_se resultado <- "Reprovado“;
Escreva(resultado); Fim_se
Fim
Escreva(resultado);
Fim
Boas práticas
• Recuo:
– Os dois algoritmos fazem exatamente a mesma
coisa, porém, o primeiro deles (da esquerda)
não utiliza recuo;
– O algoritmo da direita está utilizando recuos e
os blocos ficam bastante perceptíveis,
facilitando a leitura.
Boas práticas
• Nomes de variáveis:
– Procure dar nomes significativos para as suas
variáveis;
– Isso facilita o entendimento de programa mais
complexos;
– Ao mesmo tempo, por questões de praticidade,
evite nomes muito extensos;
– Os nomes de variáveis devem seguir as mesmas
regras aplicadas aos nomes dos programas.
Boas práticas
• Inicialização de variáveis:
– Ao ser declarada, uma variável não contém um
valor conhecido;
– Não é garantido (e isso depende da linguagem
de programação) que uma variável declarada
com Inteiro, por exemplo, antes de ser iniciada,
contenha valor zero;
– Para evitar surpresas, inicie a variável no início
do programa;
Boas práticas
• Inicialização de variáveis:
– Vamos trabalhar com duas formas de
inicialização de variáveis:
• Inicialização na declaração:
Programa Exemplo
Real base <- 0, altura <- 0;
Início
<comandos>
Fim
Boas práticas
• Inicialização de variáveis:
– Vamos trabalhar com duas formas de
inicialização de variáveis:
• Inicialização no corpo do programa:
Programa Exemplo
Real base, altura;
Início
base <- 0;
altura <- 0;
...
Fim
Atividades
1. Desenvolva um algoritmo que leia o nome de uma pessoa e o escreva na tela.
2. Um professor de matemática está precisando urgentemente de três programas:
a) O primeiro é para calcular a área de retângulos, que é obtida pela expressão (  ),
onde  é a base e  é a altura do retângulo.
b) O segundo é para calcular a área de círculos, que é data pela expressão (  2 ), onde
 é uma constante que vale 3.14159 e  é o raio.
c) O terceiro programa deve calcular e apresentar o resultado das quatro operações
matemáticas básicas, efetuadas com dois números. O resultado desejado pelo
professor deverá ser apresentando conforme abaixo:
O primeiro número é: 6
O segundo número é: 4
Os resultados são:
Soma: 10
Subtração: 2
Multiplicação: 24
Divisão: 1.5

Observação: Por hora, não se preocupe com a possibilidade de divisão por zero.
Atividades
3. Dois candidatos concorreram a uma eleição sindical. Além dos votos dados a cada um dos
candidatos, foram computados também votos nulos e brancos. Faça um programa que leia o
nome de cada candidato e a quantidade de votos que ele obteve. O programa deverá ler
também a quantidade de votos nulos e brancos. O resultado a ser apresentado pelo
programa deverá ser conforme abaixo:
Total de votos: 150
Total de votos válidos: 100
Votos brancos: 30
Votos nulos: 20
Resultado absoluto por candidato:
João da Silva: 45
Joaquim Manoel: 55
Resultado relativo em relação aos votos válidos:
João da Silva: 45 %
Joaquim Manoel: 55 %
Resultado relativo em relação ao total de votos:
João da Silva: 30 %
Joaquim Manoel: 37 %
Estruturas de decisão
• Agora, vamos aprender como montar
estruturas de decisão em um algoritmo;
• Para tanto, precisaremos montar expressões
condicionais (condições);
• Uma expressão condicional é uma expressão
que resulta um valor lógico, portanto,
verdadeiro ou falso;
Estruturas de decisão
• Para fazer expressões condicionais precisamos
conhecer os operadores relacionais com os
quais podemos trabalhar:
Operador Descrição
= Igual a
> Maior que
< Menor que
>= Maior ou igual a
<= Menor ou igual a
<> Diferente de
Estruturas de decisão
• Exemplos de expressões condicionais:
Expressão Significado
a=b Testa se o valor da variável a é igual ao valor da variável b
a>b Testa se o valor da variável a é maior que o valor da variável b
a <= b Testa se o valor da variável a é menor ou igual ao valor da variável b
a <> b Testa se o valor da variável a é diferente do valor da variável b
Estruturas de decisão
• Além dos operadores relacionais, precisamos
conhecer os operadores lógicos que podem
estar presentes entre duas expressões
condicionais:
Operador Descrição
e Avalia duas expressões lógicas e retorna verdadeiro se e
somente se todas elas forem verdadeiras
ou Avalia duas expressões lógicas e retorna verdadeiro se pelo
menos uma delas for verdadeira
não Nega (inverte) uma expressão lógica
Estruturas de decisão
• Exemplos de expressões condicionais com
operadores lógicos:
Expressão Significado
(a = b) e (a = c) Testa se o valor da variável a é igual ao valor da variável b e
também se o valor da variável a é igual ao valor da variável c. O
retorno será verdadeiro somente se as duas expressões simples
retornarem verdadeiro.
(a = b) e (a = c) Testa se o valor da variável a é igual ao valor da variável b e
também se o valor da variável a é igual ao valor da variável c. O
retorno será verdadeiro se pelo menos uma delas for verdadeira.
não (a = b) Inverte o resultado da expressão (a = b). Portanto, se o valor da
variável a for igual ao valor da variável b, o resultado da
expressão será falso, caso contrário, será verdadeiro.
Estrutura condicional simples
• A estrutura condicional simples para
algoritmos, é a seguinte:
...
Se (Expressão_lógica) Então
<comandos para expressão lógica verdadeira>
FimSe
...
Estrutura condicional simples
• Um exemplo:
Programa Exemplo
Inteiro a;
Início
Escreva("Digite um número:");
Leia(a);
Se (a >= 0) Então
Escreva("O número não é negativo!");
FimSe
Se (a < 0) Então
Escreva("O número é negativo!");
FimSe
Fim
Estrutura condicional composta
• O exemplo do slide anterior utilizou duas
estruturas condicionais simples, porém,
podemos abrir mão de uma estrutura
condicional composta, conforme abaixo:
...
Se (Expressão_lógica) Então
<comandos para expressão lógica verdadeira>
Senão
<comandos para expressão lógica falsa>
FimSe
...
Estrutura condicional composta
• Um exemplo:
Programa Exemplo
Inteiro a <- 0;
Início
Escreva("Digite um número:");
Leia(a);

Se ((a Mod 2) = 0) Então


Escreva("O número é par!");
Senão
Escreva("O número é impar!");
FimSe

Fim
Atividades
1. Faça um programa que receba as medidas dos lados de um quadrilátero e retorne: (1) a
área do quadrilátero e (2) uma mensagem informando se esse quadrilátero é um
quadrado.
2. Faça um programa que, a partir da idade de um nadador, informada pelo usuário, faça a
sua classificação como abaixo:
Infantil A: 5 – 7 anos Juvenil B: 14 – 17 anos
Infantil B: 8 – 10 anos Adulto: 18 anos ou mais
Juvenil A: 11 – 13 anos
Atividades
3. Uma empresa precisa de um programa para calcular a premiação de seus vendedores. O
usuário irá digitar a média de vendas (R$) e o programa deverá calcular o valor da premiação
com base em um percentual, definido na tabela abaixo. O valor da premiação tem um teto de
R$ 2.000,00 e deve ser apresentado pelo programa no final da execução.
Média de vendas (R$) Premiação (%)
De 0 a 5.000,00 0
De 5.000,01 a 10.000,00 1
De 10.000,01 a 20.000,00 2
De 20.000,01 a 30.000,00 3
Acima de 30.000,00 4
Estrutura condicional composta
• Encadeamento de estruturas condicionais:
– É perfeitamente possível utilizar uma estrutura
condicional dentro de outra, aninhando-as para
obter o resultado desejado;
– As boas práticas de programação dizem que o
aninhamento de grau maior que três torna o
programa complexo e deve ser evitado;
Estrutura condicional composta
• Encadeamento de estruturas condicionais:
– Um exemplo:
Programa Exemplo
Inteiro a <- 0, b <- 0;
Início
Escreva("Digite dois números:");
Leia(a, b);
Se (a > b) Então
Escreva("O primeiro número é maior que o segundo");
Senão
Se (a < b) Então
Escreva("O primeiro número é menor que o segundo");
Senão
Escreva("Os números são iguais");
FimSe
FimSe
Fim
Estrutura condicional composta
• O SenãoSe:
– A estrutura condicional
Se...Então...Senão...FimSe exige um
fechamento para cada Se. Além disso, o Senão
não permite a utilização de uma expressão
lógica depois dele;
– Porém, há casos em que pode ser interessante
fazer um novo teste lógico logo após um Senão,
sem encadear as estruturas explicitamente;
Estrutura condicional composta
• O SenãoSe:
– O SenãoSe é um comando que permite que seja
colocada uma nova expressão lógica (um novo
teste) logo após o senão;
– O FimSe continua sendo utilizado, porém, só
para fechar o Se. Ou seja, não se utiliza FimSe
para fechar o SenãoSe;
Estrutura condicional composta
• O SenãoSe:
– Um exemplo:
Programa Exemplo
Inteiro a <- 0, b <- 0;
Início
Escreva("Digite dois números:");
Leia(a, b);
Se (a > b) Então
Escreva("O primeiro número é maior que o segundo");
SenãoSe (a < b) Então
Escreva("O primeiro número é menor que o segundo");
Senão
Escreva("Os números são iguais");
FimSe
Fim
Estrutura condicional composta
• O SenãoSe:
– Outro exemplo:
Programa Exemplo
Inteiro preco <- 0, desconto <- 0;
Início
Escreva("Digite o preço do produto:");
Leia(preco);
Se (preco >= 100) Então
desconto <- preco * 0.05;
SenãoSe ((preco > 100) E (preco <= 500)) Então
desconto <- preco * 0.1;
SenãoSe (preco > 500) Então
desconto <- preco * 0.2;
FimSe
Escreva("Preço líquido: ", (preco – desconto));
Fim
Estrutura condicional de
múltipla escolha
• Em situações em que o número de escolhas é
grande, pode ser interessante utilizar uma
estrutura condicional de múltipla escolha;
• A estrutura é:
...
Escolha <variáve>
Caso <valor 1>: <lista de comandos 1>
Caso <valor 1>: <lista de comandos 2>
Caso <valor 1>: <lista de comandos 3>
...
Caso Senão: <lista de comandos n>
FimEscolha
...
Estrutura condicional de
múltipla escolha
• Veja um exemplo onde só se utiliza uma linha
de comando para cada caso de escolha:
...
Escolha mes
Caso 1: descricaoMes <- "Janeiro";
Caso 2: descricaoMes <- "Fevereiro";
Caso 3: descricaoMes <- "Março";
...
Caso 12: descricaoMes <- "Dezembro";
FimEscolha
...
Estrutura condicional de
múltipla escolha
• Para mais de uma linha de comando para cada
caso de escolha, faça conforme o exemplo abaixo:
...
Escolha mes
Caso 1:
descricaoMes <- "Janeiro";
mensagem <- "Primeiro mês do ano";
Caso 2:
descricaoMes <- "Fevereiro";
mensagem <- "Segundo mês do ano";
...
Caso 12:
descricaoMes <- "Dezembro";
mensagem <- "Terceiro mês do ano";
FimEscolha
...
Estrutura condicional de
múltipla escolha
• Vamos a um exemplo completo onde o
programa deve retornar o preço de um
produto de acordo com o código digitado pelo
usuário:
Código Preço (R$)
1 5,00
2 10,00
3 12,50
4 8,00
Estrutura condicional de
múltipla escolha
// Usando SenãoSe
Programa CalculaPreco
Inteiro codigo <- 0;
Real preco <- 0;
Início
Escreva("Digite o código do produto:");
Leia(codigo);
Se (codigo = 1) Então
preco <- 5.00;
SenãoSe (codigo = 2) Então
preco <- 10.00;
SenãoSe (codigo = 3) Então
preco <- 12.50;
SenãoSe (codigo = 4) Então
preco <- 8.00;
FimSe
Escreva("O preço é: ", preco);
Fim
Estrutura condicional de
múltipla escolha
// Usando Escolha
Programa CalculaPreco
Inteiro codigo <- 0;
Real preco <- 0;
Início
Escreva("Digite o código do produto:");
Leia(codigo) ;
Escolha codigo
Caso 1: preco <- 5.00;
Caso 2: preco <- 10.00;
Caso 3: preco <- 12.50;
Caso 4: preco <- 8.00;
FimEscolha
Escreva("O preço é: ", preco);
Fim
Atividades
1. Faça um algoritmo que receba como parâmetro o número de um mês do ano e retorne o
nome desse mês ao usuário. Se o usuário digitar um valor inválido, ele deve ser informado.
Utilize a estrutura Se...Então...SenãoSe...Senão...FimSe.
2. Refaça o algoritmo da atividade anterior agora utilizando a estrutura
Escolha...Caso...CasoSenão...FimEscolha.
Estruturas de repetição
• Para começar, uma questão para discussão:
– Com o que vimos até agora, se você fosse
solicitado a desenvolver um programa para ler o
nome de um usuário e escrevê-lo na tela 100
vezes, o que faria?
Estruturas de repetição
• É comum que os programas ou partes deles
precisem ser executados por várias vezes;
• As estruturas de repetição permitem que os
programas façam esta execução utilizando um
mesmo trecho. Quando isso acontece,
dizemos que o programa tem um laço ou loop;
Estruturas de repetição
• Utilizando nossa questão inicial desse
capítulo, você concorda que ler o nome do
usuário é uma ação a ser executada uma única
vez?
• Porém, escrever o nome desse usuário é uma
ação única, bem definida, que deve ser
repetida por 100 vezes;
• Então, nesse caso, só uma parte do programa
deve ter repetição.
Estruturas de repetição
• Tipos de estruturas de repetição:
– Repetição controlada por variável;
– Repetição condicional com teste no início;
– Repetição condicional com teste no fim.
Repetição controlada por
variável
• Esse tipo de repetição é ideal para ser
utilizado quando os comandos precisam ser
repetidos por um número de vezes dado por
um limite inicial e um limite final;
• Ou seja, tendo-se os limites inicial e final, o
trecho de repetição sempre será repetido
entre esses limites;
Repetição controlada por
variável
• Estrutura:
...
Para <variável> De <início> Até <fim> Passo <incremento> Faça
<comandos>
FimPara
...

– No campo <variável> deve ser indicada uma


variável que fará o controle do laço. Para evitar
problemas, essa variável não deve receber
atribuição de valor dentro do laço;
Repetição controlada por
variável
• Estrutura:
– No campo <início> deve ser indicado o limite
inicial do laço, ou seja, a partir de qual valor
inicial a variável começa a ser incrementada;
– No campo <fim> define-se o limite final até
quando a repetição será executada. O intervalo
é aberto, ou seja, o intervalo de repetição inclui
os valores de início e fim;
Repetição controlada por
variável
• Estrutura:
– No campo <incremento>, devemos indicar qual
será o incremento da variável a cada iteração,
ou seja, de quanto a variável será acrescida ou
decrescida quando passar pelo laço.
– Observação importante: o incremento é feito
pela própria estrutura de repetição. Não é
necessário atribuir valores à variável, nessa
estrutura, durante a execução do laço.
Repetição controlada por
variável
• Um exemplo:
Programa Exemplo
Inteiro i <- 0;
Início
Para i De 0 Até 10 Incremento 1
Escreva(i);
FimPara
Fim
Repetição controlada por
variável
• Outro exemplo:
Programa Exemplo
Inteiro i <- 0;
Início
Para i De 0 Até 10 Incremento 2
Escreva(i);
FimPara
Fim
Repetição controlada por
variável
• Mais um exemplo:
Programa Exemplo
Inteiro i <- 0;
Início
Para i De 10 Até 0 Incremento -1
Escreva(i);
FimPara
Fim
Repetição controlada por
variável
• Outro exemplo:
Programa Exemplo
Inteiro i <- 0, n <- 0;
Início
Escreva("Digite um número inteiro:");
Leia(n);
Para i De 0 Até n Incremento 1
Escreva(i);
FimPara
Fim
Atividades
1. Escreva um algoritmo para ler o nome de uma pessoa e imprimi-lo na tela 100 vezes;
2. Refaça o algoritmo acima de modo que o número de vezes que o nome vai ser impresso seja
definido pelo usuário.

Observação: utilize a estrutura de repetição controlada por variável.


Repetição condicional
• A repetição condicional é controlada por uma
expressão lógica;
• Os comandos que estão dentro da estrutura
são repetidos de acordo com o resultado
dessa expressão;
Repetição condicional com teste
no início
• Estrutura:
...
Enquanto <expressão lógica> Faça
<comandos>
FimEnquanto
...

– Executa os comandos da estrutura de repetição


enquanto a <expressão lógica> for verdadeira;
Repetição condicional com teste
no início
• Estrutura:
– A exemplo de qualquer estrutura de repetição,
deve-se tomar o devido cuidado para não
causar um loop infinito;
– Observação importante: a estrutura de
repetição condicional não incrementa
automaticamente nenhuma variável.
Repetição condicional com teste
no início
• Um exemplo:
Programa Exemplo
Inteiro i <- 0;
Início
Enquanto (i <= 10) Faça
Escreva(i);
i = i + 1;
FimEnquanto
Fim
Repetição condicional com teste
no início
• Outro exemplo:
Programa Exemplo
Inteiro i <- 10;
Início
Enquanto (i >= 0) Faça
Escreva(i);
i = i – 1;
FimEnquanto
Fim
Repetição condicional com teste
no início
• Mais um exemplo:
Programa Exemplo
Literal continua <- "s“;
Inteiro a <- 0;
Início
Enquanto (continua = "s") Faça
Escreva("Digite um número: ");
Leia(a);
Escreva("O número digitado é: ", a);
Escreva("Deseja continuar (s/n)?");
Leia(continua);
FimEnquanto
Fim
Repetição condicional com teste
no final
• Estrutura:
...
Faça
<comandos>
Enquanto <expressão lógica>
...

– Executa os comandos da estrutura de repetição


pelo menos uma vez;
– Causa a repetição dos comandos enquanto a
<expressão lógica> for verdadeira;
Repetição condicional com teste
no final
• Estrutura:
– A exemplo de qualquer estrutura de repetição,
deve-se tomar o devido cuidado para não
causar um loop infinito;
– Observação importante: a estrutura de
repetição condicional não incrementa
automaticamente nenhuma variável.
Repetição condicional com teste
no final
• Um exemplo:
Programa Exemplo
Inteiro i <- 0;
Início
Faça
Escreva(i);
i = i + 1;
Enquanto (i <= 10)
Fim
Repetição condicional com teste
no final
• Outro exemplo:
Programa Exemplo
Inteiro i <- 10;
Início
Faça
Escreva(i);
i = i – 1;
Enquanto (i >= 0)
Fim
Repetição condicional com teste
no final
• Mais um exemplo:
Programa Exemplo
Literal continua <- "s“;
Inteiro a <- 0;
Início
Faça
Escreva("Digite um número: ");
Leia(a);
Escreva("O número digitado é: ", a);
Escreva("Deseja continuar (s/n)?");
Leia(continua);
Enquanto(continua = "s")
Fim
Repetição condicional com teste
no final
• Pode-se encontrar também a seguinte
estrutura:
...
Repita
<comandos>
AtéQue <expressão lógica>
...

• A diferença fundamental dessa estrutura para


a anterior é que, nesse caso, a repetição
acontecerá enquanto a <expressão lógica> for
falsa.
Estrutura condicional
• Questão para discussão:
– Qual é a diferença básica entre as estruturas de
repetição condicional com teste no início e teste
no fim?