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.