590 likes | 812 Views
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.
E N D
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 Linguagem de Baixo Nível Linguagem Natural Exercícios Atividades de Lógica e Links
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.
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.
Introdução • O que significa algoritmos?
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.
Introdução • Dêem um exemplo de algoritmo?
Introdução • Qualquer atividade do dia-a-dia pode ser um exemplo de algoritmo.
Introdução • Fazer 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.
Introdução • Praticamente tudo pode ser descrito em forma de algoritmos. • Entretanto, os algoritmos precisam ser corretos, eficientes e elegantes.
Introdução • Correto – deve fazer o que se espera, ou seja, executa o que sua documentação descreve.
Introdução • Eficiente – se não desperdiça tempo. Há a possibilidade de haver dois algoritmos que resolvem o mesmo problema.
Introdução • Elegantes – ser simples, limpo, sem enfeites. Não utilizar recursos desnecessários para sua soluçã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.
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.
Introdução • Se praticamente tudo pode ser descrito em forma de algoritmos por que algoritmos ficou ligado a computaçã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.
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.
Conceituação • Hardware: É o conjunto de dispositivos físicos do computador, o equipamento. • Software: São os programas de computadores.
Conceituação • Firmware: Conhecido como software embarcado, trata-se de um software que controla o hardwarediretamente.
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.
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.
UCP – Unidade Central de Processamento Memória Barramento Teclado Mouse MonitorImpressora... Dispositivos de Entrada/Saída Conexões externas Arquitetura do computador • De acordo com Andrew Tanenbaum a arquitetura do computador moderno é composta por:
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.
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.
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;
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;
Lógica de Programação • Estrutura de repetição – indica que determinadas operações devem ser repetidas uma determinada quantidade de vezes.
Linguagens • O conjunto de instruções, que será executado pelo processador, é chamado de linguagem de máquina.
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.
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.
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.
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.
Código em linguagem de assembly. Código em linguagem de máquina. Assembler Linguagem de baixo nível • Esta tradução é realizada por um programa chamado Assembler.
Linguagem de baixo nível • Exemplo 2:;exemplo2 .model small .stack.codemov 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.
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.
Linguagem de baixo nível • Isso é chamado de portabilidade.
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.
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.
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.
Código fonte em linguagem de alto nível Código em linguagem de máquina. Compilador 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.
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.
Código fonte em linguagem de alto nível Memória Interpretador Tradução de cada instrução na fase de execução do programa 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.
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 portabilidade • difícil 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.
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.
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.
JAVA • Para que esse código possa ser executado em qualquer SO, é necessário que mais uma camada de software esteja instalada.
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.
Bytecode Assembly Compilador Código fonte Java JVM Memória Tradução de cada instrução na fase de execução do programa JAVA • Máquina A • Máquina B
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: