29
Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Embed Size (px)

Citation preview

Page 1: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Lógica de Programação

Prof. Msc. Raul ParadedaAula 2

Introdução

Page 2: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Aula 2• Introdução;• Conceituação;• Arquitetura do computador;• Linguagens:

Linguagens de Baixo nível; Linguagens de Programação;

• Tradutor: Compilador; Interpretador;

• SO;• Java;• Linguagem Natural;• Características da Linguagem;

Page 3: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Introdução• O que significa algoritmos de

programação; Um procedimento passo a passo para a

solução de um problema. Uma seqüência detalhada de ações a serem

executadas para realizar determinada tarefa.

• Dêem um exemplo de algoritmo?• Qualquer atividade do dia-a-dia pode ser

um exemplo de algoritmo.

Page 4: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

IntroduçãoFazer um ovo frito por exemplo.A tarefa de fazer um ovo frito tem todas as

características de um algoritmo.Ela tem uma seqüência detalhada de passos,

descrita no modo de preparo. Apresenta a tarefa a ser realizada, que é um

ovo frito. E também podemos identificar na receita entradas (no caso o ovo, óleo, a panela, sal fino) e uma saída, que é o ovo frito.

Page 5: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Introdução• Praticamente tudo pode ser descrito em

forma de algoritmos.

• Entretanto, os algoritmos precisam ser corretos, eficientes e elegantes. Correto – deve fazer o que se espera, ou seja,

executa o que sua documentação descreve. Eficiente – se não desperdiça tempo. Há a

possibilidade de haver dois algoritmos que resolvem o mesmo problema.

Elegantes – ser simples, limpo, sem enfeites. Não utilizar recursos desnecessários para sua solução.

Page 6: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Introdução

• Se praticamente tudo pode ser descrito em forma de algoritmos por que algoritmos ficou ligado a computação ?

• Primeiramente é necessário ter o conhecimento dos principais conceitos para melhor compreender como um programa é visto pelo computador.

Page 7: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

ConceituaçãoPrograma: Implementação concreta de um algoritmo.

Ou conjunto de algoritmos a serem executados pela máquina, também podemos dizer que é um conjunto de instruções ordenadas com um determinado fim.◦ Estes programas podem ser escritos em Linguagem de

máquina, ou ainda em linguagens de programação tais como: C, C++, Cobol, VB, dentre outros.

Aplicação: Conjunto de rotinas para tratamento de uma determinada necessidade, podem ser compostas de um ou mais programas. Como Microsoft Office, dentre outros.

Hardware: É o conjunto de dispositivos físicos do computador, o equipamento.

Software: São os programas de computadores.

Page 8: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Conceituação• Firmware: Conhecido como software embarcado, trata-

se de um software que controla o hardware diretamente.• Linguagem de Máquina: - é a linguagem que o

computador entende, cujo "alfabeto" é composto apenas de "1's"e "0's" (linguagem binária).

• Linguagem de Programação: é uma linguagem formal, utilizando termos que se aproximam da linguagem humana, que pode ser traduzida por programas especiais para linguagem de máquina.

• Algoritmo: Lógica utilizada para criação de um programa. Nela independe de linguagem de programação, porém as linguagens de programação precisam usar algoritmos para implementação de uma lógica específica.

Page 9: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Arquitetura do computador

UCP – Unidade Central de Processamento

Memória

Dispositivos de Entrada/Saída

Conexões externas

Teclado Mouse MonitorImpressora...

Barramento

De acordo com Andrew Tanenbaum a arquitetura do computador moderno é composta por:

Page 10: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Arquitetura do computador

• A parte física do computador é chamada de hardware, e é composta por: Uma UCP, Memória, Dispositivos de E/S. O barramento faz a ligação desses

componentes.

Page 11: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagens• O conjunto de instruções, que será executado

pelo processador, é chamado de linguagem de máquina.

• As linguagens de programação são classificadas de acordo com a similaridade que esta linguagem tem com a linguagem de máquina.

Mais parecida com linguagem de máquina.

Mais parecida com linguagem de programação.

Page 12: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagens Um computador compreende apenas linguagens

compostas por números 0’s e 1’s. Então imagina criar um programa utilizando apenas

esses números, isso seria extremamente complicado. Por esse motivo foi necessário a criação de um

código que relacionasse a linguagem de máquina a uma linguagem mais fácil de ser compreendida.

Dessa forma, foi criada uma linguagem de montagem (chamada Assembly) que é um código que tem uma instrução alfanumérica para cada instrução numérica em linguagem de máquina.

Page 13: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagem de baixo nívelPara que um programa criado na

linguagem Assembly possa ser entendido pelo computador, é necessário que seu código seja traduzido para o código de máquina.

Esta tradução é realizada por um programa chamado Assembler.

Código em linguagem de assembly.

AssemblerCódigo em linguagem de máquina.

Page 14: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagem de baixo de nível Exemplo de um programa Assembly que muda o tamanho

do cursor:.MODEL SMALL ;modelo de memória .STACK ;espaço de memória para instruções do programa na pilha

.CODE ;as linhas seguintes são instruções do programa mov ah,01h ;move o valor 01h para o registrador ah mov cx,07h ;move o valor 07h para o registrador cx int 10h ;interrupção 10h mov ah,4ch ;move o valor 4ch para o registrador ah int 21h ;interrupção 21h

END ;finaliza o código do programa

Page 15: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagem de baixo nível Exemplo 2:

;exemplo2 .model small .stack .code

mov ah,2h ;move o valor 2h para o registrador ah mov dl,2ah ;move o valor 2ah para o registrador dl ;(é o valor ASCII do caractere *) int 21h ;interrupção 21h mov ah,4ch ;função 4ch, sai para o sistema operacional

int 21h ;interrupção 21h end ;finaliza o programa

Este programa imprime o caracter * na tela.

Page 16: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagem de baixo nível A linguagem Assembly é muito próxima da linguagem

de máquina, por esse motivo é considerada uma linguagem de baixo nível.

Cada processador apresenta uma linguagem de Assembly. Dessa forma, quando for utilizado um programa em processador não compatível com o qual foi escrito inicialmente, é necessário que o código tenha que ser refeito.

Isso é chamado de portabilidade.

Page 17: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagem de Programação A implementação de programas na linguagem de

baixo nível ainda é muito complexa. Então para aumentar a produtividade dos programadores foram criadas as linguagens de programação de alto nível.

São linguagens que independem do processador, apresentam um código mais elaborado, contemplam operações mais complexas e mais próximas da “lógica humana”.

Entretanto, algumas dependem do sistema operacional a ser executado.

Page 18: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

TradutorPara serem processadas por um processador

as linguagens fazem o uso de um tradutor para a linguagem de máquina, chamado de compilador ou interpretador.

Page 19: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Compilador Como é o funcionamento do compilador?

O compilador a partir do código em linguagem de alto nível, chamado de código fonte, gera um arquivo com o código em linguagem de máquina, conhecido como código-objeto.

Esse código-objeto fica em disco e quando for o momento da sua execução ele é carregado para a memória.

Código fonte em linguagem de alto nível

CompiladorCódigo em linguagem de máquina.

Page 20: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Compilador Características:

Traduz cada instrução de uma única vez, independente de quantas vezes o programa é executado.

Tempo de execução mais rápido.

Page 21: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Interpretador O interpretador, diferente do compilador, não gera um

código-objeto, as instruções são traduzidas para a linguagem de máquina em tempo de execução.

Características:Maior tempo de execução.Não gera instruções que não serão utilizadas.

Código fonte em linguagem de alto nível

Interpretador Memória

Tradução de cada instrução na fase de execução do programa

Page 22: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagens de Baixo Nível Linguagens de baixo nível : são linguagens voltadas

para a máquina, isto é, são escritas usando as instruções do microprocessador do computador.

Vantagens:

maior velocidade de processamento

menor espaço de armazenamento

Desvantagens:pouca portabilidadedifícil programação

Page 23: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagens de Alto Nível Linguagens de alto nível: são linguagens voltadas para o

ser humano.◦ Vantagens:

Por serem compiladas ou interpretadas, tem maior portabilidade.

A programação torna-se mais fácil.◦ Desvantagens:

Em geral, as rotinas geradas (em linguagem de máquina) são mais genéricas e portanto mais complexas e por isso são mais lentas e ocupam mais memória.

Exemplos de linguagem de alto nível: Pascal, C, Cobol, Java, entre outras. Além disso, os códigos são portáveis.

Page 24: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

JAVAComo mencionado, algumas linguagens

de programação ficam dependentes ao SO em que o código foi escrito.

A linguagem Java permite uma portabilidade maior que as outras linguagens de programação de alto nível.

Isso se deve ao fato de não gerar um código objeto executável, em vez disso ele gera um código “pseudo-executável”, chamado de bytecode.

Page 25: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

JAVA Para que esse código possa ser executado em

qualquer SO, é necessário que mais uma camada de software esteja instalada.

Essa camada funciona como um SO genérico, e essa camada é chamada de Máquina Virtual Java, ou Java Virtual Machine (JVM).

Essa JVM faz a tradução dos bytecodes escritos em Java para o código executável daquele SO, isso faz com que qualquer programa escrito em Java possa ser executado em qualquer SO que tenha a JVM devidamente instalada.

Page 26: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

JAVA

Máquina A

Máquina B

Código fonte Java

Compilador Bytecode Assembly

Memória JVM

Tradução de cada instrução na fase de execução do programa

Page 27: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Linguagem Natural

• Não se pode fazer um programa para um computador na linguagem natural, ou seja, do jeito que escrevemos. Pois a linguagem natural é dirigida para orientar pessoas e não máquinas, quem faz este papel é a linguagem de programação.

• As linguagens de programação devem apresentar algumas características, que são:

Page 28: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Características da Linguagem Rigidez sintática: Um compilador consegue fazer traduções

sobre um idioma, com construções muito bem definidas.

Rigidez semântica: O computador não pode lidar com ambigüidades, dessa forma, um programador deve exprimir sua intenção de forma exata.◦ Exemplo: A pessoa ouviu o barulho da janela.

◦ Pode ser interpretado pelo menos de três maneiras:

A velhinha ouviu o barulho produzido pela janela.

A velhinha estava junto à janela e ouviu o barulho.

A velhinha ouviu o barulho que veio através da janela.

Qualquer máquina seria incapaz de interpretar o que realmente está acontecendo, mesmo que o contexto pudesse ajudar. Por isso, a rigidez semântica é extremamente importante.

Page 29: Lógica de Programação Prof. Msc. Raul Paradeda Aula 2 Introdução

Exercícios1. O que é um algoritmo?

2. Qual a diferença entre programa e aplicação?

3. Como é a arquitetura do computador moderno?

4. Qual a diferença entre linguagem de baixo nível e de alto nível?

5. O que é linguagem de máquina?

6. O que é portabilidade?

7. Qual a diferença entre compilador e interpretador, cite suas vantagens e desvantagens?

8. Qual a diferença do método de compilação Java?

9. Comente sobre as características que uma linguagem de programação deve apresentar.