Algoritmos e Programação Thyago Maia Tavares de Farias Aula 1 Sumário Apresentação do Curso Plano de Ensino (resumo) O “segredo” para se sair bem na disciplina Afinal, o que é um algoritmo? O que podemos concluir sobre algoritmos? Apresentação do Curso Professor: Thyago Maia Tavares de Farias Mestre em Informática pelo PPGI/DI/UFPB Bacharel em Ciência da Computação pela UFPB Currículo Lattes: http://lattes.thyagomaia.net E-Mail: [email protected] Twitter: http://twitter.com/thyagomaia Plano de Ensino Objeto de estudo: Ensino dos conceitos básicos de algoritmos estruturados, envolvendo tipos de dados e formas de representação de algoritmos; Fundamentos das técnicas estruturadas de programação para o desenvolvimento de software; Plano de Ensino Objetivos: Geral: Introduzir conceitos de técnicas de programação, utilizando noções de algoritmos, através de linguagem de alto nível. Específicos: Introduzir as técnicas para o desenvolvimento de algoritmos; Estudo e aplicação das técnicas básicas de programação em linguagem de alto nível; Análise e depuração de código; Plano de Ensino Metodologia: Aulas teóricas (sala de aula) e práticas (laboratório); Avaliação: Avaliações escritas: Exercícios e atividades práticas em laboratório: 3 avaliações (Datas a definir) 1 reposição (Datas a definir) 1 final (Datas a definir) Irão complementar as notas das avaliações; Projeto Integrador Tema: Desvendando as Redes Sociais; Irá complementar a nota da 3ª avaliação; Plano de Ensino Sobre o Projeto Integrador: Trabalhos específicos serão desenvolvidos para cada disciplina do período; Grupos de até 4 pessoas; O que será desenvolvido para a disciplina de algoritmos? Um programa que calcule estatísticas acerca das principais redes sociais do mercado; 1º estágio: Pesquisar fórmulas e dados que poderão ser utilizados nos programas; Plano de Ensino Sobre o Projeto Integrador: O que será desenvolvido para a disciplina de algoritmos? Um algoritmo/programa que calcule estatísticas acerca das principais redes sociais do mercado; 1º estágio: Pesquisar fórmulas e dados que poderão ser utilizados nos algoritmos/programas (vale 1,0 ponto); 2º estágio: Início do desenvolvimento dos algoritmos/programas (vale 1,0 ponto); 3º estágio: Produção de relatório, entrega dos algoritmos/programas desenvolvidos e apresentação no Fórum Integrador (vale 2,0 ponto) Plano de Ensino Bibliografia Básica: TREMBLAY, J. P. & BUNT, R. Ciência dos computadores: uma abordagem algorítmica. São Paulo: McGraw-Hill, 1983. AVILANNO, Israel de Campos. Algoritmos e Pascal Manual de Apoio. Editora Moderna, 2ª Edição, 2006. FARRER, Harry et al. Algoritmos estruturados. Rio de Janeiro: Guanabara Dois, 1989. Plano de Ensino Bibliografia Complementar: ASCENCIO, Ana Fernanda Gomes. Lógica de programação com pascal. São Paulo: Makron Books,1999. MANZANO, José Augusto N. G.; YAMATUMI, Wilson Y. Programação em turbo pascal 7.0. São Paulo: Érica, 1993. GUIMARÃES, Ângelo de Moura. Algoritmos e estrutura de dados. Rio de Janeiro:LTC, 1985. KNUTH, D.E. The Art of Computer Programming (Vol 1:Fundamental Algorithms). São Paulo: Addison-Wesley, 1974. WIRTH, N. Algoritmos and Data Structure. São Paulo: Pearson Prentice-Hall,1986. Plano de Ensino E-Books: TONET, Bruno; KOLIVER, Cristian. Introdução aos algoritmos. Disponível em <www.guanabara.info/logica/Apostilas/VisuAlg_Ref.pdf>. Acesso em 21 de Dezembro de 2010. EVARISTO, Jaime. Programando com Pascal. Disponível em <http://professor.ic.ufal.br/jaime/>. Acesso em 21 de Dezembro de 2010. Plano de Ensino Site da disciplina: http://ead.unipe.br Slides das aulas Notas de aula Lista de exercícios Notas Informações sobre o curso Downloads Softwares utilizados no curso: VisuAlg: http://www.apoioinformatica.inf.br/visualg/setupv2.exe Pascal ZIM!: http://www.baixaki.com.br/download/pascal-zim-.htm O “segredo” para se sair bem na disciplina Procurar estar presente na maioria das aulas (é claro...) Se faltou, checar material no site e/ou com os colegas de sala; Dúvida em algum assunto ou aula? Pergunte ao professor durante as aulas ou envie um e-mail Lembre-se: Alguns exercícios poderão compor a nota de alguma prova! Sempre checo e-mails e procuro respondê-los o mais breve possível E o mais importante: EXERCITE, EXERCITE... Afinal, o que é um algoritmo? Sequência de instruções finitas e ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema; Não necessariamente envolve aspectos computacionais. Ex.: Uma receita de bolo, trocar um pneu de carro, trocar uma lâmpada, manual de instruções; Exemplo Sequência para fritar um ovo: 1. 2. 3. 4. 5. 6. 7. 8. 9. Retirar o ovo da geladeira Colocar a frigideira no fogo Colocar óleo Esperar até o óleo ficar quente Quebrar o ovo separando a casca Colocar o conteúdo do ovo na frigideira Esperar um minuto Retirar o ovo da frigideira Apagar o fogo Exemplo Tal sequência é um algoritmo? Vejamos... Possui uma sequência de instruções finitas e ordenadas? O objetivo da sequência foi atingido? R.: SIM. Instruções de 1 a 9. R.: SIM. O ovo foi frito. Logo, é um algoritmo! Exercício Ordene e estruture uma sequência para a realização de uma ligação telefônica em um orelhão. Exercício Resposta 1: 1. 2. 3. 4. 5. 6. 7. Tirar o fone do gancho Ouvir sinal de linha Introduzir cartão Teclar o número desejado Conversar Desligar Tirar o cartão Exercício Resposta 2 (Mais robusta) 1. 2. 3. 4. 5. Tirar o fone do gancho Ouvir sinal de linha Introduzir cartão Teclar o número desejado Se chamar e alguém atender 1. 2. 3. 6. Conversar Desligar Retirar o cartão Senão 1. 2. Desligar Voltar para a instrução 1 O que podemos concluir sobre algoritmos? Algoritmo é uma espécie de passo a passo; Algoritmos realizam uma saída (ex.: Um ovo frito) a partir de uma determinada entrada (um ovo) através de uma sequência de passos; Os passos tem que ser executados um após o outro; Um algoritmo está correto quando sua sequência de instruções resulta em uma saída esperada. Podem existir um ou mais algoritmos para atingir um resultado, desde que o resultado (a saída) seja o mesmo! Observação O algoritmo não é a solução do problema, mas o caminho que leva a mesma!