Transcript Por que criamos algoritmos?
Algoritmos e Programação
Thyago Maia Tavares de Farias Aula 2
Sumário
Representações de um algoritmo
Regras básicas para Português Estruturado
Por que criamos algoritmos?
Linguagem natural não pode ser interpretada por um computador; Computadores são projetados para executar tarefas bem determinadas a partir de determinadas instruções; Para desenvolver software, utilizamos linguagens de programação; A linguagem algorítmica é similar a uma linguagem de programação; Logo, aprendendo a criar algoritmos, estamos aptos a programar em qualquer linguagem de programação;
Por que criamos algoritmos?
LINGUAGEM NATURAL PORTUGUÊS, INGLÊS...
INSTRUÇÕES ALGORITMO ADAPTAÇÃO ALTO NÍVEL CÓDIGO-FONTE EM LINGUAGEM DE PROGRAMAÇÃO 01000101001....
BAIXO NÍVEL LINGUAGEM DE MÁQUINA COMPILAÇÃO TRADUÇÃO
Representações de um Algoritmo
Descrição narrativa; Fluxograma Pseudocódigo, Português Estruturado ou Portugol; SUBJETIVIDADE PRECISÃO
Representações de um Algoritmo
Descrição Narrativa: Preferencialmente um verbo por frase; Frases curtas e simples; Objetividade; Evitar palavras com sentido dúbio;
Exemplo
Descrição Narrativa: Dobro de um número (Dobro = Número x 2): Digitar um número; Gravar em uma variável; Multiplicar o número digitado por 2; Gravar o resultado em outra variável; Mostrar o resultado da operação.
Representações de um algoritmo
Fluxogramas Descrevem o fluxo de ação de um determinado trabalho lógico, seja manual ou mecânico; Usa símbolos convencionais, permitindo poucas variações; Representado por símbolos geométricos;
Exemplo
Fluxograma para lidar com uma lâmpada que não funciona LÂMPADA NÃO FUNCIONA A LÂMPADA ESTÁ PLUGADA ?
SIM NÃO PLUGUE A LÂMPADA VERIFIQUE O BOCAL NÃO A LÂMPADA ESTÁ QUEIMADA ?
SIM TROQUE A LÂMPADA
Representações de um algoritmo
Português estruturado (Portugol) Linguagem mais restrita que o português em linguagem natural; Simplificação extrema do português; Significados bem definidos para todos os termos utilizados nas instruções; Possui um conjunto de palavras e regras específicas (sintaxe da linguagem); Representação utilizada no curso;
Representações de um algoritmo
Português estruturado (Portugol) Normalmente as implementações são feitas em papel, escritos a mão; Atualmente também são utilizados programas que interpretam, testam e executam algoritmos;
Desafio
Escreva um algoritmo que ajude o homem do barco a levar o lobo, a ovelha e a caixa de verduras para o outro lado do lago. Utilize a descrição narrativa para representar o algoritmo. Lembrando que lobos comem ovelhas e ovelhas comem as verduras da caixa quando o homem está na outra margem!
Resposta do desafio
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Pega a ovelha Vai para a outra margem Deixa a ovelha Volta a margem inicial Pega a caixa de verduras Vai para a outra margem Deixa a caixa de verduras e pega a ovelha Volta a margem inicial Deixa a ovelha e pega o lobo Vai para a outra margem Deixa o lobo Volta a margem inicial Pega a ovelha Vai para a outra margem Deixa a ovelha
Linearização de expressões
Para contrução de algoritmos que realizam cálculos matemáticos, TODAS expressões aritméticas devem ser linearizadas; Linearizadas = Colocadas em linha;
Linearização de expressões
Operadores aritméticos disponíveis para o português estruturado: Adição (+) Subtração (-) Multiplicação (*) Divisão (/) Divisão inteira (\) Exponenciação (^ ou Exp) Módulo, ou resto da divisão (%)
Linearização de expressões
Operadores relacionais Realizam a comparação entre dois operandos ou duas expressões e resultam em valores lógicos (verdadeiro ou falso) Ex.: 2+5 > 4 resultaria VERDADEIRO; Ex.: 2 = 7 resultaria FALSO;
Linearização de expressões
Operadores relacionais disponíveis no Português estruturado: Maior (>) Menor (<) Maior ou igual (>=) Menor ou igual (<=) Igual (=) Diferente (<>)
Linearização de expressões
Operadores lógicos Atuam em expressões, também resultando em valores lógicos VERDADEIRO ou FALSO; Tipos de operadores: E: Resulta verdadeiro se AMBAS AS PARTES forem verdadeiras; OU: Resulta verdadeiro se UMA DAS PARTES é verdadeira; NÃO: Nega uma afirmação. Se verdadeiro, torna-se falso; Se falso, torna-se verdadeiro;
Linearização de expressões
Exemplos: (2+5 > 4) e (3 <> 3) resulta FALSO Pois VERDADEIRO e FALSO resulta FALSO; (2=2) ou (3<1) resulta VERDADEIRO Pois VERDADEIRO ou FALSO resulta VERDADEIRO; NAO (3<1) resulta VERDADEIRO Pois FALSO resulta VERDADEIRO devido a inversão de valores definido por NÃO;
Linearização de expressões
Tabelas-Verdade Mostra os resultados das aplicações dos operadores lógicos conforme os valores dos operandos envolvidos: A V V F F B V F V F A E B A OU B NAO A NÃO B V V F F F F F V V F V V V F F V
Modularização de expressões
É a divisão de uma expressão por partes; Proporciona maior compreensão; Define prioridades na resolução das mesmas; Modularizamos expressões através dos parênteses ( ); Podemos utilizar parênteses dentro de parênteses (( )); Indicam quais sub-expressões serão executados primeiro;
Modularização de expressões
Exemplo: (2+2)/2 resulta 2; Mas 2+2/2 resulta 3; 1.
2.
3.
4.
5.
Ordem de prioridade dos operadores aritméticos: Exponenciação Multiplicação Divisão Adição Subtração
Modularização de expressões
1.
2.
3.
Ordem de prioridade dos operadores lógicos: E OU NÃO Exemplo: (2>3) ou (3<2) e (2<3) resultaria FALSO (2>3) e (3<2) ou (2<3) resultaria VERDADEIRO
Modularização de Expressões
Ordem de prioridade dos operadores disponíveis no Português estruturado: 1.
2.
3.
Operadores aritméticos Operadores relacionais Operadores lógicos
Exercícios
Escreva as expressões abaixo na forma linearizada:
Respostas
1ª expressão: a + b/c 2ª expressão: ((2/3 – (5-3)) + 1) * 5
Exercícios
Escreva as seguintes expressões linearizadas na forma matemática convencional: 4 + (5/3) * 8 – 4/2 – 5 8/4 – 2 + (5 + 4) / (3 – 1)
Exercícios
Resolva as expressões lógicas, determinando se a expressão é VERDADEIRA ou FALSA: 2 > 3 (6 < 8) OU (3 > 7) NÃO (2 < 3) (2=2) E (1 > 10) OU (5<4)
Respostas
Resolva as expressões lógicas, determinando se a expressão é VERDADEIRA ou FALSA: 2 > 3 = FALSO (6 < 8) OU (3 > 7) = VERDADEIRO NÃO (2 < 3) = FALSO (2=2) E (1 > 10) OU (5<4) = FALSO
Forma geral de um algoritmo
Algoritmo “ nome do algoritmo ” Var Aqui declaramos as variáveis dos algoritmo Inicio Aqui declaramos as instruções do algoritmo fimalgoritmo