Prévia do material em texto
UNIP – Universidade Paulista
Material de apoio para Algoritmo e lógica de programação
Prof. Francisco J. Martins
SUMÁRIO
Introdução aos algoritmos .......................................................................................... 2
O que é lógica? .......................................................................................................... 2
O que é algoritmo? ..................................................................................................... 2
O que é Padrão de Comportamento? ......................................................................... 3
Estruturas de controle ................................................................................................ 3
Português Estruturado, Pseudocódigo ou Portugol .................................................... 3
O que é complexidade? .............................................................................................. 3
Tipos Primitivos de Dados .......................................................................................... 4
Constantes ................................................................................................................. 5
Variáveis ..................................................................................................................... 5
Formação de Identificadores ...................................................................................... 6
Declaração de Variáveis ............................................................................................. 6
Expressões Aritméticas: ............................................................................................. 7
Operadores Aritméticos .............................................................................................. 7
Simbologia gráfica básica para fluxogramas e diagramas de bloco: .......................... 8
Aplicações usando estruturas de controle .................................................................. 9
Método de construção de algoritmos .......................................................................... 9
Estrutura Sequencial: .............................................................................................. 9
Estrutura de Seleção: .............................................................................................10
Seleção simples: .................................................................................................10
Seleção composta: ..............................................................................................10
Estrutura de Repetição com teste no início - Looping: ...........................................11
Estrutura de Repetição com teste no final - Looping: .............................................11
Exercícios propostos: ................................................................................................12
Bibliografia: ................................................................................................................18
Este material foi produzido e adaptado pelo profº Francisco Martins para uso exclusivo nas disciplinas que leciona. O uso deste
material em outras disciplinas deverá ser autorizado. Sugestões e correções enviem para e-mail para
franciscomartins60@gmail.com
mailto:franciscomartins60@gmail.com
2
Profº Francisco J. Martins – Algoritmos e lógica de programação
Introdução a algoritmos
Para PUGA (2009). A ideia de algoritmo é muito antiga, discutida por matemáticos e
filósofos, destacando entre eles Gottfried Von Leibniz, que vislumbrava, no século XVII,
máquinas universais de calcular e estranhas linguagens simbólicas para representar
ideias complexas através de sinais convencionais. A matemática clássica, em grande
parte é o estudo de determinados algoritmos, como os aplicados na álgebra elementar,
que substitui números por letras e define um conjunto de símbolos que são
manipulados por meio de regras práticas, como uma receita, um guia.
Como exemplo, o produto de (a+b) e (a+b) é obtido da seguinte forma:
a) a é multiplicado por a;
b) a é multiplicado por b duas vezes;
c) b é multiplicado por b;
d) os resultados obtidos são somados.
Como resultado, obteríamos a seguinte expressão: a² + 2ab + b².
Assim, podemos dizer que algoritmo é uma seqüência lógica e finita de instruções
que devem ser seguidas para a resolução de um problema ou execução de uma tarefa.
São amplamente utilizados na área da ciência da computação, desde a definição das
instruções realizadas pelo hardware, processadores e demais dispositivos, passando
pelas operações executadas pelo sistema operacional, no gerenciamento dos
computadores, até a documentação das operações necessárias à elaboração de
soluções voltadas para a construção de interfaces entre software e hardware,
programas e demais aplicativos. PUGA(2009).
O que é lógica?
É a arte de pensar corretamente, tem em vista a correção do raciocínio.
O que é algoritmo?
É uma seqüência de passos ou instruções que visam atingir um objetivo finito e bem
definido. (Ordem de pensamento e, portanto Lógica).
Exemplo:. Uma receita de bolo.
Um mapa do tesouro.
Para entendermos melhor algoritmo, vamos evidenciar melhor alguns conceitos:
AÇÃO:. É um acontecimento que a partir de um estado inicial, após um período de
tempo finito, produz um estado final previsível e bem definido em que:
Estado é a situação atual de dado objeto.
Portanto algoritmo pode ser a descrição de um conjunto de ações que, obedecidas,
resultam numa sucessão finita de passos, atingindo o objetivo.
Em geral algoritmos destinam-se sempre à solução de problemas.
"Sistema de uma sucessão de cálculos numéricos, Operação ou processo de
cálculo".
3
Profº Francisco J. Martins – Algoritmos e lógica de programação
O que é Padrão de Comportamento?
É o mesmo que regra de formação, série que obedece a uma constância. Observemos
a seqüência de números: 1, 6, 11, 16, 21, 26, ...
Estruturas de controle
Seqüência: é a estrutura de uma convenção que rege o fluxo de execução de um
grupo de instruções, determinando qual a ação que vem a seguir.
Seleção: é a estrutura que permite a inspeção de uma condição onde se define qual o
bloco de ações será executado de acordo com o resultado obtido nesta inspeção.
Repetição: é a estrutura que permite a inspeção de uma condição onde se define a
repetição ou não de determinado bloco de ações que deverá ser executado enquanto
uma determinada condição de teste for aceita combinando com a lógica inspecionada.
(condição Falsa ou Verdadeira). Tecnicamente, esta forma de controle de fluxo é
chamada de LAÇO ou LOOPING.
Português Estruturado, Pseudocódigo ou Portugol
Para PUGA (2009). É uma forma de representação de algoritmos que utiliza uma
linguagem flexível, intermediária entre a linguagem natural e a linguagem de
programação. É utilizado para organizar o raciocínio lógico a ser seguido para a
resolução de um problema ou para definir os passos para a execução de uma tarefa.
Também utilizado para documentar rotinas de um sistema.
Exemplo:
Algoritmo Exemplo Identificação do algoritmo
Var salário: Real Declaração das variáveis
Idade, n_pessoas, tot_pessoas: inteiro
Inicio Corpo do algoritmo
n_pessoas 1
tot_pessoas 0
Enquanto (n_pessoas <= 50) Faça
Ler (idade, salário)
Se (idade < 30) e (salário > 3000,00) Então
Tot_pessoas tot_pessoas + 1
Fim-Se
N_pessoas n_pessoas + 1
Fim-Enquanto
Mostrar (“Número total de pessoas: “, tot_pessoas)
Fim.
PUGA (2009 p.12)
Existe lógica no dia-a-dia? (Ordem do pensamento). Claro, se agimos pensamos, e, se
pensamos, empregamos algum tipo de lógica para a consecução da ação.
O que é complexidade?
4
Profº Francisco J. Martins – Algoritmos e lógica de programação
É sempre encarada como sinônimo de Variedade, que representa a quantidade de
situações diferentes que um problemapode oferecer.
Um dos maiores fatores de aumento da complexidade é, a forma errônea de
autoquestionar-se a respeito de um dado problema.
O Que versus Como?
Como é um sorvete?
Deliciosa sobremesa gelada, embaladas em diversos formatos e tipos, um destes tipos
com formato esférico, normalmente acompanhado de um cone comestível, em diversas
cores e sabores.
O que é um sorvete?
Gordura vegetal hidrogenada, leite em pó, açúcar, aromatizantes, corantes e
estabilizantes.
Como é um disco flexível?
Disco quadrado, chato que pode ser colorido e de diversas marcas, com uma abertura
no centro e nas duas faces.
O que é um disco flexível?
Meio magnético e portátil usado para armazenamento de informações.
Legibilidade:. Mede a capacidade de compreensão do algorítmo por qualquer
obervador, a clareza com que sua lógica está exposta. Quanto mais legível menos
complexo.
Portabilidade:. Diz respeito às várias linguagens de programação existentes no
mercado, e em muitos casos muito complexas. A vantagem do algoritmo está em
preocupar-se apenas com a lógica do problema, é representado em português, e pode
ser implementado facilmente em qualquer linguagem de programação.
Tipos Primitivos de Dados
Informação é a matéria-prima necessária aos computadores, pois eles são capazes de
manipular e armazenar um grande volume de dados com alto desempenho, liberando o
homem para tarefas, nas quais seu conhecimento é indispensável. A ciência
denominada INFORMÁTICA, é que estuda a informação e suas aplicações.
Para entender melhor a forma pela qual o computador manipula as informações: vamos
dividi-las em quatro tipos primitivos:
Inteiro: Toda e qualquer informação numérica que pertença ao conjunto dos
números inteiros relativos (negativa, nula ou positiva).
a) Ele tem 15 irmãos.
b) A temperatura desta noite está de –2 graus.
Real: Toda e qualquer informação numérica que pertença ao conjunto dos números
reais (negativa, nula ou positiva).
a) Ela tem 1,73 metro de altura.
5
Profº Francisco J. Martins – Algoritmos e lógica de programação
b) Meu saldo bancário é de –R$ 121,07.
Caractere: Toda e qualquer informação composta por um conjunto de caracteres
alfabéticos letras de (A a Z), dígitos de (0 a 9) e símbolos especiais como: {(,~, !, @,
#, $, %, ^, &, *, <, >, ?, etc)}.
a) Constava na prova: “Use somente caneta!”.
b) O parque municipal estava repleto de placas: “Não pise na Grama”.
Lógico: Toda e qualquer informação que pode apenas assumir duas situações
(biestável).
a) A porta pode estar fechada ou aberta.
b) A lâmpada pode estar acesa ou apagada.
EXERCÍCIOS:
Determine qual é o tipo primitivo de informação presente nas sentenças abaixo:
a) A placa “Pare!” tinha dois furos de bala.
b) José subiu oito degraus para pegar uma laranja boa.
c) Joana levou três horas e meia para chegar ao hospital onde concebeu uma garota.
d) Astrogilda pintou em sua camisa: “Preserve o meio ambiente”, e ficou devendo R$
95,12 ao vendedor de tintas.
e) Felisberto recebeu sua 18ª medalha por ter alcançado a marca de 57,3 segundos
nos 100 metros rasos.
Constantes
Uma informação é constante quando não sofre nenhuma variação no decorrer do
tempo.
Para diferenciar as informações constantes do tipo caractere, de outros tipos de
informação, deve-se delimitá-las por um par de aspas (“”).
Convencionou-se que as informações do tipo lógico são sempre verdadeiras ou falsas.
Exemplos: 5, “Não Fume”, 2527, -0.58, “R$ 0,50”, Falso.
Variáveis
Uma informação é considerada variável quando tem a possibilidade de ser alterada em
algum instante no decorrer do tempo.
Exemplos: A cotação do dólar, O peso de uma pessoa, O índice da inflação, etc.
6
Profº Francisco J. Martins – Algoritmos e lógica de programação
Formação de Identificadores
Supondo que, em contratos financeiros não possamos utilizar um valor fixo em moeda
corrente como base para reajuste, pois com o tempo esse valor estaria defasado. Para
resolver este problema, poderíamos utilizar um parâmetro que fornecesse valores
atualizados em moeda corrente para cada período.
Haveria então a necessidade de nomear esse parâmetro que representa valores em
mutação, tal como IRT, índice de reajustes totais.
Esses nomes das informações de caráter variável são os identificadores, os quais
devem acompanhar as seguintes regras de formação:
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 caracteres especiais;
4. Os caracteres alfabéticos devem obrigatoriamente ser escritos em maiúsculo.
Exemplo:
a) Identificadores válidos: ALPHA, X, BJ153, K7, NOTAS, MÉDIA, ABC, INPS, FGTS.
b) Identificadores inválidos: 5X, E(13), A:B, X-Y, NOTA/2, AWQ*, P&AA.
Declaração de Variáveis
No ambiente computacional, as informações variáveis são guardadas em dispositivos
eletrônicos chamados de “memória”. Podemos comparar essa memória com um
armário repleto de gavetas, e estas seriam os locais físicos responsáveis por
armazenar objetos. Visto que na memória (armário) existem inúmeras variáveis
(gavetas), é necessário diferenciá-las, e isto é feito através dos identificadores
(etiquetas).
Cada variável, no entanto, pode guardar apenas uma informação de cada vez, sendo
sempre do mesmo tipo.
Portanto, precisamos definir as variáveis seguindo algumas regras sintáticas:
declaração de variáveis => tipo =>: lista de variáveis => ;
tipo => inteiro, real, caractere e lógico.
Exemplos: inteiro: X;
caractere: NOME, ENDERECO, DATA;
real: ABC, XPTO, PESO, DOLAR;
lógico: RESPOSTA, H286;
RESPOSTA é o nome de um local de memória que só pode conter valores do tipo
lógico, ou seja, por convenção, verdadeiro ou falso.
X é o nome de um local de memória que só pode conter valores do tipo inteiro,
qualquer um deles.
7
Profº Francisco J. Martins – Algoritmos e lógica de programação
Não podemos permitir que mais de uma variável possua o mesmo identificador, isto
geraria dúvidas na utilização. Só é permitido guardar informações em variáveis do
mesmo tipo.
EXERCÍCIOS:
1- Assinale os identificadores válidos:
a) (X) b) U2 c) AH! d) “ALUNO” e) #55 f) KM/L
g) UYT h) ASDRUBAL i) AB*C j) O&O l) B52
2- Supondo que as variáveis NB, NA, NMat, SX sejam utilizadas para armazenar a
nota do aluno, o nome do aluno, o número da matrícula e o sexo, declare-as
corretamente.
3- Encontre os erros da declaração a seguir:
Inteiro: ENDEREÇO, NFILHOS;
Caractere: IDADE, X;
Real: CRUZEIRO$, XPTO, C, PESO, OUT;
Lógico: LÂMPADA, C;
Expressões Aritméticas:
Denominamos expressão aritmética aquela cujos operadores são aritméticos, e cujos
operandos são constantes e/ou variáveis do tipo numérico (inteiro e/ou real).
Expressão aritmética => operando => operador aritmético => operando
Operando => constante numérica
variável numérica
função matemática
Operadores Aritméticos
São os símbolos que representam as oprerações básicas da matemática, a saber:
+ (adição) - (subtração) * (multiplicação)
/ (divisão) ** (potenciação) // (radiciação)
Exemplo: 2+2, XPTO/5, X**2, X-3, 3**2, 3//x, 2*NOTA, 3//9.
Em linguagens de programação, usa-se outras operações matemáticas não-
convencionais cujos nomes dos operadores são:
8
Profº Francisco J. Martins – Algoritmos e lógica de programação
Linguagem PASCAL / DELPHI Mod (Módulo - resto da divisão)
Div (quociente inteiro da divisão)
Linguagem VISUAL BASIC
Mod (Módulo - resto da divisão)
\ (quociente inteiro da divisão)
Linguagem C / C++ % (Módulo - resto da divisão)
Exemplo: Na operação 9/4 temos: quociente = 2 e resto = 1. Logo:
9 Mod 4 = 1 9 Div 4 = 2
15 Div 7 resulta 2 ou 15 \ 7 resulta 2
15 Mod 7 resulta 1
27 Div 5 resulta 5 ou 27 \ 5 resulta 5
27 Mod 5 resulta 2
Simbologia gráfica básica para fluxogramas e diagramas de bloco:
Existe uma infinidadede símbolos usados nas mais diversas áreas administrativas, bem
como dentro das áreas técnicas de tecnologia da informação, tais como: programação,
teleprocessamento, analise de sistemas, etc. A seguir os básicos:
Terminal – símbolo utilizado para indicar o início e fim do fluxo de um
programa.
Seta de fluxo de dados – obrigatório para indicar o sentido do fluxo
dos dados, serve exclusivamente para conectar os símbolos e blocos
existentes no diagrama, e indicar sentido do fluxo de execução no
diagrama.
Processamento – símbolo utilizado para indicar cálculos (algoritmos)
a efetuar, atribuições de valor ou qualquer manipulação de dados que
indique uma transformação de valores.
Saída de dados em vídeo – utiliza-se este símbolo quando se deseja
indicar que a saída de dados deverá ser em dispositivos visuais como
no monitor de vídeo.
Decisão – Permite a inspeção de determinada condição e indica as
possibilidades de desvios do fluxo de execução do diagrama, de
acordo com a seleção do resultado obtido na inspeção. As opções:
Verdadeiro e Falso devem ser tratadas sempre para manter a lógica
de execução do diagrama.
Conector – utilizado quando é preciso particionar o diagrama.
Quando ocorrer mais de uma partição, é colocado uma letra ou
número dentro do símbolo de conexão para identificar os pares ou
seqüência de ligação.
9
Profº Francisco J. Martins – Algoritmos e lógica de programação
Conector – especifico para indicar que há conexão do fluxo em outras
páginas.
Preparação – refere-se a um determinado grupo de operações não
incluídas na diagramação, bem como, na elaboração de uma chave
que modificará a execução de um determinado programa.
Teclado – Serão as informações recebidas ou fornecidas de um
computador, ou por um computador.
Aplicações usando estruturas de controle
Problema:. Desenvolva um algoritmo que calcule a média aritmética entre quatro
notas quaisquer fornecidas pelo usuário.
Método de construção de algoritmos
Resolvendo através deste método, devemos:
1) Entender adequadamente o enunciado do problema.
2) Definir:
a) Dados de entrada: notas bimestrais (N1, N2, N3, N4);
b) Dados de saída: média aritmética anual (MA).
3) Processamanto: O que deve ser feito para transformar quatro notas bimestrais
numa média anual?
a) Verificar como é calculada a média aritmética (soma dos elementos divididos
pela quantidade ou ocorrência deles). Neste caso (N1+N2+N3+N4) / 4;
b) Aplicar o cálculo da média aritmética.
Estrutura Sequencial:
Algoritmo: Média entre 4 notas
Real : N1, N2, N3, N4, MA; {declaração de variáveis}
Inicio {começo do algoritmo}
ler (N1,N2,N3,N4); {entrada de dados}
MA (N1+N2+N3+N4) / 4; {processamento ou cálculo da média}
escreva (MA); {saída de dados}
fim. {término do algoritmo}
10
Profº Francisco J. Martins – Algoritmos e lógica de programação
Estrutura de Seleção:
Seleção simples:
Algoritmo: Média entre 4 notas
Real : N1, N2, N3, N4, {declaração de variáveis}
MA; {média anual}
Inicio {começo do algoritmo}
ler (N1,N2,N3,N4); {entrada de dados}
MA (N1+N2+N3+N4) / 4; {processamento ou cálculo da média}
escreva (“Média anual = “, MA); {saída de dados}
se MA >= 6 então { teste da média – Bloco verdade}
escreva (“Aluno Aprovado”);
fim se;
fim.
Seleção composta:
Algoritmo: Média entre 4 notas
Real : N1, N2, N3, N4, {declaração de variáveis}
MA; {média anual}
Inicio {começo do algoritmo}
ler (N1,N2,N3,N4); {entrada de dados}
MA (N1+N2+N3+N4) / 4; {processamento ou cálculo da média}
escreva (“Média anual = “, MA); {saída de dados}
se MA >= 6 então { teste da média – Bloco verdade}
escreva (“Aluno Aprovado”);
escreva (“Parabéns ! ”);
senão { teste da média – Bloco falso}
escreva (“Aluno Reprovado”);
escreva (“Estude Mais ! ”);
fim se;
fim.
Seleção encadeada:
Puga (2009, p. 61) Relaciona este tipo de seleção à um aninhamento de testes, ou
seja, testes de seleção dependentes por estar internamente em outros testes, onde
uma condição determina ou não a execução do teste de outra condição interna à ela.
Uma estrutura de seleção encadeada é uma seqüência de testes de seleção, os quais
serão ou não executados de acordo com o resultado das condições e com o
encadeamento dos testes. Isto é, um teste de seleção pode ter dois conjuntos de
instruções, como foi visto na seção “Estruturas de seleção compostas”, um
representando o bloco verdadeiro e outro o bloco falso, porém esses conjuntos de
instruções podem conter outros testes de seleção, que, por sua vez, também podem
conter outros, e assim sucessivamente.
11
Profº Francisco J. Martins – Algoritmos e lógica de programação
Inicio
Se (condição 1) então
Se (condição 2) então
Conjunto de instruções (A) do bloco verdade para a condição 2
Senão
Conjunto de instruções (B) do bloco falso para a condição 2
Fim-Se
Senão
Conjunto de instruções (C) do bloco falso para a condição 1
Fim-Se
Fim.
Estrutura de Repetição com teste no início - Looping:
Quantas vezes o exemplo acima será executado? E se existirem mais alunos?
Poderíamos executar ou escrever o mesmo algoritmo n vezes? Como calcular a média
de cada aluno, para uma turma de 50 a partir de um arquivo?
Algoritmo: Média entre 4 notas para 50 alunos com teste no início
Real : N1, N2, N3, N4, {declaração de variáveis}
MA; {média anual}
Inteiro : CON; {contador}
Inicio {começo do algoritmo}
CON 0;
Enquanto CON < 50 faça {teste da condição no início}
leia (N1,N2,N3,N4); {entrada de dados}
MA (N1+N2+N3+N4) / 4; {processamento ou cálculo da média}
escreva (MA); {saída de dados}
se MA >= 6 então { teste da média – Bloco verdade}
escreva (“Aluno Aprovado”);
escreva (“Parabéns ! ”);
senão { teste da média – Bloco falso}
escreva (“Aluno Reprovado”);
escreva (“Estude Mais ! ”);
fim se;
CON CON + 1;
Fim Enquanto; {final do looping ou bloco de repetição}
fim. {final do Algoritmo}
Estrutura de Repetição com teste no final - Looping:
Poderíamos executar ou escrever o mesmo algoritmo n vezes testando a condição no
final? Como calcular a média de uma turma de 50 alunos a partir de um arquivo?
Algoritmo: Média entre 4 notas para 50 alunos com teste no final
{declaração de variáveis}
real : MA, { média anual de determinado aluno}
ACM, { acumulador}
MAT; { média anual da turma}
Inteiro : CON; {contador}
Inicio {começo do algoritmo}
CON 0;
12
Profº Francisco J. Martins – Algoritmos e lógica de programação
ACM 0;
Repita
ler (MA);
ACM ACM + MA;
CON CON + 1;
Até CON >= 50;
MAT ACM/CON;
escreva (“Média anual da turma = “ , MAT);
fim.
Exercícios propostos:
Considere três recipientes, o 1º, cheio, com capacidade de 8 litros, o 2º, vazio, com
capacidade de 5 litros e o 3º, vazio, com capacidade de 3 litros. Desenvolva uma
seqüência de passos para que, ao final reste 4 litros no 1º recipiente, 4 litros no 2º
recipiente e o 3º recipiente fique vazio. Podemos utilizar os três recipientes, porém, não
poderá haver dois movimentos para o mesmo passo, nem colocar um recipiente dentro
de outro. Cada passo deverá constar de apenas um movimento, ou seja, envolver
apenas dois recipientes.
Recipiente 1 Recipiente 2 Recipiente 3
Passo 1
Passo 2
Passo 3
Passo 4
Passo 5
Passo 6
Passo 7
Passo 8
Passo 9
A partir dos algoritmos em PSEUDOCÓDIGO abaixo, desenvolva o Diagrama de Bloco
ou Fluxograma, o Teste de Mesa, o processo em VisuAlg e o programa em Linguagem
C:
1- Calcular e Imprimir n!. Para teste use 4! (quatro fatorial).
Algoritmo: Fatorial
Inteiros: n, fatn;
Inicio;
Ler n;
Se n > 1 então
Fatn n;
13
Profº Francisco J. Martins – Algoritmos e lógica de programação
Enquanto n >1 faça
Fatn fatn*(n –1);
N n-1;
Fim-enquanto;
Senão
Fatn 1
Fim-se;
Imprima (fatn);Fim.
2- Calcular e Imprimir a soma dos números ímpares no intervalo de 0 até 10.
Algoritmo: SomaÍmpares em intervalo fixo
Inteiros: soma, n1, n2, resto;
Inicio;
n1 0;
n2 10;
soma 0;
Enquanto n1 <= n2 faça
Se n1 Mod 2 <> 0 então
soma soma + n1;
n1 n1 + 1;
senão
n1 n1 + 1;
fim-se;
Fim-enquanto;
Imprima (soma);
Fim.
3- Calcular e imprimir a soma dos números ímpares de um intervalo aleatório fornecido
pelo usuário.
Algoritmo: SomaÍmpares em intervalo aleatório
Inteiros: soma, n1, n2, resto;
Inicio;
Ler (n1,n2);
soma 0;
Enquanto n1 <= n2 faça
resto (n1 Mod 2);
Se resto <> 0 então
soma soma + n1;
n1 n1 + 1;
senão
n1 n1 + 1;
Fim-se;
Fim-enquanto;
Imprima (soma);
Fim.
...
Se (n1 Mod 2) <> 0 então
...
14
Profº Francisco J. Martins – Algoritmos e lógica de programação
4- Encontrar e imprimir o menor e o maior número de uma série aleatória de números
fornecidos pelo usuário. A série é composta de pelo menos um número. Quando o
valor digitado for 0 (Zero), é a condição de fim, ou seja, o programa termina.
Algoritmo: MaiorMenor
Inteiros: maior, menor, valor;
Caracter: Lista;
Inicio;
Leia (valor);
maior valor;
menor valor;
Lista Valor
Enquanto valor # 0 faça
Se valor > maior então
maior valor;
senão se valor < menor então
menor valor;
fim se;
fim se;
Escapar do looping quando necessário “{(Exit do) para um laço Do While}”
leia (valor);
Lista Lista + “,” + Valor
Fim enquanto;
Imprima (maior, Menor);
Fim.
5- Converter a velocidade de um móvel fornecida em (ms) metros por segundos, para
(kmh) quilômetros por hora, e imprimir o resultado.
Algoritmo: ConverteVelocidade
real: vms, vkmh, fatn;
Inicio;
ler (vms);
vkmh vms * 3.6;
Imprima (vkmh);
Fim.
6- Calcular e imprimir a média aritmética entre 4 notas quaisquer fornecidas pelo
usuário. Deverá haver um teste para validar a nota, (a nota deve variar de 0-zero a
10-dez).
Algoritmo: CalculaMédiaNotaVálida
Real : n1,n2,n3,n4, media;
Inicio
Leia n1;
Enquanto n1 <= 0 ou n1 >= 10 faça
Imprima (‘Nota inválida, Digite n1 novamente!’);
Leia n1;
Fim enquanto;
Leia n2;
15
Profº Francisco J. Martins – Algoritmos e lógica de programação
Enquanto n2 <= 0 ou n2 >= 10 faça
Imprima (‘Nota inválida, Digite n2 novamente!’);
Leia n2;
Fim enquanto;
Leia n3;
Enquanto n3 <= 0 ou n3 >= 10 faça
Imprima (‘Nota inválida, Digite n3 novamente!’);
Leia n3;
Fim enquanto;
Leia n4;
Enquanto n4 <= 0 ou n4 >= 10 faça
Imprima (‘Nota inválida, Digite n4 novamente!’);
Leia n4;
Fim enquanto;
Media (n1+n2+n3+n4)/4;
Imprima (media);
Fim.
7- Calcular e imprimir a média aritmética entre as notas lidas do cadastro de alunos
para uma classe de N alunos. Onde N será o número total de registros do cadastro,
ou seja, o total de alunos do próprio cadastro.
Algoritmo: CalculaImprimeMediaDoCadastroAlunos
Real : n1,n2,n3,n4, media, reg;
Inicio
Leia cadastro de alunos; {esta operação posiciona o ponteiro no primeiro registro do
cadastro de alunos}
Enquanto não for fim faça {Fim é encontrado quando o último registro for lido}
n1 n1 do cadastro;
n2 n2 do cadastro;
n3 n3 do cadastro;
n4 n4 do cadastro;
Media (n1+n2+n3+n4)/4;
Imprima (Nome do aluno, media);
Reg reg +1;
Fim enquanto;
Fim.
Nota:. Este problema é mais simples porque as notas foram validadas durante a digitação do
cadastro de alunos, bastando, portanto, apenas carregá-las e, calcular a partir delas, a média.
8- Dado três valores, A,B,C, verificar se eles podem ser dos lados de um triângulo, e, se
forem, se é triângulo qualquer, triângulo eqüilátero, ou triângulo Isósceles.
Algoritmo: Triângulos
Real : A, B, C; (valores a serem verificados)
Inicio
Leia (A, B, C);
Se A<B+C e B<A+C e C<A+B Então
Se A=B e B=C
Então Imprima (“Triângulo Equilátero”);
Senão Se A=B ou A=C ou C=B
16
Profº Francisco J. Martins – Algoritmos e lógica de programação
Então Imprima (“Triângulo Isósceles”);
Senão Imprima (“Triângulo Qualquer”);
Fim se;
Fim se;
Senão
Imprima (“Não é Triângulo”);
Fim se
Fim.
17
Profº Francisco J. Martins – Algoritmos e lógica de programação
Exercícios de fixação:
1- Qual a função do Algoritmo?
2- Cite as estruturas de controle usadas na construção de algoritmos, e descreva a
função de cada uma.
3- Qual a função das variáveis ou identificadores de usuários em um programa?
4- Qual a diferença entre Variáveis e Constantes? Exemplifique.
5- O que é portabilidade do ponto de vista da construção de Algoritmos?
6- Desenvolver o diagrama de blocos, o teste de mesa, o algoritmo (pseudocódigo), o
processo em VisuAlg e o programa em C que permita a digitação dos alunos de
uma turma e gere uma lista dos casados, outra lista dos divorciados e outra lista
para os estados civis diferentes de casados e divorciados (outros).
7- Descreva na linha pontilhada o que será executado em cada linha de comando do
algoritmo abaixo:
Inicio :........................................................................................................................
Real : n1,n2,n3,n4, media, reg; :.........................................................................
Leia cadastro de alunos; {esta operação posiciona o ponteiro no primeiro registro do
cadastro de alunos} :..............................................................................................
Enquanto não for fim faça {O Fim é encontrado quando o último registro for
lido}:.....................................................................................................................
n1 n1 do cadastro; :..............................................................................
n2 n2 do cadastro; :..............................................................................
n3 n3 do cadastro; :..............................................................................
n4 n4 do cadastro; :..............................................................................
Media (n1+n2+n3+n4)/4; :....................................................................
Imprima (Nome do aluno, media); :..........................................................
Reg reg +1; :........................................................................................
Fim enquanto; :...................................................................................................
Fim. :........................................................................................................................
8- Desenvolver o algoritmo em Pseudocódigo, o diagrama de blocos, o teste de mesa,
o processo em VisuAlg e o programa em C para calcular e imprimir a média
aritmética entre 4 notas lidas do cadastro de alunos para uma classe de N alunos, e
também a média de idade entre as meninas e os meninos. Onde N será fornecido
pelo usuário.
9- Desenvolver o algoritmo em Pseudocódigo, o diagrama de blocos, o teste de mesa,
o processo em VisuAlg e o programa em C para uma bilheteria de uma estação de
metrô que possui para fornecer o troco em moedas de 1 centavo, 10 centavos, 50
centavos, e 1 real. Conhecendo-se o valor a ser cobrado e o valor fornecido por um
usuário (em reais), como determinar as quantidades de cada tipo de moeda
necessárias para completar o valor do troco, de maneira que no total seja utilizado o
menor número de moedas?
18
Profº Francisco J. Martins – Algoritmos e lógica de programação
Preparação:
Objetivo:. Determinar as quantidades de cada tipo de moeda, necessárias para
fornecer o troco, utilizando-se a menor quantidade possível de moedas no
total.
Entrada:. VC – valor cobrado e VF valor fornecido pelo usuário.
Saída:. Quantidades de cada tipo de moeda QM1, QM10, QM50 e QM100(moedas de 1 centavo, 10 centavos, 50 centavos e 1 real).
Bibliografia:
FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de
Programação. Makron Books: 2ª Edição – 2000.
GUIMARÃES E LAGES. Algoritmos e Estruturas de Dados – Editora LTC: 1994.
MARTINS, Custódio T. K.; RODRIGUES, Milton. Problemas Computacionais –
Soluções com DELPHI 3.0 – Opus 6 Gráfica e Livraria - 1999.
PUGA, Sandra. Lógica de programação e estruturas de dados, com aplicações em
Java. 2. Ed. – São Paulo : Pearson Prentice Hall, 2009.