Buscar

Algoritmos I

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 28 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 28 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 28 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

Algoritmos e Estrutura de Dados I 
Parte 1 
Conceitos: 
 Lógica: maneira de raciocinar, utilizando a coerência e o bom senso. 
 Lógica de Programação: planejamento de uma solução computadorizada para um determinado 
problema. 
 Ação: acontecimento que a partir de um estado inicial e após um período de tempo finito, 
produz um estado final. 
 
Algoritmo: 
Uma descrição de comandos que, se obedecidos, resultam numa sucessão finita de ações, atingindo 
um objetivo. 
Ex: guia de preenchimento de imposto de renda 
 instruções para se jogar um jogo 
 uma receita de bolo 
 manual de instalação de um aparelho eletrônico 
 
Sua implementação pode ser feita por um computador, por outro tipo de autômato ou mesmo por 
um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto 
diferenciado de instruções em mais ou menos tempo, espaço ou esforço do que outros. 
 
Exemplo de um algoritmo: Testar lâmpada 
 
 Algoritmo 
 pegue uma escada 
 posicione a escada embaixo da lâmpada 
 se a escada estiver desarmada 
 arme a escada 
 suba na escada 
 retire a lâmpada 
 teste a lâmpada 
 se a lâmpada estiver queimada 
 coloque um lâmpada nova 
 senão 
 coloque alâmpada atual 
 desça da escada 
 desarme a escada 
 guarde a escada 
 Fim 
 
Exercícios 
 
Criar um algoritmo para instruir as regras do seguinte jogo: 
Uma caixa com fichas coloridas deverá ser aberta para que um jogador retire uma ficha sem olhar. 
Conforme a cor, o jogador recebe uma pontuação em cartas de um baralho: 
 
 azul: 2 cartas 
 amarela: 3 cartas 
 verde: 4 cartas 
 demais cores: uma carta 
 
 Algoritmo 
 pegue a caixa 
 abra a caixa 
 retire uma ficha sem olhar 
 se a cor for azul 
 ganhe 2 cartas 
 senão se a cor for amarela 
 ganhe 3 cartas 
 senão se a cor for verde 
 ganhe 4 cartas 
 senão 
 ganhe 1 carta 
 feche a caixa 
 guarde a caixa 
 Fim 
 
Padrões de comportamento: 
 Seqüência de ações: rege o fluxo de execução, determinado qual a ação vem a seguir. Uma 
ação é executada uma após a outra. 
 Ex: desça da escada 
 desarme a escada 
 guarde a escada 
 
 Condição: as ações são executadas se uma condição estabelecida for verdadeira, senão (a 
condição é falsa) outras ações são executadas. A estrutura do senão é opcional. 
 Ex: se a lâmpada estiver queimada 
 coloque um lâmpada nova 
 senão 
 coloque a lâmpada atual 
 
 
Um algoritmo pode ser descrito na forma de: 
 Pseudocódigo, ou Português Estruturado ou Portugol: é uma forma genérica de escrever 
um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve, de forma a ser 
entendida por qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma 
linguagem de programação. 
 Fluxograma: utilização de diagramas e símbolos que expressam a seqüência do fluxo de 
execução dos comandos de um algoritmo. 
 Linguagem de Programação: é um conjunto de regras sintáticas e semânticas usadas para 
definir um programa de computador a partir de um algoritmo compu8tacional. Ex: C, Java, 
Visual Basic. 
 
 
Programa de computador 
Um programa de computador é essencialmente um algoritmo que diz ao computador os passos 
específicos e em que ordem eles devem ser executados. 
O código de um programa pode ser considerado como: 
 Fonte: é o conjunto de palavras ou símbolos escritos em uma das linguagens de 
programação existentes, de forma ordenada e de maneira lógica, contendo instruções de um 
algoritmo. Normalmente, a linguagem de programação é de alto nível, com grande 
capacidade de abstração 
 Objeto: é o nome dado ao código resultante da compilação do código fonte, que é 
convertido e escrito em uma linguagem de baixo nível (linguagem de máquina). 
 Executável: é um arquivo de código objeto, que posteriormente é "ligado" aos outros, 
através de um linker, resultando num arquivo executável ou biblioteca, Este arquivo pode 
ser executado pelo processador da máquina. 
 
Compilador: é um programa que, a partir de um código fonte escrito em uma linguagem de 
programação, cria um código objeto semanticamente equivalente porém escrito em outra 
linguagem. O processo de compilação é composto de análise (análise léxica, sintática e semântica) e 
síntese. A análise tem como objetivo entender o código fonte e representá- lo em uma estrutura 
intermediária. A síntese constrói o código objeto a partir desta representação intermediária. 
Classicamente, um compilador traduz um programa de uma linguagem textual facilmente entendida 
por um ser humano para uma linguagem de máquina, específica para um processador e sistema 
operacional. 
A versão compilada do programa tipicamente é armazenada, de forma que o programa pode ser 
executado um número indefinido de vezes sem que seja necessária nova compilação, o que 
compensa o tempo gasto na compilação. Isso acontece com linguagens como Pascal e C. 
Atualmente, porém, são comuns compiladores que geram código para uma máquina virtual que é, 
depois, interpretada por um interpretador. 
Interpretador: é um programa que lê um código fonte de uma linguagem de programação e os 
convertem em código executável à medida que vai executando o programa. Programas interpretados 
são geralmente mais lentos do que os compilados, mas são também geralmente mais flexíveis, já 
que podem interagir com o ambiente mais facilmente. Exemplos de linguagens interpretadas: 
JavaScript, Phyton, PHP. 
 
 
Processamento de um programa 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Disco: meio físico permanente para armazenagem de arquivos de dados e de programas (fonte, 
objeto e executável). 
Memória: meio físico volátil e temporário para onde é carregado um programa do tipo executável 
e seus dados, quando este necessita ser executado. 
Processador: processa e executa os comandos de um programa executável que se encontra na 
memória do computador. 
 
 
 
Processador 
 
 
Memória 
Disco 
 
Algortimos Computacionais 
 
Constante: um dado que não sofre alteração no decorrer do tempo de execução de um algoritmo. 
Ex: 5, “Hoje”, 'A', 0.35 
 
Variável: um dado que pode ser alterado durante a execução de um algoritmo. São armazenados 
na memória em locais identificados por um nome, o qual serve de referencia ao acesso ao seu 
conteúdo. Esses locais são conhecidos como variáveis de memória. 
Este nome pode ser composto por uma ou mais caracteres, sem espaços, sendo o primeiro uma letra. 
Ex: Soma, X, Valor10, salarioAtual 
 
 
 
 Soma X Valor10 salarioAtual 
 
 Declaração de variáveis de memória: 
 
 VAR: nomeVariável, nomeVariável, .... 
Ex: 
 VAR: Total, Z, numero 
 
Tipo de dados: 
 inteiro Ex: 15, -2 
 real Ex: 1.73, -8.384 
 caracter Ex: A a Z, 0 a 9, caracteres especiais 
 lógico: TRUE (verdadeiro), FALSE (falso) 
 
 Operadores Aritméticos: 
 + soma 
 - subtração 
 * multiplicação 
 / divisão (obtém o quociente) 
 mod divisão (obtém o resto ) 
 
Comando de Atribuição ( = ou ← ) 
permite armazenar dados em variáveis de memória. Pode-se armazenar: 
 constantes: 
 Ex: A = 3 (ou A ← 3) armazena o valor 3 na variável A 
 B = 'A' (ou B ← ‘A’) armazena o caracter A na variável B 
 
 conteúdos de outras variáveis: 
 Ex: C = A (ou C ← A) armazena o conteúdo da variável A na variável C 
 
 resultados de expressões numéricas: 
 Ex: D = A + 4 (ou D ← A + 4) armazena o resultado da soma do conteúdo da 
 variável A com o valor 4,na variável D 
 
 
 
 A B C D 
3 A 3 7 
 
Estruturas de Controle 
Fornecem uma estrutura à execução de um algoritmo, podendo ser combinadas. Tipos: Seqüencial, 
Condicional e Repetitiva. 
 
 
Estrutura Seqüencial 
Expressa uma seqüência única de comandos de um algoritmo a serem executados na ordem em que 
aparecem. 
Exemplo: 
 
Algoritmo 
 VAR: X, Y, Total 
 X = 5 
 Y = 8 
 Total = X + Y 
Fim 
 
Utilizando um fluxograma 
 
Exercícios 
1 - Determinar os conteúdos das variáveis de memória para a execução deste algoritmo: 
 
Algoritmo 
 VAR: A, B, C, D, E, F 
 A = 3 
 B = 14 
 C = B – A 
 C = C + 1 
 D = B – C 
 E = 2 + A * D 
 
Processador 
Memória 
 
 
 
 X Y Total 
5 8 13 
 A = E 
 C = C – A 
 F = 'X' 
 D = D – E 
Fim 
 
A B C D E F 
3 
8 
14 11 
12 
4 
2 
-6 
8 X 
 
Este tipo de raciocínio em um algoritmo computacional é chamado de Teste de Mesa, o qual 
permite a simulação da execução do algoritmo. 
 
2 - Determinar os conteúdos das variáveis de memória para a execução deste algoritmo: 
 
Algoritmo 
 VAR: X, Y, Z, W, P, Q 
 X = 20 
 Y = 10 
 Z = 45 
 W = Z - X * 2 
 P = Y + W 
 W = W + 2 
 X = P + 1 
 Q = Z - P 
 P = P - 1 
 Y = Q 
 Q = X 
Fim 
 
Obs: A execução dos algoritmos anteriores no computador não permite que se possam visualizar os 
conteúdos das variáveis de memória, pois o processamento ocorre apenas entre o processador e a 
memória do computador. 
Outro fato, é que a cada execução destes algoritmos os valores armazenados nas variáveis de 
memória serão sempre os mesmos, pois as variáveis são sempre inicializadas com os mesmos 
valores. Para se obter outros conteúdos, seria necessária a alteração do código fonte. 
 
Entrada e Saída de Dados 
 
Este recurso permite que se possa entrar com valores novos durante a execução do algoritmo e 
visualizar valores processados. 
 
Comando de saída: Escrever 
Envia ou “escreve” uma informação numa saída específica. Ex: vídeo. 
Declaração: 
 Escrever informação 
 
onde, informação pode ser: 
 uma constante. Ex: 
 Escrever 8 envia o valor 8 
 Escrever “valor inválido” envia o texto 
 conteúdo de variáveis de memória. Ex: 
 Escrever “A soma é “ S envia o texto e o conteúdo da variável S 
 resultados de expressões aritméticas. Ex: 
 Escrever “Resultado: “ A * B / 2 envia o texto e o resultado da expressão 
 
Comando de entrada: Ler 
Recebe ou “lê” um dado de entrada específica (ex: teclado) e o armazena numa variável de 
memória. 
Declaração: 
 Ler nomeVariável 
Ex: 
 Escrever “Digite uma letra” envia o texto 
 Ler M recebe por digitação um caracter e o 
 armazena na variável M 
Exemplo: 
Algoritmo 
 VAR: X, Y, Total 
 Escrever “Digite um número” envia o texto 
 Ler X recebe por digitação um número e 
 o armazena na variável X 
 Escrever “Digite outro número” envia o texto 
 Ler Y 
 Total = X + Y 
 Escrever “A soma é “ Total envia o texto e o conteúdo da var. Total 
 
Fim 
 
Utilizando um fluxograma: 
 
Exercícios 
 
1 – Seja o seguinte algoritmo a seguir. Realize testes de mesa para os valores de entrada sugeridos 
relacionando os valores a serem armazenados nas variáveis de memória, durante a sua execução. 
 
Algoritmo 
 VAR: A, B, C, X, Z, W 
 Escrever “Digite um número” 
 Ler A 
 Escrever “Digite um outro número” 
 Ler B 
 Escrever “Digite um outro número” 
 Ler C 
 X = A + B 
 Z = X – C 
 Z = Z * 2 
 W = Z - X 
 Escrever “Valor Final de X “ X 
 Escrever “Valor Final de Z “ Z 
 Escrever “Valor Final de W “ W 
Fim 
 
Valores para os testes de mesa: 
 
a) A = 6 b)A = 10 
 B = 3 B = 4 
 C = 2 C = 11 
 
2 - Criar um algoritmo para o seguinte problema: 
Receber por digitação dois números e visualizar os resultados da soma e da subtração dos dois 
números. 
 
3 - Criar um algoritmo para o seguinte problema: 
Receber por digitação dois números e visualizar os resultados da soma, da subtração, da 
multiplicação e da divisão, dos dois números. 
 
4 - Criar um algoritmo para o seguinte problema: 
Receber por digitação o valor do raio de um círculo. Calcular e visualizar a área desse círculo. A 
formula da Área é : Π R2, onde o valor de Π (pi) é 3,1419 
 
5 – Criar um algoritmo para o seguinte problema: 
Receber por digitação os valores dos dois lados de um retângulo. Calcular e visualizar a área e o 
perímetro do retângulo. 
Área: ladoMenor * ladoMaior 
Perímetro: soma dos quatros lados 
 
6 - Criar um algoritmo para o seguinte problema: 
Receber por digitação as medidas da altura, largura e comprimento das paredes de uma cozinha. 
Uma vez que deseja-se azulejar as quatro paredes da mesma, calcular e informar, visualizando, 
quantas caixas de azulejos serão necessárias, sabendo-se que a caixa de azulejos escolhida contém 
1,8m2 de azulejos. 
 
7 – Criar um algoritmo para o seguinte problema: 
Receber por digitação o salário atual de um funcionário, calcular e visualizar o salário novo, 
considerando-se um aumento cujo valor deverá ser recebido também por digitação. 
 
8- Criar um algoritmo para o seguinte problema: 
Receber dois números por digitação em duas variáveis A e B. Efetuar a troca dos valores das 
variáveis de forma que o valor da variável A passe para a B e o da variável B, passe para a variável 
A. Visualizar os valores das duas variáveis antes e depois da troca. 
Parte 2 
 
Estrutura Condicional ou de Seleção 
 
Avalia se uma condição associada a cláusula SE, é verdadeira ou falsa, para determinar quais 
comandos deverão ser executados. 
 
Condição: é a comparação de dois valores que podem ser constantes, conteúdos de variáveis de 
memória, resultado de expressões aritméticas ou retorno de funções, por meio do uso de operadores 
relacionais. 
 
Operadores Relacionais: 
 = igual 
 < > diferente 
 < menor 
 < = menor ou igual 
 > maior 
 > = maior ou igual 
 
Uma estrutura condicional pode ser simples ou composta: 
 Estrutura Simples: uma condição é avaliada e, se a condição for verdadeira, um conjunto 
ou bloco de um ou mais comandos são executados. Se a condição for falsa, nenhum bloco 
de comandos é indicado e a execução continua fora da estrutura 
 
Declaração da estrutura: 
SE condição 
 Bloco com um ou mais comandos ou estruturas 
FIM SE 
 
Obs: A cláusula FIM SE indica o fim da estrutura condicional. 
 
Ex: 
SE A = B 
 ESCREVER “Os valores das duas variáveis são iguais” 
FIM SE 
 
Obs: se o conteúdo das variáveis de memória A e B são iguais, o comando escrever 
executado. Caso contrário, o programa segue normalmente fora da estrutura. 
 
 
 Estrutura Composta: uma condição é avaliada e, se a condição for verdadeira, um 
conjunto ou bloco de um ou mais comandos são executados. Se a condição for falsa, um 
conjunto ou bloco de comandos de um ou mais comandos são executados. Após o término 
da execução de um dos blocos, a execução continua fora da estrutura 
 
 
Declaração da estrutura: 
SE condição 
 Bloco com um ou mais comandos ou estruturas 
SENÃO 
 Bloco com um ou mais comandos ou estruturas 
FIM SE 
 
A cláusula SENÃO indica a negação da condição da cláusula SE. A cláusula FIM SE indica 
o fim da estrutura condicional. 
 
Ex: 
SE A = B 
 ESCREVER “Os valores das duas variáveis são iguais” 
SENÃO 
 ESCREVER “Os valores das duas variáveis são diferentes” 
FIM SE 
 
Obs:se o conteúdo das variáveis de memória A e B são iguais, o comando escrever do 
primeiro bloco é executado. Senão, o comando escrever do segundo bloco é executado. 
Nunca os dois blocos serão executados seqüencialmente. Após a execução de um deles, o 
programa segue normalmente fora da estrutura. 
 
Utilizando um fluxograma, os dois tipos de estruturas condicionais podem ser expressos da seguinte 
forma: 
 
 
 
Dentro de qualquer um dos blocos de comandos podem existir outras estruturas condicionais. 
Sempre que numa cláusula SENÃO for necessária uma condição a ser avaliada, deve existir um SE 
associada à condição. 
 
Exemplo: 
SE condição 
 SE condição 
 Bloco com um ou mais comandos ou estruturas 
 SENÃO 
 Bloco com um ou mais comandos ou estruturas 
 FIM SE 
SENÃO 
 Bloco com um ou mais comandos ou estruturas 
 FIM SE 
 
Exemplo: 
SE condição 
 Bloco com um ou mais comandos ou estruturas 
SENÃO 
 SE condição 
 Bloco com um ou mais comandos ou estruturas 
 SENÃO 
 Bloco com um ou mais comandos ou estruturas 
 FIM SE 
 FIM SE 
 
Esta última forma também pode ser expressa na forma SENÃO SE, onde apenas um único FIM SE 
é necessário ao final. 
 
 
Exemplo: 
SE condição 
 Bloco com um ou mais comandos ou estruturas 
SENÃO SE condição 
 Bloco com um ou mais comandos ou estruturas 
SENÃO SE condição 
 Bloco com um ou mais comandos ou estruturas 
 - - - - - - 
SENÃO 
 Bloco com um ou mais comandos ou estruturas 
 FIM SE 
 
 
Outros exemplos com utilização de fluxogramas: 
 
Exemplo 1: 
 
 
 
 
 
Exemplo 2: 
 
 
 
Exemplo de algoritmo: 
Receber por digitação dois números inteiros e um operador aritmético (+ ou -). Realizar a operação 
desejada e visualizar o resultado. 
 
1ª versão: 
 Algoritmo 
 VAR: N1, N2,Result, Oper 
 Escrever “Digite um número” 
 Ler N1 
 Escrever “Digite um outro número” 
 Ler N2 
 Escrever “Digite um operador aritmético (+ -)” 
 Ler Oper 
 SE Oper = '+' 
 Result = N1 + N2 
 Escrever “Resultado da soma: “ Result 
 SENÃO SE Oper = '-' 
 Result = N1 – N2 
 Escrever “Resultado da subtração: “ Result 
 SENÃO 
 Escrever “Operador aritmético inválido“ 
 FIM SE 
 Fim 
 
2ª versão: 
 Algoritmo 
 VAR: N1, N2, Oper 
 Escrever “Digite um número” 
 Ler N1 
 Escrever “Digite um outro número” 
 Ler N2 
 Escrever “Digite um operador aritmético (+ -)” 
 Ler Oper 
 SE Oper = '+' 
 Escrever “Resultado da soma: “ N1 + N2 
 SENÃO SE Oper = '-' 
 Escrever “Resultado da subtração: “ N1 – N2 
 SENÃO 
 Escrever “Operador aritmético inválido“ 
 FIM SE 
 Fim 
 
Obs: na primeira versão, foi utilizada a variável Result para receber o resultado da operação 
aritmética escolhida por digitação, sendo em seguida visualizado o seu conteúdo. Na segunda 
versão, não foi utilizada essa variável, sendo o cálculo da operação realizado no comando de escrita. 
 
 
Exercícios 
 
1 – Implementar no exemplo anterior as operações de multiplicação ( * ) e da divisão ( / ). No caso 
da divisão, não executar a mesma se o segundo valor (divisor) for zero, fornecendo uma mensagem. 
 
2 – Receber por digitação um número, determinar e informar se o mesmo é: 
 Múltiplo de 2 
 Múltiplo de 3 
 Múltiplo de 4 
 Múltiplo de 5 
 
 
Expressões condicionais 
 
Uma estrutura condicional pode conter na sua parte condição uma expressão condicional composta 
por mais de uma condição. Nesse caso, utilizam-se os operadores lógicos entre elas, os quais 
definem como as relações entre as condições são conectadas. 
 
 Os operadores lógicos são: NÃO, E , OU. 
 
Durante a execução do programa, o processador avalia cada condição da expressão condicional 
determinando se são verdadeiras ou falsas e, em seguida, utiliza os operadores lógicos aplicando a 
Tabela Verdade a seguir, para determinar o resultado final da expressão (V ou F). 
 
 
Tabela Verdade 
Dada duas condições quaisquer e seus respectivos resultados avaliativos (V ou F), o relacionamento 
entre eles, utilizando-se os operadores lógicos E e OU, será: 
 
1ª 
condição 
2ª 
condição 
E OU 
V V V V 
V F F V 
F V F V 
F F F F 
 
 
Quando se utiliza o operador lógico E, somente será verdadeira a avaliação se as duas condições 
forem verdadeiras. 
Quando se utiliza o operador lógico OU, somente será falsa a avaliação se as duas condições forem 
falsas. 
O operador relacional NÃO é utilizado para inverter ou negar a avaliação de uma condição. 
Numa avaliação com operadores E e OU, o processador realiza primeiro o operador lógico E e 
depois o operador lógico OU. Caso seja necessário começar pelo operador OU, deve-se colocar a 
condição entre parênteses. 
Ex: 
 B > 3 E (A <= X OU D = A + 3) 
 
Exemplo: 
Dados três valores inteiros diferentes recebidos por digitação, informar qual é o maior valor . 
 
Algoritmo 
 VAR: A, B, C 
 Escrever “Digite um número” 
 Ler A 
 Escrever “Digite um outro número” 
 Ler B 
 Escrever “Digite um outro número” 
 Ler C 
 SE A > B E A > C verifica se o conteúdo de A é o maior 
 Escrever “O maior valor é “ A 
 SENÃO SE B > A E B > C verifica se o conteúdo de B é o maior 
 Escrever “O maior valor é “ B 
 SENÃO 
 Escrever “O maior valor é “ C 
 FIM SE 
 Fim 
 
 
Exercícios (continuação) 
 
3 - Dada as seguinte variáveis e seus conteúdos no momento em que cada uma das expressões 
condicionais a seguir serão testadas, determinar o resultado final de cada uma, aplicando a Tabela 
Verdade. 
 
condição NÃO 
V F 
F V 
 
Variáveis 
 
A = 5 B = 8 C = 10 D = 15 
 
a) SE A = B E C > 4 
 
 F E V → F 
 
b) SE C < D OU A >= B 
 
 V OU F → V 
 
c) SE B < C E A < D-10 OU A+3 = B 
 
 V E F OU V 
 
F OU V → V 
 
d) SE NÃO ( A = D / 3 OU C < = 9) 
 
 NÃO( V OU F ) 
 
 NÃO( V ) → F 
 
 
4- Idem para: 
 
Variáveis 
A = 3 B = 6 X = 11 Y = 13 
 
a) SE A = B -3 E Y + 2 < X OU B < Y 
 
b) SE Y + 1 >= A + X OU X MOD 3 < 1 E Y – 9 > B 
 
c) SE X + Y <= 20 OU A – B > X OU X * 2 > B + 5 
 
d)SE A – B <= Y – X E ( B * 3 >= X + 7 OU Y – A >= X ) 
 
 
5 – Receber por digitação o valor do salário atual de um funcionário. Calcular e visualizar o salário 
novo deste funcionário sabendo-se que o valor do acréscimo é baseado na tabela a seguir: 
 
 
Salário Atual % acréscimo 
< 1500,00 10 
entre 1500,00 e 
4000,00 
8 
 4000,00 5 
 
 
 
6 – Receber por digitação as medidas dos três lados de um triângulo. Determinar e informar: 
• O perímetro do triângulo 
• O tipo do triângulo: - eqüilátero: três lados iguais 
- isósceles: dois lados iguais 
- escaleno: três lados diferentes 
 
Obs: antes de determinar os cálculos, verificar se os valores dos lados formam um triângulo: a soma 
de dois lados deve ser maior que o valor do outro lado. 
 
7- Receber por digitação o código da função e o salário atual de um funcionário. Calcular e 
informar o novo salário, sabendo-se que: 
 
Código da 
função 
Salário atual acrescimo 
50 ou 51 -------- 10% 
55 
<= 3000 8% 
> 3000 7% 
demais 
códigos 
< 1000 12% 
entre 1000 e 5000 11% 
> 5000 8%Exemplo de Teste de Mesa 
Considerando-se o algoritmo a seguir, realizar testes de mesa determinando os valores parciais das 
variáveis para os valores de entrada das seguintes execuções: 
 Algoritmo 
 var: V1, V2, V3, T, RES, X, VAL 
 escrever “Digite um numero:” 
 ler V1 
 escrever “Digite outro numero:” 
 ler V2 
 escrever “Digite outro numero:” 
 ler V3 
 T = V1 + V2 + V3 
 X = 1 
 se T < 15 
 RES = T – V1 
 X = 3 
 senão se T >= 15 E T <= 25 
 RES = T – V2 + 1 
 X = 5 
 senão 
 RES = T – V3 
 fim se 
 VAL = T – RES + X 
 T = T + VAL 
 escrever “Valor : ” VAL 
 escrever “Total : ” T 
 Fim 
 
a) V1 = 5 V2 = 3 V3 = 5 
 
 
 
 
 
 
 
 
b) V1 = 10 V2 = 9 V3 = 7 
 
 
 
 
 
 
 
c) V1 = 8 V2 = 4 V3 = 6 
 
 
 
 
 
 
 
 
Exercício 
Considerando-se o algoritmo a seguir, realizar testes de mesa determinando os valores parciais das 
variáveis para os valores de entrada das seguintes execuções: 
 Algoritmo 
 var: n1, n2, x, y 
 escrever “Digite um numero:” 
 ler n1 
 escrever “Digite outro numero:” 
 ler n2 
 x = 4 
 y = 10 
 se n1 > n2 
 x = x + n1 
 senão 
 y = y + n2 
 fim se 
 x = x + 1 
 y = y + 2 
 se x >= y 
 x = x + 5 
 senão 
 x = x + y 
 fim se 
 escrever “Valor de X: ” x 
 escrever “Valor de Y: ” y 
 Fim 
 
 a) n1 = 7 n2 = 2 
 
 b) n1 = 3 n2 = 8 
V1 V2 V3 T RES X VAL 
5 3 5 13 8 1 8 
 21 3 
 
V1 V2 V3 T RES X VAL 
10 9 7 26 19 1 8 
 34 
 
V1 V2 V3 T RES X VAL 
8 4 6 18 15 1 8 
 26 5 
 
Parte 3 
 
Variáveis Acumuladoras 
São variáveis que sofrem acumulação positiva ou negativa de um valor no seu conteúdo atua l. 
Devem ser inicializadas com um valor para que da primeira acumulação, o seu conteúdo tenha um 
valor real e não sujeira de memória. Algumas linguagens de programação inicializam com zero uma 
variável numérica no momento da sua declaração. 
Ex: 
A = A + 2 //somar 2 ao conteúdo da variável A e armazenar o resultado em A 
X = X - Y //subtrair o conteúdo de Y do conteúdo da variável X e armazenar o 
 resultado na variável X 
 
 
Estrutura Repetitiva 
 
Permite que um bloco ou conjunto de comandos ou estruturas sejam repetidas enquanto a condição 
indicada for verdadeira. 
Declaração: 
 
 REPITA ENQUANTO condição 
 Bloco com um ou mais comandos ou estruturas 
 FIM REPITA 
onde, 
condição é a comparação de dois valores que podem ser constantes, conteúdos de variáveis de 
memória, resultado de expressões aritméticas ou retorno de funções, por meio do uso de 
operadores relacionais. Aqui pode ser utilizado uma expressão condicional com mais de uma 
condição relacionada com os operadores E e OU. 
 
Se a condição for verdadeira o bloco de comandos será executado. Ao ser encontrado a cláusula 
FIM REPITA, a execução do algoritmo retorna ao início da estrutura para uma nova avaliação da 
condição. Quando a condição for falsa, o bloco não é executado e a execução do programa continua 
a partir do próximo comando após o término da estrutura. 
 
Tipos de repetições: 
 
- Indefinida: quando não se sabe a quantidade de vezes que o bloco da estrutura será executado. A 
cada execução a quantidade pode variar. 
Ex: Receber por digitação uma certa quantidade de números, enquanto o usuário desejar digitar 
números. Somá-los e visualizar o resultado da soma ao final. 
 Algoritmo 
 VAR: num, soma, continua //declaração das variáveis 
 soma = 0 //inicializa soma com o valor 0 
 continua = ‘S’ //inicializa continua com ‘S’ 
REPITA ENQUANTO continua=‘S’ //se verdadeira executa o bloco 
Escrever “Digite um número” //envia um texto 
 Ler num //armazena o valor digitado em num 
 soma = soma + num //acumula o conteúdo de num em soma 
 Escrever “Deseja continuar S/N” //envia um texto 
 Ler continua //armazena o valor digitado em continua
 FIM REPITA //retorna ao inicio da estrutura 
 Escrever “A soma dos números é “ soma //envia o texto e conteúdo de soma 
 Fim 
 
Em fluxograma: 
 
 
A variável continua é utilizada na condição da estrutura para determinar se o bloco será executado 
ou não. 
 
- Definida: quando se estabelece a quantidade de vezes que o bloco da estrutura será executado. A 
cada execução a quantidade de vezes é sempre a mesma. 
Ex: Receber por digitação 5 números, somá-los e visualizar o resultado da soma ao final. 
 
 Algoritmo 
 VAR: num, soma, cont //declaração das variáveis 
 soma = 0 //inicializa soma com o valor 0 
 cont = 0 //inicializa cont com 0 
REPITA ENQUANTO cont < 5 //se verdadeira executa o bloco 
Escrever “Digite um número” //envia um texto 
 Ler num //armazena o valor digitado em num 
 soma = soma + num //acumula o conteúdo de num em soma 
 cont = cont + 1 //acumula 1 em cont 
 FIM REPITA //retorna ao inicio da estrutura 
 Escrever “A soma dos números é “ soma //envia o texto e conteúdo de soma 
 Fim 
 
Em fluxograma: 
 
 
Foi utilizada a variável cont na condição da estrutura, como sendo uma variável contadora do 
número de vezes que o bloco de comandos será executado. 
 
 
Exemplo da otimização de um algoritmo ao utilizar uma estrutura de repetição 
 Visualizar os números de 1 a 500 no vídeo. 
 
 1ª versão: sem estrutura de repetição 
 Algoritmo 
 Escrever “Números de 1 a 500” //envia um texto 
Escrever 1 //envia o número 1 para o vídeo 
Escrever 2 //envia o número 2 para o vídeo 
Escrever 3 //envia o número 3 para o vídeo 
 ---- ---- 
Escrever 499 //envia o número 499 para o vídeo 
Escrever 500 //envia o número 500 para o vídeo 
 Fim 
 
Obs: será necessário introduzir no algoritmo 500 comandos de escrever um número. Se o 
algoritmo for alterado para a visualização de 1000 números será necessário adicionar-se mais 500 
comandos desse tipo. 
 
 2ª versão: com estrutura de repetição 
 Algoritmo 
 VAR: num //declaração da variável 
 num = 1 //inicializa num com o valor 1 
 Escrever “Números de 1 a 500” //envia um texto 
REPITA ENQUANTO num <= 500 //se verdadeira executa o bloco 
Escrever num //envia o número para o vídeo 
 num = num + 1 //acumula 1 em num 
 FIM REPITA //retorna ao inicio da estrutura 
 Fim 
 
Obs: para o uso da estrutura será necessário a criação da variável num, que após ser inicializada 
com 1, tem o seu valor adicionado de 1 toda vez que o seu conteúdo for visualizado. A variável num 
é utilizada na condição para se determinar a quantidade de vezes que o bloco será repetido. Se o 
algoritmo for alterado para a visualização de 1000 números será necessário apenas a alteração da 
condição, que ficaria: num <= 1000. 
 
Exercícios 
 
1 – Visualizar os números de 1 a 500, com exceção dos números múltiplos de 3. 
 
2 – Visualizar os números de 1 a 500 na ordem inversa. 
 
3 – Visualizar os números de 1 até um número recebido por digitação. 
 
4 – Escrever os números em ordem crescente ou decrescente, entre dois números digitados 
inclusive, de acordocoma a ordem dos valores destes. 
 
Exemplo 
Uma pesquisa de mercado entrevistou 100 pessoas para saber a preferência pelos produtos A, B e 
C. Receber por digitação as preferências dessas pessoas e visualizar ao final a quantidade de 
preferências de cada tipo de produto. 
 
 Algoritmo 
 VAR: prod, cont, totA, totB, TotC //declaração das variáveis 
 cont = 0 //inicializa cont com o valor 0 
 totA = 0 //inicializa totA com o valor 0 
 totB = 0 //inicializa totB com o valor 0 
 totC = 0 //inicializa totC com o valor 0 
 REPITA ENQUANTO cont < 100 //se verdadeira executa o bloco 
Escrever “Digite o produto “ //envia o texto 
Ler prod //armazena o produto digitado em prod 
SE prod = 'A' OU prod = 'a' 
 totA = totA + 1 //acumula 1 na variável totA 
SENÃO SE prod = 'B' OU prod = 'b' 
 totB = totB + 1 //acumula 1 na variável totB 
SENÃO SE prod = 'C' OU prod = 'c' 
 totC = totC + 1 //acumula 1 na variável totC 
FIM SE 
cont = cont + 1 //acumula 1 em cont 
 FIM REPITA //retorna ao inicio da estrutura 
 Escrever “Qtde de produtos A: “ totA //envia o texto e conteúdo de totA 
 Escrever “Qtde de produtos B: “ totB //envia o texto e conteúdo de totB 
 Escrever “Qtde de produtos C: “ totC //envia o texto e conteúdo de totC 
Fim 
 
 
Exercícios 
5 – Receber por digitação de cada aluno de uma turma de 1º grau com 30 alunos, as seguinte 
informações: 
• sexo (M, F) 
• idade 
• série 
Determinar e informar ao final: 
• Quantidade de meninas com 10 anos que estão na 3ª série. 
• Quantidade de meninos entre 10 e 13 anos que estão na 6ª série 
• Quantidade de alunos entre 9 e 12 anos que cursam a 4ª ou 5ª série 
 
6 – Receber por digitação 30 números inteiros. Determinar e informar quantos números existem em 
cada uma das seguintes faixas: 
 
Faixa Valor 
1 0 – 30 
2 31 – 60 
3 61 – 90 
4 > 90 
 
 
 
7 – Para uma certa quantidade de vendas de uma loja, cuja quantidade será recebida por digitação, 
receber os seguintes dados de cada uma das vendas: 
• tipo de venda (P – à prazo, V – à vista) 
• valor da venda 
 
Calcular e informar: 
• Total das vendas à prazo 
• Total das vendas à vista 
• Quantidade de vendas à prazo menores que R$ 500,00 
• Quantidade de vendas à vista maiores que R$ 3000,00 
 
 
8- Receber por digitação para cada uma das 30 crianças de uma escola infantil, o período que esta 
freqüenta (P – parcial, I – integral) e a quantidade de refeições diárias utilizadas. Apresentar o valor 
total a ser pago mensalmente, sabendo-se que este deverá se calculado conforme a tabela a seguir: 
 
Período 
Calculo da 
mensalidade 
Valor da refeição 
 P - Parcial 1,8 salários 
mínimos 
R$ 5,00 
 I - Integral 3,75 salários 
mínimos 
R$ 6,00 
 
 
O valor total incorpora o valor da mensalidade e o valor das refeições. 
Receber por digitação o valor do salário mínimo 
 Apresentar ao final a quantidade de crianças que cursam cada um dos períodos 
 
Exemplos de Teste de Mesa 
 
1 - Dado o seguinte algoritmo: 
 
Algoritmo 
 var: x1, x2, y, k, m, b, c 
 escrever “Digite um numero” 
 ler x1 
 escrever “Digite outro numero” 
 ler x2 
 y = 7 
 k = 0 
 m = 0 
 c = 1 
 repita enquanto y >= x1 
 k = k + x1 + 1 
 se k > 7 
 c = c + 2 
 senão 
 c = c + 3 
 fim se 
 b = 1 
 repita enquanto b < x2 
 m = m + 2 
 b = b + 1 
 c = c + 1 
 fim repita 
 y = y – 1 
 fim repita 
 escrever c 
 escrever k 
 escrever m 
Fim 
 
Realizar teste de mesa com os valores abaixo para uma execução: 
 
 a) x1 = 4 
 x2 = 4 
 
x1 x2 y k m b c 
4 4 7 
6 
5 
4 
3 
0 
5 
10 
15 
20 
0 
2 
4 
6 
8 
10 
12 
14 
16 
18 
20 
22 
24 
1 
2 
3 
4 
1 
2 
3 
4 
1 
2 
3 
4 
1 
2 
3 
4 
1 
4 
5 
6 
7 
9 
10 
11 
12 
14 
15 
16 
17 
19 
20 
21 
22 
 
 
 b) x1 = 5 
 x2 = 2 
 
x1 x2 y k m b c 
5 2 7 0 0 1 1 
 6 6 2 2 4 
 5 12 4 1 5 
 4 18 6 2 7 
 1 8 
 2 10 
 11 
 
 
 
 
 
 
c) x1 = 4 
 x2 = 1 
 
 
x1 x2 y k m b c 
4 1 7 0 0 1 1 
 6 5 1 4 
 5 10 1 6 
 4 15 1 8 
 3 20 10 
 
 
Exercícios de Teste de Mesa 
 
1- Dado o seguinte algoritmo: 
 
Algoritmo 
 var: a, b, c, d, e, i, j, tot 
 escrever “ digite um numero” 
 ler a 
 escrever “digite outro numero” 
 ler b 
 escrever “digite outro numero” 
 ler c 
 tot = 0 
 d = 1 
 e = 0 
 i = 1 
 repita enquanto i < a 
 tot = tot + d + 2 
 e = e + c 
 j = 1 
 repita enquanto j < b 
 se e > 8 
 d = d + e + 1 
 senão 
 d = d + e 
 fim se 
 j = j + 1 
 fim repita 
 i = i + 1 
 fim repita 
 escrever tot 
 escrever d 
 escrever e 
Fim 
 
Realizar teste de mesa com os valores abaixo para uma execução: 
a) a = 3 b) a = 2 
 b = 3 b = 2 
 c = 2 c = 5 
 
 
2 - Seja o seguinte algoritmo: 
 
Algoritmo 
 var: n1, n2, x, y, sub, tot 
 escrever “Digite um numero” 
 ler n1 
 escrever “Digite outro numero” 
 ler n2 
 sub = 1 
 x = 0 
 tot = 0 
 repita enquanto n1 > x 
 sub = 1 + x + sub 
 y = 0 
 repita enquanto n2 > y 
 tot = tot + sub 
 sub = sub + 2 
 y = y + 1 
 fim repita 
 se sub > 10 
 tot = tot + 1 
 fim se 
 x = x + 1 
 fim repita 
 escrever tot 
 escrever sub 
Fim 
 
Realizar teste de mesa com os valores abaixo para as execuções: 
a) n1 = 3 b) n1 = 2 
 n2 = 2 n2 = 4 
 
 
3- Seja o seguinte algoritmo: 
 
Algoritmo 
 var: v1, v2, v3, x, y, w, z, s 
 escrever “Digite um numero” 
 ler v1 
 escrever “Digite outro numero” 
 ler v2 
 escrever “Digite outro numero” 
 ler v3 
 s = 0 
 x = 1 
 z = 0 
 repita enquanto x < v1 
 z = z + v1 
 y = 6 
 repita enquanto y >= v2 
 s = s + y – 1 
 se s > 9 
 z = z - 2 
 senão 
 z = z + 2 
 fim se 
 w = 1 
 repita enquanto w <= v3 
 s = s + 1 
 w = w + 1 
 fim repita 
 y = y - 1 
 fim repita 
 x = x + 1 
 fim repita 
 escrever c 
 escrever k 
 escrever m 
Fim 
 
Realizar teste de mesa com os valores abaixo para as execuções: 
a) v1 = 3 b) v1 = 2 
 v2 = 5 v2 = 4 
 v3 = 2 v3 = 3

Outros materiais