Modo de preparo: Bata a margarina, as gemas e o acar at ficar cremoso Junte o leite, o coco e a farinha e continue batendo Acrescente o fermento e, por ltimo, as claras em neve Unte uma forma com manteiga e leve ao forno para assar
Quo cremoso?!? De uma vez s?!? Quanto tempo?!? Quanto tempo?!?
Modo de preparo: Bata a margarina, as gemas e o acar 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 Textual Informal Refinado Algoritmo Grfico-Textual Informal Montagem de um Aeromodelo Material Cola especial para plsticos Estilete Lixas finas Durex ou fita crepe Pregador de roupas, elsticos
Identificao das peas
Algoritmo Grfico-Textual Informal Instrues Leia e entenda as instrues antes de comear a montagem Lave as peas com gua e detergente. Na lavagem sero removidos desmoldantes e sujeiras, que dificultam a colagem e a pintura. Faa isto dentro de uma bacia, para evitar perder peas pequenas, que porventura se soltem Encontre as peas que devem ser usadas na primeira parte da montagem (figura do slide anterior) Lixe as peas com cuidado eliminando as rebarbas ... Algoritmo Grfico-Textual Informal Troca de pneu Abra o porta-mala e verifique se todos acessrios esto l. Em caso negativo, feche o porta-malas e pea carona a algum. Em caso positivo, retire o tringulo, posicione-o a cerca de 30 m do carro, e, depois, retire o estepe e o macaco. Levante o carro...
Algoritmo Textual Informal 2 Troca de pneu
Algoritmo Grfico Informal Acessrios OK? Abre porta-malas Pega tringulo Fecha porta-malas Troca de pneu (Fluxograma)
Algoritmo Grfico Semi-formal No Sim Troca de pneu
abre(porta_malas) Se acessorio_ok = FALSO Ento fecha(porta_malas) espera_carona() Seno pega_triangulo() ... Algoritmo Textual Formal Problema da Torre de Hani Seja a seguinte situao: 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 mdio 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 mdio para terceiro eixo Algoritmo: Problemas Complexos Passo 7: mova disco menor para terceiro eixo
Algoritmo: Problemas Complexos Seqncia de passos completa: Passo 1: mova disco menor para terceiro eixo Passo 2: mova disco mdio 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 mdio para terceiro eixo
Passo 7: mova disco menor para terceiro eixo Algoritmo: Problemas Complexos Algoritmo: CONCEITO O que um algoritmo? Processo sistemtico para computar um resultado a partir de dados de entrada O que so estruturas de dados? Maneira de organizar dados e operar sobre eles Algoritmos + estruturas de dados = programas Um programa a expresso em linguagem formal (inteligvel por um computador) de um algoritmo O que Programao? = ABSTRAO! A realidade complexa e rica em detalhes! Abstrao Realidade O que voc abstrai dessa realidade? Abstrao O que abstrao? Abstrao Abstrao = Operao mental que observa a realidade e captura apenas os aspectos relevantes para um contexto MASLOW A tarefa de programar sistemas computacionais envolve o exerccio constante da abstrao da realidade e sua codificao em uma linguagem de programao Abstrao Realidade Realidade Sistema de Locadora de Veculo Abstrao + Programao Sistema Computacional O que um Sistema Computacional? Sistema Computacional Sistema Computacional Software Hardware Peopleware Programao de Sistema Computacional A programao de um sistema computacional pode ser resumida em 3 passos bsicos
Processamento Entrada Sada Dispositivo de Entrada Dispositivo de Sada Memria UCP Programao de Sistema Computacional
Exemplo 1 Exibir a mdia de dois nmeros
Processamento Entrada Sada Dispositivo de Entrada Dispositivo de Sada Memria UCP 6 , 8 (6 + 8) / 2 7 Programao de Sistema Computacional
Exemplo 2 Exibir se o aluno est aprovado ou reprovado
Processamento Entrada Sada Dispositivo de Entrada Dispositivo de Sada Memria UCP Ana, 5, 3 Se (5+3)/2>=7 aprovado Seno reprovado Ana, reprovado Programao de Sistema Computacional Tipos de Linguagens de Programao 1 - Totalmente codificadas em binrio (0s e 1s) 2 - Usa instrues simblicas para representar os 0s e 1s 3 - Voltadas para facilitar o raciocnio humano
Linguagem Assembly ( Mnem nica ) LOAD R1, val1 LOAD R2, val2 ADD R1, R2 STORE R1, val2 Linguagem de M quina 0010 0001 1110 0010 0010 1111 0001 0001 0010 0011 0001 1111 Linguagem de Alto N vel val2 = val1+val2 Baixo Nvel Alto Nvel (1) (2) (3) Noes de Lgica Exemplos de aplicao da lgica
O quarto est fechado e que meu livro est no quarto. Ento, preciso primeiro abrir o quarto para pegar o livro
Rosa me de Ana, Paula filha de Rosa, Jlia filha de Ana. Ento, Jlia neta de Rosa e sobrinha de Paula
Todo mamfero animal e todo cavalo mamfero. Ento, todo cavalo animal
Todo mamfero bebe leite e o homem bebe leite. Ento, todo homem mamfero e animal (mas no um cavalo)
Atividade 1 (10min) Resolva os seguintes problemas de lgica P1 Uma lesma deve subir um poste de 10m de altura. De dia sobe 2m e noite desce 1m. Em quantos dias atingir o topo do poste? P2 - Trs gatos comem trs ratos em trs minutos. Cem gatos comem cem ratos em quantos minutos? P3 - O pai do padre filho do meu pai. O que eu sou do Padre? P4 - Se um bezerro pesa 75 kg mais meio bezerro, quanto pesa um bezerro inteiro?
Atividade 1 (10min) Resolva os seguintes problemas de lgica P5 Qual o prximo nmero da seqncia 7,8,10,13,17,? P6 Um pai de 80kg e suas 2 filhas (40kg cada), precisam sair de uma ilha com um barco. Porm a capacidade do barco de 80kg. Como faro para sair da ilha? P7 Usando uma jangada, um campons precisa atravessar uma cabra, um leo e um fardo de capim para a outra margem do rio. A jangada s tem lugar para ele e mais outra coisa. O que ele deve fazer para atravessar o rio com seus pertences intactos?
RESPOSTAS - Atividade 1 Respostas R1 - 9(nove) dias. No nono dia a lesma sobe 2(dois) metros, atinge o topo e evidentemente no desce 1 metro R2 3 (trs) minutos R3 Tio R4 150 (cento e cinqenta) kg R5 22 R6 Vo as duas filhas. Uma delas volta. O pai sai. A outra filha volta. As duas filhas saem juntas. R7 - Primeiro leve a cabra, volte e pegue o capim; deixe o capim e leve a cabra de volta; deixe a cabra e leve o leo, depois s voltar e pegar a cabra. Noes de Lgica
Em Lgica um conceito importante o de Proposio Voc sabe o que uma PROPOSIO? Noes de Lgica
Proposio: um enunciado verbal, ao qual deve ser atribudo, sem ambigidade, um valor lgico verdadeiro (V) ou falso (F). Exemplos de proposies: Robson Fidalgo Professor (V) 3 + 5 = 10 (F) 5 < 8 (V) Contra-exemplos de Proposies: Onde voc vai ? 3 + 5 Os estudantes jogam vlei. (quais ?) Noes de Lgica Operaes Lgicas: so usadas para formar novas proposies a partir de proposies existentes. Considerando p e q duas proposies genricas, pode-se aplicar as seguintes operaes lgicas bsicas sobre elas
Definindo a prioridade: Usar parnteses Ex:((p v q)^(~q)) ou Obedecer (~) > (^) > (v) Operao Smbolo Significado Negao ~ No Conjuno ^ E Disjuno v OU Noes de Lgica Exemplos de aplicao das operaes lgica Considere: p = 7 primo = (V) q = 4 impar = (F)
Ento: 4 NO impar = ~q = (~F) = (V) 7 NO primo = ~p = (~V) = (F)
7 primo E 4 NO 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 NO primo = q ^ ~p = (F ^ (~V)) = (F ^ F) = (F)
Noes de Lgica Exemplos de aplicao das operaes lgica (Cont.) Considere: p = 7 primo = (V) q = 4 impar = (F)
Ento: 7 primo OU 4 NO 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 NO primo = q v ~p = (F v (~V)) = (F v F ) = (F) Noes de Lgica Exemplos de aplicao das operaes lgica Resumindo:
Ou seja: No (~) troca o valor lgico. Se F passa a ser V e vice- versa E (^) s tem valor V quando as duas proposies forem V, basta uma proposio ser F para o resultado ser F
OU (v) s tem valor F quando as duas proposies forem F, basta uma proposio ser V para o resultado ser V p q p ^ q p v q V V V V V F F V F V F V F F F F ~p F F V V pp qq p ^ q p ^ q p v q p v q VV VV VV VV VV FF FF VV FF VV FF VV FF FF FF FF ~p ~p FF FF VV VV Atividade 2 Considerando p = V e q = F, resolva as seguintes expresses lgicas ~p ~q p ^ q p v q (~p) ^ q (~p) v q p ^ (~q) p v (~q) (~p) ^ (~q) (~p) v (~q) RESPOSTAS - Atividade 2 Considerando p = V e q = F, resolva as seguintes expresses lgicas ~p = F ~q = V p ^ q = F p v q = V (~p) ^ q = F (~p) v q = F p ^ (~q) = V p v (~q) = V (~p) ^ (~q) = F (~p) v (~q) = V Lgica de Programao & Algoritmo O que Programao de computadores? INSTRUES Instrues Delimitadoras Servem para especificar o incio e o fim do algoritmo.
incio ... fim
Declarao de Variveis Utilizado para especificar os nomes e os respectivos tipos das variveis necessrias no algoritmo
declare <variveis>: <tipo>; onde: <variveis> - lista de nomes de variveis separados por vrgula <tipo> - inteiro, real, caracter, string, lgico Declarao de Variveis Exemplos:
Bloco de Comentrio Serve para explicar um determinado trecho do algoritmo, para torna-lo mais claro, facilitando seu entendimento por outras pessoas ou posteriormente. { <comentrio> } Exemplo: { Isto um exemplo de comentrio } Instruo de Entrada Usada para ler dados de entrada do algoritmo.
leia(<variveis>);
onde: <variveis> - contero os dados lidos. Instruo de Entrada Exemplos:
Instruo de Sada Usada para mostrar os resultados do processamento dos dados de entrada.
escreva(<resultados>);
onde: <resultados> - geralmente o contedo de uma ou mais variveis com a resposta do problema. Instruo de Sada Exemplos:
escreva(O valor de D : , D); escreva(nome, sexo); escreva(Pratica esporte.); Instruo de Atribuio Utilizado para atribuir um determinado valor a uma varivel.
<varivel> <expresso>; onde: <varivel> - nome de uma varivel <expresso> - um valor do mesmo tipo da varivel ou uma expresso lgica ou aritmtica. Instruo de Atribuio Exemplos
D B^2-4*A*C; nome Paulo; Pratica_Esporte TRUE; Sexo M; Estruturas de Controle Baseado na lgica estruturada, Bohn e Jacopini provaram que apenas trs estruturas so suficientes para explicar a soluo de qualquer problema, inclusive tornando-os estruturados e mais legveis. Estruturas de Controle So elas: Estrutura Seqencial: os comandos ou instrues vo sendo executados na ordem em que aparecem no algoritmo.
Estruturas de Controle Estrutura de Repetio: comandos so executados repetidas vezes at que uma condio de parada seja satisfeita Estruturas de Controle Estrutura de Seleo: Conforme o resultado de uma expresso lgica, determinados comandos so executados e outros no, caracterizando assim uma seleo de comandos TRUE FALSE Instrues de Seleo Tipo simples: se <sentena> ento <comandos>; fim-se
OBS.: <comandos> sero executados apenas se <sentena> resultar em TRUE. Instrues de Seleo Exemplo:
se A>0 ento B A + 1; A 0; fim-se
Instrues de Seleo Tipo composto: se <sentena> ento <comandos1>; seno <comandos2>; fim-se OBS.: <comandos1> sero executados apenas se <sentena> resultar em TRUE. Em caso contrrio, <comandos2> sero executados. Instrues de Seleo Exemplo: se A>B ento B A + 1; A 0; seno A 0; B A + 1; fim-se
Instrues de Repetio Enquanto / Fim-Enquanto
enquanto <sentena> faa <comandos>; fim-enquanto; OBS.: <comandos> sero executados enquanto <sentena> resultar em TRUE. Instrues de Repetio Exemplo: enquanto A>0 faa leia(B); escreva(B); A A - 1; fim-enquanto; Instrues de Repetio Repita / At
repita <comandos>; at <sentena>; OBS.: <comandos> sero executados at que <sentena> resulte em TRUE. Instrues de Repetio Exemplo:
repita leia(B); escreva(B); A A - 1; at A<1; Instrues de Repetio Para / At / Fim-Para para <varivel> <inicial> at <final> faa <comandos>; fim-para; OBS.: <varivel> - contador do tipo inteiro <inicial> - valor inicial da varivel <final> - valor final da varivel Instrues de Repetio Exemplo:
{ Comandos para escrever 10 vezes uma frase na tela do computador } para i 1 at 10 faa escreva(ltimo tipo de repetio); fim-para; Estrutura de um Algoritmo Um algoritmo em Portugol tem a seguinte estrutura: incio <declarao de variveis> <inicializao de variveis> <corpo lgico do algoritmo> fim Lgica de Programao & Algoritmo Estruturas bsicas de um algoritmo: Seqncia Incio/Fim Define uma estrutura onde as instrues sero executadas na ordem que aparecem. Seleo Se-Ento/Seno Define uma estrutura condicional que dada a sua avaliao (V ou F) determina qual caminho do algoritmo ser executado Repetio Repita, Enquanto ou Para Define uma estrutura de iterao condicional (V ou F) ou contada (pr-definida) de instrues Lgica de Programao & Algoritmo Algoritmo para ligar de um telefone pblico - Seqncia Incio 1. Tirar o fone do gancho; 2. Ouvir o sinal de linha; 3. Introduzir o carto; 4. Teclar o nmero desejado; 5. Conversar; 6. Desligar; 7. Retirar o carto; Fim. Este algoritmo s usa uma estrutura de seqncia Incio/Fim Lgica de Programao & Algoritmo Algoritmo para ligar de um telefone pblico Seleo E se o telefone pblico estiver com defeito? Incio 1. Tirar o fone do gancho; 2. Se ouvir o sinal de linha, ento 1. Introduzir o carto; 2. Teclar o nmero desejado; 3. Conversar; 4. Desligar; 5. Retirar o carto; 3. Seno 1. ir para o prximo telefone; Fim. Este algoritmo usa uma estrutura de deciso Se-ento/Seno Lgica de Programao & Algoritmo Algoritmo para ligar de um telefone pblico Repetio E se o prximo telefone pblico tambm estiver com defeito? Incio 1. Repita 1. Tirar o fone do gancho; 2. Se ouvir o sinal de linha ento 1. Introduzir o carto; 2. Teclar o nmero desejado; 3. Conversar; 4. Desligar; 5. Retirar o carto; 3. Seno 1. ir para o prximo telefone; 2. At ouvir o sinal de linha Fim. Este algoritmo usa uma estrutura de repetio Repita/At Lgica de Programao & Algoritmo Algoritmo para ligar de um telefone pblico Repetio E se o telefone chamado estiver com defeito? E se o telefone chamado estiver ocupado? E se acabarem os crditos do carto telefnico? E se ...?
Um algoritmo SEMPRE sofre melhorias sucessivas. (Tcnica de refinamentos sucessivos)
Fluxogramas - Exemplo 1 Achar o valor da expresso: D = B 2 - 4AC. Incio Ler A, B, C D = B^2 - 4*A*C 1 1 Escrever D Fim Fluxogramas: Exemplo 2 Achar o maior de dois nmeros A e B. Incio Ler A, B A=B A<B A>B Comparar A com B Escrever: A e B iguais Fim Escrever: A maior Escrever: B maior Portugus Estruturado - Exemplo 1 Achar o valor da expresso: D = B 2 - 4AC.
Ler os valores de A, B e C Calcular a expresso D = B 2 - 4AC Mostrar o resultado desse clculo Portugus Estruturado - Exemplo 2 Achar o maior de dois nmeros A e B.
Ler dois nmeros A e B Comparar A com B Mostrar o resultado dessa comparao Pseudocdigo - Exemplo 1 Achar o valor da expresso: D = B 2 - 4AC.
Incio Declare A,B,C,D; { Declarao de variveis } Leia(A,B,C); D B^2 - 4*A*C; { Operao de atribuio } Escreva(D); Fim.
Pseudocdigo - Exemplo 2 Achar o maior de dois nmeros A e B. Incio Declare A,B; { Declarao de variveis } Leia(A,B); Se A = B Ento Escreva(A e B iguais); Seno Se A>B Ento Escreva(A maior); Seno Escreva(B maior); Fim-Se Fim-Se Fim. Atividade 3 Reescreva corretamente o algoritmo abaixo Algoritmo aprovao Incio 1. Obter as 2 notas do aluno; 2. Repita 1. Se Mdia do aluno >=7, ento 1. Repita 1. Informar que o aluno est REPROVADO; 2. At Mdia < 7 2. Seno Mdia >= 7 1. Informar que o aluno est APROVADO; 3. At ltimo aluno; Fim.
RESPOSTA - Atividade 3 Algoritmo aprovao Incio 1. Repita 1. Obter as 2 notas do aluno; 2. Se Mdia do aluno >=7, ento 1. Informar que o aluno est APROVADO 3. Seno 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++; } } }
print "Total de Gs : $numero_g \n"; print "Total de Cs : $numero_c \n"; print "Total de bases : $numero_total \n";
UM EXERCCIO Construa um algoritmo para escolher as duas maiores laranjas de um balaio
1) leia um nmero inteiro e mostre uma mensagem indicando se este nmero par ou mpar, e se positivo ou negativo
2) leia quatro nmeros inteiros e encontre a mdia aritmtica simples entre as que correspondem a nmeros pares. Lembre- se que no pode haver diviso por zero
3) leia 4 notas, calcule a mdia dessas e escreva: Reprovado (mdia < 5), Recuperao (mdia >= 5 e < 7) e Aprovado (mdia >= 7)
Outros exerccios...
4) leia a idade de um nadador e exiba sua categoria segundo as regras: A(5 at 7); B(8 at 10); C(11 at 13); D(14 at 18) e E( Idade > 18)
5) leia dois nmeros inteiros, uma operao matemtica (+,-,*,/) e faa o calculo destes nmeros segundo a operao lida
6) leia o nome e a idade de trs pessoas e informe o nome da pessoa mais velha e o nome da pessoa mais nova. Considere que no existem idades iguais mais exerccios...
7) leia os nmeros inteiros A e B e informe se A mltiplo, divisor ou nada de B
8) leia trs nmeros e mostre-os em ordem crescente
9) leia uma milhar e informe se esse nmero palndromo. Exemplos de nmeros palndromos: 9889, 7337 e 2002
10) leia um nmero inteiro entre 20 e 59 e mostre seu extenso. Exiba um erro se o nmero estiver fora do intervalo ainda mais exerccios... AMBIENTES/LINGUAGENS DE PROGRAMAO LA PASCAL declare Var Incio Begin Fim End Caracter Char Inteiro Integer Real Real Lgico Boolean Leia Read Escreva Write AMBIENTES/LINGUAGENS DE PROGRAMAO LA C declare Incio { Fim } Caracter Char Inteiro Int Real Double Lgico Boolean Leia Scanf Escreva Printf