Você está na página 1de 32

BLU6000 – Introdução à Ciência

da Computação

1
Ciências da Computação
1. História e fundamentos;
2. Arquitetura genérica de sistemas
computacionais;
3. Método para resolução dos enunciados;
4. Algoritmo e suas representações;

2
1 - História da Computação
Ábaco; Charles Babbage; George Boole;
Hollerith; MARK I; ENIAC; John von Neumann;
Alan Turing; Mainframes; Inteligência Artificial;
IBM; Oracle; Bill Gates; Microsoft; Steve Jobs;
Apple; Computador Pessoal; Internet; Google;
Computação em Nuvem; Redes Sociais;
Computação Embarcada; Dispositivos Móveis; ...

3
Exercícios de Fixação
• Acessar o website da disciplina no Ambiente
Virtual de Aprendizagem (AVA) da UFSC:
http://moodle.ufsc.br
• Ler um dos materiais sobre a história da
computação e fazer um resumo.

4
Sistema Computacional

O que carros atuais, laptops, TVs smart,


Celulares e GPS (entre outros)
tem em comum?

5
Sistema Computacional

Têm suas funcionalidades comandadas


por programas → tem processador e
memória principal

6
Esquema geral de funcionamento
em qualquer nível SC

Entrada Processamento Saída

Exemplos:

Baixo nível: instrução→cálculo→resultado


Nível intermediário: comando de gravação →processa
endereços → grava dado
Alto nível: informa parte do nome → pesquisa no banco de 7
dados → retorna lista de nomes
2 - Arquitetura Genérica de um
Sistema Computacional
Processamento
(Cálculos)
Instruções Volátil
Memória
Dados
Processador Principal
(RAM)

Instruções (programas)
Controle Periféricos
(p.e. memórias
secundárias, visor,
Botão, teclado,
Entradas
monitor de vídeo, etc) Persistente
ou saídas

8
Pessoas, processadores e suas
linguagens
• O processador não entende a linguagem natural (das
pessoas), entende apenas o seu código de máquina;
• O conjunto de instruções (código de máquina) do
processador é difícil de ser entendido pelas pessoas;
• Solução: linguagens de programação. Quanto mais
alto o nível, normalmente mais fácil para as pessoas
entenderem;
• Contudo é necessário um programa compilador para
converter o código-fonte da linguagem de
programação utilizada em código executável (código
de máquina) do processador.
Do código-fonte ao código do
processador
Escrita do código-fonte
(p.e. Linguagem C)

Compilador de C
para um determinado
processador
(p.e. Intel, AMD)

Código executável
Erros (para o processador
determinado)
Programas de computador para
Resolver Problemas
• Um programa de computador é normalmente modelado e escrito
(codificado) por pessoas para a resolução de um problema;
• O programa operacionaliza a obtenção dos valor(es) da entrada, a
realização do processamento usando esse(s) e outros valores e a
devolução de um ou vários resultado, a saída;
• Ex1: Problema: executar um programa escolhido pelo usuário usando-se
uma tela touch:
 toque da tela; processamento da posição e do ícone do programa e
execução do programa.
• Ex2: Problema: ajustar o consumo de combustível e o desempenho do
motor:
 valor da sensor de queirma e da massa de ar; cálculo da riqueza da
mistura e geração do valor de ajuste; e controle dos bicos injetores.
Passos para a resolução de
problemas
• Diversas vezes nos deparamos com situações que exigiram
pensarmos em passos para resolvê-los.
• É tão natural que não nos damos conta:
 Fazer um bolo;
 Aproveitar a ida no centro da cidade para fazer tarefas;
 Resolver um problema de matemática;
 Andar de um ponto até outro;
• A sequência lógica dos passos é fundamental.
• As instruções devem ser claras e não ambíguas.
• Esse sequência é um algoritmo e é especificada em algum
nível de abstração.
Algoritmos
• Algoritmo é uma sequência lógica finita de passos não
ambíguos para a solução de um problema.
• Transformam uma determinada entrada em uma determinada
saída.
• Algoritmo formal: deve ser descrito precisamente em
linguagem matemática.
• Algoritmo informal: pode ser descrito em linguagem natural,
mas não pode deixar de ter passos finitos e ambíguo.
 Ex1: mostrar na tela: Alô mundo!
 Ex2: receber dois número; somá-los e mostrar o resultado
na tela.
Abstração
• Frequentemente não nos preocupamos com passos menores
de uma tarefa;
 Ex1: a condição de estar no centro da cidade para resolver
algo, pode ser descrita sem entrar nos detalhes de como
chegar (carro A, carro B, carona, etc);
 Ex2: Quando movimentamos o braço não pensamos nos
músculos e tendões utilizados.
• Todo passo pode ser dividido em passos cada vez mais
detalhados
• Abstrair: não se preocupar com determinado nível de
detalhes.
Exercícios de Fixação
• Acessar o website da disciplina no Ambiente
Virtual de Aprendizagem (AVA) da UFSC:
http://moodle.ufsc.br
• Fazer as atividades de fixação das aulas 1 e 2 e
os das aulas 3 e 4.
3. Método para Resolução dos
Problemas Enunciados
• Método para a resolução de problemas através de programas.
• Em 6 etapas:
1. Interpretar o enunciado e imaginar uma solução sendo
executada (sequência de ações com informações
solicitadas e informações apresentadas).
• Objetivo: levantar informações e organizar
mentalmente uma solução candidata.
2. Estabelecer um Algoritmo informal baseado na etapa 1.
• Objetivo: relacionar uma sequência lógica de passos
para resolver o problema, ainda que abstratos.
Método para Resolução dos
Enunciados
3. Criar um fluxograma baseado no algoritmo informal.
• Objetivo: obter um modelo gráfico das operações,
necessidade de memória (variáveis), estratégias de
repetição e divisão de fluxo de programa.
4. Realizar o teste de mesa.
• Objetivo: avaliar se a lógica algorítmica leva a uma
solução consistente.
5. Codificar em uma linguagem de programação. Compilar o
programa até não obter mais erros de compilação.
• Objetivo: traduzir o modelo para uma linguagem e
obter uma versão do programa sem erros de escrita e
semântica.
Método para Resolução dos
Enunciados
6. Realizar testes de lógica e em caso de erros avaliar a qual
etapa se deve voltar.
• Objetivo: avaliar se o programa conduz a solução
correta do enunciado, senão identificar o problema de
lógica e a etapa que se deve retornar.
4 - Representação de Algoritmos
• Observar estrutura e o fluxo
de programa.
Fluxograma Portugol
Algoritmo A01
Início A01
Programa C
Escreva “Alo Mundo”;
#include <stdio.h>
Alô Fim;
Mundo int main() {
Programa Pascal
program A01; printf(”Alo Mundo\n");
begin
Fim A01 }
writeln(”Alô Mundo");

end; 19
Fluxograma Algoritmo informal do Problema
do Ex2: Receber dois número;
somá-los; e apresentar o resultado.
Modelagem da solução do Problema
do Ex2 utilizando fluxograma:
Início
Início ou fim
Declaração e N1 ← 0
Entrada de dados inicialização
das variáveis N2 ← 0

Processamento S←0
Não importa se
N1
vem do teclado,
Tomada de decisão rede, arquivo,
N2
Sensor, etc

Saída de dados S ← N1 + N2

Não importa se S
vai para a tela,
Fluxo de programa rede, arquivo,
Fim
atuador, etc 20
Problema 3
Problema: Indicar se um número recebido é maior que
10.
Como identificar a sequência de passos e ter noção das
ações?
- Iniciar a modelagem com o algoritmo informal, depois
modelar com o fluxograma e então codificar em um
código fonte de uma linguagem de programação.
- Compilar, testar, corrigir e obter o código executável
final.
Algoritmo Informal e Fluxograma
para solução do Problema 3
Início
Algoritmo Informal de uma
X←0
possível solução para o
problema 3: X

Receber um número
Avaliar se ele é maior que 10 S
X > 10
e se for mostrar a mensagem
“é maior que 10” “X é maior
N que 10.”
Verbo no infinitivo:
indica ação →
provavelmente
terá um comando
Fim

22
Problema 4
Problema: Indicar se um número recebido é
maior, menor ou igual a 10.
1. Análise do enunciado e imaginar uma solução
sendo executada.
2. Algoritmo informal.
3. Fluxograma.
4. Teste de mesa.
5. Codificação.
6. Testes.
Algoritmo Informal e Fluxograma
para solução do Problema 4
Início
Algoritmo Informal de uma
possível solução para o N←0
problema 4: N

Receber um número; S
N > 10
Avaliar se ele é maior que 10
e se for mostrar a mensagem N
“N é maior que 10”, senão; S N, “ é maior
N < 10 que 10.”
Avaliar se ele é menor que 10
e se for mostrar a mensagem N N, ” é menor
“N é menor que 10”, senão N, “ é igual que 10.”
mostrar a mensagem “N é a 10.”
igual a 10”.
Fim
24
Problema 5
Problema: Apresentar a média de 3 números
fornecidos.
1. Análise do enunciado e imaginar uma solução
sendo executada.
2. Algoritmo informal.
3. Fluxograma.
4. Teste de mesa.
5. Codificação.
6. Testes.
Algoritmo Informal e Fluxograma
para solução do Problema 5
Algoritmo Informal de uma
Início
possível solução para o
Simplificação
problema 5: N1,N2,N3 ← 0 na descrição
do fluxograma
Receber três número; Med ← 0.0
Avaliar se ele é maior que 10 Identifica um
e se for mostrar a mensagem N1,N2,N3 número real
“N é maior que 10”, senão; (ponto flutuante)
Avaliar se ele é menor que 10 Med ←(N1+N2+N3)/3 ao invés de
inteiro
e se for mostrar a mensagem
“N é menor que 10”, senão Med
mostrar a mensagem “N é
Fim
igual a 10”.

26
Problema 5 versão 2
Problema: Apresentar a média de 3 números
fornecidos e mostrar “Aprovado” se for maior ou
igual a 7.
1. Análise do enunciado e imaginar uma solução
sendo executada.
2. Algoritmo informal.
3. Fluxograma.
4. Teste de mesa.
5. Codificação.
6. Testes.
Algoritmo Informal e Fluxograma
para solução do Problema 5 v2
Início
Algoritmo Informal de uma
N1,N2,N3 ← 0
possível solução para o
problema 5 versão 2:
Med ← 0.0

Receber três número; N1,N2,N3


Avaliar se ele é maior que 10
e se for mostrar a mensagem Med ←(N1+N2+N3)/3
“N é maior que 10”, senão;
Avaliar se ele é menor que 10 “Media: “,Med
e se for mostrar a mensagem
S
“N é menor que 10”, senão
mostrar a mensagem “N é Med<=7
igual a 10”. N “Aprovado”

Fim
28
Problema 5 versão 3
Problema: Apresentar a média de 3 números
fornecidos e mostrar “Aprovado” se for maior ou
igual a 7.
Restrição: usar estrutura de repetição para a
entrada de dados.
Usar as 6 etapas.
Algoritmo Informal e Fluxograma
para solução do Problema 5 v3
O Algoritmo Informal é o mesmo da versão 3.

Início Laço de repetição: para


iniciar vamos padronizar
num,ct,soma ← 0 que a condição será feita no
Início e o incremento da
med ← 0.0 variável usada na condição
N Será feito por último.
ct<3
S “Media: “,
num Med
S
soma ← soma+num Med<=7
N
N “Aprovado”
ct ← ct+1
Fim 30
Exercícios de Fixação
1) Usar o Problema 5 versão 3 e modificar o
número de entradas para 100.
2) Usar o Problema 5 versão 3 e modificar o
número de entradas para um número informado
pelo usuário.
3) Usar o Problema 5 versão 3 e modificar fazer
que as entradas sejam terminadas quando o
usuário fornecer o valor -99 (isso será o flag de
saída do laço de repetição).
Referências
• História da Computação (USP)
• Computer Science History (CS.Duke)
• Forbellone, A. L. V. Lógica de Programação. 3
ed.: Prentice Hall Brasil, 2005.
ISBN:8576050242 (Biblioteca Virtual UFSC)

32

Você também pode gostar