Algoritmos e Programação Thyago Maia Tavares de Farias Aula 10 Sumário Revisão do conteúdo para o 1º estágio Revisão Algoritmos Sequência de instruções finita; Instruções ordenadas de forma lógica; Objetivam a solução de uma tarefa ou problema; Execução passo a passo; Resultam saída(s) a partir de entrada(s) que podem ser inseridas pelo usuário ou pelo próprio algoritmo; Algoritmo correto = Saída(s) esperada(s); Envolvem aspectos computacionais e não computacionais; Podem existir mais de um algoritmo que atingem o mesmo resultado (mesma saída); Revisão Porque criamos algoritmos? Computadores não interpretam linguagem natural; Computadores são projetados para executar tarefas (instruções) bem determinadas; Linguagem algorítmica é similar às linguagem de programação; Aprendendo a criar algoritmos, estamos aptos a programar em qualquer linguagem de programação; Revisão Representações de um algoritmo: SUBJETIVIDADE Descrição narrativa; Fluxograma Pseudocódigo, Português Estruturado ou Portugol; PRECISÃO Revisão Linearização de expressões Para contrução de algoritmos que realizam cálculos matemáticos, TODAS expressões aritméticas devem ser linearizadas; Linearizadas = Colocadas em linha; Linearização de expressões Operadores aritméticos disponíveis para o português estruturado: Adição (+) Subtração (-) Multiplicação (*) Divisão (/) Divisão inteira (\) Exponenciação (^ ou Exp) Módulo, ou resto da divisão (%) Linearização de expressões Operadores relacionais disponíveis no Português estruturado: Maior (>) Menor (<) Maior ou igual (>=) Menor ou igual (<=) Igual (=) Diferente (<>) Linearização de expressões Operadores lógicos Atuam em expressões, também resultando em valores lógicos VERDADEIRO ou FALSO; Tipos de operadores: E: Resulta verdadeiro se AMBAS AS PARTES forem verdadeiras; OU: Resulta verdadeiro se UMA DAS PARTES é verdadeira; NÃO: Nega uma afirmação. Se verdadeiro, torna-se falso; Se falso, torna-se verdadeiro; Revisão Forma geral de um algoritmo Algoritmo “forma” Var Inicio // Lista de instruções fimalgoritmo Revisão Variáveis Posição de memória capaz de reter e representar um valor ou expressão; Finalidade de armazenar dados ou informações; São associados a nomes (identificadores); Possuem os seguintes tipos: Inteiro (Ex.: 2, 4, 456) Real ou numerico (Ex.: 2.3) Literal ou caractere (Ex.: “Revisão”) Logico (verdadeiro ou falso) Exercício Analise o algoritmo abaixo e informe o valor que cada variável possui após sua execução: Algoritmo “verifica_variavel” Var a,b,c: inteiro Inicio a <- 45 b <- 30 c <- a - b se (c > 10) entao b <- b – a senao a <- b – a fimse fimalgoritmo Revisão Comandos escreva e escreval Utilizados para escrever mensagens ou valores de variáveis; escreva escreve algo e mantém o cursor na mesma linha Escreval escreve algo e pula uma linha Ex.: escreva(“Minha primeira mensagem”) escreval(idade) Comandos de entrada e saída Comandos leia Utilizado para ler um valor digitado pelo usuário; Ex.: leia(nome) leia(idade) Leia(altura) Leia(distancia) Exercício Faça um algoritmo que receba o valor do quilo de um produto, a quantidade de quilos e calcule o valor final a ser pago. Revisão - Estrutura condicional Para criarmos estruturas condicionais simples em Português Estruturado, utilizamos as palavras reservadas se, entao e fimse se condicao entao // lista de comandos caso a condição seja // verdadeira fimse Estrutura condicional Exemplo 2: Algoritmo “exemplo_senha” Var senha: literal inicio escreval(“Digite a senha”) leia(senha) Se (senha = “soueu123”) entao escreval(“Acesso liberado!”) Fimse fimalgoritmo Revisão - Estrutura condicional Para criarmos estruturas condicionais com duas opções de escolha, utilizamos as palavras reservadas se, entao, senao e fimse se condicao entao // lista de comandos caso a condição seja //VERDADEIRA senao // lista de comandos caso a condição seja FALSA fimse Estrutura condicional Exemplo 3: Algoritmo “exemplo_se_senao” Var numero: inteiro inicio numero <- 4 Se (numero > 3) entao escreva(“A variável é maior que 3”) senao escreva(“A variável é menor ou igual a 3”) Fimse fimalgoritmo Exercício Escreva um algoritmo que retorne o nome do produto a partir do seu código. Considere os seguintes códigos: 001 – Parafuso 002 – Porca 003 – prego Revisão - Comando de seleção múltipla Para várias condições, podemos utilizar o comando de seleção múltipla escolha; escolha expressao caso resultado_1 // Lista de instruções caso resultado_2 // Lista de instruções ... outrocaso // Lista de instruções fimescolha Comando de seleção múltipla Exemplo: algoritmo “exemplo_caso” var sexo: literal inicio escreval(“Digite seu sexo (M ou F)”) leia(sexo) escolha(sexo) caso “M” escreval(“O usuário é Homem”) caso “F” escreval(“O usuário é Mulher”) fimescolha fimalgoritmo Exercício Utilizando o comando escolha...caso, escreva um algoritmo que retorne o nome do produto a partir do seu código. Considere os seguintes códigos: 001 – Parafuso 002 – Porca 003 – prego Para qualquer outro código - Diversos Revisão - Repita...ate Utilizamos as palavras reservadas repita e ate para formar o laço de repetição; Forma geral: repita // Lista de instruções ate expressão lógica Revisão - Repita...ate Exemplo - Algoritmo que escreve os números de 1 a 10: algoritmo “Mostra10” var numero: inteiro inicio numero <- 1 repita escreva(numero) numero <- numero + 1 // contador ate numero > 10 fimalgoritmo Exercícios Faça um algoritmo que escreva os números pares entre 1 e 10. Exercícios (Geral) Escreva um algoritmo que lê um número inteiro positivo e o mostre por extenso. Este número deverá variar entre 1 e 10. Se o usuário introduzir um número que não pertença a este intervalo, mostre a frase “número inválido”. Escreva um algoritmo que receba um número inteiro e informe se o mesmo é negativo ou positivo. Exercícios (Geral) Escreva um algoritmo que lê dois números inteiros e escreva os mesmos em ordem crescente e decrescente. Escreva um algoritmo que leia um número e, se ele for maior que 20, imprimir sua metade. Escreva um algoritmo que leia dois números e responda se a divisão entre eles é exata ou não. Exercícios (Geral) Faça um algoritmo que sempre lê e escreve números inteiros pares. Quanto um número ímpar for digitado, o algoritmo deverá parar de receber e escrever valores.