Você está na página 1de 63

Fundamentos da

Programação de
Computadores e
Algoritmos
Prof. Joylan Nunes Maciel

Universidade Federal da Integração Latino-Americana - UNILA


Apresentação da disciplina
Ver plano de ensino disponível no SIGAA

Universidade Federal da Integração Latino-Americana - UNILA 2


Apresentação da disciplina

Alguma pergunta?
Universidade Federal da Integração Latino-Americana - UNILA 3
Sumário
• Qual a importância de saber programar?
• Apresentação da disciplina
• História e evolução da computação
• Terminologias
• Algoritmo
• Fluxogramas
• Atividades

Universidade Federal da Integração Latino-Americana - UNILA 4


Programar é importante?
Ver vídeo disponível no SIGAA

https://www.youtube.com/watch?v=Ft2UG0QcKG0

Universidade Federal da Integração Latino-Americana - UNILA 5


História e evolução da computação
Antigamente, alguns povos utilizavam
pedras, conchas e ábacos para a
realização de cálculos

ÁBACO

Universidade Federal da Integração Latino-Americana - UNILA 6


História e evolução da computação
Em 1642 Blaise Pascal construiu a primeira
máquina mecânica de calcular. Com a rotação
de engrenagens ela permitia a realização de
somas e subtrações

Universidade Federal da Integração Latino-Americana - UNILA 7


História e evolução da computação

Em 1822 o matemático Charles


Babbage construiu a máquina
diferencial, para calcular tabelas de
funções logaritmos e funções
trigonométricas

Universidade Federal da Integração Latino-Americana - UNILA 8


História e evolução da computação

Em 1842, Ada Lovelace desenvolveu os algoritmos


que permitiriam à Máquina Analítica computar os
valores de funções matemáticas. É considerada a
primeira programadora de toda a história.

Universidade Federal da Integração Latino-Americana - UNILA 9


História e evolução da computação
Cartão Perfurado Em 1890, Herman Hollerith,
nos Estados Unidos,
inventou uma máquina para
auxiliar na tabulação dos
dados do censo americano
de 1890.
O censo dos americanos
foram processados em
apenas seis semanas ao
invés de sete anos.
Foi também o fundador da
Tabulating Machine
Company que hoje chamar-
se International Business
Machines ou IBM
Universidade Federal da Integração Latino-Americana - UNILA 10
História e evolução da computação
• Enigma: máquina alemã que foi
patenteada por Arthur Scherbius (1918)
• Tinha utilidade para correio e codificar e
decodificar as mensagens do exército
alemão durante a Segunda Guerra Mundial
– Enigma G.
• Exemplo de mensagem:

Universidade Federal da Integração Latino-Americana - UNILA 11


Arq. de Computadores
História e evolução da computação
Máquina Colossus (1943)

• Alan Turing foi convocado em 1939 pelo exército britânico. Em


1940 a guerra parecia fácil para Hitler, os submarinos alemães
afundavam 200.000 toneladas de embarcações todo mês. O
único jeito de descobrir a posição dos submarinos era decifrar
suas mensagens.
• Turing criou o Colossus. No começo, elas demoravam semanas
para tornar uma mensagem compreensível. Mas, em 1942, os
ingleses já decodificavam 50 000 mensagens por mês, uma por
minuto. Os submarinos alemães passaram a ser facilmente
abatidos
• Dica: assistir o filme “The Imitation Game”
Universidade Federal da Integração Latino-Americana - UNILA 12
Arq. de Computadores
História e evolução da computação

Alan Turing
1943

Colossus
Universidade Federal da Integração Latino-Americana - UNILA 13
Arq. de Computadores
História e evolução da computação

1946 - Nos EUA surgia o O ENIAC foi projetado


ENIAC (Eletronic Numeric originalmente para
Integrator Analyser and cálculos de trajetórias
Computer) de mísseis

Universidade Federal da Integração Latino-Americana - UNILA 14


História e evolução da computação

No início da década de 1960 o mouse foi


desenvolvido

Universidade Federal da Integração Latino-Americana - UNILA 15


História e evolução da computação

Em 1973, o
minicomputador
pioneiro da XEROX,
denominado Alto,
incluía uma interface
gráfica e mouse,
possibilitando uma
edição mais fácil de
documentos e textos.
(primeiro desktop)

Universidade Federal da Integração Latino-Americana - UNILA 16


História e evolução da computação

Apple I - 1976

Apple II e II plus
- 1977 e 1979
Apple III e III plus
- 1980
IBM Personal Computer
(PC) - 1981
Universidade Federal da Integração Latino-Americana - UNILA 17
História e evolução da computação

Primeiro Notebook
Adam Osborn, 1981

IBM PC AT
1991 Apple Macintosh
1998

Palmtop e PDAs
2001

Apple Ipad
2010
Universidade Federal da Integração Latino-Americana - UNILA 18
História e evolução da computação

Tempo e evolução dos smartphones

Universidade Federal da Integração Latino-Americana - UNILA 19


História e evolução da computação
• 1º Geração (1946 - 1956)
– Válvulas Eletrônicas (ENIAC)
• 2º Geração (1957 - 1964)
– Transistores
• 3º Geração (1964 - 1981)
– Microprocessadores de
único chip programável
• 4º Geração (1982 - hoje?)
– Microprocessadores co-processados,
núcleos duplos, quádruplos...
• 5º Geração ( hoje? - ?)
– Supercomputadores, processadores
quânticos...
Universidade Federal da Integração Latino-Americana - UNILA 20
História e evolução da computação
• 1º Geração (1946 - 1956)
– Usavam válvulas que eram grandes, caras,
lentas e queimavam com grande facilidade
• Grande consumo de energia
• Ligadas manualmente por ENIAC - 1946

por Kms de fios


– Computadores de uso
científico
– Grande dimensão física
dos computadores

Universidade Federal da Integração Latino-Americana - UNILA 21


História e evolução da computação
• 2º Geração (1957 - 1964)
– Usavam transistores
• Aquecimento mínimo
Primeiro computador com
• Pequeno consumo de energia Transistor (TX-O)
• Mais confiável e veloz do
que as válvulas
– Diminuição de fios
– Primeiro computador de
uso comercial
www.youtube.com/watch?v=j2fURxbdIZs

Universidade Federal da Integração Latino-Americana - UNILA 22


História e evolução da computação
• 3º Geração (1964 - 1981)
– Usavam circuitos integrados
• Milhares de transistores montados em um único
chip
• Menor consumo de energia IBM 360 - 1964

• Melhor desempenho
• Menor tamanho
– O IBM 360 foi um dos
projetos mais bem
sucedidos da história
Universidade Federal da Integração Latino-Americana - UNILA 23
História e evolução da computação
• 4º Geração (1982 – hoje)
– Usavam circuitos integrados em larga escala
• Large Scale of Integration – LSI
• Very Large Scale of Integration – VLSI
• Ultra Large Scale of Integration - ULSI
– Microprocessadores
Tablets, desktops, notebook e
– Início dos computadores smartphones
pessoais

Universidade Federal da Integração Latino-Americana - UNILA 24


História e evolução da computação
• 5º Geração ( ? – hoje ?)
– Miniaturização
– Supercomputadores (clusters)
– Núcleos duplos, quádruplos, etc
– Processadores quânticos...

Universidade Federal da Integração Latino-Americana - UNILA 25


História e evolução da computação
Comparativo da evolução
- 30 Toneladas
- 140m²
ENIAC ~ 1950 - 18 mil válvulas
- 140 KW
- 5 mil op/s

Universidade Federal da Integração Latino-Americana - UNILA 26


História e evolução da computação
Comparativo da evolução
- 30 Toneladas - ~ 1,5 Kg
- 140m² - ~ 0.5 m²
Intel Core 2
ENIAC ~ 1950 - 18 mil válvulas - 291 milhões de
Extreme ~ 2009
- 140 KW transistores
- 5 mil op/s - 10 a 15 KW
- 3,2 bilhões op/s

Universidade Federal da Integração Latino-Americana - UNILA 27


História e evolução da computação
Comparativo da evolução
- ~ 1,5 Kg
- ~ 0.5 m²
Intel Core 2
- 291 milhões de transistores
Extreme ~ 2009
- 10 a 15 KW
- 3,2 bilhões op/s

Universidade Federal da Integração Latino-Americana - UNILA 28


História e evolução da computação
Comparativo da evolução
- ~ 1,5 Kg - ~ 0,170 Kg
- ~ 0.5 m² Zenfone 2 - ~ 0,000130 m²
Intel Core 2
- 291 milhões de transistores Smartphone - ~ 1 bilhão de transistores
Extreme ~ 2009
- 10 a 15 KW ~ 2015 - ~ 5700 mW
- 3,2 bilhões op/s - ~ 1 trilhão de op/s

Universidade Federal da Integração Latino-Americana - UNILA 29


Terminologias
 Sintaxe: como se escreve
 Semântica: significado do quê se escreve
 Sintaxe da língua portuguesa. Exemplo:
Correta: “Hoje é dia de programar”
Incorreta: “Hoji éh dya di pogramar”
Incorreta: “de Hoje é programar dia”
 Semântica. Exemplo:
“Hoje é dia de programar” = significa que no dia
de hoje serão feitos programa(s) de computador
Universidade Federal da Integração Latino-Americana - UNILA 30
Terminologias
• Linguagem de programação
• Método padronizado de fornecer instruções para um
computador executá-las
• Possui regras sintáticas e semânticas usadas para definir
um programa.
• Exemplos:

Universidade Federal da Integração Latino-Americana - UNILA 31


Terminologias
• Código – fonte (sourcecode)
• Arquivo texto contendo a descrição de um algoritmo e
procedimentos que seguem as regras de sintaxe e de
semântica de uma, ou mais, linguagens de programação

Universidade Federal da Integração Latino-Americana - UNILA 32


Terminologias
Compilação: produção de arquivo executável
à partir do código-fonte. Ex: Linguagem C
Código fonte Programa objeto
Compilador
(executável)
prog.c
prog.exe

Dados de entrada

Resultado
Adaptado do livro "Implementação de Linguagens de Programação: Compiladores", de Ana Maria de Alencar Price e Simão Sirineo Toscani.
Universidade Federal da Integração Latino-Americana - UNILA 33
Fundamentos de algoritmo
• Pense em um problema que você precisa
resolver
• Como você resolverá este problema?
• Esta solução pode ser dividida em etapas?
• Ao fim das etapas o problema foi resolvido?

Universidade Federal da Integração Latino-Americana - UNILA


Algoritmo
• A noção de algoritmo é central para toda a
computação
• Criar algoritmos para resolver os problemas é uma
das maiores dificuldades dos iniciantes em
programação
• O maior problema é entender o problema
• Algoritmo é similar a uma receita, um
procedimento, uma rotina pode ser
executada e provê um resultado

Universidade Federal da Integração Latino-Americana - UNILA 35


Algoritmo
• Definição
“Um algoritmo é um conjunto finito de regras
que fornece uma seqüência de operações
para resolver um problema específico”

Universidade Federal da Integração Latino-Americana - UNILA 36


Algoritmo
• Algoritmo
• Roteiro sequêncial e finito de operações
(instruções) necessárias para executar uma
determinada tarefa
• É um procedimento computacional que
recebe valores de entrada e produz valores
de saída
• Exemplo: receita para
fazer um bolo

Universidade Federal da Integração Latino-Americana - UNILA 37


Algoritmo
• Exemplo de algoritmo

entrada processamento saída

Algoritmo (instruções da receita de bolo):


1) Bater duas claras de ovo;
2) Adicionar duas gemas de ovo;
3) Adicionar um xícara de açúcar;
4) Adicionar duas colheres de manteiga;
5) Adicionar uma xícara de leite de coco;
6) Adicionar farinha e fermento;
7) Colocar numa forma e levar ao forno em fogo baixo.
Universidade Federal da Integração Latino-Americana - UNILA 38
Algoritmo
• Características:
1. Finitude: Deve sempre terminar após um número
finito de passos
2. Definição: Cada passo de um algoritmo deve ser
precisamente definido.
3. Entrada: Deve ter zero ou mais entradas
4. Saída: Deve ter uma ou mais saídas
5. Efetividade: Deve ser efetivo. Todas as operações
devem ser suficientemente básicas de modo que
possam ser executadas com precisão em um
tempo finito por um humano usando papel e lápis
Universidade Federal da Integração Latino-Americana - UNILA 39
Algoritmo
• Abstração: um mesmo problema pode
ser solucionado por diferentes algoritmos
P PROBLEMA

ALGORITMO 1 ALGORITMO 2 ALGORITMO 3

SOLUÇÃO

Universidade Federal da Integração Latino-Americana - UNILA 40


Algoritmo
• Exemplo 1 Início
1 Repetir 10 vezes os quatro passos abaixo:
• Na academia o 2 Levantar e abaixar braço direito;
3 Levantar e abaixar braço esquerdo;
instrutor solicita 4 Levantar e abaixar perna esquerda;
5 Levantar e abaixar perna direita.
Fim

• Exemplo 2 Início
1Leia o valor do comprimento;
• Calcular área de 2Leia o valor da largura;
3Área recebe comprimento x largura;
um retângulo 4Imprimir área na tela do computador.
Fim

Universidade Federal da Integração Latino-Americana - UNILA 41


Algoritmo
Início
• Exemplo 3a 1 Colocar o ovo na frigideira;
• Fritar um ovo 2 Esperar o ovo ficar frito;
3 Retirar o ovo da frigideira;
• Versão Fim
simplificada
Início
1 Retirar o ovo da geladeira;
2 Colocar a frigideira no fogo;
• Exemplo 3b 3 Colocar óleo na frigideira;
4 Esperar até o óleo ficar quente;
• Fritar um ovo 5 Quebrar o ovo separando a casca;
• Versão mais 6 Colocar o conteúdo do ovo na frigideira;
7 Esperar um minuto;
detalhada 8 Retirar o ovo da frigideira;
9 Apagar o fogo;
Fim

Universidade Federal da Integração Latino-Americana - UNILA 42


Algoritmo
• Exercício 1: Apresente o algoritmo para
fazer uma ligação telefônica no orelhão?

Universidade Federal da Integração Latino-Americana - UNILA 43


Algoritmo
• Exercício 1: Apresente o algoritmo para
fazer uma ligação telefônica no orelhão?
Início
1. Tirar o telefone do gancho;
2. Ouvir o sinal de linha;
3. Introduzir o cartão;
4. Teclar o número desejado; Aqui nós temos dois caminhos,
5. Se der o sinal de chamar: ou seja, dois possíveis fluxos
5.1 Conversar; de execução (5.1 ou 6.1), onde
5.2 desligar; um só é executado pelo
5.3 Retirar o cartão; algoritmo!
6. Senão
6.1 Coloca telefone no gancho;
6.2 Repetir passo 1.
Fim
Universidade Federal da Integração Latino-Americana - UNILA 44
Algoritmo
• Exercício 2: Apresente o algoritmo de seu
último Domingo (tudo o que fez).

Universidade Federal da Integração Latino-Americana - UNILA 45


Algoritmo
• Exercício 2: Apresente o algoritmo de seu
último Domingo (tudo o que fez).
Algoritmo de domingo.
1. Acordar.
2. Tomar o café.
3. Se estiver sol vou à praia senão leio o jornal.
4. Almoçar.
5. Ir ao cinema.
6. Fazer uma refeição.
7. Ir dormir.
Final do domingo
Universidade Federal da Integração Latino-Americana - UNILA 46
Algoritmo
• Exercício 3: Apresente o algoritmo para vir
até a Unila utilizando o transporte coletivo.

Universidade Federal da Integração Latino-Americana - UNILA 47


Algoritmo
• Exercício 3: Apresente o algoritmo para vir
até a Unila utilizando o transporte coletivo.
Algoritmo Onibus.
1. Ir até ponto de ônibus;
2. Esperar o ônibus;
3. Entrar no ônibus;
4. Se tem cartão
4.1 Pagar a passagem com o cartão;
5. Senão
5.1 Pagar com dinheiro;
6. Esperar chegar na entrada da Itaipu;
7. Descer no ponto da Itaipu;
8. Ir ao ponto do PTI;
9. Aguardar o ônibus do PTI;
10. Entrar no ônibus do PTI;
11. Esperar chegar na Unila;
12. Descer no ponto da Unila;
Final Onibus

Universidade Federal da Integração Latino-Americana - UNILA 48


Algoritmo
• Representação
• Linguagem Natural - expressos diretamente
em linguagem natural, como nos exemplos
anteriores
• Fluxograma Convencional - representação
gráfica que emprega formas geométricas
padronizadas para indicar as ações e decisões
• Pseudo-Linguagem - intermediária entre a
linguagem natural e uma linguagem de
programação para descrever os algoritmos
Universidade Federal da Integração Latino-Americana - UNILA 49
Fluxograma
• É a representação de algoritmos que emprega
várias formas geométricas para descrever cada
uma das possíveis ações
• Cada forma se aplica a uma determinada ação
como está indicado

Atribuições e Entrada de Entrada


Início e fim de
cálculos de dados manual de
algoritmo Decisões valores dados
Impressão/saída
de dados

Ligação entre símbolos


Ligação entre páginas

Universidade Federal da Integração Latino-Americana - UNILA 50


Algoritmo
• Linguagem Natural
– Cálculo do zero da equação ax+b=0
1. Início de programa Locais
2. Declare a, b, x onde
3. Leia a, b guardar
Pseudocódigo

4. Se a é diferente de 0 entãoos valores


4.1. x <= -b/a
4.2. Imprimir x
5. Senão
5.1 Imprimir “Não há zero”
6. Fim de programa
Universidade Federal da Integração Latino-Americana - UNILA 51
Fluxograma
• Fluxograma Convencional
– Cálculo do zero da equação ax+b=0
1. Início de programa Início
2. Declare a, b, x
3. Leia a, b Declare a, b, x
4. Se a é diferente de 0 então
x <= ax+b=0 Leia a, b
Imprimir x
Senão
Imprimir “Não há zero” Se a é diferente de 0 então
5. Fim de programa

verdadeiro falso

x = -b/a Imprimir ̈Não há zero”

Imprimir x

Fim
Universidade Federal da Integração Latino-Americana - UNILA 52
Fluxograma
• Exemplo
Atividades de um domingo

Universidade Federal da Integração Latino-Americana - UNILA 53


Fluxograma
• Exemplo
Atividades de um domingo

Universidade Federal da Integração Latino-Americana - UNILA 54


Fluxograma
• Exemplo
Atividades de um domingo

Universidade Federal da Integração Latino-Americana - UNILA 55


Fluxograma

• O que faz este


algoritmo?
falso verdadeiro

falso verdadeiro

Universidade Federal da Integração Latino-Americana - UNILA 56


Editores de Fluxograma Online
• Faça no seu caderno, ou se quiser, utilize
um dos editores de fluxogramas online
gratuito. Ex:
– https://www.draw.io (sugestão)
– https://www.lucidchart.com
– https://cacoo.com/sample
– Visio (Windows)
– DIA (Linux/Windows)

Universidade Federal da Integração Latino-Americana - UNILA


Atividades

1) Faça o fluxograma que realiza a multiplicação de dois números


e exibe o resultado.

2) Faça o fluxograma de um algoritmo que recebe como dados de


entrada a distância total (em quilômetros) percorrida por um
automóvel e a quantidade de combustível (em litros)
consumida para percorrê-la. Calcule e apresente o consumo
médio de combustível.

consMedio = distPercorrida / litrosGastos

Universidade Federal da Integração Latino-Americana - UNILA 58 58


Atividades

3) Faça o fluxograma de um algoritmo que leia dois valores


inteiros e apresente a diferença absoluta entre o maior e o menor.

4) Faça o fluxograma do algoritmo que calcula a média aritmética


entre duas notas de um aluno e apresenta a sua situação, que
pode ser “aprovado” se a nota for maior que 7.0 ou “reprovado”.

Universidade Federal da Integração Latino-Americana - UNILA 59 59


Atividades

5) Elabore um fluxograma que calcule o valor da área de um


triângulo equilátero, sendo fornecidos os valores da base e
altura.
Fórmula: area = (base×altura) / 2

6) Faça um fluxograma que solicita o valor do raio de uma


circunferência. Depois efetue o cálculo da área da
circunferência e apresente-a. Use a fórmula abaixo no cálculo
da área considerando PI= 3.1415:
Fórmula: area = PI × raio2

Universidade Federal da Integração Latino-Americana - UNILA 60 60


Atividades
7) Faça o fluxograma de um algoritmo que lê um valor inteiro
correspondente a ao dia da semana (1-domingo, 2-segunda-
feira, 3-terça-feira, ... , 7-sábado). O programa deve apresentar
como saída o dia da semana correspondente ao número inteiro
informado. Se informado o valor 3, deve ser apresentado na tela
“Terça-feira”.

Universidade Federal da Integração Latino-Americana - UNILA 61


Bibliografias
 SEBESTA, R. W. Conceitos de Linguagens de Programação. Porto
Alegre:Bookman, 2000.
 ALVES, William Pereira. Lógica de programação de computadores:
ensino didático. São Paulo: Editora Érica, 2010 3. reimp.2013.
 MAYER, Roberto Carlos. C, completo e total. 3. ed. São Paulo:
Pearson Makron Books, 1997. 827 p. ISBN: 9788534605953.
 Valentim, V. A. Aula 02: O que é algoritmo? Notas de Aula.
Disponível em <http://tscvalentin.blogspot.com/2008/02/pda-aula-
02-o-que-algoritmo.html>, acessado em agosto de 2011, 2008.
 CRUZ, Adriano J. O. Algoritmos, Apostila, Disponível em
<http://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htm>,
Acessado em agosto de 2011, 2007.

Universidade Federal da Integração Latino-Americana - UNILA 62


Bibliografias
• VIEIRA, N. J. Introdução aos Fundamentos da Computação,
Pioneira Thomson, 2006.
• MURDOCCA, M. J. , Heuring V. P., Introdução a Arquitetura de
Computadores, Campus Editora, 2001.
• ROSS, K. W., Kurose, James F. Redes de Computadores e a
Internet: Uma Abordagem Top-Down, Addison-Wesley, 2006.
• SÍLVIA F. S. Componentes Funcionais do Computador – Notas de
aula, disponível em
<http://www.ic.uff.br/~aconci/componentes.html>, Acesso em março
de 2011.
• BOGORNY, Vania, Introdução à Programação - Notas de Aula,
Disponível em <http://www.inf.ufrgs.br/~vbogorny>. Acessado em
julho de 2011.

Universidade Federal da Integração Latino-Americana - UNILA 63

Você também pode gostar