Algoritmos
Para que o algoritmo possa ser executado por uma máquina
é importante que as instruções sejam corretas e sem ambigüidades
Além disso precisamos passar o algoritmo (conjunto de
instruções) para uma “língua” que o computador entenda.
Estas instruções são escritas através de um conjunto de
códigos (símbolos e palavras). Este conjunto de códigos possui regras de estruturação lógica e sintática própria. Dizemos que este conjunto de símbolos e regras formam uma linguagem de programação.
Linguagens de Programação
Um programa de computador é um conjunto de
instruções que representam um algoritmo traduzidos
para uma linguagem que o computador entende.
Entretanto o computador só
entende a linguagem de
máquina.
Linguagem de Máquina
É a linguagem de mais baixo nível de entendimento
pelo ser humano e a única, na verdade, entendida pelo processador .
É constituída inteiramente de números, o que torna
praticamente impossível entendê-la diretamente.
Uma instrução típica em linguagem de máquina seria
algo como: 0100 1111 1010 0110 .
Essa linguagem é também classificada como
Linguagem Assembly
É a linguagem de nível imediatamente acima da linguagem
de máquina.
Ela possui a mesma estrutura e conjunto de instruções que
a linguagem de máquina, porém permite que o
programador utilize nomes (chamados mnemônicos) e símbolos em lugar dos números.
Hoje, a linguagem assembly, é utilizada quando a
velocidade de execução ou o tamanho do programa executável gerado são essenciais.
Linguagem Assembly
A conversão da linguagem assembly para a
linguagem de máquina se chama montagem, e é
feita por um programa chamado montador (ou
assembler).
Essa linguagem é também classificada como
linguagem de segunda geração, e, assim como a
linguagem de máquina, é considerada uma
linguagem de baixo nível.
Linguagens de Alto Nível
São as linguagens de programação que possuem uma
estrutura e palavras-chave que são mais próximas da
linguagem humana, tornando os programas mais fáceis de serem lidos e escritos.
Esta é a sua principal vantagem sobre as linguagens de nível mais baixo.
Os programas escritos nessas linguagens são convertidos
para a linguagem assembly e depois passam pelo montador ou são convertidos diretamente para a linguagem de
máquina através de um programa compilador e/ou de um interpretador.
Linguagens de Alto Nível
Compilador:
É um programa que traduz todo o programa escrito em linguagem de alto nível para linguagem de
máquina gerando assim o código executável. Após essa geração o código pode ser executado.
Pode traduzir também para a linguagem assembly e
depois passar por um processo de montagem e “linkagem”
Exemplos de linguagens compiladas:
Compilador
Tradução Arquivo.exe ... a = b+1; if(a > c){ d = a+c; }else{ d = a-c; } b = b+2; ... Código Fonte: Compilador ExecutávelUma vez que o código foi traduzido, este pode ser executado quantas vezes for necessário.
Linguagens de Alto Nível
Vantagens do compilador:
Erros na sintaxe da linguagem são identificados previamente e não durante a execução.
O código executável pode ser executado infinitas
vezes sem que haja uma nova compilação (tradução para linguagem de máquina)
Linguagens de Alto Nível
Interpretador:
É um programa que reside na máquina que
executará o código feito na linguagem alto nível. A cada instrução do algoritmo o interpretador
converte o código em linguagem alto nível para linguagem de máquina e executa esse código de máquina.
Exemplos de linguagens Interpretadas:
Interpretador
... a = b+1; if(a > c){ d = a+c; }else{ d = a-c; } b = d+2; ...Código Fonte: Interpretador
Executa Traduz a = b+1; if(a > c)d = a+c;b = d+2; a = 0 b = 2 c = 1 d = 0 a = 3 b = 2 c = 1 d = 0 a = 3 b = 2 c = 1 d = 0 a = 3 b = 2 c = 1 d = 4 a = 3 b = 6 c = 1 d = 4 a = 3 verdadeirod = 4b = 6 a = 3 b = 2 c = 1 d = 4
Linguagens de Alto Nível
Vantagens do interpretador:
Geralmente mais flexíveis, já que podem interagir com o ambiente mais facilmente
Linguagens de Alto Nível
Compilador e Interpretador:
O código em alto nível é compilado gerando um código intermediário.
O código intermediário passa por um interpretador para ser executado
A máquina que executará o código necessita ter o interpretador.
Exemplos de linguagens compiladas e
interpretadas:
Hibrido: Compilador e
Interpretador
... a = b+1; if(a > c){ d = a+c; }else{ d = a-c; } ...Código Fonte: Interpretador
Executa Traduz para linguagem de máquina Compilador Traduz para código interme-diário
Linguagens de Alto Nível
Vantagens das linguagens compiladas e
interpretadas:
Mais flexíveis, já que podem interagir com o ambiente mais facilmente
Erros na sintaxe são identificados previamente e não durante a execução.
Pseudo-código
O pseudo-código é uma forma genérica de escrever um
algoritmo, utilizando uma linguagem simples e nativa a quem escreve.
É bastante utilizado quando queremos indicar os principais
passos de um algoritmo sem especificar uma linguagem de computador.
O pseudo-código é bastante utilizado em livros, artigos
científicos e revistas.
Não há um padrão único para pseudo-código. Mas normalmente
utiliza-se indicadores dos comandos básicos de algoritmos (leitura, escrita, atribuição, condicionais, loops)
Paradigmas de Programação
Um paradigma de programação fornece e
determina a visão que o programador possui sobre a
estruturação e execução do programa.
Ao principais paradigmas são:
Paradigma Imperativo (ou Procedural) Paradigma Declarativo
Paradigma Funcional
Paradigma Imperativo
Segundo o paradigma procedural, programar o
computador significa "dar-lhe ordens" que são
executadas seqüencialmente.
Nesse paradigma, a solução de um problema para
ser resolvido pelo computador envolve escrever
uma série de ações (procedimentos) que, se
Paradigma Imperativo
Também conhecido como Paradigma Procedural
“Primeiro faça isso e depois faça aquilo.”
Os comandos e os procedimentos são executados
seqüencialmente.
Fortran, Algol, Basic, C e Pascal são algumas das
linguagens de programação que seguem esse
paradigma.
Paradigma Declarativo
Segundo o paradigma declarativo, o significado de um
"programa" não é mais dado por uma sucessão de
operações elementares que o computador supostamente realiza, mas por uma base de conhecimento a respeito de certo domínio e por perguntas feitas a essa base de
conhecimento, independentemente.
Dessa maneira, o paradigma declarativo pode ser visto
como um formalismo para representar conhecimento a respeito do problema que se quer resolver, de forma
Paradigma Declarativo
Código: pai(Arthur,Silvio). pai(Arthur,Carlos). pai(Carlos,Lucio). pai(Silvio,Ricardo).avo(X,Z) :- pai(X,Y), pai(Y,Z).
?- avo(Arthur,Lucio),avo(Arthur,Ricardo). Retornará a saída: "YES"
Ou seja, “Arthur" é avô de “Lucio" e “Ricardo", pois “Arthur" é pai de “Silvio" e “Carlos", que por sua vez são pais de
Paradigma Declarativo
Também conhecido como Programação em Lógica
O paradigma declarativo caracteriza-se pelo
método preciso de descrever um problema, sem se
preocupar com qual algoritmo será utilizado para
resolvê-lo.
É baseado em axiomas (verdades universais) e
regras de inferência.
Prolog é uma linguagem lógica que ilustra essa
Paradigma Funcional
No paradigma funcional, programar o computador significa
definir funções, aplicar funções e conhecer o comportamento de funções na máquina.
Os mecanismos de controle, no programa, passam de iterativos a
recursivos.
O Haskell é uma das linguagem que utiliza esse paradigma Exemplo de código:
fatorial n = if n > 1 then n * fatorial (n-1) else 1 ou