Universidade Federal do Pampa Campus-Bagé Algoritmos e Programação Aula 1 Apresentação da Disciplina Conceitos Introdutórios Prof. Julio Saraçol juliodomingues@unipampa.edu.br Slide1
APRESENTAÇÃO DA DISCIPLINA Slide2
Atividades Plano de Ensino Conteúdos da disciplina, definição das datas, critérios de avaliação e bibliografia Moodle: Senha: alg-2016 Qualquer dúvida: juliodomingues@unipampa.edu.br Segunda-feira (Teórica) (Prof. Julio e Prof. Sandro) Slide3
Cronograma Data Aula Conteúdo abordado 08/08/16 1 Apresentação da disciplina e do Plano de Ensino. Funcionamento do computador. Conceito e definição de algoritmos 15/08/16 2 Tipos de valores. Conceito e comportamento de variável. Operadores. Atribuições. Comandos de entrada e saída. 22/08/16 3 Resolução de Algoritmos 29/08/16 4 Estruturas de condição. 05/09/16 5 Estruturas de repetição - PARA FAÇA. 12/09/16 6 Estruturas de repetição - ENQUANTO FAÇA, REPITA ATÉ. 19/09/16 FERIADO 26/09/16 7 Estruturas de repetição - ENQUANTO FAÇA, REPITA ATÉ. 03/10/16 8 Duvidas / Avaliação 1 (A1). 10/10/16 9 Vetores 17/10/16 10 Matrizes 24/10/16 11 Vetores/Matrizes 31/10/16 12 Duvidas / Avaliação 2 (A2) 07/11/16 13 Subalgoritmos. Funções. Passagem de Parâmetros. 14/11/16 FERIADO 21/11/16 14 Subalgoritmos. Funções. Passagem de Parâmetros. 28/11/16 15 Resolução de Dúvidas / Avaliação 3 (A3) 05/12/16 16 Segunda chamada / Fechamento das Notas 12/12/16 17 Avaliação Recuperatória (AR) / Entrega das Notas Slide4
Avaliações 3 Provas Teóricas Sem Consulta Para ser aprovado: 75% de Frequência e Média >= 6.0 Avaliação Recuperatória = 12 média Slide5
INTRODUÇÃO A ALGORITMOS E PROGRAMAÇÃO Slide6
Algoritmo Matemática Descreve o processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras formais para a obtenção do resultado, ou da solução do problema Computação Descreve o conjunto pré-determinado e bem definido de regras e processos destinados à solução de um problema, com um número finito de etapas O conceito de programação está profundamente vinculado ao conceito de algoritmos Slide7
Lógica de Programação Técnica de desenvolver algoritmos (sequências lógicas) para atingir determinados objetivos dentro de certas regras baseadas na Lógica matemática Estes algoritmos depois são adaptados para a Linguagem de Programação utilizada pelo programador para construir seu software Slide8
Algoritmo Um algoritmo é uma sequência não ambígua de instruções que é executada até que determinada condição se verifique Mais especificamente, em matemática, constitui o conjunto de processos (e símbolos que os representam) para efetuar um cálculo Slide9
Algoritmo Utilizamos constantemente algoritmos em nosso cotidiano: Instruções para se utilizar um aparelho eletrodoméstico Uma receita para preparo de algum prato Guia de preenchimento para declaração do imposto de renda A regra para determinação de máximos e mínimos de funções por derivadas sucessivas A maneira como as contas de água, luz e telefone são calculadas mensalmente Slide10
Algoritmo Um algoritmo poderia ser grosseiramente comparado à uma receita culinária Uma receita é um programa de atividades que deve ser respeitada e cumprida passo-a-passo Caso um dos passos seja desconsiderado, a receita não dará certo Slide11
Algoritmo Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica) até que a tarefa seja completada Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar um tarefa Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferente de instruções em mais ou menos tempo, espaço ou esforço do que outros Slide12
Algoritmo Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo Algoritmo é um caminho para a solução de um problema: Em geral, os caminhos que levam a uma solução são muitos Slide13
Algoritmo Para o desenvolvimento de um algoritmo eficiente, é necessário obedecermos algumas premissas básicas no momento de sua construção: Definir ações simples e sem ambiguidade Organizar as ações de forma ordenada Estabelecer as ações dentro de uma sequência finita de passos Slide14
Algoritmo Os algoritmos são capazes de realizar tarefas como: 1.Ler e escrever dados 2.Avaliar expressões algébricas, relacionais e lógicas 3.Tomar decisões com base nos resultados das expressões avaliadas 4.Repetir um conjunto de ações de acordo com uma condição Slide15
Por que precisamos de Algoritmos? A importância do algoritmo está no fato de termos que especificar uma sequência de passos lógicos para que o computador possa executar uma tarefa qualquer, pois o mesmo por si só não tem vontade própria, faz apenas o que mandamos. Com uma ferramenta algorítmica, podemos conceber uma solução para um dado problema, não dependendo de uma linguagem específica e até mesmo do próprio computador Slide16
Por que precisamos de Algoritmos? Abstração Todo esforço é concentrado na resolução do problema e não em detalhes computacionais que podem ser acrescentados posteriormente Portabilidade Uma solução algorítmica pode ser traduzida para qualquer linguagem de programação Slide17
Características Ser finito Não dar margem à dupla interpretação (não ambíguo) Capacidade de receber dado(s) de entrada do mundo exterior Poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo Ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito) Slide18
Representação de Algoritmos Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas Algumas formas de representação de algoritmos tratam dos problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica Por outro lado, existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurescer a ideia principal, o algoritmo, dificultando seu entendimento Slide19
Representação de Algoritmos Dentre as formas de representação de algoritmos mais conhecidas, sobressaltam: Descrição Narrativa Fluxograma Convencional Diagrama de Chapin Pseudocódigo, também conhecido como Português Estruturado ou Portugol Linguagem de Programação Slide20
Descrição Narrativa Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural 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 Slide21
Descrição Narrativa Desvantagens imprecisão pouca confiabilidade (a imprecisão acarreta a desconfiança) extensão (normalmente, escreve-se muito para dizer pouca coisa) Esta representação é pouco usada na prática porque o uso de linguagem natural muitas vezes dá oportunidade a más interpretações, ambiguidades e imprecisões Slide22
Descrição Narrativa Problema: Calcular a média final dos alunos. Os alunos realizarão quatro provas: P1, P2, P3 e P4, onde: MF = (P1 + P2 + P3 +P4) / 4 Algoritmo: 1. Receba a nota da prova1 2. Receba a nota de prova2 3. Receba a nota de prova3 4. Receba a nota da prova4 5. Some todas as notas e divida o resultado por 4 6. Mostre o resultado da divisão Slide23
Descrição Narrativa Algoritmo Trocar uma lâmpada queimada: 1. pegar uma escada 2. posicionar a escada debaixo da lâmpada 3. buscar uma lâmpada nova 4. subir na escada 5. retirar a lâmpada queimada 6. colocar lâmpada nova Slide24
Descrição Narrativa - Problemas O algoritmo não atingirá seu objetivo se a lâmpada nova estiver queimada. Para tal, acrescentamos um teste condicional (estrutura seletiva) pegar uma escada posicionar a escada debaixo da lâmpada buscar uma lâmpada nova subir na escada retirar a lâmpada queimada colocar lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar a lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar a lâmpada nova... até quando???? Slide25
Descrição Narrativa - Problemas O algoritmo não atingirá seu objetivo se a lâmpada nova estiver queimada. Para tal, acrescentamos um teste condicional (estrutura seletiva) pegar uma escada posicionar a escada debaixo da lâmpada buscar uma lâmpada nova subir na escadapor isso é necessário retirar a lâmpada queimada colocar lâmpada nova utilizar algumas se a lâmpada nova não acender, então: retirar a lâmpada estruturas queimada próprias de colocar lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar a lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar a lâmpada nova... até quando???? algoritmos para facilitar a descrição Slide26
Descrição Narrativa Algoritmo Trocar uma lâmpada queimada com o uso de estruturas de repetição: 1. pegar uma escada 2. posicionar a escada debaixo da lâmpada 3. buscar uma lâmpada nova 4. subir na escada 5. retirar a lâmpada queimada 6. colocar lâmpada nova 7. enquanto lâmpada nova não acender, faça: 1. retirar a lâmpada queimada 2. colocar lâmpada nova Slide27
Descrição Narrativa Exercícios 1. Escreva uma sequência de passos (descrição narrativa) para tomar banho. 2. Escreva uma sequência de passos (descrição narrativa) para efetuar um saque em um caixa eletrônico. Slide28
Fluxograma É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações distintas Objetivo: Facilitar o entendimento das ideias contidas nos algoritmos Slide29
Principais símbolos usados em Fluxogramas Slide30
Fluxograma Cálculo da média de um aluno: Obter as notas da primeira e da segunda prova Calcular a média aritmética entre as duas Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado Slide31
Diagrama de Chapin Criado por Ned Chapin a partir de trabalhos de Nassi- Shneiderman, para substituição do fluxograma tradicional por um diagrama que apresenta uma visão hierárquica e estruturada da lógica do programa Representa as estruturas que tem um ponto de entrada e um ponto de saída e são compostas pelas estruturas básicas de controle de sequência, seleção e repetição Enquanto é difícil mostrar o embutimento e a recursividade com o fluxograma tradicional, torna-se mais simples mostrá-lo com o diagrama de Chapin, bem como codificá-lo futuramente em pseudocódigo Slide32
Diagrama de Chapin Slide33
Linguagem Algorítmica (pseudocódigo) Também conhecida como português estruturado ou portugol Bastante rico em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos, encontra muita aceitação Representação suficientemente geral para permitir que a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta Slide34
Linguagem Algorítmica (pseudocódigo) Algoritmo <nome_do_algoritmo> <declaração_de_variáveis> <subalgoritmos> Início <corpo_do_algoritmo> Fim. Slide35
Linguagem Algorítmica Exemplo Algoritmo Media Var N1, N2, Media : real Início Leia N1, N2 Media = (N1+N2)/2 Se Media >= 7 Entao Escreva "Aprovado" Senao Escreva "Reprovado" Fim. Slide36
Linguagem Algorítmica 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 Slide37
Algoritmo Recapitulando: Um Algoritmo é uma sequência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema Slide38
Construção de Algoritmos O que é Preciso (entrada) Como chegar ao que quero (Processamento) O que quero (saída) Ex: construir um algoritmo para fazer suco de laranja: Entrada: Processamento: Saída: - laranja - cortar a laranja - espremer a laranja - suco de laranja Slide39
Construção de Algoritmos O que é Preciso (entrada) Como chegar ao que quero (Processamento) O que quero (saída) Ex: Identificar dados de entrada, processamento e saída 1- receber código da peça 2- receber valor da peça 3- receber quantidade de peças 4- calcular valor total da peça = (quantidade*valor da peça) 5- mostrar o código da peça e seu valor total Slide40
Programa Um Programa é um Algoritmo escrito em uma Linguagem de Programação Slide41
Linguagens de Programação São Softwares que permitem o desenvolvimento de programas Possuem um poder de criação ilimitado, desde jogos, editores e texto, sistemas empresariais até sistemas operacionais Existem várias Linguagens de Programação, cada uma com suas características próprias Pascal, C, Visual Basic, Delphi, Fortran, Java, etc Slide42