Buscar

Fundamentos de Programação - Aula 2 (Teórica)

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

Continue navegando