Title: Programa
1Programação ComputacionalAula 2 Introdução
-Algoritmos
- Profa. Madeleine Medrano
madeleine_at_icte.uftm.edu.br
2Roteiro
- 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
3Alguns Termos Técnicos
- Hardware Componentes mecânicos e eletro-
eletrô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.
4Alguns 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.
5Alguns 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.
6Alguns 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
71ª 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
82ª 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
93ª 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 (agtb) printf (O valor de A é maior que o
valor de B) - else printf (O valor de A é menor que o valor de
B)
104ª 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
115ª 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?botidf5d9
22d97e345aa1
12Ní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
13Tradutores de linguagens de programação
14Tradutores de linguagens de programação
15Tradutores 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
16Tradutores 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
17Compilador
18Interpretador
- É 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.
19Interpretador
Cada vez que um programa interpretado tiver que
ser re-executado, todo o processo de
interpretação deverá ser refeito. Independentemen
te de ter havido ou não modificações no código
fonte do programa desde sua última execução
20Software 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)
21Algoritmo
- É 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
22Algoritmos
- 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.
23Algoritmo Bolo de Chocolate
- Aqueça o forno a 180o C
- Unte uma forma redonda
- Numa taça
- Bata
- 75g de manteiga
- 250g de açúcar
- até ficar cremoso
- Junte
- 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
24Pseudo-código e Fluxograma
Leia A Leia B Se A gt B então Imprima
A Senão Imprima B Fim Se
25Algoritmo 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.
26Algoritmo 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.
27Um programa em C
28Algoritmo de Euclides em Linguagem C
29Fim da apresentação