A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução aos Algoritmos

Apresentações semelhantes


Apresentação em tema: "Introdução aos Algoritmos"— Transcrição da apresentação:

1 Introdução aos Algoritmos

2 Recapitulando: Nas últimas aulas os seguintes pontos foram estudados: Funcionamento de um computador simplificado Funcionamento de um computador digital Sistemas de numeração

3 Objetivos da aula: Definir algoritmo Apresentar diferentes maneiras de representar um algoritmo - Apresentar os conceitos necessários para elaborar algoritmos utilizando pseudocódigo

4 Definições de algoritmo:
1 – Um algoritmo pode ser definido como uma seqüência de passos que visam a atingir um objetivo bem definido [Forbellone, 2005]. 2 – Um algoritmo é a descrição de um padrão de comportamento, expresso em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas [Guimarães, 1985].

5 Por que é importante construir um algoritmo?
- Um algoritmo representa mais fielmente o raciocínio envolvido na Lógica de Programação - Abstrai detalhes computacionais - Uma vez construído o algoritmo, pode-se traduzi-lo para qualquer linguagem. Chama-se isto de codificação

6 Selecione a ovelha Aperte GO Solte a ovelha Pegue o repolho Primeiro pegue a ovelha e atravesse o rio; volte para margem direita; pegue o lobo e atravesse o rio; pegue a ovelha que está na margem esquerda e leve-a novamente para a margem direita; Cima, Cima, Lâmpada C, C, L

7 Tipos de algoritmos: É possível representar um algoritmo utilizando diferentes formalismos: Descrição narrativa: utiliza linguagem natural para especificar os passos para realização das tarefas  pouco utilizado Fluxogramas: forma universal de representação, utiliza figuras geométricas para ilustrar os passos a serem seguidos para resolução dos problemas Pseudocódigo: utiliza linguagem estruturada e assemelha-se aos programas escritos em linguagens de alto nível  bastante utilizado para representar a resolução de problemas computacionais

8 Tipos de algoritmos: Descrição narrativa Fluxogramas - Pseudocódigo

9 Descrição narrativa: O exemplo da troca de lâmpada é um exemplo de algoritmo em descrição narrativa: Pegar uma escada; Posicionar a escada embaixo da lâmpada; Buscar uma lâmpada nova; Subir na escada; Retirar a lâmpada velha; Colocar a lâmpada nova; Descer da escada.

10 - A seqüência de ações rege o fluxo de execução do algoritmo, determinando qual a primeira ação a ser executada e qual ação vem a seguir - E se por acaso a lâmpada não estivesse queimada? Aconteceria uma troca desnecessária e o algoritmo não trataria esta situação - O que poderia ser feito para melhorar o algoritmo?

11 Troca de Lâmpada com Teste (descrição narrativa)
1. Pegar uma escada; 2. Posicionar a escada embaixo da lâmpada; 3. Buscar uma lâmpada nova; 4. Acionar o interruptor; 5. Se a lâmpada não acender, então Subir na escada; Retirar a lâmpada velha; Colocar a lâmpada nova; Descer da escada. O teste poderia ser realizado em outra etapa?

12 Troca de Lâmpada com Teste Versão 2
Acionar o interruptor; Se a lâmpada não acender, então Pegar uma escada; Posicionar a escada embaixo da lâmpada; Buscar uma lâmpada nova; Subir na escada; Retirar a lâmpada velha; Colocar a lâmpada nova; Descer da escada. E se a lâmpada nova não acender?

13 Tipos de algoritmos: Descrição narrativa Fluxogramas - Pseudocódigo

14 Fluxogramas: Uma maneira gráfica de representar um algoritmo Muitas vezes é uma maneira mais sucinta de escrever um algoritmo Para compreender um fluxograma é preciso conhecer os seus elementos (usaremos fluxogramas simplificados): Início e fim do algoritmo Tarefas ou ações Testes Seqüência

15 Início ou Fim do algoritmo:

16 Seqüência:

17 Ação ou Tarefa: ação Teste condicional: Verdadeiro Falso

18 retirar a lâmpada queimada
Fluxograma da troca de lâmpada com teste início Pegar escada acionar o interruptor subir na escada posicionar escada buscar lâmpada nova acendeu? retirar a lâmpada queimada colocar lâmpada nova fim V F Descrição narrativa Pegar uma escada; Posicionar a escada embaixo da lâmpada; Buscar uma lâmpada nova; Acionar o interruptor; Se a lâmpada não acender, então: Subir na escada; Retirar a lâmpada velha; Colocar a lâmpada nova; Descer da escada.

19 Tipos de algoritmos: Descrição narrativa Fluxogramas - Pseudocódigo

20 Pseudocódigo: Forma de representação de algoritmos que utiliza uma linguagem flexível, intermediária entre a linguagem natural e a linguagem de programação O nome pseudocódigo significa “falso código”, e esse nome se deve a proximidade que existe entre um algoritmo escrito em pseudocódigo e a maneira que um programa é representado em uma linguagem de programação

21 Exemplo de pseudocódigo:
Início // começo do algoritmo real: N1, N2, N3, N4,MA; //declaração de variáveis leia (N1, N2, N3, N4); //entrada de dados MA (N1 + N2 + N3 + N4) / 4; //processamento escreva(MA); //saída de dados se (MA >= 7) então escreva(“Aluno aprovado!”); fimse; Fim // término do algoritmo

22 Pseudocódigo: Para escrever algoritmos em pseudocódigo é preciso antes abordar alguns conceitos importantes: tipos primitivos variáveis expressões aritméticas, lógicas e relacionais comando de atribuição comandos de entrada e saída blocos

23 Para escrever pseudocódigo é preciso saber:
a) Variáveis b) Expressões aritméticas c) Expressões lógicas e relacionais d) Comando de atribuição e) Comandos de entrada e saída f) Blocos

24 Informação - Os computadores são capazes de armazenar e manipular uma grande quantidade de informação - É possível dividir as informações em quatro tipos primitivos (tipos básicos dos algoritmos): Inteiros Reais Caracteres Lógicos

25 Inteiro Qualquer informação numérica que pertença ao conjunto dos números inteiros (negativo, nulo ou positivo) Ex: -1 | 0 | 1 | 2 | 3 | 4 - Algumas proposições declarativas usando tipo inteiro: Ele tem 15 irmãos. A escada possui 8 degraus. Meu vizinho comprou 2 carros novos.

26 Real Qualquer informação numérica que pertença ao conjunto dos números reais (negativo, nulo ou positivo) Ex: 13,48 | 105,56 | 0,0001 | -15,545 Algumas proposições declarativas usando tipo real: Ela tem 1,73 metros de altura. Meu saldo bancário é R$ 1,00. No momento estou pesando 54,0 Kg.

27 Caracter Qualquer informação composta por um conjunto de caracteres alfanuméricos: numéricos (0...9), alfabéticos (A...Z, a...z) e especiais #, $, %, <, ...) Ex: EMB5013 | UFSC | 1 Algumas proposições declarativas usando tipo caracter: Constava na prova: “Use somente caneta!”. Aviso “Não pise na grama”. Meu nome é “Tatiana Garcia”.

28 Lógico Qualquer informação que possa assumir apenas duas situações, ou seja, somente dois estados. Ex: Sim ou Não | 0 ou 1 | Homem ou Mulher Algumas proposições declarativas usando tipo lógico: A porta pode ficar aberta ou fechada. A lâmpada pode estar acesa ou apagada.

29 Constantes - Um dado é constante quando não sofre nenhuma variação no decorrer do tempo - O valor é constante desde o início até o fim da execução do algoritmo, assim como é constante para diferentes execuções no tempo Exemplo: PI = 3,1416 Constantes do tipo lógico assumem um de dois valores: Verdade (V) ou Falsidade (F)

30 Variável Um dado é classificado como variável quando tem a possibilidade de ser alterado em algum instante no decorrer do tempo Exemplos: peso, nota, cor, valor, taxa... Exemplo: A fórmula para calcular a área de uma circunferência pode ser expressa utilizando constante e variável  Pi * R2 Pi é uma constante e R uma variável

31 Identificadores Os nomes dados às variáveis são denominados identificadores As linguagens de programação definem regras para criação dos identificadores (e podem variar de acordo com o conjunto de palavras reservadas da linguagem)

32 Identificadores A sintaxe que vamos adotar segue as seguintes regras para os identificadores: 1. Devem começar por um caracter alfabético 2. Podem ser seguidos por mais caracteres alfabéticos ou numéricos 3. Não devem ser usados caracteres especiais (símbolos que podem representar alguma operação) 4. Não deve conter espaços

33 Identificadores Identificadores Válidos: Alpha, X, BJ153, K7, Notas, Media, ABC, INPS, FGTS Identificadores Inválidos: 5X, E(13), A:B, X-Y, Nota/2, AWQ*3, P&AA

34 Declaração de Variáveis
Todas as informações que serão usadas em nossos algoritmos ficam armazenadas na memória do computador Para poder gravar as informações e posteriormente resgatá- las é preciso associar um tipo e identificador a esta informação Este processo recebe o nome de Declaração de Variáveis As variáveis servem para identificar os dados

35 Declaração de Variáveis
Será adotada a seguinte regra sintática para declaração de variáveis: Tipo da Variável: identificador 1, identificador2, ... ; Tipo: um dos 4 tipos primitivos Identificador: o nome que desejo dar para minha variável Uma vez definido o tipo da variável ela não pode receber valores de outros tipos

36 Declaração de Variáveis
Exemplos: Inteiro: numero, valor, soma; Real: juros, salário; Caracter: nome, sobrenome, rua; Lógico: resposta; resposta => V ou F

37 Declaração de Variáveis
- Cuidados na hora de declarar variáveis: Não criar mais de uma variável com o mesmo identificador (nome) Respeitar os tipos de dados, ou seja, o tipo Lógico deve armazenar somente valores lógicos e não Inteiro, Caracter ou Real, este mesmo cuidado você deve ter com os outros tipos Definir os identificadores com nomes que associem ele ao valor que armazena

38 Para escrever pseudocódigo é preciso saber:
a) Variáveis b) Expressões aritméticas c) Expressões lógicas e relacionais d) Comando de atribuição e) Comandos de entrada e saída f) Blocos

39 Expressões Aritméticas
Para escrever algoritmos em pseudocódigo é preciso saber como trabalhar com expressões aritméticas e expressões lógicas Denomina-se expressão aritmética aquela cujos operadores são aritméticos e cujos operandos são constantes ou variáveis do tipo numérico (Inteiro ou Real)

40 Operadores Aritméticos
Os operadores aritméticos são utilizados para realizar os cálculos matemáticos Operador Função Exemplos + Adição 2 + 3, X + Y - Subtração 4 - 2, N – M * Multiplicação 3 * 4, A * B / Divisão 10 / 2, C / D pot(x,y) Potenciação (x elevado a y) pot(2, 3) rad(x) Raiz quadrada (de x) rad(9) Mod Resto da divisão 9 mod 4 resulta 1 Div Quociente da divisão inteira 9 div 4 resulta 2

41 Operadores Aritméticos
Alguns operadores não são convencionais, como mod e o div Eles são bastantes utilizados na construção de algoritmos Uma expressão aritmética pode conter vários operadores diferentes, e as operações devem seguir uma hierarquia de execução  regras de precedência

42 Prioridades dos operadores aritméticos
1) parênteses mais internos 2) pot rad 3) * / div mod 4) Em caso de empate (mesma prioridade) devemos resolver a expressão da esquerda para direita, conforme a seqüência de operadores existentes na expressão

43 Exemplos: X = / 4 X = X = 23 Y = 4/2 + rad(1 + 3 * 5) / 2 Y = 4/2 + rad(1 + 15) / 2 Y = 4/2 + rad(16) /2 Y = 4/2 + 4 /2 Y = 2 + 4/2 Y = 2 + 2 Y = 4

44 Para escrever pseudocódigo é preciso saber:
a) Variáveis b) Expressões aritméticas c) Expressões lógicas e relacionais d) Comando de atribuição e) Comandos de entrada e saída f) Blocos

45 Expressões Lógicas Denominamos expressão lógica aquela cujos operadores são lógicos ou relacionais e cujos operandos são relações, variáveis ou constantes do tipo lógico Operadores relacionais: utilizados para a estabelecer relação de comparação entre valores de mesmo tipo primitivo

46 Operadores Relacionais
Função Exemplos = Igual a 3 = 3, X = Y > Maior que 5 > 4, X > Y < Menor que 3 < 6, X < Y, X < 4 >= Maior ou igual a 5 >= 3, X >= Y <= Menor ou igual a 3 <= 5, X <= Y <> Diferente de 8 <> 9, X <> Y

47 Operadores Relacionais
- O resultado obtido de uma relação é sempre um valor lógico: 2 * 4 = 24 / 3 8 = 8 V

48 Operadores Lógicos Utilizaremos três operadores para efetuar avaliações lógicas entre valores Os operadores são: Operador Função Exemplos não Negação não V, não X e Conjunção V e V, X e Y ou Disjunção V ou V, X ou Y

49 Tabela Verdade Tabela verdade é o conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas, as quais se encontram apenas duas situações (V ou F), e um conjunto de operadores lógicos Constrói-se uma tabela verdade com o objetivo de dispor de uma maneira prática os valores lógicos envolvidos em uma expressão lógica Cada operador tem a sua tabela verdade

50 Operadores Lógicos - uma operação “ou” retorna V quando pelos menos um dos elementos é V - uma operação “e” retorna V quanto todos os elementos são V A não A F V A B A e B F V A B A ou B F V

51 Operadores Lógicos Exemplos: 1)Se chover e relampejar, eu fico em casa. Quando eu fico em casa? Quando acontecerem as duas ações – chover e relampejar 2) Se chover ou relampejar eu fico em casa. Quando pelo menos uma das ações acontecerem – chover ou relampejar - Os operadores lógicos também seguem uma regra de precedência

52 Prioridades dos operadores lógicos
1) não 2) e 3) ou E quando a expressão conter expressões aritméticas e lógicas? Qual regra de precedência seguir?

53 Prioridades entre todos os operadores:
1) parênteses mais internos 2) operadores aritméticos 3) operadores relacionais 4) operadores lógicos  Esta regra pode sofrer alterações dependendo da linguagem de programação

54 pot(2,4) <> 4 + 2 ou 2 + 3 * 5/3 mod 5 < 0
Exemplo: pot(2,4) <> ou * 5/3 mod 5 < 0 16 <> ou * 5 / 3 mod 5 < 0 16 <> ou /3 mod 5 < 0 16 <> ou mod 5 < 0 16 <> ou < 0 16 <> 6 ou < 0 16 <> 6 ou 2 < 0 V ou 2 < 0 V ou F V 1) parênteses mais internos 2) pot rad 3) * / div mod 4) 5) operadores relacionais 6) operadores lógicos

55 Exemplo: não ((5 <> 10/2) ou V e 2 – 5 > 5 – 2 ou V)
não (F ou V e 2 – 5 > 5 – 2 ou V) não (F ou V e -3 > 5 – 2 ou V) não (F ou V e -3 > 3 ou V) não (F ou V e F ou V) não (F ou F ou V) não(F ou V) não(V) F  resultado final da expressão

56 Para escrever pseudocódigo é preciso saber:
a) Variáveis b) Expressões aritméticas c) Expressões lógicas e relacionais d) Comando de atribuição e) Comandos de entrada e saída f) Blocos

57 Comando de atribuição Um comando de atribuição em um algoritmo permite associar um valor a uma variável O tipo de dado deve ser compatível com tipo que a variável foi declarada Cada variável pode receber apenas um valor de cada vez. O segundo valor sobrepõe-se ao anterior Sintaxe: variável  valor;

58 Comando de atribuição - Algumas regras (para pseudocódigo): 1) A esquerda do símbolo só deve existir uma variável: Certo: x 20; Errado: x, y, t  10; 2) Podemos atribuir expressões aritméticas e lógicas as variáveis, porém primeiro as expressões devem ser resolvidas para depois fazermos as atribuições. Certo: c  b + c + 1; Errado: c + 1  b + c;

59 Comando de atribuição Podem ser atribuídos: constantes, variáveis e expressões (aritméticas, relacionais ou lógicas) Exemplo 1: Inteiro: idade; Idade  28; Exemplo 2: Idade  3,5; (ERRO)

60 Comando de atribuição Exemplo 3: lógico: A, B; inteiro: X; X  div 5; B  5 = 3; A  B; X  2; - Qual os valores gravados nas variáveis depois do processamento?

61 Comando de atribuição Exemplo 3: lógico: A, B; inteiro: X; X  div 5; B  5 = 3; A  B; X  2; - Qual os valores gravados nas variáveis depois do processamento? B = F; A = F; X = 2

62 Comando de atribuição - Que erros existem nos comandos de atribuição abaixo: lógico: A; real: B, C; inteiro: D; A  B = C; D  B; C+1  B+C; C e B  3.5; B  pot(6,2)/3 <= rad(9) * 4

63 Comando de atribuição - Que erros existem nos comandos de atribuição abaixo: lógico: A; real: B, C; inteiro: D; A  B = C; D  B; → inteiro recebendo real C+1  B+C; → operação no lado esquerdo C e B  3.5; → operação no lado esquerdo B  pot(6,2)/3 <= rad(9) * 4 → real recebendo lógico

64 Para escrever pseudocódigo é preciso saber:
a) Variáveis b) Expressões aritméticas c) Expressões lógicas e relacionais d) Comando de atribuição e) Comandos de entrada e saída f) Blocos

65 Comandos de entrada e saída
Os algoritmos precisam ser alimentados com dados provenientes do meio externo para efetuarem as operações e cálculos que são necessários a fim de alcançar o resultado desejado Algoritmo = Entrada + Processamento + Saída

66 Comandos de entrada e saída
O comando utilizado para representar a entrada de dados é o leia() O comando simplesmente atribui um valor lido da entrada (geralmente o teclado) para uma variável Exemplos: leia(X); leia (nota1, nota2); Sintaxe: leia (variável, variável, ...);

67 Comandos de entrada e saída
O comando utilizado para representar a saída de dados é o escreva() O comando simplesmente exibe valores das variáveis ou mensagens ao mundo exterior Exemplos: escreva(X); escreva (“Nota1 = ”, nota1); Sintaxe: escreva (variável, variável, ...);

68 Para escrever pseudocódigo é preciso saber:
a) Variáveis b) Expressões aritméticas c) Expressões lógicas e relacionais d) Comando de atribuição e) Comandos de entrada e saída f) Blocos

69 Blocos Um bloco pode ser definido como um conjunto de ações com uma função definida - Um algoritmo pode ser visto como um grande bloco e pode conter vários blocos Serve para definir os limites nos quais as variáveis declaradas em seu interior são conhecidas Delimitadores utilizados: início e fim

70 Blocos Sintaxe: início // início do bloco (algoritmo) // declaração de variáveis // seqüência de ações (eventualmente mais blocos) fim. // fim do bloco (algoritmo) // utilizado para representar comentários

71 Exemplo de algoritmo em pseudocódigo:
Início inteiro: x, y; leia(x); y  pot(x,3) escreva(x, “elevado ao cubo = “, y) Fim.

72 Próxima aula: - Algoritmos seqüenciais - Estruturas de controle condicionais

73 Referências: FORBELLONE, A. L. V.; EBERSPACHER, H. F., Lógica de Programação, 3a Edição, São Paulo, Pearson Prentice Hall, 2005. PUGA, S. RISSETTI, G. Lógica de Programação e Estruturas de Dados com aplicações em Java. 2ª edição, Pearson Prentice Hall, São Paulo, 2009. GUIMARÃES, A. M.; LAGES, N. A. C. Introdução à Ciência da Computação. LTC: Rio de Janeiro, 2009 [reimpressão]


Carregar ppt "Introdução aos Algoritmos"

Apresentações semelhantes


Anúncios Google