TÉCNICAS DE PROGRAMAÇÃO Prof. Fernando Marcos Souza Silva [email protected] Fev/2011 UNIDADE I (a) Algoritmos Objetivos • Introduzir a Tecnologia de Algoritmos • Apresentar as Formas de Notação/Representação de Algoritmos • Apresentar uma Metodologia para Desenvolvimento de Algoritmos • Introduzir o Português Estruturado com sua edição apoiada pelo software Visualg • Introduzir comandos de saída em Português Estruturado Introdução • Desde o início de sua existência, o homem procurou criar máquinas para auxiliá-lo em seu trabalho, diminuindo o esforço físico e economizando tempo • Hardware x Software Introdução • Usamos algoritmos muitas vezes no nosso dia-dia e nem nos damos conta disso: – Manuais de aparelhos eletrodomésticos; – Uma receita para o preparo de um prato; – O cálculo de contas de água e luz ENTÃO, O QUE SÃO ALGORITMOS? Conceitos de Algoritmos • “Um conjunto finito de regras que provê uma seqüência de operações para resolver um tipo de problema específico” [KNUTH] • “Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema” [TREMBLAY] Conceitos de Algoritmos • “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] Por que precisamos de Algoritmos • “A noção de algoritmo é básica para toda a programação de computadores”. [KNUTH - Professor da Universidade de Stanford, autor da coleção “The art of computer programming”] Por que precisamos de Algoritmos • “O conceito central da programação e da ciência da computação é o conceito de algoritmo”. [WIRTH - Professor da Universidade de Zurique, autor de diversos livros na área e responsável pela criação de linguagens de programação como ALGOL, PASCAL e MODULA-2] Características • Todo algoritmo deve apresentar algumas características básicas: – ter fim; – não dar margem a dupla interpretação (não ambíguo); – capacidade de receber dados de entrada do mundo exterior; – poder gerar informações de saída para o ambiente externo ao mundo do algoritmo; – ser efetivo (eficiente) Metodologia para desenvolvimento • Ler atentamente o enunciado, destacando os pontos mais importantes; • Definir os dados de entrada; • Definir o processamento; • Definir os dados de saída; • Construir o algoritmo utilizando uma das ferramentas descritas na próxima seção; • Testar o algoritmo realizando simulações. Metodologia para desenvolvimento • A metodologia utilizada se orienta pela sequência de aprendizado descrita na figura a seguir: Formas de Representação • Definem regras para a forma em que os algoritmos devem ser “escritos” • Algoritmos podem ser representados, dentre outras maneiras por: – Descrição narrativa; – Fluxograma; – Linguagem algorítimica. Descrição Narrativa • Faz uso do português para descrever algoritmos • Exemplo: Receita de Bolo • • • • • • • • Providencie manteiga, ovos, 2 Kg de massa, etc. Misture os ingredientes Despeje a mistura na fôrma de bolo Leve a fôrma ao forno Espere 20 minutos Retire a fôrma do forno Deixe esfriar Prove Descrição Narrativa • Vantagens – O português é bastante conhecido por nós • Desvantagens – imprecisão (ambiguidade); – pouca confiabilidade (a imprecisão acarreta a desconfiança); – extensão (normalmente, escreve-se muito para dizer pouca coisa). Exercícios de Aprendizagem 1. Faça um algoritmo, usando Descrição Narrativa, para trocar uma lâmpada. 2. Faça um algoritmo, usando Descrição Narrativa, para fritar um ovo. 3. Em uma FOLHA SEPARADA faça um algoritmo, usando Descrição Narrativa, para calcular o Mínimo Múltiplo Comum (MMC) entre dois números. Fluxograma • Utilização de símbolos gráficos para representar algoritmos ps. Existem vários símbolos e notações para esta notação Fluxograma • Exemplo: Um algoritmo recebe como entrada 1 número, calcula e dá como saída o dobro deste número Fluxograma • Vantagens – Uma das ferramentas mais conhecidas; – Figuras dizem muito mais que palavras; – Padrão mundial • Desvantagens – Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los; – Complica-se à medida que o algoritmo cresce. Exercícios de Aprendizagem 4. Faça um algoritmo, usando Fluxograma, que receba como entrada, dois números. O algoritmo computará e dará como saída a soma dos dois números. Exercícios de Aprendizagem 5. Faça um algoritmo, usando Fluxograma, que receba como entrada 3 números, calcule e dê como saída a média aritmética destes 3 números. Exercícios de Aprendizagem 6. Faça um algoritmo, usando Fluxograma, que receba como entrada, as 4 notas do bimestre de um aluno. O algoritmo computará a soma destas notas, e dará como saída “APTO”, caso a nota do aluno seja maior ou igual a 60 pontos e “EM CONSTRUÇÃO” caso a nota do aluno seja menor que 60 pontos. Português Estruturado • Conhecido como Portugol ou Linguagem Algorítmica. Consiste na definição de uma pseudolinguagem de programação • Exemplo: algoritmo "calc_dobro" var a : inteiro dobro : inteiro inicio leia (a) dobro <- 2 * a escreva (dobro) fimalgoritmo Português Estruturado Português Estruturado • Vantagens – – – – Independência física da solução (solução lógica apenas); Usa o português como base; Pode-se definir quais e como os dados vão estar estruturados; Passagem quase imediata do algoritmo para uma linguagem de programação qualquer. • Desvantagens – Exige a definição de uma linguagem não real para trabalho; – Não padronizado. Formas de Representação • Sintaxe: – 2 tipos de regras: • As regras lexicas descrevem as combinações válidas de caracteres que formam os tokens (palavras reservadas,identificadores, operadores, etc). • As regras sintáticas descrevem como os tokens podem ser combinados para formar instruções válidas (comandos, expressões, subrotinas, etc) Formas de Representação • Semântica: – Descreve o significado de construções sintáticas válidas Exercícios de Aprendizagem 7. [COMANDOS DE SAÍDA] Construa um algoritmo em Português Estruturado, que dê como saída o seu nome completo Exercícios de Aprendizagem 8. [COMANDOS DE SAÍDA] Construa um algoritmo em Português Estruturado, que dê como saída o seguinte texto (com as devidas quebras de linha): INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DO NORTE DE MINAS GERAIS – IFNMG CAMPUS ARAÇUAÍ DISCIPLINA: TÉCNICAS DE PROGRAMAÇÃO PROFESSOR: FERNANDO MARCOS SOUZA SILVA ALUNO: <SEU NOME> FIM