Ceça Moraes Março/10 Introdução à Programação 11/5/2015 Conteúdo Algoritmos −Representação −Exercícios Linguagens de Programação Compilador Interpretador 2 11/5/2015 Algoritmo Conjunto de regras que provê uma seqüência de operações para resolver um tipo de problema específico (Knuth, 1972) Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema (Tremblay, 1983) 3 Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema (AURÉLIO) 11/5/2015 Algoritmo Formas de representação –Narrativa: uso de português –Fluxograma: símbolos gráficos para representar fases e componentes dos algoritmos –Pseudocódigo: Definição de uma pseudo-linguagem de programação, cujos comandos são em português 4 11/5/2015 Algoritmo Formas de representação –Narrativa –Fluxograma –Pseudocódigo 5 Descrição Narrativa 11/5/2015 Algoritmo Receita de bolo: 1. 2. 3. 4. 5. Misture os ingredientes Bata os ingredientes em uma vasilha Unte a forma com manteiga Despeje a mistura na forma Se houver coco ralado • então despeje-o sobre a mistura • deixe a forma no forno 6. Leve a forma ao forno 7. Enquanto não corar 6 8. Retire do forno 9. Deixe esfriar Descrição Narrativa 11/5/2015 Algoritmo Troca de pneus: 1. 2. 3. 4. 5. 6. 7. Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas 7 Descrição Narrativa 11/5/2015 Algoritmo Obter o status de um aluno: 1. Obter as suas 2 notas de provas 2. Calcular a média aritmética 3. Se a média for maior que 7 • • o aluno foi aprovado senão ele foi reprovado 8 11/5/2015 Trocar uma Lâmpada Sequenciação 1. pegar uma escada 2. posicionar a escada embaixo da lâmpada 3. buscar uma lâmpada nova 4. subir na escada 5. retirar lâmpada velha 6. colocar lâmpada nova 9 11/5/2015 Trocar uma Lâmpada SE estiver queimada = Decisão 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 10 5.1 subir na escada 5.2 retirar lâmpada queimada 5.3 colocar lâmpada nova 11/5/2015 Trocar uma Lâmpada SE estiver queimada v2 = (decisão) evitar pegar escada e lâmpada 1. acionar o interruptor; 2. se a lâmpada não acender, então 2.1 2.2 2.3 2.4 2.5 2.6 pegar uma escada posicionar a escada embaixo da lâmpada buscar uma lâmpada nova subir na escada retirar lâmpada queimada colocar lâmpada nova 11 11/5/2015 Trocar uma Lâmpada... SE estiver queimada v3 = (decisão) Re-teste após a troca 1. acionar o interruptor 2. se a lâmpada não acender, então 2.1 pegar uma escada 2.2 posicionar a escada embaixo da lâmpada 2.3 buscar uma lâmpada nova 2.4 subir na escada 2.5 retirar lâmpada queimada 2.6 colocar lâmpada nova 2.7 acionar o interruptor Repetir 2.8 se a lâmpada não acender, então retirar lâmpada queimada colocar lâmpada nova várias vezes!!! 12 ..... – – 11/5/2015 Trocar uma Lâmpada... SE estiver queimada v4 = Repetição!! 1. acionar o interruptor 2. se a lâmpada não acender, então 2.1 pegar uma escada 2.2 posicionar a escada embaixo da lâmpada 2.3 buscar uma lâmpada nova 2.4 subir na escada 2.5 retirar lâmpada queimada 2.6 colocar lâmpada nova 2.7 acionar o interruptor 2.8 enquanto a lâmpada não acender, faça: retirar lâmpada queimada colocar lâmpada nova acionar o interruptor 13 – – – 11/5/2015 Trocar 10 Lâmpadas... SE estiverem queimadas (v1) 1. acionar o interruptor do primeiro soquete 2. se a lâmpada não acender, então 2.1 pegar uma escada 2.2 posicionar a escada embaixo da lâmpada 2.3 buscar uma lâmpada nova 2.4 subir na escada 2.5 retirar lâmpada queimada 2.6 colocar lâmpada nova 2.7 acionar o interruptor 2.8 enquanto a lâmpada não acender, faça: – – – retirar lâmpada queimada colocar lâmpada nova acionar o interruptor 14 3. acionar o interruptor do segundo soquete 4. .... 11/5/2015 Trocar 10 Lâmpadas... SE estiverem queimadas (v2) 1. acionar o interruptor do primeiro soquete 2. Enquanto número de soquetes for menor ou igual a 10 faça 2.1 se a lâmpada não acender, então 2.1.1 pegar uma escada 2.1.2 posicionar a escada embaixo da lâmpada 2.1.3 buscar uma lâmpada nova 2.1.4 subir na escada 2.1.5 retirar lâmpada queimada 2.1.6 colocar lâmpada nova 2.1.7 acionar o interruptor 2.1.8 enquanto a lâmpada não acender, faça: » » » retirar lâmpada queimada colocar lâmpada nova acionar o interruptor 15 2.2 acionar o interruptor do segundo soquete Descrição Narrativa 11/5/2015 Exercícios Descreva os seguintes algoritmos 1. Passos para chegar a UFRPE e assistir aula de introdução a programação. 2. Passos para comprar um DVD pela internet 16 3. 11/5/2015 Exercícios Descrição Narrativa Tendo como exemplo os algoritmos desenvolvidos para solucionar o problema da troca de lâmpadas, elabore algoritmos com os passos necessários para trocar um pneu furado em cada as seguintes situações: 1. Trocar o pneu traseiro esquerdo 2. Trocar o pneu traseiro esquerdo e, antes, verificar se o pneu reserva está em condições de uso 3. Verificar se existe algum pneu furado; se houver, verificar o pneu reserva e, então, trocar o pneu correto. Para cada algoritmo faça um refinamento do anterior, introduzindo novas ações e alterando o fluxo de execução de forma compatível com as situações apresentadas 17 11/5/2015 Algoritmo Formas de representação –Narrativa –Fluxograma –Pseudocódigo 18 Fluxograma 11/5/2015 Algoritmo Fluxograma : – Representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos Símbolos 19 Início Divisão de Dois Números Ler o primeiro número – N1 Ler o segundo número – N2 D = N1/N2 F V N2 = 0 ? Exibir D em vídeo Exibir em vídeo “Não é permitido divisão por zero” Fim 05/11/2015 Fluxograma 11/5/2015 Fluxograma Troca de 10 lâmpadas início ir para o primeiro soquete posicionar escada não acendeu? soquetes restantes <= 10 F buscar lâmpada nova V acionar o interruptor V acionar o interruptor não acendeu? F subir na escada F retirar a lâmpada queimada colocar lâmpada nova retirar a lâmpada queimada ir ao próximo soquete colocar lâmpada nova V pegar uma escada acionar o interruptor fim 21 22 Gráfica (Fluxograma ) – Vantagens • Maior clareza no fluxo de execução • Linguagem visual – Desvantagens • Requer conhecimento de convenções gráficas • Mais trabalhoso em decorrência de seus desenhos • Dificuldade para fazer correções Textuais – Apresenta mais vantagens, desde que se tomem alguns cuidados: • Riqueza gramatical de nossa língua pode levar a ambigüidades • A frase “O pregador foi grampeado durante o conserto” tem vários sentidos diferentes quando pronunciada • Para resolver, utilizaremos um conjunto restrito de regras, conhecido como pseudo-código 11/5/2015 Texto x Gráficos Fluxograma 11/5/2015 Exercícios Construa fluxogramas para os seguintes algoritmos – Calcular a área de um retângulo (AREA = BASE x ALTURA) – Verificar se o individuo é maior de idade ou não (maior de 18 anos) 23 11/5/2015 Algoritmo Formas de representação –Narrativa –Fluxograma –Pseudocódigo 24 Pseudo-código 11/5/2015 Algoritmo Programa para calcular um número multiplicado por 2: algoritmo "dobro" var NUM, DOBRO : inteiro inicio escreval("digite um número:") leia (NUM) DOBRO <- 2 * NUM escreval ("O dobro do número é:", DOBRO) fimalgoritmo 25 Pseudo-código 11/5/2015 Algoritmo Principais Comandos – Atribuição (= ou := ou ) : Utilizado para guardar um valor em uma variável • total = 0 • SOMA SOMA + 1 • mensagem := “Erro de Digitação !” – Entrada de Dados : Utilizado para ler dados do usuário, de dispositivos externos • leia(Idade) • leia(‘d:\arquivo.txt’) – Saída de dados : Utilizado para exibir dados • escreva(Idade) 26 • escreval(‘d:\arquivo.txt’) Uma linguagem 11/5/2015 Linguagens de Programação programação é um vocabulário e um conjunto de regras usadas para escrever programas de computador Divididas em similaridade humana: de três tipos, com a com relação à linguagem – Linguagem de máquina –Linguagem Simbólica e 27 – Linguagem de Alto Nível Linguagem de Máquina 11/5/2015 Linguagens de Programação linguagem de mais baixo nível de entendimento pelo ser humano e a única entendida pelo processador (UCP) É Constituída inteiramente de números (0’s e 1’s) Uma instrução típica em linguagem de máquina seria algo como: 28 – 0100 1111 1010 Linguagem Simbólica 11/5/2015 Linguagens de Programação Assembly: – linguagem acima de nível imediatamente da linguagem de máquina. – Possui a mesma estrutura e conjunto de instruções que a linguagem de máquina, porém permite que o programador utilize nomes (mnemônicos) e símbolos em lugar de números 29 A conversão da linguagem simbólica para a linguagem de máquina se chama montagem, e é feita por um programa chamado montador (assembler). Linguagem Simbólica 11/5/2015 Linguagens de Programação Exemplo de instrução: ADD A, B MOV AX, 6 Classificada como linguagem de geração segunda Assim como a linguagem de máquina, é considerada linguagem de baixo 30 nível uma Linguagem de Alto Nível 11/5/2015 Linguagens de Programação linguagens de programação que possuem uma estrutura e palavras-chave que são mais próximas da linguagem humana – C, C++, Java, Python, etc ... Programas escritos nessas linguagens são convertidos para a linguagem de baixo nível através de um programa denominado compilador ou de um interpretador 31 Linguagem de Alto Nível 11/5/2015 Linguagens de Programação Exemplo de instrução de uma linguagem de alto nível: – if (A>10) then A=A-7; 32 11/5/2015 Compilador Compilação : transformação de um programa em código fonte para linguagem de máquina – programa em código fonte = programa escrito pelo programador (source language) – programa em linguagem de máquina = programa executável (target language) 33 http://pt.wikipedia.org/wiki/Compilador 05/11/2015 Compilador 11/5/2015 Interpretador Executa instruções determinada linguagem: em uma – Traduz o código fonte em uma representação intermediária e o executa imediatamente Python, Matlab, Java, etc. Principal desvantagem: Eficiência 35 11/5/2015 Perguntas??? 36