Baixe o app para aproveitar ainda mais
Prévia do material em texto
FUNDAMENTOS DE PROGRAMAÇÃO I AULA 2: TEÓRICA Algoritmos Prof. Janderson Universidade Federal de Lavras Departamento de Ciência da Computação Algoritmos • O que são algoritmos? • Um algoritmo corresponde a uma descrição de um padrão de comportamento, expresso em termos de um conjunto finito de ações. • Informalmente, um algoritmo é qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída. Algoritmos • Algoritmos: sequência de ações para obtenção de uma solução para um determinado problema. • Programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados. – Abstração da realidade mediante a definição de um conjunto de dados que representa a situação real. Algoritmos • Um algoritmo é correto se, para toda entrada, ele parar com a saída correta. • Dizemos que um algoritmo correto resolve o problema computacional dado. • Um algoritmo incorreto poderia não parar com algumas entradas de dados ou poderia parar com uma resposta incorreta. Algoritmos • Computador não tem senso próprio. – Deve receber instruções explícitas na forma de algoritmos. • Um algoritmo correto deve possuir três qualidades: Algoritmos • Computador não tem senso próprio. – Deve receber instruções explícitas na forma de algoritmos. • Um algoritmo correto deve possuir três qualidades: – Cada passo do algoritmo deve ser uma instrução que possa ser realizada. – A ordem dos passos precisa ser precisamente determinada. – O algoritmo deve ter fim. Algoritmos • Como representar um algoritmo: – Linguagem natural. – Fluxogramas. – Pseudocódigo • Forma genérica de se representar um algoritmo, sem a necessidade de se conhecer a sintaxe de uma linguagem de programação específica. – Programa. • Codificado em uma linguagem de programação específica. Exercício 1 ● Problema: A lâmpada da sala da sua casa queimou e você precisa substituí-la por uma nova. • Pergunta: Quais os passos necessários para que você troque a lâmpada velha por uma nova? Você pode utilizar uma escada para fazer a troca. Exemplos Algoritmos • Problema: trocar uma lâmpada. – Exemplo 1 - Linguagem Natural 1. Pegar lâmpada nova 2. Trocar lâmpada velha Exemplos Algoritmos • Problema: trocar uma lâmpada. – Exemplo 2 - Linguagem Natural 1. Pegar lâmpada nova 2. Pegar escada 3. Posicionar escada 4. Subir escada 5. Remover lâmpada velha 6. Colocar lâmpada nova 7. Descer escada Exemplos Algoritmos • Problema: trocar uma lâmpada. – Exemplo 3 - Linguagem Natural 1. Pegar lâmpada nova 2. Pegar escada 3. Posicionar escada 4. Subir degrau 1 5. Subir degrau 2 6. Subir degrau 3 7. ... n. Girar lâmpada velha (1 volta ) - Sentido anti-horário n+1. Girar lâmpada velha (2 voltas) - Sentido anti-horário …. Exemplos Algoritmos • Qual a principal diferença dos três algoritmos anteriores? Linguagens de Programação • Necessidade: padronização. • Linguagens de programação são métodos padronizados de comunicar instruções a um computador. • Uma linguagem de programação é um conjunto bem definido de regras (léxicas, sintáticas e semânticas) para representar um programa de computador. Linguagens de Programação • Vamos ver alguns exemplos de programas em diferentes linguagens de programação. • Problema: escrever a mensagem “Ola Mundo!” no dispositivo de saída padrão do computador. Em pseudocódigo teríamos: Algoritmo OlaMundo Inicio Escreva(“Ola Mundo!”) PuleLinha Fim Exemplos Algoritmos • Problema: Olá Mundo. – Exemplo 4 – Programa em C #include <stdio.h> int main(){ printf(“Ola Mundo!\n”); return 0; } Exemplos Algoritmos • Problema: Olá Mundo. – Exemplo 5 – Programa em C++ #include <iostream> using namespace std; int main(){ cout << “Ola Mundo!” << endl; return 0; } Exemplos Algoritmos • Problema: Olá Mundo. – Exemplo 6 – Programa em Java public class OlaMundo{ public static void main(String[] args){ System.out.println(“Ola Mundo!”); } } Exemplos Algoritmos • Problema: Olá Mundo. – Exemplo 7 – Programa em Python Obs.: Executado dentro do interpretador print(“Ola Mundo!”) Exemplos Algoritmos • Problema: Olá Mundo. – Exemplo 7 – Programa em Python Obs.: Executado dentro do interpretador print(“Ola Mundo!”) Linguagem utilizada nesta disciplina. Algoritmos • Dijkstra (1968) provou que independente da complexidade envolvida, todo programa poderia ser escrito como uma combinação de comandos primitivos envolvendo três estruturas básicas de controle: – Estrutura de sequência; – Estrutura de seleção; – Estrutura de repetição. • Tais estruturas básicas definem o alicerce da Programação Estruturada. Estrutura de Algoritmos • Em uma estrutura sequencial, os passos são tomados em uma sequência pré-definida. Estrutura de Algoritmos • Uma estrutura condicional permite a escolha do grupo de ações a ser executado quando determinada condição é ou não satisfeita. Estrutura de Algoritmos • Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita. Desenvolvimento de Algoritmos • Começar com solução genérica do problema e prosseguir até algoritmo final. – Aumentar sistematicamente nível de detalhamento. • Como saber se o nível de detalhamento é suficiente para o algoritmo? – Depende do agente que executa o algoritmo. – Computadores: ● Conjunto limitado de instruções; ● Algoritmo deve ser expresso nos termos dessas instruções. Como construir um programa O que é necessário fazer para se construir um programa? Como construir um programa • Passo 1: Levantar todas as saídas exigidas na especificação do problema. • Passo 2: Levantar todas as entradas citadas na especificação do problema. • Passo 3: Verificar se é necessário gerar valores intermediários no algoritmo. • Passo 4:Definir todas as operações e transformações necessárias para, dadas as entradas e valores gerados internamente, produzir as saídas especificadas. Como construir um programa • Passo 5: Elaborar casos de teste para o problema. Definir valores de entrada e seus respectivos valores de saída. • Passo 6: Codificar o algoritmo em uma dada linguagem de programação. • Passo 7: Testar cada passo do programa, verificando se as transformações intermediárias executadas estão conduzindo aos objetivos especificados. Como construir um programa • Passo 1: ???? • Passo 2: ???? • Passo 3: ???? • Passo 4: ???? • Passo 5: ???? • Passo 6: ???? • Passo 7: ???? Como construir um programa • Passo 1: Variáveis de entradas • Passo 2: Variáveis de saídas • Passo 3: Variáveis intermediárias • Passo 4: Ações/Operações/Transformações • Passo 5: Casos de Teste • Passo 6: Codificar programa • Passo 7: Testar Exercício 2 • Problema: Faça um programa que calcule as raízes reais de uma equação de segundo grau. ax² + bx + c = 0 • Suponha que o coeficiente a seja sempre diferente de zero. Tente fazer o passo a passo para a construção de um programa que resolva este problema. Faça tantos passos quanto for possível. Considerações Python Considerações Python • Para testar os seus algoritmos é necessário instalar o interpretador da linguagem Python. • O interpretador é um programa que aceita comandos escritos em Python e os executa, linha a linha. – Traduz os programas em um formato que pode ser executado pelo computador. • Interpretador: verificar se o programa foi escrito corretamente (exibindomensagens de erro). Considerações Python • Versão do Python recomendada: 3.4 ou acima. • Software livre. • Windows: – http://www.python.org • Linux (Ubuntu): – sudo apt-get install python3.4 – sudo apt-get install idle-python3.4 Dica para Instalação (Windows) Siga a videoaula feita por um dos monitores da disciplina. Enquanto isso, no Campus Virtual... Exemplo Python • Agora vamos voltar ao nosso exemplo Python. – Programa em Python O que está acontecendo aqui? print(“Ola Mundo!”) Comando de Saída Padrão • print é uma função do Python. Comando de Saída Padrão Comando de Saída Padrão • Cuidados: – Letras maiúsculas e minúsculas são diferentes. Print ≠ print – Aspas são importantes e não devem ser esquecidas. – Parênteses não são opcionais. – Espaços são muito importantes. ● Quantidade de espaços em branco antes do início de cada linha. Outros exemplos print(“Parabéns!!!”) print(“Você agora está”) print(“começando a aprender a programar”) Outros exemplos print(“Eu sei os F.A.T.P.”) print(“Fundamentos”) print(“ das Artes”) print(“ das Trevas”) print(“ da Programação”) Operadores Matemáticos Operação Operador Soma + Subtração - Multiplicação * Divisão / Exponenciação ** Resto da divisão inteira % Exercício • Qual o resultado das seguintes expressões matemáticas? Expressão 1 2+3*4/2 Expressão 3 10%3*10**2+1-10*4/2 Expressão 2 9%2+5*9/3-1**0 Exercício Atividade Extraclasse 1 Se informar sobre as unidades lógicas de um computador Enquanto isso, no Campus Virtual... Atividade Extraclasse 1 Atividade Extraclasse 2 Professor, por que eu que faço <coloque aqui o nome do seu curso> devo aprender programação? Eu não vou trabalhar com isso. Atividade Extraclasse You should learn to Program: Christian Genco https://www.youtube.com/watch?v=xfBWk4nw440 Algorithms are taking over the world: Christopher Steiner https://www.youtube.com/watch?v=H_aLU-NOdHM AS SIS TA! !! Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Algoritmos Estrutura de Algoritmos Estrutura de Algoritmos Estrutura de Algoritmos Desenvolvimento de Algoritmos Processo de construção de algoritmos Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47
Compartilhar