Buscar

Resumo - Algoritmos - 2013_2

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 6 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 6 páginas

Prévia do material em texto

1
Universidade Federal Rural do Semi-Árido Versão 
Departamento de Ciências Exatas e Naturais 08/11/2013 
Professor: Bruno Monteiro 
Introdução a Algoritmos 
Algoritmos 
Um engenheiro, ao se deparar com a demanda de construir uma ponte, antes de iniciar a execução da obra, misturando os materiais e 
adequando o terreno, necessita primeiramente resolver uma séria de problemas, por exemplo, através de modelos e especificações. 
Da mesma forma, um programador, antes de qualquer coisa, precisa entender e resolver os problemas demandados 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 (ou português estruturado) 
 
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) 
 
 se media >= 7 
 entao 
 escreva(“Aprovado”) 
 senao 
 escreva(“Reprovado”) 
 fim_se 
 
 fim_algoritmo 
Símbolos de um fluxograma usados para descrever um algoritmo 
 
Início e Fim do fluxograma 
 
Processamento Saída de dados 
 
Ponto de decisão União do fluxo 
 
Entrada de dados 
Qual a diferença entre um algoritmo e um código fonte de um software? 
Algoritmo (fluxograma) Algoritmo (pseudo-código) Código fonte (linguagem C) 
 
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) 
 
 se media >= 7 
 entao 
 escreva(“Aprovado”) 
 senao 
 escreva(“Reprovado”) 
 fim_se 
 fim_algoritmo 
int main() 
{ 
 float n1, n2, n3, media; 
 
 printf("Digite as 3 notas"); 
 scanf("%f", &n1); 
 scanf("%f", &n2); 
 scanf("%f", &n3); 
 media = (n1 + n2 + n3) / 3; 
 printf("%f", media); 
 
 if (media >= 7) 
 { 
 printf("Aprovado"); 
 } 
 else 
 { 
 printf("Reprovado"); 
 } 
 
 return 0; 
} 
 2
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 (chamado de “identificador”), que deve seguir as seguintes regras: 
Só pode ser escrita com letras, números e sublinha. Não pode haver 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 
(string) Representa textos, ou seja, cadeia de caracteres entre aspas (números, letras e símbolos). “Av. Felipe Camarão, 78” 
lógico Representa valores lógicos (verdadeiro ou falso). verdadeiro, falso 
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. Cuidado: estamos acostumados a usar o sinal de = para atribuições, porém, em pseudocódigo, 
como veremos mais a frente, o sinal de = representa uma comparação, ou seja, é o operador relacional de igualdade. 
Exemplo 
 
algoritmo Atribuicoes_Simples 
 
declare 
 idade: inteiro 
 altura: real 
 notaConceito: caractere 
 endereco: literal 
 doador: lógico 
 
inicio 
 idade � 2013 - 1984 
 altura � 1,70 
 altura � 1,67 
 notaConceito � ‘A’ 
 endereco � “Av. Norte, 34, Recife” 
 doador � verdadeiro 
fim_algoritmo 
 
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 que armazenará o valor inserido ) 
 
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 que será exibido na saída ) 
 
Exemplo: 
escreva(“Bom dia, prezado estudante!”) 
escreva(“Sua média final foi ”, media) 
 
 idade altura notaConceito endereço doador 
(inteiro) (real) (caractere) (literal) (lógico) 
29 1,67 ‘A’ “Av. Norte, 
34, Recife” 
V 
 idade altura notaConceito endereço doador 
(inteiro) (real) (caractere) (literal) (lógico) 
 3
 
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 
 
Exemplos 
 Variáveis Entradas e Saídas 
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_algoritmoDigite as 3 notas 
7,7 
9,8 
5,5 
 
Sua média é 7,6 
 
 
 Variáveis Entradas e Saídas 
algoritmo Calcular_Quociente_e_Resto 
 
declare 
 n1, n2, divisao, resto: real 
 
inicio 
 
 escreva(“Digite numerador ”) 
 leia(n1) 
 escreva(“Digite denominador ”) 
 leia(n2) 
 
 resto � n1 % n2 
 divisao � n1 / n2 
 
 escreva(“Resto: ”, resto) 
 escreva(“Quociente: ”, divisao) 
 
 fim_algoritmo 
 
 
 
 
Digite numerador 
15 
Digite denominador 
2 
 
Resto: 1 
Quociente: 7 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 n1 n2 n3 media 
 (real) (real) (real) (real) 
 n1 n2 n3 media 
 (real) (real) (real) (real) 
7,7 9,8 5,5 7,6 
 
 
7,7 9,8 5,5 
 n1 n2 n3 media 
 (real) (real) (real) (real) 
 n1 n2 resto divisao 
(real) (real) (real) (real) 
 
 
15 2 
15 2 1 7 
 n1 n2 resto divisao 
(real) (real) (real) (real) 
 n1 n2 resto divisao 
(real) (real) (real) (real) 
 4
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 
 fim_se 
 
 
 
 
 algoritmo SimularFeriado 
 
 declare 
 carteira: real 
 programa: literal 
 
 inicio 
 escreva(“Quanto dinheiro tens?”) 
 leia( carteira ) 
 
 se carteira >= 10 
 entao 
 programa � “vai ao cinema” 
 senao 
 programa � “vai ficar em casa” 
 fim_se 
 
 escreva(“Hoje você”, programa) 
 
 fim_algoritmo 
 
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 
 fim_se 
 
 senao 
instruções executadas quando 
condição1 for falsa 
 fim_se 
 
 
 
 
 algoritmo SimularFeriado 
 
 declare 
 carteira: real 
 
 inicio 
 leia( carteira ) 
 
 se carteira >= 10 
 entao 
 escreva(“Há dinheiro!”) 
 
 se carteira >= 2000 
 escreva(“vou viajar de iate”) 
 senao 
 escreva(“vou ao cinema”) 
 fim_se 
 senao 
 escreva(“vou ficar em casa”) 
 fim_se 
 fim_algoritmo 
Escolha 
Quando for necessário comparar muitos números, perceba que é melhor utilizar essa estrutura do que vários “se” encadeados. 
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 
 
 outro_caso: 
instruções executadas 
quando não há valor 
previsto 
 fim_escolha 
 
 
 
 
 
 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” 
 
 outro_caso: 
 mensagem � “opção inválida” 
 
 fim_escolha 
 
 escreva( mensagem ) 
 fim_algoritmo 
 5
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 
fim_enquanto 
 
 
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) 
 fim_enquanto 
 
 escreva("Senha CORRETA!") 
 
 fim_algoritmo 
 
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 
OBS: em verificação, é feita a pergunta: “V atual é menor ou igual a Vf?” 
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 
 6
Execução de um algoritmo 
 
Exemplo: Execução do algoritmo (que calcula a média e a situação), passo a passo. 
 
 
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 : realLinha 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

Continue navegando