Programação I Aula 01 Autor: Francisco Airton Professor: André Didier 1 Objetivos • Apresentar a disciplina • Apresentar o conceito de “Algoritmo“ • Fazer com que o aluno conheça a importância dos algoritmos • Apresentar os tipos de algoritmos existentes 2 • Apresentação 3 Apresentação • Professor: Andre Luís Ribeiro Didier – – – – – Doutorando em Ciência da Computação pela UFPE Mestre em Ciência da Computação pela UFPE (2012) Graduado em Sistemas de Informação pelo UFPE (2006) Experiência de 9 anos como engenheiro de sistemas Mais informações: http://cin.ufpe.br/~alrd 4 Apresentação • Foco da disciplina – Ensino dos conceitos básicos de algoritmos estruturados envolvendo tipos de dados e formas de representação de algoritmos; – Fundamentos e técnicas estruturadas de programação para o desenvolvimento de software; 5 Avaliação • Avaliação – Três provas escritas (0 a 10 pontos) – Papel e caneta • Listas – Lista Prática • Uma lista de questões para fazer no computador • Valerá 2 pontos na última prova – Mini-listas • Resolver questões extra-sala e entregues manuscritos • Pontuação adicional acrescida na última prova para quem resolvêlas 6 Informações • https://sites.google.com/site/prog1atuariais • https://cin.ufpe.br/~faps • Calendário... 7 • Para ter sucesso na disciplina: – Fique ligado Procure estar presente em todas as aulas – Se faltou, visite o site da disciplina pra verificar o material da aula; – Dúvidas técnicas? Envie email para monitoria [email protected] 8 Motivação para o curso... 9 O que tenho que fazer pra aprender a programar? Aprender a resolver problemas... Praticar... • Afinal o que é um algoritmo? 13 Pera aí... • O que é um computador? Para que serve? 14 Pera aí... • O que é um computador? Para que serve? • “Um computador é uma coleção de componentes que realizam operações lógicas e aritméticas sobre um grande volume de dados.” (Miyazawa, 2001)” • Computador é ferramenta de trabalho (ex. editores de textos, planilhas, sistemas de informação, etc). • Computador é mídia: serve como canal na comunicação humana (ex. Web, apresentação multimídia, etc). 15 Afinal o que é um algoritmo? • Sequência finita de instruções, ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema; • Não envolve apenas aspectos computacionais; –Exemplos – Uma receita de bolo; – Manual de instruções; 16 Como funciona um computador? 17 Como programar algo que o computador entenda? Tarefa 1 Tarefa 2 Tarefa 3 . . . Compilador @#$%&¨& ¨$%¨&*$%¨&¨%$ ¨#$%¨&¨%$# &¨%$%$¨& “O tal do Algoritmo” “O Transformador” “Isso o computador entende” 18 • Compilador: tradutor de programas escritos em uma linguagem de programação para programas em linguagem de máquina (ex. GCC). 19 Etapas para execução de um programa compilado (Miyazawa, 2001:3) 20 Existe o “primo” do Compilador • O Interpretador 21 • Voltando ao algoritmo.... 22 Afinal o que é um algoritmo? Exemplo: Sequência para fritar um ovo: 1)Retirar o ovo da geladeira; 2) Colocar a frigideira no fogo; 3) Colocar óleo; 4) Esperar até o óleo ficar quente; 5) Quebrar o ovo separando a casca; 6) Colocar o conteúdo do ovo na frigideira; 7) Esperar um minuto; 8) Retirar o ovo da frigideira; 9) Apagar o fogo; 23 Afinal o que é um algoritmo? Tal sequência é um algoritmo? Vejamos... – A sequência anterior possui instruções finitas e ordenadas? • SIM, 9 instruções ordenadas; SIM. 9 instruções ordenadas; • O início de uma instrução depende da conclusão de uma instrução anterior; – O objetivo da sequência foi atingido? • SIM. O ovo foi frito; Logo,a sequência anterior é um algoritmo 24 Afinal o que é um algoritmo? • Exercício – Ordene e estruture uma sequência para a realização de uma ligação telefônica em um orelhão. 25 Afinal o que é um algoritmo? Uma possível solução: 1)Tirar o telefone do gancho; 2) Ouvir o sinal de linha; 3) Introduzir o cartão no orelhão; 4)Teclar o número desejado; 5) Conversar; 6) Desligar; 7)Tirar o cartão; 26 Afinal o que é um algoritmo? A solução anterior... mais robusta: 1) Tirar o telefone do gancho; 2) Ouvir o sinal de linha; 3) Introduzir o cartão no orelhão; 4) Teclar o número desejado; 5) Se chamar e alguém atender... 1)Conversar; 2) Desligar; 3)Retirar o cartão; 6) Senão... 1)Desligar; 2) Voltar para a instrução 1; 27 Desafio! Escreva um algoritmo que ajude o homem do barco a levar o lobo, a ovelha e a caixa de verduras para o outro lado do lago. Utilize a descrição narrativa para representar o algoritmo. Lembre‐se: Lobos comem ovelhas e ovelhas comem as verduras quando o homem está na outra margem! 28 Desafio 1. Pega a ovelha Pega a ovelha 2. Vai para a outra margem 3. Deixa a ovelha 4. Volta a margem inicial 5. Pega a caixa de verduras 6. Vai para a outra margem 7. Deixa a caixa de verduras e pega a ovelha 8. Volta a margem inicial 9. Deixa a ovelha e pega o lobo 10. Vai para a outra margem 11. Deixa o lobo Deixa o lobo 12. Volta a margem inicial 13. Pega a ovelha 14. Vai para a outra margem 15. Deixa a ovelha 29 O que podemos concluir sobre algoritmos? 30 O que podemos concluir sobre algoritmos? • Algoritmo é uma espécie de passo a passo de ações (instruções); • Algoritmos retornam uma saída (ex.: um ovo frito) a partir de uma determinada entrada através de uma sequência de passos; • Os passos são executados um após o outro (de forma sequencial); 31 O que podemos concluir sobre algoritmos? • Um algoritmo está correto quando sua sequência de instruções retorna uma saída esperada; • Podem existir um ou mais algoritmos que retornam uma saída esperada; – Mas podem existir algoritmos mais eficientes que outros – Um algoritmo não é a solução do problema, mas o caminho que busca a solução do problema; 32 • Por que criamos algoritmos? 33 Por que criamos algoritmos? • A linguagem natural não pode ser interpretada por computadores; • Computadores são projetados para executar tarefas bem definidas a partir de instruções; • Para desenvolver software, utilizamos linguagens de programação... • Logo, aprendendo a criar algoritmos, estamos aptos a programar em qualquer linguagem de programação; 34 • Tipos de algoritmos 35 Tipos de algoritmos • DescriçãoNarrativa; • Fluxograma; • Pseudocódigo, Português Estruturado ou Portugol; 36 Tipos de algoritmos • Descrição Narrativa • Utiliza‐se preferencialmente um verbo por frase; • Formada por frases curtas e simples; • É objetiva; • Evita palavras com sentido dúbio; 37 Tipos de algoritmos • Descrição Narrativa –Exemplo: – Dobro de um número (dobro = número x 2) – Digitar um número; – Gravar em uma variável; – Multiplicar o número digitado por 2; – Gravar o resultado em outra variável; – Mostrar o resultado da operação; 38 Tipos de algoritmos • Descrevem o fluxo de ação de um determinado trabalho lógico; • Usa símbolos convencionais, permitindo poucas variações; • Representados por símbolos geométricos; 39 Tipos de algoritmos • Fluxograma –Conjunto de Símbolos: 40 Tipos de algoritmos • Exemplo: Faça um algoritmo que calcula e apresenta a multiplicação entre dois números. 41 Tipos de algoritmos • Fluxograma –Exemplo: 42 Tipos de algoritmos • Exemplo 2: Faça um algoritmo que calcula e apresenta a divisão entre dois números. 43 Tipos de algoritmos • Fluxograma –Exemplo 2: 44 Tipos de algoritmos • Exercício: Faça um algoritmo (fluxograma) que calcula a média de três notas de um determinado aluno e informa se o aluno está aprovado ou reprovado. • – O aluno estará aprovado se sua média for maior ou igual a 7; 45 Tipos de algoritmos • Fluxograma –Exercício: 46 Tipos de algoritmos • Português Estruturado (Portugol) – Linguagem mais restrita que o português em linguagem natural; – Simplificação extrema do português; – Significados bem definidos para todos os termos utilizados nas instruções; – Possui um conjunto de palavras e regras específicas (sintaxe da linguagem); 47 Tipos de algoritmos • Português Estruturado (Portugol) • Normalmente as implementações são feitas em papel escritas a mão; papel, escritas a mão; 48 Tipos de algoritmos • Forma básica de um algoritmo em portugol: 49 Tipos de algoritmos • Exemplo: Faça um algoritmo que calcula e apresenta a multiplicação entre dois números. 50 Tipos de algoritmos 51 • Explore o assunto, vá lá no nosso site.... 52 Grupo de Email • Vá no meu site e lá você encontra um link para pedir para participar do grupo – cin.ufpe.br/~faps • IMPORTANTE: Quando eu aceitar você, configure para receber sempre os emails. 54