Fundamentos de
Programação
ECOP01
Prof. MSc. João Paulo R. R. Leite
joaopaulo@unifei.edu.br
Agenda 2015
• Conteúdo da Disciplina
– Agenda de aulas teóricas e laboratórios
• Regras e Informações Adicionais
– Objetivos
– Notas e Presenças
– Trabalho Final
Como construímos programas de computador?
Como centenas de linhas de código de significado enigmático se
transformam em um belo aplicativo?
Não há nada excepcionalmente difícil ou mágico na
programação de computadores!
Vamos ver - de maneira muito simplificada - de onde vem os
programas, e do que exatamente eles são feitos.
• Estrutura de um computador
– CPU, Memória, HD, etc.
• Bits e bytes
– 1 Byte = 8 bits (binary digit: 0 ou 1)
• Arquivos
– Texto codificado em bytes
• Compilador
– Transformando código em arquivo executável
• Programa
– A fronteira final!
Tabela ASCII
(American Standard Code for Information Interchange)
Mas se a letra J é igual a 74, como ficaria sua representação em byte?
Quais bits a compõem na representação ASCII?
Vamos aprender a converter.
Algoritmos e
Pensamento Lógico
Prof. João Paulo R. R. Leite
joaopaulo@unifei.edu.br
Universidade Federal de Itajubá
Aula 01:
Algoritmos
• Você já deve ter passado por várias situações
difíceis, resolvendo problemas cotidianos.
– Ninguém chama a sequência de passos da receita
de bolo da nossa mãe de algoritmo, mas, no
fundo, é exatamente isso o que ela é:
– Uma sequência de passos que resolve um
determinado problema.
– Qual era o problema?
Preparar um bolo que seja gostoso!
Repare como a receita
primeiramente lista
tudo o que será
necessário e, depois,
enumera passo a passo
as tarefas a serem
realizadas – numa
determinada ordem!
Nossos programas em C
serão muito parecidos
com isso! Lembre-se!
Ingredientes Preparo Bolo
Dados de Entrada Processamento Resultados
Receita de bolo:
Programa de computador:
Algoritmos
• Mas de onde surgiu o termo “algoritmo”?
– Abdullah Muhammad Bin Musa Al-Khwarizmi
• Cientista, astrônomo e matemático.
• Viveu em Bagdá no século IX.
• Escreveu um livro-texto estabelecendo os métodos básicos
para adicionar, multiplicar e dividir números, além de muitas
outras coisas como extrair raiz quadrada e calcular os dígitos
do PI.
– Os métodos desenvolvidos por ele eram procedimentos
precisos, sem ambiguidade, mecânicos, eficientes, e
sempre corretos.
• Eram Algoritmos!!
Al-Khwarizmi Algoritmo!
Mas o que é um algoritmo?
No século XII, Adelardo de Bath, ao traduzir os livros
de Al-Khwarizmi para o latim, cunhou o termo
“Algorithmi”, que inicialmente se aplicava apenas a
cálculos aritméticos, mas hoje utilizamos em muitas
outras áreas.
Algoritmos
• Definição: Sequência de instruções ordenadas de
forma lógica para a solução de um determinado
problema ou realização de alguma tarefa bem
especificada.
– Precisos, não ambíguos, mecânicos, eficientes,
corretos
– Receita de bolo, manual passo a passo.
• Muitos são os algoritmos que ficaram famosos ao
longo da história. Vejamos o “Algoritmo
Euclidiano”, que Euclides desenvolveu para
calcular o máximo divisor comum (MDC):
Algoritmos
• Ele pode ser resumido em:
1. Dividir um número a por b, o resto é r;
2. Substituir a por b;
3. Substituir b por r;
4. Continuar a divisão de a por b até que um não possa
mais ser dividido. Neste caso, a é o MDC.
• Exercício:
– Calcule o MDC de 1840 e 65.
– Vamos ver um programa que faça a mesma coisa.
Algoritmos
• Podemos trazer o mesmo conceito para o campo
da computação, como um “conjunto de regras e
procedimentos lógicos perfeitamente definidos
que levam à solução de um problema em um
número finito de etapas”.
– Um conjunto de passos que especifica, de momento a
momento, precisamente como se comportar.
– Começo (entrada, ingredientes);
Meio (processamento, modo de preparo) e;
Fim (resultados, bolo).
Algoritmos
• Podemos trazer o mesmo conceito para o campo
da computação, como um “conjunto de regras e
procedimentos lógicos perfeitamente definidos
que levam à solução de um problema em um
número finito de etapas”.
– Um conjunto de passos que especifica, de momento a
momento, precisamente como se comportar.
– Começo (entrada, ingredientes);
Meio (processamento, modo de preparo) e;
Fim (resultados, bolo).
Algoritmos
• Mas o que é lógica?
– “Parte da filosofia que trata das formas do
pensamento em geral (dedução, indução,
hipótese, inferência, etc.) e das operações
intelectuais que visam à determinação do que é
verdadeiro ou não”
– Coerência, fundamento, faz sentido.
• E na computação?
– “Organização e planejamento das instruções em
um algoritmo, a fim de viabilizar a implantação de
um programa.”
Algoritmos
• Portanto, nossos algoritmos devem seguir
uma sequencia lógica!
• Por exemplo: Façamos um algoritmo que
calcule a média de um aluno, que realizou, no
semestre, duas provas e um trabalho:
Média Final = (P1 + P2 + T) / 3
Quais os ingredientes? Qual o resultado final?
Qual o Algoritmo?
Algoritmos
• Dados de Entrada: P1, P2 e T
• Dados de Saída: Média Final
• Algoritmo:
– Receba a nota da prova 1
– Receba a nota da prova 2
– Receba a nota do trabalho
– Some as notas e divida o resultado da soma por 3
– Mostre o resultado da divisão
Algoritmos
• Reparem que é necessário seguir uma sequencia
de instruções coerente, ou seja, lógica!
– Não é possível calcular a média final se primeiro não
soubermos as notas das provas e do trabalho.
– Não podemos mostrar o resultado final até que a
fórmula matemática seja resolvida.
• E onde entram os programas de computador que
iremos aprender a desenvolver?
– Programas de computador nada mais são do que
algoritmos expressos em uma linguagem de
programação (C, C++, C#, Java, Python, Pascal, etc.).
Algoritmos
• No entanto, diferente dos algoritmos que
utilizamos no nosso cotidiano, os programas
de computador precisam seguir uma série de
regras definidas pela linguagem escolhida.
– Nossos programas se parecerão com receitas de
bolo, mas seguirão uma sintaxe bem definida pela
especificação da linguagem C.
– Depois de terminados, nossos códigos terão que
passar por um processo de tradução, onde as
palavras e instruções serão transformados em 0’s
e 1’s pelo compilador.
Algoritmos
• Dois tipos de software nos auxiliarão na escrita e
execução de programas:
– Compiladores: “Traduzem” nosso código em C para
código de máquina, de baixo nível, criando um
arquivo executável binário a partir de nosso arquivo
de texto. Utilizaremos o GCC.
– IDEs (Integrated Development Environments): São
ambientes integrados de desenvolvimento que, além
de nos prover com ótimos editores de texto, possuem
uma série de ferramentas que irão nos auxiliar
durante o desenvolvimento de programas.
Utilizaremos o Code::Blocks.
Área de edição de texto:
Onde escreveremos nosso código.
Ferramentas:
Onde encontramos uma série de
ferramentas, incluindo botões para
compilar e executar o nosso programa
em desenvolvimento.
Code::Blocks
Hands-on!
• Somente para dar uma ideia do que temos pela
frente, vamos implementar um programa em C
que resolve nosso problema com as médias dos
alunos.
– Dados de Entrada: P1, P2, T
– Dados de Saída: Media
– Algoritmo:
• Receba a nota da prova 1
• Receba a nota da prova 2
• Receba a nota do trabalho
• Some as notas e divida o resultado da soma por 3
• Mostre o resultado da divisão
Inclusão de bibliotecas
Variáveis
Lista de ingredientes (entrada e saída)
Leitura de Dados:
Atribuindo valor
às variáveis
Processamento:
Cálculo da Média
Exibição de Dados:
Mostrando resultados
Algoritmos
• O que precisamos, portanto, para resolver um
problema através de um algoritmo?
1. Leitura com muita atenção do enunciado do
problema, com a finalidade de compreender
exatamente o que se deseja resolver.
– Devemos nos ater apenas às variáveis descritas no
enunciado e ao contexto sugerido: Foco.
Foca no problema!
Algoritmos
• Problema:
Você está dirigindo um ônibus que vai de Itajubá
para São José dos Campos. Na primeira parada,
11 pessoas saem do ônibus e 9 entram. Na
segunda parada, 2 pessoas saem do ônibus e 2
entram. Na parada seguinte, 12 pessoas entram e
16 pessoas saem. Na última, 5 pessoas entram no
ônibus e 3 saem. Qual a cor dos olhos do
motorista do ônibus?
Preste atenção no enunciado!
Não se deixe distrair por informação irrelevante.
Foco no problema! Quem está dirigindo o ônibus?
Se você acertou, está no caminho certo...
Algoritmos
2. Identificação dos dados de entrada do
problema.
– Informações fornecidas e/ou necessárias para se
resolver o problema.
3. Identificação dos dados de saída.
– Informações que respondem ou resolvem o
problema.
4. Determinação do que é preciso para obter os
dados de saída a partir dos dados de entrada.
5. Construção passo a passo do algoritmo
6. Teste do algoritmo em várias situações.
Algoritmos
• Exemplo:
– Um kart se desloca a velocidade constante em
uma pista de automobilismo. A pista possui 900m
de extensão e o carro completa cada volta em 30
segundos. Qual a velocidade do carro em m/s?
Algoritmos
• Exemplo:
– Um kart se desloca a velocidade constante em uma pista
de automobilismo. A pista possui 900m de extensão e o
carro completa cada volta em 30 segundos. Qual a
velocidade do carro em m/s?
– O que é importante no enunciado?
• Velocidade constante (já formulamos uma hipótese de como
resolver o problema, pois v = ∆s/ ∆t). Será que temos esses dados?
– Dados de Entrada
• Distância percorrida: 900 m
• Tempo: 30s
– Dados de Saída: Velocidade
– Como obter?
Equação da velocidade(Movimento uniforme).
Hands-On!
Para Pensar...
• Segundo as lendas, existe um problema de lógica
muito difícil, criado por Albert Einstein.
• Apenas 2% da população conseguiria resolvê-lo.
• O problema é interessante pois não se utiliza de
pegadinhas e nem precisa de grande quantidade
de conhecimento extra.
• É necessário, simplesmente, aplicar a lógica e
perseverar!
• Vamos tentar pra a próxima aula!
Para Pensar...
• Foram pintadas 5 casas com 5 cores
diferentes. Em cada casa mora uma pessoa de
um país diferente. Cada um dos proprietários
dessas casas tem um filme favorito, um animal
de estimação diferente e programa em uma
certa linguagem de programação. Essas
características são únicas para cada
proprietário. Não existe repetição.
• Considere os seguintes fatos:
Para Pensar...
• O inglês mora na casa vermelha;
• O sueco tem cães;
• O dinamarquês gosta do filme “Avatar”;
• A casa verde fica à esquerda da branca;
• O dono da casa verde gosta do filme “A Rede Social”;
• A pessoa que programa em C cria pássaros;
• O dono da casa amarela programa em Java;
• O home que mora na casa do centro gosta de “Jurassic Park”;
• O norueguês mora na primeira casa;
• O homem que programa em Python mora ao lado da pessoa que tem gatos;
• O homem que tem um cavalo mora ao lado do homem que programa em Java;
• A pessoa que programa em C# gosta do filme “Star Wars”;
• O alemão programa em C++;
• O norueguês mora ao lado da casa azul;
• O homem que programa em Python tem um vizinho que assiste “O Hobbit”.
Problema: Qual o proprietário que tem como animal de estimação o peixe?
01   fundamentos de programação

01 fundamentos de programação

  • 1.
    Fundamentos de Programação ECOP01 Prof. MSc.João Paulo R. R. Leite joaopaulo@unifei.edu.br
  • 2.
    Agenda 2015 • Conteúdoda Disciplina – Agenda de aulas teóricas e laboratórios • Regras e Informações Adicionais – Objetivos – Notas e Presenças – Trabalho Final
  • 3.
    Como construímos programasde computador? Como centenas de linhas de código de significado enigmático se transformam em um belo aplicativo?
  • 4.
    Não há nadaexcepcionalmente difícil ou mágico na programação de computadores! Vamos ver - de maneira muito simplificada - de onde vem os programas, e do que exatamente eles são feitos.
  • 5.
    • Estrutura deum computador – CPU, Memória, HD, etc. • Bits e bytes – 1 Byte = 8 bits (binary digit: 0 ou 1) • Arquivos – Texto codificado em bytes • Compilador – Transformando código em arquivo executável • Programa – A fronteira final!
  • 6.
    Tabela ASCII (American StandardCode for Information Interchange) Mas se a letra J é igual a 74, como ficaria sua representação em byte? Quais bits a compõem na representação ASCII? Vamos aprender a converter.
  • 7.
    Algoritmos e Pensamento Lógico Prof.João Paulo R. R. Leite joaopaulo@unifei.edu.br Universidade Federal de Itajubá Aula 01:
  • 8.
    Algoritmos • Você jádeve ter passado por várias situações difíceis, resolvendo problemas cotidianos. – Ninguém chama a sequência de passos da receita de bolo da nossa mãe de algoritmo, mas, no fundo, é exatamente isso o que ela é: – Uma sequência de passos que resolve um determinado problema. – Qual era o problema? Preparar um bolo que seja gostoso!
  • 9.
    Repare como areceita primeiramente lista tudo o que será necessário e, depois, enumera passo a passo as tarefas a serem realizadas – numa determinada ordem! Nossos programas em C serão muito parecidos com isso! Lembre-se!
  • 10.
    Ingredientes Preparo Bolo Dadosde Entrada Processamento Resultados Receita de bolo: Programa de computador:
  • 11.
    Algoritmos • Mas deonde surgiu o termo “algoritmo”? – Abdullah Muhammad Bin Musa Al-Khwarizmi • Cientista, astrônomo e matemático. • Viveu em Bagdá no século IX. • Escreveu um livro-texto estabelecendo os métodos básicos para adicionar, multiplicar e dividir números, além de muitas outras coisas como extrair raiz quadrada e calcular os dígitos do PI. – Os métodos desenvolvidos por ele eram procedimentos precisos, sem ambiguidade, mecânicos, eficientes, e sempre corretos. • Eram Algoritmos!!
  • 12.
    Al-Khwarizmi Algoritmo! Mas oque é um algoritmo? No século XII, Adelardo de Bath, ao traduzir os livros de Al-Khwarizmi para o latim, cunhou o termo “Algorithmi”, que inicialmente se aplicava apenas a cálculos aritméticos, mas hoje utilizamos em muitas outras áreas.
  • 13.
    Algoritmos • Definição: Sequênciade instruções ordenadas de forma lógica para a solução de um determinado problema ou realização de alguma tarefa bem especificada. – Precisos, não ambíguos, mecânicos, eficientes, corretos – Receita de bolo, manual passo a passo. • Muitos são os algoritmos que ficaram famosos ao longo da história. Vejamos o “Algoritmo Euclidiano”, que Euclides desenvolveu para calcular o máximo divisor comum (MDC):
  • 14.
    Algoritmos • Ele podeser resumido em: 1. Dividir um número a por b, o resto é r; 2. Substituir a por b; 3. Substituir b por r; 4. Continuar a divisão de a por b até que um não possa mais ser dividido. Neste caso, a é o MDC. • Exercício: – Calcule o MDC de 1840 e 65. – Vamos ver um programa que faça a mesma coisa.
  • 15.
    Algoritmos • Podemos trazero mesmo conceito para o campo da computação, como um “conjunto de regras e procedimentos lógicos perfeitamente definidos que levam à solução de um problema em um número finito de etapas”. – Um conjunto de passos que especifica, de momento a momento, precisamente como se comportar. – Começo (entrada, ingredientes); Meio (processamento, modo de preparo) e; Fim (resultados, bolo).
  • 16.
    Algoritmos • Podemos trazero mesmo conceito para o campo da computação, como um “conjunto de regras e procedimentos lógicos perfeitamente definidos que levam à solução de um problema em um número finito de etapas”. – Um conjunto de passos que especifica, de momento a momento, precisamente como se comportar. – Começo (entrada, ingredientes); Meio (processamento, modo de preparo) e; Fim (resultados, bolo).
  • 17.
    Algoritmos • Mas oque é lógica? – “Parte da filosofia que trata das formas do pensamento em geral (dedução, indução, hipótese, inferência, etc.) e das operações intelectuais que visam à determinação do que é verdadeiro ou não” – Coerência, fundamento, faz sentido. • E na computação? – “Organização e planejamento das instruções em um algoritmo, a fim de viabilizar a implantação de um programa.”
  • 18.
    Algoritmos • Portanto, nossosalgoritmos devem seguir uma sequencia lógica! • Por exemplo: Façamos um algoritmo que calcule a média de um aluno, que realizou, no semestre, duas provas e um trabalho: Média Final = (P1 + P2 + T) / 3 Quais os ingredientes? Qual o resultado final? Qual o Algoritmo?
  • 19.
    Algoritmos • Dados deEntrada: P1, P2 e T • Dados de Saída: Média Final • Algoritmo: – Receba a nota da prova 1 – Receba a nota da prova 2 – Receba a nota do trabalho – Some as notas e divida o resultado da soma por 3 – Mostre o resultado da divisão
  • 20.
    Algoritmos • Reparem queé necessário seguir uma sequencia de instruções coerente, ou seja, lógica! – Não é possível calcular a média final se primeiro não soubermos as notas das provas e do trabalho. – Não podemos mostrar o resultado final até que a fórmula matemática seja resolvida. • E onde entram os programas de computador que iremos aprender a desenvolver? – Programas de computador nada mais são do que algoritmos expressos em uma linguagem de programação (C, C++, C#, Java, Python, Pascal, etc.).
  • 22.
    Algoritmos • No entanto,diferente dos algoritmos que utilizamos no nosso cotidiano, os programas de computador precisam seguir uma série de regras definidas pela linguagem escolhida. – Nossos programas se parecerão com receitas de bolo, mas seguirão uma sintaxe bem definida pela especificação da linguagem C. – Depois de terminados, nossos códigos terão que passar por um processo de tradução, onde as palavras e instruções serão transformados em 0’s e 1’s pelo compilador.
  • 23.
    Algoritmos • Dois tiposde software nos auxiliarão na escrita e execução de programas: – Compiladores: “Traduzem” nosso código em C para código de máquina, de baixo nível, criando um arquivo executável binário a partir de nosso arquivo de texto. Utilizaremos o GCC. – IDEs (Integrated Development Environments): São ambientes integrados de desenvolvimento que, além de nos prover com ótimos editores de texto, possuem uma série de ferramentas que irão nos auxiliar durante o desenvolvimento de programas. Utilizaremos o Code::Blocks.
  • 24.
    Área de ediçãode texto: Onde escreveremos nosso código. Ferramentas: Onde encontramos uma série de ferramentas, incluindo botões para compilar e executar o nosso programa em desenvolvimento. Code::Blocks
  • 25.
    Hands-on! • Somente paradar uma ideia do que temos pela frente, vamos implementar um programa em C que resolve nosso problema com as médias dos alunos. – Dados de Entrada: P1, P2, T – Dados de Saída: Media – Algoritmo: • Receba a nota da prova 1 • Receba a nota da prova 2 • Receba a nota do trabalho • Some as notas e divida o resultado da soma por 3 • Mostre o resultado da divisão
  • 26.
    Inclusão de bibliotecas Variáveis Listade ingredientes (entrada e saída) Leitura de Dados: Atribuindo valor às variáveis Processamento: Cálculo da Média Exibição de Dados: Mostrando resultados
  • 27.
    Algoritmos • O queprecisamos, portanto, para resolver um problema através de um algoritmo? 1. Leitura com muita atenção do enunciado do problema, com a finalidade de compreender exatamente o que se deseja resolver. – Devemos nos ater apenas às variáveis descritas no enunciado e ao contexto sugerido: Foco. Foca no problema!
  • 28.
    Algoritmos • Problema: Você estádirigindo um ônibus que vai de Itajubá para São José dos Campos. Na primeira parada, 11 pessoas saem do ônibus e 9 entram. Na segunda parada, 2 pessoas saem do ônibus e 2 entram. Na parada seguinte, 12 pessoas entram e 16 pessoas saem. Na última, 5 pessoas entram no ônibus e 3 saem. Qual a cor dos olhos do motorista do ônibus? Preste atenção no enunciado! Não se deixe distrair por informação irrelevante. Foco no problema! Quem está dirigindo o ônibus? Se você acertou, está no caminho certo...
  • 29.
    Algoritmos 2. Identificação dosdados de entrada do problema. – Informações fornecidas e/ou necessárias para se resolver o problema. 3. Identificação dos dados de saída. – Informações que respondem ou resolvem o problema. 4. Determinação do que é preciso para obter os dados de saída a partir dos dados de entrada. 5. Construção passo a passo do algoritmo 6. Teste do algoritmo em várias situações.
  • 30.
    Algoritmos • Exemplo: – Umkart se desloca a velocidade constante em uma pista de automobilismo. A pista possui 900m de extensão e o carro completa cada volta em 30 segundos. Qual a velocidade do carro em m/s?
  • 31.
    Algoritmos • Exemplo: – Umkart se desloca a velocidade constante em uma pista de automobilismo. A pista possui 900m de extensão e o carro completa cada volta em 30 segundos. Qual a velocidade do carro em m/s? – O que é importante no enunciado? • Velocidade constante (já formulamos uma hipótese de como resolver o problema, pois v = ∆s/ ∆t). Será que temos esses dados? – Dados de Entrada • Distância percorrida: 900 m • Tempo: 30s – Dados de Saída: Velocidade – Como obter? Equação da velocidade(Movimento uniforme).
  • 32.
  • 33.
    Para Pensar... • Segundoas lendas, existe um problema de lógica muito difícil, criado por Albert Einstein. • Apenas 2% da população conseguiria resolvê-lo. • O problema é interessante pois não se utiliza de pegadinhas e nem precisa de grande quantidade de conhecimento extra. • É necessário, simplesmente, aplicar a lógica e perseverar! • Vamos tentar pra a próxima aula!
  • 34.
    Para Pensar... • Forampintadas 5 casas com 5 cores diferentes. Em cada casa mora uma pessoa de um país diferente. Cada um dos proprietários dessas casas tem um filme favorito, um animal de estimação diferente e programa em uma certa linguagem de programação. Essas características são únicas para cada proprietário. Não existe repetição. • Considere os seguintes fatos:
  • 35.
    Para Pensar... • Oinglês mora na casa vermelha; • O sueco tem cães; • O dinamarquês gosta do filme “Avatar”; • A casa verde fica à esquerda da branca; • O dono da casa verde gosta do filme “A Rede Social”; • A pessoa que programa em C cria pássaros; • O dono da casa amarela programa em Java; • O home que mora na casa do centro gosta de “Jurassic Park”; • O norueguês mora na primeira casa; • O homem que programa em Python mora ao lado da pessoa que tem gatos; • O homem que tem um cavalo mora ao lado do homem que programa em Java; • A pessoa que programa em C# gosta do filme “Star Wars”; • O alemão programa em C++; • O norueguês mora ao lado da casa azul; • O homem que programa em Python tem um vizinho que assiste “O Hobbit”. Problema: Qual o proprietário que tem como animal de estimação o peixe?