Programação Computacional
Aula 2: Introdução -Algoritmos
Profa. Madeleine Medrano
[email protected]
Roteiro


Termos técnicos
Algoritmos
 Conceito de Algoritmo
 Partes de um algoritmo
 Representação de um algoritmo
 Fluxograma
 Programas de computador
 Linguagens
 Linguagem Natural
 Linguagem de Maquina e Assembler
 Linguagem de Programação
 Pseudocódigo
Alguns Termos Técnicos

Hardware Componentes mecânicos e eletroeletrônicos que compõem o computador. Parte dura
do computador.

Software Sequencia de instruções e comandos que
fazem o computador realizar determinada tarefa.
Também chamados de programas de computador.
Devem estar armazenados em algum tipo de
memória.
Exemplos: contabilidade, folha de pagamento,
correção de provas.


Alguns Termos Técnicos
Periférico É qualquer componente do
computador (hardware) que não seja a
CPU.
 Exemplos: leitoras de disquete, CDs,
monitores, teclados, vídeo, impressoras,
etc.

Alguns Termos Técnicos

Sistema Operacional Coleção de programas que
gerencia e aloca recursos de hardware e software.

Exemplos de tarefas que um sistema operacional
realiza são:




leitura de dados pelo teclado,
impressão de informações no monitor,
gerenciamento da execução de vários programas pela CPU,
gerenciamento da memória principal e da memória
secundária para uso dos programas em execução, etc.


Exemplos: Linux,Unix, Windows98, OS2, MS-DOS, etc.
Alguns Termos Técnicos

Linguagens de Programação
 Conjunto de instruções que podem ser interpretados e executados
diretamente pela CPU de um dado computador.
 É específica para cada computador.

Serve como meio de comunicação entre o individuo que deseja
resolver um determinado problema e o computador

Gerações de linguagens
1ª geração:
linguagens em nível de maquina
2ª geração:
linguagens de montagem (Assembly)
3ª geração:
linguagens orientadas à aplicações
4ª geração:
linguagens orientadas à modularização
5ª geração:
linguagens de conhecimento





1ª Geração: Linguagens em nível de
máquina

Instrução 0010 0001 0110 1100

realiza a soma (código de operação 0010) do dado armazenado
no registrador 0001, com o dado armazenado na posição de
memória 108 (0110 1100)

Programa: sequência de zeros e uns

programação trabalhosa, cansativa e fortemente sujeita a erros
•2ª geração: Linguagens de Montagem
(Assembly)

(Linguagem de Baixo Nível)
 Representação da linguagem de máquina através de códigos
mnemônicos. Também é específica de cada máquina.

minimizar as dificuldades da programação em notação binária

Códigos de operação e endereços binários foram substituídos por
mnemônicos¹

ADD R1, TOTAL
 R1 representa o registrador 1 e TOTAL é o nome atribuído ao endereço
de memória 108

processamento requer tradução para linguagem de máquina
 ¹ Conjunto de técnicas utilizadas para auxiliar o processo de
memorização
3ª geração: Linguagens Orientadas à
Aplicação

Surgiram na década de 60

FORTRAN, Pascal, COBOL

O foco deixa de ser no processador / instruções
Programa em C:



if (a>b) printf (“O valor de A é maior que o valor de B”);
else printf (“O valor de A é menor que o valor de B”);
4ª geração: Linguagens Orientadas à
Módulos

Esta geração é essencialmente o sinônimo
para linguagens com abstração de dados.

A maioria das linguagens desta geração
focam na modularização e no encapsulamento

Ada
•
5ª geração: Linguagens de
Conhecimento

mecanismos da área de inteligência artificial

Sistemas especialistas, processadores de língua natural e
sistemas com bases de conhecimento

Um sistema de 5ª geração armazena conhecimento
complexo de modo que a máquina pode obter inferências a
partir da informação codificada

PROLOG, LISP
http://www.pandorabots.com/pandora/talk?botid=f5d922d97e345
aa1

Níveis de linguagem

linguagens de baixo nível
 primeira e segunda geração
 linguagens de alto nível
 terceira geração em diante
 Linguagem de alto nível
 Linguagem que independe do conjunto de instruções da linguagem de
máquina do computador.

Cada instrução de alto nível equivale a várias instruções da linguagem
de máquina, sendo assim mais produtiva. Ex.: Pascal, C, Algol, BASIC,
Lisp, Prolog, etc.

PS: no site http://www2.latech.edu/~acm/HelloWorld.shtml, você pode encontrar o
programa ‘Hello World’ implementado em dezenas de linguagens
Tradutores de linguagens de
programação
Tradutores de linguagens de
programação
Tradutores de linguagens de
programação

Tradutor

programa que recebe como entrada um programa escrito em uma
linguagem de programação (dita linguagem fonte) e produz como
resultado as instruções deste programa traduzidas para linguagem de
máquina (chamada linguagem objeto).

Se a linguagem do programa fonte é uma linguagem de montagem
(Assembly)

tradutor é chamado de Montador (Assembler)
 Tradutores que traduzem os programas escritos em linguagem de alto
nível

compiladores e os interpretadores
Tradutores de linguagens de
programação


Compilador
Tradutor de programas escritos em uma linguagem de
programação de alto nível para programas em
linguagem de máquina ou linguagem executável.

pode ser executado uma ou mais vezes no futuro

enquanto o código fonte do programa não for alterado,
ele poderá ser executado sucessivas vezes, sem
necessidade de nova compilação
Compilador
Interpretador

É um programa que executa outros programas escritos em alguma
linguagem de programação, instrução a instrução, enquanto ele vai
sendo executado

A execução de um programa interpretado é em geral mais lenta que o
programa compilado.

Por outro lado, o uso de programas interpretados permite que trechos
de códigos possam ser trocados por novos facilmente, fazendo com que
o programa fonte possa mudar durante sua execução.

Este é um dos grandes motivos de se usar programas interpretados em
sistemas especialistas.

Duas linguagens para as quais podemos encontrar interpretadores são
Lisp e Prolog.
Interpretador
Cada
vez
que
um
programa
interpretado tiver que ser re-executado,
todo o processo de interpretação
deverá ser refeito.
Independentemente de ter havido ou
não modificações no código fonte do
programa desde sua última execução
Software básico

Utilitários

Softwares de apoio à solução de problemas de disco,
memória, etc
Desfragmentador, limpeza de disco...







Compactadores e descompactadores de arquivos,
programas anti-virus
Vírus
Programas capazes de se instalar de forma clandestina nos
sistemas
Podem adotar procedimentos perturbadores
» fazer uma bolinha pular na tela
» declaradamente destrutivos (apagar informações)
Algoritmo

É a descrição de uma sequencia finita de ações para
realizar alguma tarefa.

Nesta aula estaremos interessados em algoritmos
computacionais, que escrevem uma sequencia de
ações que podem ser traduzidos para alguma
linguagem de programação
Algoritmos

Algoritmos usam dados e
produzem um resultado.
- uma sequência de instruções
para solucionar um problema

Um passo de um algoritmo:
 Lê dados armazenados no
computador.
 Executa operações matemáticas e lógicas sobre
dados.
 Armazena resultados.
Algoritmo: Bolo de Chocolate



Aqueça o forno a 180o C
Unte uma forma redonda
Numa taça

Bata




até ficar cremoso
Junte





75g de manteiga
250g de açúcar
4ovos, um a um
100g de chocolate derretido
Adicione aos poucos 250g de farinha peneirada
Ponha a massa na forma
Leve ao forno durante 40 minutos
Pseudo-código e Fluxograma

Ex.: imprimir maior valor
Início
Leia A;
Leia B;
Se A > B então
Imprima A;
Senão
Imprima B;
Fim Se
Leia A e B
Não
A > B?
Sim
A recebe B
Imprima A
Algoritmo de Euclides


Um exemplo é o algoritmo de Euclides para
calcular o máximo divisor comum de dois
números inteiros positivos.
Passo 1: Adote x = m e y = n;
 Passo 2: Adote r =(resto de x dividido por y);
 Passo 3: Adote novos valores x = y e y = r;
 Passo 4: Se r é diferente de 0, volte ao passo
2; senão pare com a resposta x.
Algoritmo de Euclides Estilizado


Passo1: Dados: m e n.
Passo2: x ← m.
Passo3: y ← n.
Passo4: Repita
Passo4.1: r ← resto(x, y);
Passo4.2: x ← y;
Passo4.3: y ← r;
Passo4.4: Até que r = 0.

Passo5: Imprima o resultado x.






Um programa em C
Algoritmo de Euclides em
Linguagem C
Fim da apresentação

Obrigada pela atenção
Download

baixar slides