Departamento de Informática Universidade Federal do Espírito Santo

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação: uma Abordagem Funcional
Advertisements

Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekoken 2010/1.
Departamento de Informática Universidade Federal do Espírito Santo
Programação em Java Prof. Maurício Braga
Introdução a Algoritmos
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
Complexidade de Algoritmos
Amintas engenharia.
Engenharia de Software
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional PD I – Eng. Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Prof. MSc. Larissa Luz Gomes Aula 6 Análise e Projeto de Sistemas I.
Inteligência Artificial I
RECURSOS DE INFORMÁTICA NO ENSINO DA GEOMETRIA PLANA (5ª à 8ª SÉRIE)
Então, vamos lá! Qual é esse conteúdo?
Lógica de Programação Módulo II
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
INTRODUÇÃO À PROGRAMAÇÃO
INTRODUÇÃO A ALGORITMOS NUMÉRICOS
Linguagens de Programação
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Engenharia de Software
Algoritmos e Programação
Novas Tecnologias: contribuições para a aprendizagem na Educação Infantil. Prof ª. Danielle Pinheiro Prof ª. Ana Clara Nogueira.
Processamento da Informação BC-05045
Aula 04.
Comunicação Inclusiva Acessibilidade e Programação Web
CEPMAT Curso Técnico em Informática
BCC /01 Funções. Material Didático Unificado. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência.
Funções Universidade Federal de Ouro Preto - UFOP
Professor: Juliano Lucas Gonçalves
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL
Algoritmos e Programação I
Engenharia de Software
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
CONGRUÊNCIA DE TRIÂNGULOS
{ Disciplina: Informática Acadêmicas: Daniele Soett; Indianara F. Scaranto; Sueli Alencar. Turma: LM13 Plano Cartesiano como ferramenta na Resolução de.
Programação e Sistemas de Informação
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Aula de 10 de Janeiro de 2013 Escola Secundária da Boa Nova 2013
Campus de Caraguatatuba Matemática Discreta 1 – MD 1
Instituto Federal de Santa Catarina
Igor Steinmacher, MSc. O maravilhoso mundo da Lógica de Programação.
Fundamentos de linguagens de programação
1 Linguagens de Programação Pedro Lopes 2010/2011.
Exercícios Faça um algoritmos para trocar uma lampada queimada.
UTFPR- Universidade Tecnológica Federal do Paraná Campus Pato Branco Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Departamento.
Tipos Compostos Heterogêneos e Tipos Abstratos de Dados
Práticas de Manipulação no Ensino de Matemática
Lógica de programação Introdução à lógica de programação
CMCC Centro de Matemática, Computação e Cognição 2016 DISCIPLINA Práticas de Ensino de Matemática no Ensino Fundamental TÍTULO DO SEMINÁRIO ÁLGEBRA: UMA.
Disciplina: Estrutura de dados e Algoritmos Docentes: MSc. Manuel Zunguze.
Transcrição da apresentação:

Departamento de Informática Universidade Federal do Espírito Santo Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres boeres@inf.ufes.br CT VII - Sala 32 Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license. Co-Autoria: Veruska Zamborlini e Clebson Oliveira 1

A arte de resolver problemas Só se aprende a resolver problemas através da experiência; A ajuda do professor não deve vir através da apresentação pura e simples de uma solução; É muito importante não se conformar com uma única solução; 2

A arte de resolver problemas Na busca pela solução de um problema, nossa ferramenta principal é o questionamento; Aprenda desde cedo a buscar um aprimoramento da sua técnica para resolver problemas; Crie uma sistematização. 3

A arte de resolver problemas Polya: processo dividido em quatro etapas; Por onde começar cada etapa? O que posso fazer com os elementos que disponho? Qual a vantagem de proceder da forma escolhida? 4

A arte de resolver problemas Compreensão do problema Planejamento Desenvolvimento: construção da solução; planejamento do teste; execução do teste; codificação da solução; teste com o uso do computador. Avaliação do processo e seus resultados 5

A arte de resolver problemas Deseja-se escrever um programa que permita determinar a menor quantidade de cédulas necessárias para pagar uma dada quantia em Reais. 6

A arte de resolver problemas Compreensão do problema: Cédulas de 1, 5, 10, 50 e 100 Planejamento Desenvolvimento: ncedulas q = (div q 100) + (div (mod q 100) 50) + (div (mod (mod q 100) 50) 10) + (div (mod (mod (mod q 100) 50) 10) 5)+ (div (mod (mod (mod (mod q 100) 50) 10) 5) 1) 7

A arte de resolver problemas Avaliação do processo e seus resultados: Há uma outra forma de resolver o problema? Pode-se deixar a solução mais clara? Melhore seu código Crie uma base de testes Outra versão: nMinCedulas2 q = n100 + n50 + n10 + n5 + n1   where n100 = div q 100 r100 = mod q 100 n50 = div r100 50 r50 = mod r100 50 n10 = div r50 10 r10 = mod r50 10 n5 = div r10 5 r5 = mod r10 5 n1 = div r5 1 8

Princípios para resolução de problemas Abstração Generalização Instanciação Modularização 9

Abstração Escreva a expressão que determina a hipotenusa de um triângulo de lados 4 e 10. Hugs> sqrt((10 * 10) + (4 * 4)) Hugs> 10.770329614269007 E se quisermos chamar várias vezes essa mesma expressão? hipotenusa = sqrt((10 * 10) + (4 * 4)) 10

Generalização Porque escrever uma definição de hipotenusa que retorna sempre o mesmo valor, ao invés de generalizá-la? hipotenusa x y = sqrt((x * x) + (y * y)) 11

Instanciação Uma vez definida a função genérica para cálculo da hipotenusa, podemos instanciá-la para diferente valores de catetos: Hugs> hipotenusa 10 4 10.770329614269007 Hugs> hipotenusa 35 18 39.357337308308857 Hugs> hipotenusa 9 12 15.0 12

Modularização 13

Modularização a b c d e 14

Modularização 15

Modularização areaTotal a b c d e = areaRetangulo a b + areaRetangulo (hipotenusa a d) e + areaAzul a c d where areaAzul a c d = areaRetangulo c d + areaTrianguloRetangulo d a areaTrianguloRetangulo x y = (x * y)/2 a b c d e areaRetangulo x y = x * y areaAzul a c d = d*c + areaTrianguloRetangulo d a areaTrianguloRetangulo x y = (x * y)/2 16

Exercício Descreva o algoritmo para calcular o volume das peças a seguir; Implemente esse algoritmo em Haskell; Crie uma bateria de testes e teste seu programa. 17