Algoritmos e Técnicas de Programação

56
Algoritmos e Técnicas de Programação Sumári o Introduçã o Lógic a Lógica de Programação Lingua gens Lingua gem de Baixo Nível Concei tuação Arquit etura do Comput ador Prof. Msc. Raul Benites Paradeda 1 - Introdução Lin gua gem de Pro gra maç ão Tra dut or Com pil ado r Int erp ret ado r Lin gua gen s Jav a Lin gua gem Nat ura l Exe rcí cio s Ati vid ade s de Lóg ica e Lin ks

description

Algoritmos e Técnicas de Programação. Prof. Msc. Raul Benites Paradeda. Sumário. Introdução. Conceituação. Arquitetura do Computador. 01 - Introdução. Lógica. Lógica de Programação. Linguagens. Linguagem de Programação. Tradutor. Compilador. Interpretador. Linguagens. Java. - PowerPoint PPT Presentation

Transcript of Algoritmos e Técnicas de Programação

Page 1: Algoritmos e Técnicas de Programação

Algoritmos e Técnicas de Programação

Sumário Introdução

Lógica Lógica de Programação

Linguagens

Linguagem de Baixo Nível

Conceituação

Arquitetura do

Computador

Prof. Msc. Raul Benites Paradeda

01 - Introdução

Linguagem

de Programaç

ão

Tradutor

Compilad

or

Interpretador

Linguagens Java

Linguagem Natur

al

Exercícios

Atividades de

Lógica e

Links

Page 2: Algoritmos e Técnicas de Programação

Sumário 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: Algoritmos e Técnicas de Programação

Introdução

Com o uso crescente dos recursos da Tecnologia da Informação (TI) para resolução de problemas do dia a dia das empresas e das pessoas, ocorreu um crescimento nos Cursos relacionados à área.

Para que a TI possa resolver esses problemas, é necessário construir ALGORITMOS e transformá-los em programas de computador.

Page 4: Algoritmos e Técnicas de Programação

Introdução

O que significa algoritmos?

Page 5: Algoritmos e Técnicas de Programação

Introdução

O que significa algoritmos? Um procedimento passo a passo para a

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

executadas para realizar determinada tarefa.

Page 6: Algoritmos e Técnicas de Programação

Introdução

Dêem um exemplo de algoritmo?

Page 7: Algoritmos e Técnicas de Programação

Introdução

Qualquer atividade do dia-a-dia pode ser um exemplo de algoritmo.

Page 8: Algoritmos e Técnicas de Programaçã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 sequê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 9: Algoritmos e Técnicas de Programação

Introdução

Praticamente tudo pode ser descrito em forma de algoritmos.

Entretanto, os algoritmos precisam ser corretos, eficientes e elegantes.

Page 10: Algoritmos e Técnicas de Programação

Introdução

Correto – deve fazer o que se espera, ou seja, executa o que sua documentação descreve.

Page 11: Algoritmos e Técnicas de Programação

Introdução

Eficiente – se não desperdiça tempo. Há a possibilidade de haver dois algoritmos que resolvem o mesmo problema.

Page 12: Algoritmos e Técnicas de Programação

Introdução

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

Page 13: Algoritmos e Técnicas de Programação

Introdução

Os principais problemas encontrados no desenvolvimento de algoritmos são: Dificuldade na resolução de problemas; Dificuldade na interpretação de enunciados; e Dificuldade em abstrair e formalizar

informações.

Page 14: Algoritmos e Técnicas de Programação

Introdução

Por esse motivo, é necessário desenvolver essas habilidades, começando pela solução de problemas sem a necessidade do uso de ferramentas computacionais.

Page 15: Algoritmos e Técnicas de Programação

Introdução

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

Page 16: Algoritmos e Técnicas de Programação

Conceituação

Programa: 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.

Page 17: Algoritmos e Técnicas de Programação

Conceituação

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

Page 18: Algoritmos e Técnicas de Programação

Conceituação

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

Software: São os programas de computadores.

Page 19: Algoritmos e Técnicas de Programação

Conceituação

Firmware: Conhecido como software embarcado, trata-se de um software que controla o hardware diretamente.

Page 20: Algoritmos e Técnicas de Programação

Conceituação

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.

Page 21: Algoritmos e Técnicas de Programação

Conceituação

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 22: Algoritmos e Técnicas de Programaçã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 23: Algoritmos e Técnicas de Programaçã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 24: Algoritmos e Técnicas de Programação

Lógica

Lógica – modo de raciocinar: as soluções dos problemas utilizam a lógica para serem criadas, ou seja, elas são ordenadas de uma forma que sejam possíveis de ser realizadas e de uma maneira que essa forma seja a mais adequada para o que se deseja obter.

Page 25: Algoritmos e Técnicas de Programação

Lógica de Programação Alguns procedimentos para solucionar certos

problemas foram padronizados, esses são: Estrutura sequencial – indica que uma

operação deve ser realizada em sequência à outra, ou seja, determina a ordem com que as operações devam ser realizadas;

Page 26: Algoritmos e Técnicas de Programação

Lógica de Programação Estrutura de decisão – indica que, em um

determinado momento, será necessário tomar uma decisão sobre qual operação realizar de acordo com um determinado critério;

Page 27: Algoritmos e Técnicas de Programação

Lógica de Programação Estrutura de repetição – indica que

determinadas operações devem ser repetidas uma determinada quantidade de vezes.

Page 28: Algoritmos e Técnicas de Programação

Linguagens

O conjunto de instruções, que será executado pelo processador, é chamado de linguagem de máquina.

Page 29: Algoritmos e Técnicas de Programação

Linguagens

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 30: Algoritmos e Técnicas de Programaçã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.

Page 31: Algoritmos e Técnicas de Programação

Linguagens

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 32: Algoritmos e Técnicas de Programação

Linguagem de baixo nível

Para 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.

Page 33: Algoritmos e Técnicas de Programação

Linguagem de baixo nível

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

Código em linguagem de assembly.

AssemblerCódigo em linguagem de máquina.

Page 34: Algoritmos e Técnicas de Programaçã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 35: Algoritmos e Técnicas de Programaçã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.

Page 36: Algoritmos e Técnicas de Programação

Linguagem de baixo nível

Isso é chamado de portabilidade.

Page 37: Algoritmos e Técnicas de Programaçã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.

Page 38: Algoritmos e Técnicas de Programação

Linguagem de Programação

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 39: Algoritmos e Técnicas de Programação

Tradutor

Para 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 40: Algoritmos e Técnicas de Programaçã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 41: Algoritmos e Técnicas de Programaçã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 42: Algoritmos e Técnicas de Programaçã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 43: Algoritmos e Técnicas de Programaçã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 armazenamentoDesvantagens:

pouca portabilidadedifícil programação

Page 44: Algoritmos e Técnicas de Programaçã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 45: Algoritmos e Técnicas de Programação

JAVA

Como 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.

Page 46: Algoritmos e Técnicas de Programação

JAVA

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 47: Algoritmos e Técnicas de Programação

JAVA

Para que esse código possa ser executado em qualquer SO, é necessário que mais uma camada de software esteja instalada.

Page 48: Algoritmos e Técnicas de Programação

JAVA

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 49: Algoritmos e Técnicas de Programaçã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 50: Algoritmos e Técnicas de Programaçã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 51: Algoritmos e Técnicas de Programação

Características da Linguagem

Rigidez sintática: Um compilador consegue fazer traduções sobre um idioma, com construções muito bem definidas.

Page 52: Algoritmos e Técnicas de Programação

Características da Linguagem

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 53: Algoritmos e Técnicas de Programação

Exercícios1. O que é um algoritmo?2. O que significa dizer que um algoritmo precisa ser correto,

eficiente e elegante?3. Comente sobre os principais problemas na elaboração de

um algoritmo.4. Qual a diferença entre programa e aplicação?5. Como é a arquitetura do computador moderno?6. Comente sobre lógica e os procedimentos para solucionar

problemas.7. Qual a diferença entre linguagem de baixo nível e de alto

nível?8. O que é linguagem de máquina?9. O que é portabilidade?10. Qual a diferença entre compilador e interpretador, cite suas

vantagens e desvantagens?11. Qual a diferença do método de compilação Java?12. Comente sobre as características que uma linguagem de

programação deve apresentar.

Page 54: Algoritmos e Técnicas de Programação

Atividade em grupo.1. O grupo tem em mãos duas jarras: uma com capacidade para quatro

litros; e outra, com capacidade para três litros. As jarras não possuem marcações intermediárias, de forma que, se qualquer uma das jarras não estiver completamente cheia, não será possível saber quanta água haverá dentro dela. Existe uma torneira disponível para utilização do grupo e um ralo que permite que a água seja jogada fora. As jarras podem ser manipuladas das seguintes formas:

a. Encher completamente uma jarra, utilizando a torneira;

b. Passar a água de uma jarra para outra; e

c. Esvaziar completamente uma jarra, jogando a água que estiver dentro dela no ralo.

  O objetivo do grupo é indicar como as jarras devem ser manipuladas,

de modo que, ao final da manipulação, qualquer uma das jarras contenha exatamente dois litros de água.

Page 55: Algoritmos e Técnicas de Programação

Atividade em grupo.2. Um canoeiro deseja levar seus três pertences de um lado do rio para

o outro, porém a canoa só consegue transportar o canoeiro e um pertence de cada vez. Os pertences em questão são uma cabra, um maço de couve e um lobo. Indique como o canoeiro pode fazer para transportar todos os seus pertences para o outro lado, levando em consideração que:

 

a. Se a cabra ficar sozinha com a couve, sem o canoeiro por perto, ela come a couve;

b. Se o lobo ficar com a cabra, sem o canoeiro por perto, ele como a cabra.

Page 56: Algoritmos e Técnicas de Programação

Links. Alguns sites com jogos de raciocínio lógico e que podem ser usados

como apoio para a aula: 1. Jogo de travessia do rio, disponível em

http://www.profcardy.com/desafios/aplicativos.php?id=24 2. Jogo da velha, disponível em

http://www.cardiol.br/jogos/velha/ 3. Jogo de raciocínio lógico em 3D (ligar cores na superfície de um

cubo), disponível em

http://www.centrodejogos.com.br/raciocinio/logica-3d-121.html 4. Teste de Einstein (de acordo com as diretrizes, descobrir a

composição correta), disponível em

http://rachacuca.com.br/teste-de-einstein/