algoritmos e programação - aula 2
DESCRIPTION
Slides referentes a 2ª aula da disciplina de Algoritmos e programação, realizada no dia 05/02/2011TRANSCRIPT
Algoritmos e Algoritmos e ProgramaçãoProgramação
Thyago Maia Tavares de Thyago Maia Tavares de FariasFarias
Aula 2Aula 2
SumárioSumário
Por que criamos algoritmos?Por que criamos algoritmos? Representações de um algoritmoRepresentações de um algoritmo Regras básicas para Português Regras básicas para Português
EstruturadoEstruturado Linearização de expressõesLinearização de expressões ModularizaçãoModularização de expressões de expressões
Por que criamos Por que criamos algoritmos? algoritmos?
Linguagem natural não pode ser interpretada Linguagem natural não pode ser interpretada por um computador;por um computador;
Computadores são projetados para executar Computadores são projetados para executar tarefas bem determinadas a partir de tarefas bem determinadas a partir de determinadas instruções;determinadas instruções;
Para desenvolver software, utilizamos Para desenvolver software, utilizamos linguagens de programação;linguagens de programação;
A linguagem algorítmica é similar a uma A linguagem algorítmica é similar a uma linguagem de programação;linguagem de programação;
Logo, aprendendo a criar algoritmos, estamos Logo, aprendendo a criar algoritmos, estamos aptos a programar em qualquer linguagem de aptos a programar em qualquer linguagem de programação;programação;
Por que criamos Por que criamos algoritmos?algoritmos?
ALGORITMOCÓDIGO-FONTE EM
LINGUAGEM DEPROGRAMAÇÃO
ADAPTAÇÃO
LINGUAGEMNATURAL
INSTRUÇÕES
COMPILAÇÃO
LINGUAGEMDE MÁQUINA
TRADUÇÃO
01000101001....
PORTUGUÊS, INGLÊS...
ALTO NÍVEL
BAIXO NÍVEL
Representações de um Representações de um AlgoritmoAlgoritmo
Descrição narrativa;Descrição narrativa;
FluxogramaFluxograma
Pseudocódigo, Pseudocódigo, Português Português Estruturado ou Estruturado ou Portugol;Portugol;
SUBJETIVIDADE
PRECISÃO
Representações de um Representações de um AlgoritmoAlgoritmo
Descrição Narrativa:Descrição Narrativa:
Preferencialmente um verbo por frase;Preferencialmente um verbo por frase; Frases curtas e simples;Frases curtas e simples; Objetividade;Objetividade; Evitar palavras com sentido dúbio;Evitar palavras com sentido dúbio;
ExemploExemplo
Descrição Narrativa:Descrição Narrativa:
Dobro de um número (Dobro = Número x Dobro de um número (Dobro = Número x 2):2):
Digitar um número;Digitar um número; Gravar em uma variável;Gravar em uma variável; Multiplicar o número digitado por 2;Multiplicar o número digitado por 2; Gravar o resultado em outra variável;Gravar o resultado em outra variável; Mostrar o resultado da operação.Mostrar o resultado da operação.
Representações de um Representações de um algoritmoalgoritmo
FluxogramasFluxogramas
Descrevem o fluxo de Descrevem o fluxo de ação de um ação de um determinado trabalho determinado trabalho lógico, seja manual ou lógico, seja manual ou mecânico;mecânico;
Usa símbolos Usa símbolos convencionais, convencionais, permitindo poucas permitindo poucas variações;variações;
Representado por Representado por símbolos geométricos;símbolos geométricos;
ExemploExemplo
Fluxograma para lidar com uma Fluxograma para lidar com uma lâmpada que não funcionalâmpada que não funciona
LÂMPADANÃO FUNCIONA
A LÂMPADAESTÁ PLUGADA
?
PLUGUEA LÂMPADA
NÃO
A LÂMPADAESTÁ QUEIMADA
?
SIM
TROQUEA LÂMPADA
SIMVERIFIQUEO BOCAL
NÃO
Representações de um Representações de um algoritmoalgoritmo
Português estruturado (Portugol)Português estruturado (Portugol) Linguagem mais restrita que o Linguagem mais restrita que o
português em linguagem natural;português em linguagem natural; Simplificação extrema do português;Simplificação extrema do português; Significados bem definidos para todos os Significados bem definidos para todos os
termos utilizados nas instruções;termos utilizados nas instruções; Possui um conjunto de palavras e regras Possui um conjunto de palavras e regras
específicas (sintaxe da linguagem);específicas (sintaxe da linguagem); Representação utilizada no curso;Representação utilizada no curso;
Representações de um Representações de um algoritmoalgoritmo
Português estruturado (Portugol)Português estruturado (Portugol) Normalmente as implementações são Normalmente as implementações são
feitas em papel, escritos a mão;feitas em papel, escritos a mão; Atualmente também são utilizados Atualmente também são utilizados
programas que interpretam, testam e programas que interpretam, testam e executam algoritmos;executam algoritmos;
DesafioDesafio
Escreva um algoritmo que ajude o homem Escreva um algoritmo que ajude o homem do barco a levar o lobo, a ovelha e a caixa do barco a levar o lobo, a ovelha e a caixa de verduras para o outro lado do lago. de verduras para o outro lado do lago. Utilize a descrição narrativa para Utilize a descrição narrativa para representar o algoritmo. representar o algoritmo.
Lembrando que lobos comem ovelhas e Lembrando que lobos comem ovelhas e ovelhas comem as verduras da caixa ovelhas comem as verduras da caixa quando o homem está na outra margem!quando o homem está na outra margem!
Resposta do desafioResposta do desafio1.1. Pega a ovelhaPega a ovelha2.2. Vai para a outra margemVai para a outra margem3.3. Deixa a ovelhaDeixa a ovelha4.4. Volta a margem inicialVolta a margem inicial5.5. Pega a caixa de verdurasPega a caixa de verduras6.6. Vai para a outra margemVai para a outra margem7.7. Deixa a caixa de verduras e pega a ovelhaDeixa a caixa de verduras e pega a ovelha8.8. Volta a margem inicialVolta a margem inicial9.9. Deixa a ovelha e pega o loboDeixa a ovelha e pega o lobo10.10. Vai para a outra margemVai para a outra margem11.11. Deixa o loboDeixa o lobo12.12. Volta a margem inicialVolta a margem inicial13.13. Pega a ovelhaPega a ovelha14.14. Vai para a outra margemVai para a outra margem15.15. Deixa a ovelhaDeixa a ovelha
Linearização de Linearização de expressõesexpressões
Para contrução de algoritmos que realizam Para contrução de algoritmos que realizam cálculos matemáticos, TODAS expressões cálculos matemáticos, TODAS expressões aritméticas devem ser linearizadas;aritméticas devem ser linearizadas;
Linearizadas = Colocadas em linha;Linearizadas = Colocadas em linha;
Linearização de Linearização de expressõesexpressões
Operadores aritméticos disponíveis Operadores aritméticos disponíveis para o português estruturado:para o português estruturado: Adição (+)Adição (+) Subtração (-)Subtração (-) Multiplicação (*)Multiplicação (*) Divisão (/)Divisão (/) Divisão inteira (\)Divisão inteira (\) Exponenciação (^ ou Exp)Exponenciação (^ ou Exp) Módulo, ou resto da divisão (%)Módulo, ou resto da divisão (%)
Linearização de Linearização de expressõesexpressões
Operadores relacionaisOperadores relacionais
Realizam a comparação entre dois Realizam a comparação entre dois operandos ou duas expressões e operandos ou duas expressões e resultam em valores lógicos (verdadeiro resultam em valores lógicos (verdadeiro ou falso)ou falso) Ex.: 2+5 > 4 resultaria VERDADEIRO;Ex.: 2+5 > 4 resultaria VERDADEIRO; Ex.: 2 = 7 resultaria FALSO;Ex.: 2 = 7 resultaria FALSO;
Linearização de Linearização de expressõesexpressões
Operadores relacionais disponíveis Operadores relacionais disponíveis no Português estruturado:no Português estruturado: Maior (>)Maior (>) Menor (<)Menor (<) Maior ou igual (>=)Maior ou igual (>=) Menor ou igual (<=)Menor ou igual (<=) Igual (=)Igual (=) Diferente (<>)Diferente (<>)
Linearização de Linearização de expressõesexpressões
Operadores lógicosOperadores lógicos Atuam em expressões, também Atuam em expressões, também
resultando em valores lógicos resultando em valores lógicos VERDADEIRO ou FALSO;VERDADEIRO ou FALSO;
Tipos de operadores:Tipos de operadores: E: Resulta verdadeiro se AMBAS AS PARTES E: Resulta verdadeiro se AMBAS AS PARTES
forem verdadeiras;forem verdadeiras; OU: Resulta verdadeiro se UMA DAS PARTES OU: Resulta verdadeiro se UMA DAS PARTES
é verdadeira;é verdadeira; NÃO: Nega uma afirmação. Se verdadeiro, NÃO: Nega uma afirmação. Se verdadeiro,
torna-se falso; Se falso, torna-se verdadeiro; torna-se falso; Se falso, torna-se verdadeiro;
Linearização de Linearização de expressõesexpressões
Exemplos:Exemplos: (2+5 > 4) e (3 <> 3) resulta FALSO(2+5 > 4) e (3 <> 3) resulta FALSO
Pois VERDADEIRO e FALSO resulta FALSO;Pois VERDADEIRO e FALSO resulta FALSO; (2=2) ou (3<1) resulta VERDADEIRO(2=2) ou (3<1) resulta VERDADEIRO
Pois VERDADEIRO ou FALSO resulta Pois VERDADEIRO ou FALSO resulta VERDADEIRO;VERDADEIRO;
NAO (3<1) resulta VERDADEIRONAO (3<1) resulta VERDADEIRO Pois FALSO resulta VERDADEIRO devido a Pois FALSO resulta VERDADEIRO devido a
inversão de valores definido por NÃO; inversão de valores definido por NÃO;
Linearização de Linearização de expressõesexpressões
Tabelas-VerdadeTabelas-Verdade Mostra os resultados das aplicações dos Mostra os resultados das aplicações dos
operadores lógicos conforme os valores dos operadores lógicos conforme os valores dos operandos envolvidos:operandos envolvidos:
AA BB A E BA E B A OU A OU BB
NAO NAO AA
NÃO NÃO BB
VV VV VV VV FF FF
VV FF FF VV FF VV
FF VV FF VV VV FF
FF FF FF FF VV VV
Modularização de Modularização de expressõesexpressões
É a divisão de uma expressão por partes;É a divisão de uma expressão por partes; Proporciona maior compreensão;Proporciona maior compreensão; Define prioridades na resolução das Define prioridades na resolução das
mesmas;mesmas; Modularizamos expressões através dos Modularizamos expressões através dos
parênteses ( );parênteses ( ); Podemos utilizar parênteses dentro de Podemos utilizar parênteses dentro de
parênteses (( ));parênteses (( )); Indicam quais sub-expressões serão Indicam quais sub-expressões serão
executados primeiro; executados primeiro;
Modularização de Modularização de expressõesexpressões
Exemplo:Exemplo: (2+2)/2 resulta 2;(2+2)/2 resulta 2; Mas 2+2/2 resulta 3;Mas 2+2/2 resulta 3;
Ordem de prioridade dos operadores Ordem de prioridade dos operadores aritméticos:aritméticos:
1.1. ExponenciaçãoExponenciação2.2. MultiplicaçãoMultiplicação3.3. DivisãoDivisão4.4. AdiçãoAdição5.5. SubtraçãoSubtração
Modularização de Modularização de expressõesexpressões
Ordem de prioridade dos operadores Ordem de prioridade dos operadores lógicos:lógicos:
1.1. EE
2.2. OUOU
3.3. NÃONÃO
Exemplo:Exemplo: (2>3) ou (3<2) e (2<3) resultaria FALSO(2>3) ou (3<2) e (2<3) resultaria FALSO (2>3) e (3<2) ou (2<3) resultaria (2>3) e (3<2) ou (2<3) resultaria
VERDADEIROVERDADEIRO
Modularização de Modularização de ExpressõesExpressões
Ordem de prioridade dos Ordem de prioridade dos operadores disponíveis no operadores disponíveis no Português estruturado:Português estruturado:
1.1. Operadores aritméticosOperadores aritméticos
2.2. Operadores relacionaisOperadores relacionais
3.3. Operadores lógicosOperadores lógicos
ExercíciosExercícios Escreva as expressões abaixo na forma linearizada:Escreva as expressões abaixo na forma linearizada:
RespostasRespostas
1ª expressão: a + b/c1ª expressão: a + b/c
2ª expressão: ((2/3 – (5-3)) + 1) * 52ª expressão: ((2/3 – (5-3)) + 1) * 5
ExercíciosExercícios
Escreva as seguintes expressões Escreva as seguintes expressões linearizadas na forma matemática linearizadas na forma matemática convencional:convencional:
4 + (5/3) * 8 – 4/2 – 54 + (5/3) * 8 – 4/2 – 5 8/4 – 2 + (5 + 4) / (3 – 1)8/4 – 2 + (5 + 4) / (3 – 1)
ExercíciosExercícios
Resolva as expressões lógicas, Resolva as expressões lógicas, determinando se a expressão é determinando se a expressão é VERDADEIRA ou FALSA:VERDADEIRA ou FALSA:
2 > 32 > 3 (6 < 8) OU (3 > 7)(6 < 8) OU (3 > 7) NÃO (2 < 3)NÃO (2 < 3) (2=2) E (1 > 10) OU (5<4)(2=2) E (1 > 10) OU (5<4)
RespostasRespostas
Resolva as expressões lógicas, Resolva as expressões lógicas, determinando se a expressão é determinando se a expressão é VERDADEIRA ou FALSA:VERDADEIRA ou FALSA:
2 > 3 = FALSO2 > 3 = FALSO (6 < 8) OU (3 > 7) = VERDADEIRO(6 < 8) OU (3 > 7) = VERDADEIRO NÃO (2 < 3) = FALSONÃO (2 < 3) = FALSO (2=2) E (1 > 10) OU (5<4) = FALSO(2=2) E (1 > 10) OU (5<4) = FALSO