Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informação Algoritmos e Programação Conceitos Básicos Profª Janne Oeiras Lachi 1 Plano de aula ` Conceitos básicos: ` Programação. ` Algoritmos. 2 Computador ` O que queremos dizer com a palavra “computador”? ` O computador é uma máquina que armazena dados (números, palavras, figuras), interage com dispositivos (a tela do monitor, o sistema de som, a impressora) e executa programas. 3 Programação ` Programação de computadores é o ato de projetar e implementar programas de computador. ` O programa determina a seqüência de etapas necessárias para realizar uma tarefa ` Orienta o computador a executar tarefas. ` Um programa é uma codificação de um algoritmo em uma linguagem de programação ` Exemplo: C, Java, Pascal, Python, Ruby, Lua... 4 Algoritmo Æ Programa ` Escreva um algoritmo que receba como entrada dois números inteiros e apresente como saída o resultado da soma somente se o valor obtido for maior que 10. 5 programa SOMA_10 var N1, N2, SOMA: inteiro início escreva “Informe dois números inteiros:” leia NI, N2 SOMA Å N1 + N2 se SOMA > 10 então escreva “O resultado eh: ”, SOMA fim_se fim #include <stdio.h> int main() { int n1, n2, soma; printf(“Informe dois números inteiros:”); scanf(“%d%d”, &n1, &n2); soma = n1+n2; if (soma > 10) printf(“O resultado eh: %d”, soma); return 0; } Algoritmo Programa em C De linguagem de alto nível para a linguagem do hardware ` Os primeiros programadores se comunicavam com os computadores em números binários. ` Depois inventaram novas notações mais parecidas com a maneira como os humanos pensam. ` Inventou-se programas para traduzir da notação simbólica para binário (no princípio, a tradução era feita manualmente). 6 Abstração Algoritmo em: •Português estruturado ou •Diagrama de blocos ou •Diagrama de Chapin 7 De linguagem de alto nível para a linguagem do hardware ` Uma máquina eletrônica recebe instruções através de sinais elétricos. ` Os sinais mais fáceis de serem entendidos são ligado e desligado. ` O alfabeto do computador é formado por números na base 2 (0 e 1). ` Dígito binário (bit): um dos dois números na base 2 que são componentes da informação. 8 De linguagem de alto nível para a linguagem do hardware ` Linguagem de programação de alto nível: ` Uma linguagem como C, Pascal ou Fortran, composta de palavras e notação algébrica, pode ser traduzida por um compilador para a linguagem assembly. 9 Compilador: O que é? ` Um programa que aceita como entrada um texto de programa em uma certa linguagem (linguagem fonte) e produz como saída um texto de programa em outra linguagem (linguagem alvo). Programa alvo Programa fonte compilador Mensagens de erro Tradução ` É o processo realizado pelo compilador. Assim chamado porque “traduzem” uma linguagem (fonte) em outra (alvo). ` A linguagem usada para escrever o tradutor é chamada de linguagem de implementação. ` Exemplo: C, Java, Pascal... Tradução: por que fazer? ` Como dizer ao computador o que fazer? Pensamento humano (não-estruturado) Computador Linguagem de programação (LP): meio de comunicação entre o usuário e o computador Tradução: por que fazer? ` Hierarquia de linguagens: ` Linguagem de alto nível: próxima ao pensamento humano (C, Pascal, Java...) ` Linguagem de baixo nível: usada pelo computador (assembly, linguagem de máquina). Assembly ` É uma Linguagem de programação denominada de baixo nível que compreende as características da arquitetura do computador. ` O conjunto de comandos é fortemente relacionado à arquitetura do computador onde será executado o programa ` É uma representação simbólica das instruções de máquina. ` O programador deve escrever uma linha para cada instrução que a máquina seguirá, obrigando o programador a pensar como a máquina. ` Veja exemplos em http://pt.wikipedia.org/wiki/Assembly De linguagem de alto nível para a linguagem do hardware ` Vantagens das linguagens de alto nível: ` Permite que o programador pense em uma língua natural mais próxima da sua; ` Maior produtividade do programador; ` Os programas são independentes do computador no qual elas são desenvolvidas, já que os compiladores e montadores podem traduzir programas de linguagem de alto nível para instruções binárias de qualquer máquina; ` Linguagens assembly e de máquina dependem da arquitetura específica do computador. 15 Um pouco de história... ` 1954, IBM develops the 704 ` Successor to the 701 ` Problem ` Software costs exceeded hardware costs! ` All programming done in assembly http://www.stanford.edu/class/cs143/ FORTRAN I ` Enter John Backus idea: ` Translate high-level code to assembly ` Many thought this impossible ` Had already failed in other projects http://www.stanford.edu/class/cs143/ FORTRAN I Project ` 1954-57: duração do projeto ` 1958: >50% of all software is in FORTRAN ` Development time halved (reduziu pela metade) ` FORTRAN I was the first compiler ` Huge impact on computer science ` Led to an enormous body of theoretical work ` Modern compilers preserve the outlines of FORTRAN I http://www.stanford.edu/class/cs143/ Tradutores de LPs ` Montadores (assembler): ` Mapeiam instruções de linguagem simbólica (assembly) para instruções de linguagem de máquina; 1 para 1 ` Exemplo: ` add A, B ` 1000110010100000 ` Macro-assemblers: ` Mapeiam instruções de linguagem simbólica (assembly) para instruções de linguagem de máquina; 1 para várias Um comando macro é traduzido para uma seqüência de comandos simbólicos antes de ser feita a tradução para linguagem de máquina Tradutores de LPs ` Compiladores: ` Convertem programas escritos em Linguagem de Alto Nível (LAN) para programas equivalentes em linguagem simbólica ou de máquina ` Execução de um programa em LAN em dois passos: ` tempo de compilação: intervalo no qual o programa fonte é traduzido para o programa executável. ` tempo de execução: intervalo no qual o programa executável é executado. Tradutores de LPs ` Compiladores: Programa alvo Programa fonte compilador Dados de entrada Programa executável Resultados Tradutores de LPs ` Interpretadores: ` Aceitam como entrada o código intermediário de um programa anteriormente traduzido e produzem o efeito da execução do algoritmo original sem mapeá-lo para linguagem de máquina. Programa intermediário INTERPRETADOR (máquina virtual) ResultadosPrograma fonte TRADUTOR dados Compilador x Interpretador ` Interpretação: ` O pré-processamento é mais rápido; ` O mecanismo de interpretação é um programa; ` A execução de programas é lenta. ` Compilação: ` O pré-processamento de programas é considerável; ` O mecanismo de interpretação é a CPU; ` A execução do programa é mais rápida. Compilador x Interpretador Compilação MáquinaCódigofonte Código executável Pré-processamento Processamento Interpretação InterpretadorCódigo intermediário Código fonte Pré-processamento Processamento Vantagem x Desvantagem ` Interpretadores: ` Vantagem: facilidade de implementação de novas linguagens para diferentes equipamentos (portabilidade); ` Desvantagem: tempo de execução é maior que um programa executável equivalente. Ocorre porque cada instrução do código intermediário, quando operada, precisa de uma tradução para o código de máquina. Referências ` Aho, A.; Sethi, R.; Ullman, J. Compiladores: Princípios, técnicas e ferramentas. D.Rio de Janeiro; Editora Guanabara Koogan S.A. 344p. ` Grune, D.; Bal H.; Jacobs, C.; Langendoen, K. Projeto Moderno de compiladores – Implementação e Aplicações. Rio de Janeiro: Editora Campus, 2001. 671 p. ` Slides do Profº Nielsen Simões ` https://sites.google.com/a/comp.uems.br/pci2010/arquivos ` Slides da Profª Valguima Odakura ` Patterson, Hennessy. Organização e Projeto de Computadores – A Interface Hardware/Software. Editora Campus. 2005 ` Ascencio, A. F. G. Campos, E. A. V. Fundamentos da programação de computadores. Pearson/Prentice Hall, 2ª ed. 2007. 26 Algoritmos e Programação Plano de aula Computador Programação Algoritmo Programa De linguagem de alto nível para a linguagem do hardware Abstração De linguagem de alto nível para a linguagem do hardware De linguagem de alto nível para a linguagem do hardware Compilador: O que é? Tradução Tradução: por que fazer? Tradução: por que fazer? Assembly De linguagem de alto nível para a linguagem do hardware Um pouco de história... FORTRAN I FORTRAN I Project Tradutores de LPs Tradutores de LPs Tradutores de LPs Tradutores de LPs Compilador x Interpretador Compilador x Interpretador Vantagem x Desvantagem Referências
Compartilhar