Algoritmos Fabrício Costa Santana [email protected] http://professorfabricio.net Plano da Disciplina • EMENTA • • • • • • • • Declaração de variáveis e constantes Tipos de variáveis Instruções de entrada e saída Tipos de representações de algoritmos Operadores aritméticos e lógicos Comandos de decisão Estruturas de recepção Vetores e matrizes Plano da Disciplina • OBJETIVO GERAL • Estudar as técnicas de programação, baseando-se no aprendizado de algoritmos computacionais. • OBJETIVOS ESPECÍFICOS (Competências/Habilidades – aprendizagens que serão consolidadas pelos estudantes) • Resolver problemas computacionais. • Desenvolver o raciocínio lógico voltado para criação de programas e permitir o domínio das principais técnicas para a produção de algoritmos Avaliações • UNIDADE I • INSTRUMENTO • Prova Individual • Trabalho em Grupo – Listas de Exercícios NOTA Peso 8 Peso 2 • UNIDADE II • INSTRUMENTO • Prova Individual • Trabalho em Grupo – Listas de Exercícios NOTA Peso 8 Peso 2 Referências Básicas • MANZANO & OLIVEIRA. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores • FORBELONE & EBERSPACHER. Lógica de Programação • GUIMARÃES & LAGES. Algoritmos e Estruturas de Dados • PEREIRA, S.L. Estruturas de Dados Fundamentais Introdução • O raciocínio lógico • O raciocínio lógico na tecnologia da informação: Um esquema sistemático que define as interações de sinais no equipamento automático do processamento de dados, ou o computador científico com o critério e princípios formais de raciocínio e pensamento • Segundo Venancio (1997) lógica pode ser definida como sendo o estudo das leis do raciocínio e do modo de aplicá-las corretamente na demonstração da verdade. A utilização da lógica na vida do indivíduo é constante, visto que é ela quem possibilita a ordenação do pensamento humano (Forbellone, 1993). Introdução à lógica É possível trocar uma lâmpada obedecendo a sequência de ações abaixo? 1)Pegar uma escada; 2)Posicionar a escada embaixo da lâmpada; 3)Buscar uma lâmpada nova; 4)Colocar a lâmpada nova; 5)Retirar a lâmpada velha; 6)Subir na escada. 1)Pegar uma escada; 2)Posicionar a escada embaixo da lâmpada; 3)Buscar uma lâmpada nova; 4)Subir na escada; 5)Retirar a lâmpada velha; 6)Colocar a lâmpada nova. Introdução à lógica André e quatro amigos praticam esportes diferentes. Com base nas dicas determine o nome e sobrenome de cada homem e o esporte que pratica. a) João pratica pesca. Um sobrenome é Sr. Soares. b) O Sr. Saraiva não pratica ciclismo, ele pratica golfe. c) Nem Davi Silva nem o Sr. Rocha praticam natação. d) O esporte de Pedro (cujo sobrenome não é Bernardes) é canoagem. e) Nem o Sr. Bernardes nem Mauro praticam natação. Nome André João Davi Pedro Mauro Sobrenome Soares Bernardes Silva Rocha Saraiva Esporte Natação Pesca Ciclismo Canoagem Golfe Exercício 1 Respostas Exercício 1 Nome Emissora Função Sérgio Globo Câmera Paulo TVE Cenógrafo Flávio SBT Diretor Carolina Motorista Cor Partida Chegada Mauro Marrom 5º 5º Nara Cinza 3º 1º Laura Vermelho 1º 4º Bruno Branco 4º 3º Paula Azul 2º 2º O problema do bolo A receita Ingredientes: • 1 Lata de leite condensado • 1 Lata de milho sem a água • 1 colher (de sopa) de manteiga • 1 pacote de coco ralado • 3 ovos • 1 colher (de sopa) de fermento em pó Modo de preparo: • Bata no liquidificador, o milho, o leite condensado, a manteiga, o coco e os ovos. • Despeje a mistura acima em uma tigela. • Peneire o fermento e adicione-o à mistura. • Mexa delicadamente a mistura. • Em uma fôrma média de bolo, untada e polvilhada com fubá, despeje a massa. • leve ao forno médio pré-aquecido, por 35 min. O problema da média • O problema: exibir a média das notas de um aluno de matemática do ensino médio, sabendo que o aluno recebe uma nota em cada unidade e o ano letivo possui 4 unidades. • Entradas • Processamento • Saída Algoritmo Compreender o problema Identificar os dados de entrada Identificar os dados de saída Determinar o que é preciso para transformar dados de entrada em dados de saída: • • • • usar a estratégia do dividir-para-conquistar observar regras e limitações identificar todas as ações a realizar eliminar ambiguidades Construir o algoritmo Testar o algoritmo Executar o algoritmo Dividir-para-conquistar É conhecido por método descendente (top-down method) ou método de refinamento passo-a-passo Consiste em dividir um problema em partes menores (ou subproblemas) de modo a que seja mais fácil a sua resolução. Exemplo: Fazer suco de laranja? • • • • • Lavar laranja; Partir laranja ao meio; Espremer laranja; Filtrar o suco; Servir o suco. Passo-a-passo, significa que cada passo é completado antes que o próximo comece. Exemplo: é impossível “ver novela” antes de executar por inteiro o passo anterior de “ligar a TV” Características dos Algoritmos Um algoritmo tem cinco características importantes: • Finitude: deve sempre terminar após um número finito de passos. • Definição: cada passo de um algoritmo deve ser precisamente definido. As ações devem ser definidas rigorosamente e sem ambiguidades. • Entradas: deve ter zero ou mais entradas, isto é informações que são lhe são fornecidas antes do algoritmo iniciar. • Saídas: deve ter uma ou mais saídas, isto é quantidades que tem uma relação específica com as entradas. • Efetividade: deve ser efetivo. Isto significa que todas as operações devem ser suficientemente básicas de modo que possam ser em princípio executadas com precisão em um tempo finito por um humano usando papel e lápis. Dicas para a criação de algoritmos 1. 2. 3. 4. 5. 6. Procure conhecer e compreender, ao máximo, o problema a ser resolvido; Identifique e defina os dados que, essencialmente, deverão ser informados para que o processamento seja realizado com sucesso (dados de entrada); Descreva, detalhadamente, o processamento ou a transformação a ser executada sobre os dados de entrada, em busca dos resultados desejados (como chegar no objetivo); Identifique e defina quais serão os dados resultantes do processamento ou transformação (dados de saída); Construa o algoritmo que represente a solução encontrada com o detalhamento necessário para o seu entendimento; Teste o algoritmo por meio de simulações e efetue as devidas correções que possam vir a ser necessárias na lógica proposta. Como representar um algoritmo • A descrição narrativa • O fluxograma: Ex.: diagrama de blocos, diagrama de Chapin • Linguagem algorítmica (também chamada de pseudocódigo). Ex.: Português Estruturado Como representar um algoritmo • • • • • Linear Estruturada Modular Diagrama de Chapin Português Estruturado Estruturada Linear Modular Diagrama de Chapin Português Estruturado algoritmo "media" var n1, n2, n3, n4, soma, media: real inicio leia(n1, n2, n3, n4) soma <- n1 + n2 + n3 + n4 media <- soma / 4 escreva("Media: ", media) fimalgoritmo Tipos de Dados 1. Dados Numéricos: Tipos Inteiros: nos positivos e negativos. exemplos: 35 0 -12 Tipos Reais: nos positivos, negativos e fracionários. exemplos: 9 -12 4.6 -89.726 2. Dados Caracteres : São sequências contendo letras, números e símbolos especiais. Deve ser indicado entre aspas (“”). Também chamado de alfanumérico, literal, string ou cadeia. exemplos: “Rua Alfa, 52” “Fone: 211-3456” Tipos de Dados 3. Dados Lógicos: Pode representar apenas dois valores: verdadeiro e falso. Também chamado de booleano. Deve ser indicado entre pontos. exemplos: .Falso. .F. .N. .Verdadeiro. .V. .S. Tipos de Dados Exercício: Identifique os tipos de dados presentes na frase abaixo: Ela tem 8 filhos, pesa 48,3 kg, seu exame de gravidez deu positivo e pintou numa placa: “Precisa-se de Babás. Urgente!”