Você está na página 1de 36

Fundamentos de

Programação

Prof. MSc. Mayk Barreto


profmaykbarreto@gmail.com
• 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.
Aula 01:

Algoritmos e
Pensamento Lógico

Prof. João Paulo R. R. Leite


joaopaulo@unifei.edu.br
Universidade Federal de Itajubá
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!
Receita de bolo:

Ingredientes Preparo Bolo

Programa de computador:

Dados de Entrada Processamento Resultados


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!!
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.

Al-Khwarizmi → Algoritmo!
Mas o que é um algoritmo?
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.
Code::Blocks
Ferramentas:
Onde encontramos uma série de
ferramentas, incluindo botões para
compilar e executar o nosso programa
em desenvolvimento.

Área de edição de texto:


Onde escreveremos nosso código.
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?

Você também pode gostar