Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
1 Universidade Federal Rural do Semi-Árido Versão Departamento de Ciências Exatas e Naturais 30/11/2012 Professor: Bruno Monteiro Introdução a Algoritmos Algoritmos Um engenheiro, ao se deparar com a demanda de construir uma ponte, antes de começar a misturar os materiais e realizar as perfurações no terreno, necessita primeiramente resolver os problemas referentes à obra, por exemplo, através de modelos e regras. Da mesma forma, um programador, antes de qualquer coisa, precisa entender e resolver o problema através de um algoritmo, que pode ser escrito até mesmo em uma folha de papel, para só depois representar esta solução em uma linguagem de programação, surgindo então o software (ou programa). Definição de algoritmo: conjunto finito de instruções, executadas sequencialmente, a fim de resolver um problema específico. Objetivo do algoritmo: representar a solução para um problema, abstraindo os detalhes técnicos específicos. Propriedades: � Finitude: deve sempre terminar após um número finito de passos. � Sem ambiguidade: cada passo deve ser precisamente definido e sem ambiguidades. � Legibilidade: os passos devem ser claros e legíveis, de modo que possam ser compreensíveis para outras pessoas. � Portabilidade: seus passos devem ser facilmente traduzidos para qualquer linguagem de programação. Principais Representações de Algoritmos Descrição narrativa Fluxograma Pseudo-código Peça ao usuário para digitar as três notas. Permita que o usuário informe as três notas. Em seguida, com base nestas três notas, calcule a respectiva média. Informe o valor da média recém calculada. Se esta média for maior ou igual a sete, então, informe que o aluno está aprovado. Caso contrário, se a média for menor do que sete, informe que o aluno está reprovado. algoritmo CalcularMediaSituacao declare n1, n2, n3, media: real inicio escreva(“Digite as 3 notas”) leia(n1) leia(n2) leia(n3) media � (n1 + n2 + n3) / 3 escreva(“Media é “, media) se media >= 7 entao escreva(“Aprovado”) senao escreva(“Reprovado”) fimse fim Algoritmos (Pseudocódigo) Variáveis Variáveis são espaços reservados para armazenar algum dado, por analogia, como uma “caixa” que serve para armazenar algo. Regras para o nome de uma variável Toda variável precisa ter um nome, que deve seguir as seguintes regras: Só pode conter letras, números, e sublinha. Letras não podem ter acentos. Não pode começar com número. Não pode ter espaços. Exemplos válidos: media, Media, nota2, media_final, _nome, NomeCompleto Exemplos inválidos: média, Média, 2nota, media final, nome-completo Declaração de variáveis Cada variável é criada para armazenar um tipo específico de dado, da mesma forma que uma “caixa” é criada para armazenar um tipo específico de objeto. Portanto, no momento que você declara uma variável, deve-se pensar que foi criada uma caixa (vazia e novinha) pronta para armazenar o tipo de dado que você especificou. Tipos de variáveis Descrição de cada tipo Exemplos de conteúdos válidos inteiro Representa o conjunto dos números inteiros. 30 real Representa o conjunto dos números reais. 30,5 caractere Representa o conjunto dos caracteres (números, letras e símbolos). ‘b’ literal Representa textos, ou seja, cadeia de caracteres entre aspas (números, letras e símbolos). “Av. Pres. Dutra, 78” lógico Representa valores lógicos (verdadeiro ou falso). verdadeiro, falso 2 Atribuição de variáveis Uma atribuição, representada pelo sinal �, representa a ação de “colocar” um conteúdo dentro da “caixa”, ou seja, de atribuir um determinado valor a uma variável. Exemplo algoritmo DeclaracoesAtribuicoesSimples declare idade: inteiro altura: real tipoSangue: caractere endereco: literal doador: lógico inicio idade � 26 altura � 1,70 altura � 1,67 tipoSangue � ‘A’ endereco � “Av. Norte, 34, Recife” doador � verdadeiro fim Observação: ao realizar uma nova atribuição, para a mesma variável, o conteúdo antigo é substituído totalmente pelo conteúdo novo, ou seja, uma variável só pode armazenar um conteúdo de cada vez. Observe que isto aconteceu na atribuição da variável altura, do exemplo acima: o conteúdo adicionado na primeira atribuição (1,70) foi substituído pelo conteúdo da atribuição seguinte (1,67). Observação: não esqueça que toda variável deve ser declarada antes de ser utilizada. Função de Entrada Funcionamento: os valores informados pelo usuário, através dos dispositivos de entrada (normalmente o teclado), serão atribuídos a variável utilizada na função leia. leia ( nome da variável ) Exemplo: leia(nota1) Função de Saída Funcionamento: os valores informados na função escreva serão exibidos para o usuário, através dos dispositivos de saída (normalmente o monitor). escreva( conteúdo ) Exemplo: escreva(“Bom dia, prezado estudante!”) escreva(“Sua média final foi ”, media) Operadores Operadores Aritméticos Adição + Subtração - Multiplicação * Quociente da Divisão / Resto da Divisão % Operadores Relacionais Maior > Menor < Maior ou Igual >= Menor ou Igual <= Igual = Diferente < > Operadores Lógicos Resulta verdadeiro se todas as partes forem verdadeiras E Resulta verdadeiro se uma das partes for verdadeira OU Negação (inverte o valor) NAO Exemplo algoritmo CalcularMedia declare n1, n2, n3, media: real inicio escreva(“Digite as 3 notas”) leia(n1) leia(n2) leia(n3) media � (n1 + n2 + n3) / 3 escreva(“Sua média é ”, media) fim n1 n2 n3 media (real) (real) (real) (real) n1 n2 n3 media (real) (real) (real) (real) idade altura tipoSangue endereço doador (inteiro) (real) (caractere) (literal) (lógico) 26 1,67 ‘A’ “Av. Norte, 34, Recife” V idade altura tipoSangue endereço doador (inteiro) (real) (caractere) (literal) (lógico) n1 n2 n3 media (real) (real) (real) (real) 7,7 9,8 5,5 7,6 Variáveis criadas A mensagem “Digite as 3 notas” é escrita para o usuário (no monitor). Usuário então digita as 3 notas (no teclado) que serão lidas e colocadas nas variáveis informadas. O resultado da expressão é colocado na variável media. A mensagem “Sua média é 7,6” é escrita para o usuário (no monitor). 7,7 9,8 5,5 3 Estruturas Condicionais Também conhecidas como Estruturas de Decisão, permitem que uma instrução, ou bloco de instruções, sejam ou não executadas, dependendo de determinadas condições, representadas por expressões lógicas ou relacionais. Em outras palavras, oferecem os meios de escolher entre dois ou mais caminhos de execução. Se Linguagem estruturada Fluxograma Exemplo se condição entao instruções executadas quando condição for verdadeira senao instruções executadas quando condição for falsa fimse algoritmo SimularFeriado declare carteira: real programa: literal inicio leia( carteira ) se carteira >= 10 entao programa � “ao cinema” carteira � 0 senao programa � “ficar em casa” fimse escreva(“Hoje vou ”, programa) fim Se encadeado O agrupamento de várias seleções normalmente ocorre quando há muitas possibilidades de situações dependentes entre si. Linguagem estruturada Fluxograma Exemplo se condição1 entao instruções executadas quando condição1 for verdadeira se condição2 entao instruções executadas quando a condição2 for verdadeira senao instruções executadas quando condição2 for falsa fimse senao instruções executadas quando condição1 for falsa fimse algoritmo SimularFeriado declare carteira: real programa: literal inicio leia( carteira ) se carteira >= 10 entao escreva(“Há dinheiro!”) se carteira >= 2000 programa � “viajar de iate” senao programa � “ao cinema” fimse carteira � 0 senao programa � “ficar em casa” fimse escreva(“Hoje vou ”, programa) fim Escolha Linguagem estruturada Fluxograma Exemplo escolha variável caso valor1: instruções executadas quando o conteúdo da variável for valor1 caso valor2: instruções executadas quando o conteúdo da variável for valor2 caso valor3: instruções executadas quando o conteúdo da variável for valor3 outrocaso: instruções executadas quando não há valor previsto fimescolha algoritmo TeleAtendimento declare opcao: inteiro mensagem: literal inicio escolha opcao caso 1: mensagem � “consultar saldo” caso 2: mensagem � “planos e promoções” caso 9: mensagem � “falar com atendente” outrocaso: mensagem � “opção inválida” fimescolha escreva( mensagem ) fim 4 Estruturas de Repetição Estas estruturas permitem que trechos do algoritmo sejam repetidos enquanto uma condição for satisfeita. Enquanto Faça Linguagem estruturada Fluxograma Exemplo enquanto condição faca instruções executadas enquanto a condição for verdadeira fimenquanto OBS: observe que o teste da condição é feito no início. algoritmo VerificarSenha declare senha: inteiro inicio escreva("Digite a senha") leia( senha ) enquanto senha <> 123 faca escreva("Senha INVÁLIDA!") escreva("Digite a senha") leia(senha) fimenquanto escreva("Senha CORRETA!") fim Faça Enquanto Linguagem estruturada Fluxograma Exemplo faca instruções executadas uma primeira vez e enquanto a condição for verdadeira enquanto condição OBS: observe que o teste da condição é feito no final. algoritmo VerificarSenha declare senha: inteiro inicio faca escreva("Digite a senha") leia( senha ) enquanto senha <> 123 escreva("Senha CORRETA!") fim Para Linguagem estruturada Fluxograma Exemplo para V de Vi ate Vf passo P faca instruções executadas enquanto a condição for verdadeira fimpara V: variável de controle Vi: valor inicial de V Vf: valor final de V P: valor de incremento/decremento de V algoritmo EscreverDe2Em2 declare cont: inteiro inicio para cont de 0 ate 10 passo 2 faca escreva( cont ) fimpara fim Saída do algoritmo que será exibido na tela: 0 2 4 6 8 10 Organização das instruções Nos exemplos anteriores, observem que algumas instruções são internas a outras. Portanto, ao escrever seu algoritmo, mantenha sempre os espaçamentos adequados, de modo que reflitam a hierarquia das estruturas. Exemplo: Organização recomendada Nunca faça isso! algoritmo SimularFeriado declare carteira: real inicio leia( carteira ) se carteira >= 10 entao escreva(“Vou ao cinema”) senao escreva(“Vou ficar em casa”) fimse fim algoritmo SimularFeriado declare carteira: real inicio leia( carteira ) se carteira >= 10 entao escreva(“Vou ao cinema”) senao escreva(“Vou ficar em casa”) fimse fim 5 Execução de um algoritmo Exemplo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 algoritmo CalcularMediaSituacao declare n1, n2, n3, media: real inicio escreva(“Digite as 3 notas”) leia(n1) leia(n2) leia(n3) media � (n1 + n2 + n3) / 3 escreva(“A média do aluno é “, media) se media >= 7 entao escreva(“Aprovado”) senao escreva(“Reprovado”) fimse fim Perceba que todo algoritmo é executado seqüencialmente, da primeira até a última instrução. Linha 2: são criados espaços para armazenar as 4 variáveis de números reais. n1 : real n2 : real n3 : real media : real Linha 5: a mensagem “Digite as 3 notas” é escrita na tela do computador. Linha 6: caso o usuário entre com o número 9 no teclado, este valor é armazenado na variável n1. n1 : real n2 : real n3 : real media : real Linha 7: caso o usuário entre com o número 6,5 no teclado, este valor é armazenado na variável n2. n1 : real n2 : real n3 : real media : real Linha 8: caso o usuário entre com o número 8,5 no teclado, este valor é armazenado na variável n3. n1 : real n2 : real n3 : real media : real Linha 9: o cálculo especificado no algoritmo é executado e o valor produzido é armazenado na variável media. n1 : real n2 : real n3 : real media : real Linha 10: a mensagem “A média do aluno é 8,0” é escrita na tela do computador. Linha 11: a estrutura se verifica que a sentença media >= 7 é verdadeira, pois 8,0 é realmente maior ou igual a 7,0 Linha 13: como a condição do se é verdadeira, o bloco entao é executado, logo, a mensagem “Aprovado” é escrita na tela. 9,0 9,0 6,5 9,0 8,5 6,5 9,0 8,5 6,5 8,0