Conceitos Fundamentais de Algoritmos e Programação para iniciantes

joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson Fidalgo (UFPE) www.xiscanoe.org

Algoritmo Textual Informal
‡ Modo de preparo:
Quão cremoso?!?

± Bata a margarina, as gemas e o açúcar até ficar Quanto tempo?!? cremoso ± Junte o leite, o coco e a farinha e continue batendo De uma vez só?!? ± Acrescente o fermento e, por último, as claras em neve Quanto tempo?!? ± Unte uma forma com manteiga e leve ao forno para assar

Algoritmo Textual Informal Refinado
‡ Modo de preparo:
± Bata a margarina, as gemas e o açúcar por 15 minutos ± Junte o leite, o coco e a farinha e continue batendo por mais 15 minutos ± Acrescente 20 g de fermento e, por último, as claras em neve ± Unte uma forma com manteiga e leve ao forno para assar por 30 minutos

Algoritmo Gráfico-Textual Informal ‡ Montagem de um Aeromodelo ± Material ‡ ‡ ‡ ‡ ‡ Cola especial para plásticos Estilete Lixas finas Durex ou fita crepe Pregador de roupas. elásticos .

Algoritmo Gráfico-Textual Informal ‡ Identificação das peças .

que dificultam a colagem e a pintura.Algoritmo Gráfico-Textual Informal ‡ Instruções ± Leia e entenda as instruções antes de começar a montagem ± Lave as peças com água e detergente.. para evitar perder peças pequenas. Na lavagem serão removidos desmoldantes e sujeiras.. . que porventura se soltem ± Encontre as peças que devem ser usadas na primeira parte da montagem (figura do slide anterior) ± Lixe as peças com cuidado eliminando as rebarbas ± . Faça isto dentro de uma bacia.

Algoritmo Textual Informal 2 ‡ Troca de pneu ³Abra o porta-mala e verifique se todos acessórios estão lá. Em caso negativo. retire o triângulo. posicione-o a cerca de 30 m do carro. retire o estepe e o macaco.. feche o porta-malas e peça carona a alguém. Em caso positivo. e. ³ . depois. Levante o carro..

Algoritmo Gráfico Informal ‡ Troca de pneu .

Algoritmo Gráfico Semi-formal ‡ Troca de pneu (Fluxograma) Abre porta-malas Sim Acessórios OK? Pega triângulo Não Fecha porta-malas .

. ..Algoritmo Textual Formal ‡ Troca de pneu abre(porta_malas) Se acessorio_ok = FALSO Então fecha(porta_malas) espera_carona() Senão pega_triangulo() .

Algoritmo: Problemas Complexos ‡ Problema da Torre de Hanói ± Seja a seguinte situação: ‡ deve-se mover todos os discos do primeiro eixo para o terceiro mantendo-se a ordem original ‡ em cada movimento. pode-se mover apenas um disco ‡ um disco nunca poderá ser sobreposto por outro maior .

Algoritmo: Problemas Complexos ‡ Passo 1: mova disco menor para terceiro eixo .

Algoritmo: Problemas Complexos ‡ Passo 2: mova disco médio para segundo eixo .

Algoritmo: Problemas Complexos ‡ Passo 3: mova disco menor para segundo eixo .

Algoritmo: Problemas Complexos ‡ Passo 4: mova disco maior para terceiro eixo .

Algoritmo: Problemas Complexos ‡ Passo 5: mova disco menor para primeiro eixo .

Algoritmo: Problemas Complexos ‡ Passo 6: mova disco médio para terceiro eixo .

Algoritmo: Problemas Complexos ‡ Passo 7: mova disco menor para terceiro eixo .

Algoritmo: Problemas Complexos ‡ Seqüência de passos completa: Passo 1: mova disco menor para terceiro eixo Passo 2: mova disco médio para segundo eixo Passo 3: mova disco menor para segundo eixo Passo 4: mova disco maior para terceiro eixo Passo 5: mova disco menor para primeiro eixo Passo 6: mova disco médio para terceiro eixo Passo 7: mova disco menor para terceiro eixo .

Algoritmo: CONCEITO ‡ O que é um ALGORITMO? ‡ OBS.: Não existe um algoritmo para construir algoritmos ± a criação de um algoritmo é um exercício de criatividade (conhecimento) e experiência (técnica e prática) .

O que é Programação? = ABSTRAÇÃO! A realidade é complexa e rica em detalhes! .

Abstração Realidade O que você abstrai dessa realidade? .

Abstração O que é abstração? .

Abstração Abstração = Operação mental que observa a realidade e captura apenas os aspectos relevantes para um contexto .

.

.

.

MASLOW .

‡ A tarefa de programar sistemas computacionais envolve o exercício constante da abstração da realidade e sua codificação em uma linguagem de programação Abstração R ealid ad e eali Abstração + Programação Sistema de Locadora de Veículo .

Sistema Computacional O que é um Sistema Computacional? .

Sistema Computacional Sistema Computacional Software Hardware Peopleware .

Programação de Sistema Computacional ‡ A programação de um sistema computacional pode ser resumida em 3 passos básicos Entrada Dispositivo de Entrada Processamento Saída Dispositivo de Saída UCP Memória .

8 (6 + 8) / 2 7 .Programação de Sistema Computacional ‡ Exemplo 1 ± Exibir a média de dois números Entrada Dispositivo de Entrada Processamento Saída Dispositivo de Saída UCP Memória 6.

3 Se (5+3)/2>=7 aprovado Senão reprovado Ana. reprovado .Programação de Sistema Computacional ‡ Exemplo 2 ± Exibir se o aluno está aprovado ou reprovado Entrada Dispositivo de Entrada Processamento Saída Dispositivo de Saída UCP Memória Ana. 5.

val1 0010 0010 1111 LOAD R2.Totalmente codificadas em binário (0´s e 1´s) ± 2 . R2 0011 0001 1111 STORE R1.Voltadas para facilitar o raciocínio humano Baixo Nível Alto Nível Linguagem de Máquina Linguagem Assembly (Mnemônica) Linguagem de Alto N ível val2 = val1+val2 0010 0001 1110 LOAD R1. val2 0001 0001 0010 ADD R1.Programação de Sistema Computacional ‡ Tipos de Linguagens de Programação ± 1 .Usa instruções simbólicas para representar os 0´s e 1´s ± 3 . val2 (1) (2) (3) .

todo cavalo é animal ± Todo mamífero bebe leite e o homem bebe leite. Então. Júlia é neta de Rosa e sobrinha de Paula ± Todo mamífero é animal e todo cavalo é mamífero. preciso primeiro abrir o quarto para pegar o livro ± Rosa é mãe de Ana. Júlia é filha de Ana. todo homem é mamífero e animal (mas não é um cavalo) . Então.Noções de Lógica ‡ Exemplos de aplicação da lógica ± O quarto está fechado e que meu livro está no quarto. Então. Paula é filha de Rosa. Então.

O pai do padre é filho do meu pai.Atividade 1 (10min) ‡ Resolva os seguintes problemas de lógica ± P1 ± Uma lesma deve subir um poste de 10m de altura. De dia sobe 2m e à noite desce 1m. Cem gatos comem cem ratos em quantos minutos? ± P3 . Em quantos dias atingirá o topo do poste? ± P2 .Se um bezerro pesa 75 kg mais meio bezerro.Três gatos comem três ratos em três minutos. O que eu sou do Padre? ± P4 . quanto pesa um bezerro inteiro? .

Atividade 1 (10min) ‡ Resolva os seguintes problemas de lógica ± P5 ± Qual o próximo número da seqüência 7. precisam sair de uma ilha com um barco. um leão e um fardo de capim para a outra margem do rio.8. um camponês precisa atravessar uma cabra. Porém a capacidade do barco é de 80kg.? ± P6 ± Um pai de 80kg e suas 2 filhas (40kg cada). A jangada só tem lugar para ele e mais outra coisa.17. O que ele deve fazer para atravessar o rio com seus pertences intactos? . Como farão para sair da ilha? ± P7 ± Usando uma jangada.13.10.

deixe a cabra e leve o leão. As duas filhas saem juntas. depois é só voltar e pegar a cabra. atinge o topo e evidentemente não desce 1 metro ± R2 ± 3 (três) minutos ± R3 ± Tio ± R4 ± 150 (cento e cinqüenta) kg ± R5 ± 22 ± R6 ± Vão as duas filhas.9(nove) dias. O pai sai. deixe o capim e leve a cabra de volta.Atividade 1 ‡ Respostas ± R1 . A outra filha volta. . ± R7 . Uma delas volta.Primeiro leve a cabra.RESPOSTAS . volte e pegue o capim. No nono dia a lesma sobe 2(dois) metros.

Noções de Lógica Em Lógica um conceito importante é o de ³Proposição´ Você sabe o que é uma PROPOSIÇÃO? .

um valor lógico verdadeiro (V) ou falso (F). (quais ?) .Noções de Lógica ‡ Proposição: é um enunciado verbal. ± Exemplos de proposições: ‡ Robson Fidalgo é Professor (V) ‡ 3 + 5 = 10 (F) ‡ 5 < 8 (V) ± Contra-exemplos de Proposições: ‡ Onde você vai ? ‡ 3+5 ‡ Os estudantes jogam vôlei. sem ambigüidade. ao qual deve ser atribuído.

pode-se aplicar as seguintes operações lógicas básicas sobre elas Operação Símbolo Negação ~ Conjunção ^ Disjunção v Significado Não E OU ± Definindo a prioridade: ‡ Usar parênteses Ex:((p v q)^(~q)) ou ‡ Obedecer (~) > (^) > (v) .Noções de Lógica ‡ Operações Lógicas: são usadas para formar novas proposições a partir de proposições existentes. ± Considerando p e q duas proposições genéricas.

Noções de Lógica ‡ Exemplos de aplicação das operações lógica ± Considere: ‡ p = 7 é primo = (V) ‡ q = 4 é impar = (F) ± Então: ‡ 4 NÃO é impar = ~q = (~F) = (V) ‡ 7 NÃO é primo = ~p = (~V) = (F) ‡ 7 é primo E 4 NÃO é impar = p ^ ~q = (V ^ (~F)) = (V ^ V) = (V) ‡ 7 é primo E 4 é impar = p ^ q = (V ^ F) = (F) ‡ 4 é impar E 7 é primo = q ^ p = (F ^ V) = (F) ‡ 4 é impar E 7 NÃO é primo = q ^ ~p = (F ^ (~V)) = (F ^ F) = (F) .

Noções de Lógica ‡ Exemplos de aplicação das operações lógica (Cont.) ± Considere: ‡ p = 7 é primo = (V) ‡ q = 4 é impar = (F) ± Então: ‡ 7 é primo OU 4 NÃO é impar = p v ~q = (V v (~F)) = (V v V) = (V) ‡ 7 é primo OU 4 é impar = p v q = (V v F) = (V) ‡ 4 é impar OU 7 é primo = q v p = (F v V) = (V) ‡ 4 é impar OU 7 NÃO é primo = q v ~p = (F v (~V)) = (F v F ) = (F) .

basta uma proposição ser F para o resultado ser F ‡ OU (v) só tem valor F quando as duas proposições forem F. basta uma proposição ser V para o resultado ser V . Se é F passa a ser V e viceversa ‡ E (^) só tem valor V quando as duas proposições forem V.Noções de Lógica ‡ Exemplos de aplicação das operações lógica ± Resumindo: p p p pv V V F F V F V F F F V V V F F F V V V F ± Ou seja: ‡ Não (~) troca o valor lógico.

resolva as seguintes expressões lógicas ± ~p ± ~q ± p^q ± pvq ± (~p) ^ q ± (~p) v q ± p ^ (~q) ± p v (~q) ± (~p) ^ (~q) ± (~p) v (~q) .Atividade 2 ‡ Considerando p = V e q = F.

Atividade 2 ‡ Considerando p = V e q = F. resolva as seguintes expressões lógicas ± ~p = F ± ~q = V ± p^q=F ± pvq=V ± (~p) ^ q = F ± (~p) v q = F ± p ^ (~q) = V ± p v (~q) = V ± (~p) ^ (~q) = F ± (~p) v (~q) = V .RESPOSTAS .

Lógica de Programação & Algoritmo O que é Programação de computadores? INSTRUÇÕES .

fim .Instruções Delimitadoras ‡ Servem para especificar o início e o fim do algoritmo.. início ..

inteiro. lógico .lista de nomes de variáveis separados por vírgula <tipo> . onde: <variáveis> .Declaração de Variáveis ‡ Utilizado para especificar os nomes e os respectivos tipos das variáveis necessárias no algoritmo declare <variáveis>: <tipo>. caracter. string. real.

b. declare nome: string. declare sexo: caracter.c: real.Declaração de Variáveis ‡ Exemplos: declare a. . declare pratica_esporte: lógico.

para torna-lo mais claro.Bloco de Comentário ‡ Serve para explicar um determinado trecho do algoritmo. facilitando seu entendimento por outras pessoas ou posteriormente. { <comentário> } Exemplo: { Isto é um exemplo de comentário } .

onde: <variáveis> . . leia(<variáveis>).Instrução de Entrada ‡ Usada para ler dados de entrada do algoritmo.conterão os dados lidos.

leia(sexo).b. . leia(nome). leia(pratica_esporte).Instrução de Entrada ‡ Exemplos: leia(a.c).

Instrução de Saída ‡ Usada para mostrar os resultados do processamento dos dados de entrada.geralmente é o conteúdo de uma ou mais variáveis com a resposta do problema. escreva(<resultados>). onde: <resultados> . .

.´). sexo).Instrução de Saída ‡ Exemplos: escreva(³O valor de D é: ´. D). escreva(nome. escreva(³Pratica esporte.

um valor do mesmo tipo da variável ou uma expressão lógica ou aritmética.nome de uma variável <expressão> .Instrução de Atribuição ‡ Utilizado para atribuir um determinado valor a uma variável. onde: <variável> . <variável> <expressão>. .

TRUE.Instrução de Atribuição ‡ Exemplos D B^2-4*A*C. . Pratica_Esporte Sexo µM¶. nome ³Paulo´.

. inclusive tornando-os estruturados e mais legíveis. Bohn e Jacopini provaram que apenas três estruturas são suficientes para explicar a solução de qualquer problema.Estruturas de Controle ‡ Baseado na lógica estruturada.

Estruturas de Controle ‡ São elas: ± Estrutura Seqüencial: os comandos ou instruções vão sendo executados na ordem em que aparecem no algoritmo. .

Estruturas de Controle ‡ Estrutura de Repetição: comandos são executados repetidas vezes até que uma condição de parada seja satisfeita .

determinados comandos são executados e outros não.Estruturas de Controle ‡ Estrutura de Seleção: Conforme o resultado de uma expressão lógica. caracterizando assim uma seleção de comandos TRUE FALSE .

Instruções de Seleção
‡ Tipo simples:
se <sentença> então <comandos>; fim-se OBS.: <comandos> serão executados apenas se <sentença> resultar em TRUE.

Instruções de Seleção
‡ Exemplo:
se A>0 então B A + 1; A 0; fim-se

Instruções de Seleção
‡ Tipo composto:
se <sentença> então <comandos1>; senão <comandos2>; fim-se
OBS.: <comandos1> serão executados apenas se <sentença> resultar em TRUE. Em caso contrário, <comandos2> serão executados.

fim-se . B A + 1. senão A 0.Instruções de Seleção ‡ Exemplo: se A>B então B A + 1. A 0.

fim-enquanto. . OBS.: <comandos> serão executados enquanto <sentença> resultar em TRUE.Instruções de Repetição ‡ Enquanto / Fim-Enquanto enquanto <sentença> faça <comandos>.

fim-enquanto.Instruções de Repetição ‡ Exemplo: enquanto A>0 faça leia(B).1. . A A . escreva(B).

: <comandos> serão executados até que <sentença> resulte em TRUE. OBS. .Instruções de Repetição ‡ Repita / Até repita <comandos>. até <sentença>.

escreva(B).Instruções de Repetição ‡ Exemplo: repita leia(B).1. A A . . até A<1.

Instruções de Repetição ‡ Para / Até / Fim-Para para <variável> <inicial> até <final> faça <comandos>.contador do tipo inteiro <inicial> .valor inicial da variável <final> .: <variável> . OBS. fim-para.valor final da variável .

Instruções de Repetição ‡ Exemplo: { Comandos para escrever 10 vezes uma frase na tela do computador } para i 1 até 10 faça escreva(³Último tipo de repetição´). fim-para. .

Estrutura de um Algoritmo ‡ Um algoritmo em Portugol tem a seguinte estrutura: início <declaração de variáveis> <inicialização de variáveis> <corpo lógico do algoritmo> fim .

Enquanto ou Para ‡ Define uma estrutura de iteração condicional (V ou F) ou contada (pré-definida) de instruções .Lógica de Programação & Algoritmo ‡ Estruturas básicas de um algoritmo: ± Seqüência ± Início/Fim ‡ Define uma estrutura onde as instruções serão executadas na ordem que aparecem. ± Seleção ± Se-Então/Senão ‡ Define uma estrutura condicional que dada a sua avaliação (V ou F) determina qual ³caminho´ do algoritmo será executado ± Repetição ± Repita.

Retirar o cartão. Tirar o fone do gancho. Introduzir o cartão. Ouvir o sinal de linha. Este algoritmo só usa uma estrutura de seqüência Início/Fim .Seqüência Início 1. Teclar o número desejado. 6. Desligar. 7. 4. Fim.Lógica de Programação & Algoritmo ‡ Algoritmo para ligar de um telefone público . Conversar. 3. 5. 2.

Fim. 4. Tirar o fone do gancho. Conversar. então Este algoritmo usa uma 1. 3. Retirar o cartão. Se ouvir o sinal de linha. 5. Senão 1. Desligar. Se-então/Senão 3. ir para o próximo telefone.Lógica de Programação & Algoritmo ‡ Algoritmo para ligar de um telefone público ± Seleção E se o telefone público estiver com defeito? Início 1. estrutura de decisão 2. Teclar o número desejado. Introduzir o cartão. . 2.

2. Se ouvir o sinal de linha então 1. estrutura de repetição 4. . Este algoritmo usa uma 3. Retirar o cartão. Repita 1. Introduzir o cartão. Tirar o fone do gancho. ir para o próximo telefone. Conversar. 2. 5. Até ouvir o sinal de linha Fim. Desligar. Repita/Até 3. 2.Lógica de Programação & Algoritmo ‡ Algoritmo para ligar de um telefone público ± Repetição E se o próximo telefone público também estiver com defeito? Início 1. Teclar o número desejado. Senão 1.

.Lógica de Programação & Algoritmo ‡ ‡ ‡ ‡ ‡ Algoritmo para ligar de um telefone público ± Repetição E se o telefone chamado estiver com defeito? E se o telefone chamado estiver ocupado? E se acabarem os créditos do cartão telefônico? E se .. (Técnica de refinamentos sucessivos) .? Um algoritmo SEMPRE sofre melhorias sucessivas.

B.4*A*C Escrever D 1 Fim . C D = B^2 .4AC.Fluxogramas .Exemplo 1 ‡ Achar o valor da expressão: D = B2 . Início 1 Ler A.

Fluxogramas: Exemplo 2 ‡ Achar o maior de dois números A e B. B Comparar A com B A=B Escrever: ³A e B iguais´ A>B Escrever: ³A é maior´ A<B Escrever: ³B é maior´ Fim . Início Ler A.

4AC Mostrar o resultado desse cálculo .Exemplo 1 ‡ Achar o valor da expressão: D = B2 .4AC.Português Estruturado . B e C Calcular a expressão D = B2 . Ler os valores de A.

Exemplo 2 ‡ Achar o maior de dois números A e B. Ler dois números A e B Comparar A com B Mostrar o resultado dessa comparação .Português Estruturado .

B. Início Declare A.Pseudocódigo .C).4AC. { Declaração de variáveis } Leia(A. Fim.Exemplo 1 ‡ Achar o valor da expressão: D = B2 .B. { Operação de atribuição } Escreva(D).4*A*C.D. D B^2 .C. .

Exemplo 2 ‡ Achar o maior de dois números A e B. Senão Se A>B Então Escreva(³A é maior´).Pseudocódigo .B. Se A = B Então Escreva(³A e B iguais´). Fim-Se Fim-Se Fim. Início Declare A. . Senão Escreva(³B é maior´). { Declaração de variáveis } Leia(A.B).

2. Senão Média >= 7 1.Atividade 3 ‡ Reescreva corretamente o algoritmo abaixo ‡ Algoritmo aprovação Início 1. Informar que o aluno está REPROVADO. Até último aluno. Repita 1. Até Média < 7 2. Repita 1. Se Média do aluno >=7. então 1. 3. Informar que o aluno está APROVADO. Fim. 2. . Obter as 2 notas do aluno.

RESPOSTA - Atividade 3
‡ Algoritmo aprovação Início 1. Repita 1. Obter as 2 notas do aluno; 2. Se Média do aluno >=7, então 1. Informar que o aluno está APROVADO 3. Senão 1. Informar que o aluno está REPROVADO; 2. Até último aluno Fim

‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡

#! /usr/bin/perl -w my $file = $ARGV[0]; open NEW, $file; my $numero_g=0; my $numero_c=0; my $numero_total=0; my $um=0; while (<NEW>) { if (/\>/) { # if ($um == 2) { # last; # } # $um++; next; } # print $_; chomp; for ($i=0; $i<length($_); $i++) { $numero_total++; if (uc(substr($_,$i,1)) eq "C" ) { $numero_c++; } if (uc(substr($_,$i,1)) eq "G") { $numero_g++; } } }

UM EXERCÍCIO
‡ Construa um algoritmo para escolher as duas maiores laranjas de um balaio

e se é positivo ou negativo 2) leia quatro números inteiros e encontre a média aritmética simples entre as que correspondem a números pares. Lembrese que não pode haver divisão por zero 3) leia 4 notas. 1) leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar.. Recuperação (média >= 5 e < 7) e Aprovado (média >= 7) .Outros exercícios. calcule a média dessas e escreva: Reprovado (média < 5)..

/) e faça o calculo destes números segundo a operação lida 6) leia o nome e a idade de três pessoas e informe o nome da pessoa mais velha e o nome da pessoa mais nova. uma operação matemática (+... C(11 até 13).-.mais exercícios. 4) leia a idade de um nadador e exiba sua categoria segundo as regras: A(5 até 7).*. Considere que não existem idades iguais . B(8 até 10). D(14 até 18) e E( Idade > 18) 5) leia dois números inteiros.

7) leia os números inteiros A e B e informe se A é múltiplo.ainda mais exercícios.. Exemplos de números palíndromos: 9889. 7337 e 2002 10) leia um número inteiro entre 20 e 59 e mostre seu extenso. Exiba um erro se o número estiver fora do intervalo . divisor ou nada de B 8) leia três números e mostre-os em ordem crescente 9) leia uma milhar e informe se esse número é palíndromo..

AMBIENTES/LINGUAGENS DE PROGRAMAÇÃO LA declare Início Fim Caracter Inteiro Real Lógico Leia Escreva Var Begin End Char Integer Real Boolean Read Write PASCAL .

AMBIENTES/LINGUAGENS DE PROGRAMAÇÃO LA declare Início Fim Caracter Inteiro Real Lógico Leia Escreva { } Char Int Double Boolean Scanf Printf C .

Próximos passos? ‡ Praticar a leitura e entendimento de Algoritmos de sua área de aplicação ‡ Aprender uma Linguagem de Programação para Computadores ‡ Programação! .

Sign up to vote on this title
UsefulNot useful