Introdução aos Algoritmos

Slides:



Advertisements
Apresentações semelhantes
Pseudo-código: sintaxe
Advertisements

Algoritmo I Aula 05 Pseudo-Linguagem.
Desenvolvendo Algoritmos
Marco Antonio Montebello Júnior
INTRODUÇÃO – LOGICA E ALGORITMOS
Algoritmo e Programação
Amintas engenharia.
Programação para Geociências
Paradigmas de Linguagens Conceitos Básicos
Tipos de dados, Variáveis, Expressões e Operadores
ALGORITMO E PROGRAMAÇÃO DE COMPUTADORES
Capítulo 2 Tópicos Preliminares
Lógica de Programação Módulo II
Estruturas de Controle
Tópicos Preliminares Prof. Alexandre Parra
Universidade Federal do Espírito Santo
Universidade Federal do Espírito Santo
Lógica de Programação/ Algoritmos 2013
Princípios de funcionamento
Unidades de Armazenamento
INTRODUÇÃO À PROGRAMAÇÃO
Algoritmos Prof. Kelly E. Medeiros.
PRC Bruno Correa.
Algoritmos e Estruturas de Dados I Construção de Algoritmos
Estruturas de Controle
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Lógica de Programação Introdução.
Introdução à Programação
Fábio de Oliveira Borges
Capítulo 3 Estruturas de Controle
Capítulo 2 Tópicos Preliminares
Introdução Capítulo 1 Lógica de Programação
INTRODUÇÃO – LOGICA E ALGORITMOS
Representação de Algoritmos
Estrutura de dados, pseudocódigo
Lógica de Programação Aula anterior
Christopher Freire Souza
ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Introdução a Programação
Algoritmos e Programação de Computadores
Fábio de Oliveira Borges
Operadores Relacionais, Lógicos e comandos de condição
Lógica de Programação/ Algoritmos Engenharia Produção 2014
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
BC-0505 Processamento da Informação
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
CH: 60h Créditos: 3 Prof Me. Tiago Araujo
Introdução a Algoritmos
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL UNIDADE 4 Itens fundamentais para Desenvolvimento de algoritmos.
ESTRUTURAS DE CONTROLE
Operadores Relacionais e Lógicos
Igor Steinmacher, MSc. O maravilhoso mundo da Lógica de Programação.
Algoritmos Estruturados
Programação de PIC em C Exposição das funções básicas para
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
ENGENHARIA DE CONTROLE E AUTOMAÇÃO COMPUTAÇÃO PARA ENGENHARIA Aula /02/2013 Professor Leomir J. Borba- –
Linguagens de Programação
Fundamentos de linguagens de programação
ALGORITMOS AULA 3. Objetivos Apresentação das estruturas básicas; Definição de tipos de dados; Seqüência de ações; Operações – Atribuições; – Entrada.
Programação de Computadores - 1
Algoritmos e Programação
Etapas : Algoritmo é uma sequência lógica de instruções que podem ser executadas. É importante destacar que qualquer tarefa que siga um certo padrão.
Algoritmos e Programação I
Exercícios Faça um algoritmos para trocar uma lampada queimada.
Sistemas para Internet Algoritmos e Lógica de Programação
Linguagem de Programação Prof. Fabricio Roulin Bittencout
Algoritmos – Conceitos Iniciais
Lógica de programação Introdução à lógica de programação
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Introdução aos Algoritmos

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

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

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].

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

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

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

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

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.

- 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?

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?

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?

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

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

Início ou Fim do algoritmo:

Seqüência:

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

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.

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

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

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

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

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

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

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.

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.

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”.

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.

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)

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

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)

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

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

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

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

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

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

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

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)

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

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

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

Exemplos: X = 5 + 9 + 7 + 8 / 4 X = 5 + 9 + 7 + 2 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

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

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

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

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

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

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

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

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

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?

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

pot(2,4) <> 4 + 2 ou 2 + 3 * 5/3 mod 5 < 0 Exemplo: pot(2,4) <> 4 + 2 ou 2 + 3 * 5/3 mod 5 < 0 16 <> 4 + 2 ou 2 + 3 * 5 / 3 mod 5 < 0 16 <> 4 + 2 ou 2 + 15/3 mod 5 < 0 16 <> 4 + 2 ou 2 + 5 mod 5 < 0 16 <> 4 + 2 ou 2 + 0 < 0 16 <> 6 ou 2 + 0 < 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

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

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

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;

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;

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)

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

Comando de atribuição Exemplo 3: lógico: A, B; inteiro: X; X  8 + 13 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

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

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

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

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

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, ...);

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, ...);

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

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

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

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

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

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]