Programação - Algoritmos
Algoritmo - Definição É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita. O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita. Podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica).
Programa - Definição Um programa de computador é essencialmente um algoritmo que diz ao computador os passos específicos e em que ordem eles devem ser executados ETAPAS NA RESOLUÇÃO DE UM PROBLEMA
Algoritmo • Modo de preparo:
Quão cremoso?!?
▫ Bata a margarina, as gemas e o açúcar até ficar cremoso Quanto tempo?!? ▫ Junte o leite, o coco e a farinha e continue batendo ▫ Acrescente o fermento e, por último, as claras em neve De uma vez só?!? ▫ Unte uma forma com manteiga e leve ao forno para assar Quanto tempo?!?
Algoritmo – v2 • 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 • Troca de pneu (Fluxograma)
Abre porta-malas
Acessórios OK?
Não Fecha porta-malas
Sim
Pega triângulo
Algoritmo • Troca de pneu abre(porta_malas) Se acessorio_ok = FALSO Então fecha(porta_malas) espera_carona() Senão pega_triangulo()
...
Algoritmo • 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: (Resolução) • Passo 1: mova disco menor para terceiro eixo
Algoritmo: (Resolução) • Passo 2: mova disco médio para segundo eixo
Algoritmo: (Resolução) • Passo 3: mova disco menor para segundo eixo
Algoritmo: (Resolução) • Passo 4: mova disco maior para terceiro eixo
Algoritmo: (Resolução) • Passo 5: mova disco menor para primeiro eixo
Algoritmo: (Resolução) • Passo 6: mova disco médio para terceiro eixo
Algoritmo: (Resolução) • Passo 7: mova disco menor para terceiro eixo
Algoritmo: • 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
Estrutura geral de um Algoritmo
Variáveis Variável é a forma programática de identificar uma zona de memória do computador que pode ser consultada e alterada pelo Programa em execução. Tipos de Variáveis: Variáveis Numéricas Variáveis String Variáveis Booleanas Variáveis Data Variáveis Objeto Variáveis Variant
Variáveis Numéricas Integer: Valores inteiros entre –32768 e 32767 Long: Valores inteiros entre –2147483648 e 2147483647 Single: Valores Reais de precisão simples entre +/-1.401298E-45 Double: Valores Reais de precisão dupla entre e +/-3.402823E38
Variáveis String Uma sequência de caracteres
Variáveis Booleanas Só tem o resultado TRUE ou FALSE
Noções de Lógica • Proposição: é um enunciado verbal, ao qual deve ser atribuído, sem ambiguidade, um valor lógico verdadeiro (V) ou falso (F). ▫ 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 voleibol. (quais ?)
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, pode-se aplicar as seguintes operações lógicas básicas sobre elas
▫ Definindo a prioridade: Usar parênteses Ex:((p v q)^(~q)) ou Obedecer (~) > (^) > (v)
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)
Noções de Lógica • Exemplos de aplicação das operações lógica ▫ Resumindo: p V V F F
q V F V F
~p F F V V
p^q V F F F
pvq V V V F
▫ Ou seja: Não (~) troca o valor lógico. Se é F passa a ser V e vice-versa E (^) só tem valor V quando as duas proposições forem V, 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
Atividade • Considerando p = V e q = F, 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)
RESPOSTAS • 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
Lógica de Programação e Algoritmo
O que é Programação de computadores? INSTRUÇÕES
Instruções Delimitadoras • Servem para especificar o início e o fim do algoritmo. início ... fim
Declaração de Variáveis • Utilizado para especificar os nomes e os respetivos tipos das variáveis necessárias no algoritmo
declare <variáveis>: <tipo>; onde: <variáveis> - lista de nomes de variáveis separados por vírgula <tipo> - inteiro, real, caracter, string, lógico
Declaração de Variáveis • Exemplos: declare a,b,c: real; declare nome: string; declare sexo: caracter; declare pratica_esporte: lógico;
Bloco de Comentário • Serve para explicar um determinado trecho do algoritmo, para torná-lo mais claro, facilitando seu entendimento por outras pessoas ou posteriormente. { <comentário> } Exemplo: { Isto é um exemplo de comentário }
Instrução de Entrada • Usada para ler dados de entrada do algoritmo. leia(<variáveis>); onde: <variáveis> - conterão os dados lidos.
Instrução de Entrada • Exemplos: leia(a,b,c); leia(nome); leia(sexo); leia(pratica_esporte);
Instrução de Saída • Usada para mostrar os resultados do processamento dos dados de entrada. escreva(<resultados>); onde: <resultados> - geralmente é o conteúdo de uma ou mais variáveis com a resposta do problema.
Instrução de Saída • Exemplos: escreva(“O valor de D é: ”, D); escreva(nome, sexo); escreva(“Pratica esporte.”);
Instrução de Atribuição • Utilizado para atribuir um determinado valor a uma variável. <variável> <expressão>; onde: <variável> - nome de uma variável <expressão> - um valor do mesmo tipo da variável ou uma expressão lógica ou aritmética.
Instrução de Atribuição • Exemplos D B^2-4*A*C; nome “Paulo”; Pratica_Esporte Sexo ‘M’;
TRUE;
Estruturas de Controle • Baseado na lógica estruturada, Bohn e Jacopini provaram que apenas três estruturas são suficientes para explicar a solução de qualquer problema, inclusive tornando-os estruturados e mais legíveis.
Estruturas de Controle • São elas: ▫ Estrutura Sequencial: 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
Estruturas de Controle • Estrutura de Seleção: Conforme o resultado de uma expressão lógica, determinados comandos são executados e outros não, 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.
Instruções de Seleção • Exemplo: se A>B então B A + 1; A 0; senão A 0; B A + 1; fim-se
Instruções de Repetição • Enquanto / Fim-Enquanto enquanto <sentença> faça <comandos>; fim-enquanto; OBS.: <comandos> serão executados enquanto <sentença> resultar em TRUE.
Instruções de Repetição • Exemplo: enquanto A>0 faça leia(B); escreva(B); A A - 1; fim-enquanto;
Instruções de Repetição • Repita / Até repita <comandos>; até <sentença>; OBS.: <comandos> serão executados até que <sentença> resulte em TRUE.
Instruções de Repetição • Exemplo: repita leia(B); escreva(B); A A - 1; até A<1;
Instruções de Repetição • Para / Até / Fim-Para para <variável> <comandos>; fim-para;
<inicial> até <final> faça
OBS.: <variável> - contador do tipo inteiro <inicial> - valor inicial da variável <final> - 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
Fluxogramas • Achar o valor da expressão: D = B2 - 4AC. Início
Ler A, B, C
1
D = B^2 - 4*A*C
1
Escrever D
Fim
Fluxogramas • Achar o maior de dois números A e B.
Início
Ler A, B
Comparar A com B
A=B Escrever: “A e B iguais”
A>B Escrever: “A é maior”
Fim
A<B Escrever: “B é maior”
Português Estruturado • Achar o valor da expressão: D = B2 - 4AC. Ler os valores de A, B e C Calcular a expressão D = B2 - 4AC Mostrar o resultado desse cálculo
Português Estruturado • 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
Pseudocódigo • Achar o valor da expressão: D = B2 - 4AC. Início Declare A,B,C,D; { Declaração de variáveis } Leia(A,B,C); D B^2 - 4*A*C; { Operação de atribuição } Escreva(D); Fim.
Pseudocódigo • Achar o maior de dois números A e B. Início Declare A,B; { Declaração de variáveis } Leia(A,B); Se A = B Então Escreva(“A e B iguais”); Senão Se A>B Então Escreva(“A é maior”); Senão Escreva(“B é maior”); Fim-Se Fim-Se Fim.
Exercícios... 1) leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, 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, calcule a média dessas e escreva: Reprovado (média < 5), Recuperação (média >= 5 e < 7) e Aprovado (média >= 7)
mais exercícios... 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 números inteiros, uma operação matemática (+,-,*,/) 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. Considere que não existem idades iguais
ainda mais exercícios... 7) leia os números inteiros A e B e informe se A é múltiplo, 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. 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
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!