Baixe o app para aproveitar ainda mais
Prévia do material em texto
LAPRO I Prof. Dr. Rafael Garibotti Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN v Baseado no material cedido pelos Profs. Dr. Marco Mangan e Dr. Matheus Trevisan LINGUAGEM DE PROGRAMAÇÃO AULA SOBRE: LINGUAGEM DE PROGRAMAÇÃO 1 DEFINIÇÃO: Ø Linguagem utilizada para enviar instruções a um computador. Como qualquer linguagem, apresenta símbolos e regras para a combinação desses símbolos. (adaptado de Downing et al. Dictionary of computer and Internet terms). Quais linguagens de programação vocês conhecem? TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 2 Ø Linguagem de alto nível ü Ex.: C, C#, Objective-C, Java, Ruby, Python, Erlang, Clojure, Prolog, Processing. Ø Linguagem de montagem (assembly) ü Ex.: Microsoft Macro Assembler. Ø Linguagem de máquina ü Ex.: conjunto de instruções para processadores Intel. Contador := 0; LDA 4 STA A 0010 0100 0001 1010 TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 3 Ø Linguagem de alto nível ü São linguagens voltadas para o usuário (programador). ü Os comandos das linguagens apresentam um nível mais alto de abstração e próximos da linguagem humana. ü Necessitam de programas especiais (compiladores ou interpretadores) para traduzir o código para linguagem de máquina. ü Vantagens: têm maior portabilidade podendo ser executadas em várias plataformas com pouquíssimas modificações; não exigem conhecimento do código de máquina. ü Desvantagens: as rotinas geradas são mais genéricas e portanto mais complexas e por isso são mais lentas e ocupam mais memória (o código não é tão otimizado). Contador := 0; TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 4 Ø Linguagem de alto nível Begin var op1, op2, r: integer; r := 0; while op2 > 0 do begin r := r + op1; op2 := op2 - 1; end End TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 5 Ø Linguagem de montagem (assembly) ü São linguagens voltadas para a máquina e para o usuário. ü São linguagens intermediárias entre a linguagem de máquina e a linguagem de alto nível. ü As instruções são simplificações da linguagem de máquina que usam código mnemônicos (em inglês). ü Vantagens: comandos com sintaxe mais inteligível que nas linguagens de máquina. ü Desvantagens: alguns mnemônicos ainda são de difícil compreensão; ainda dependente da arquitetura do computador em questão. LDA 4 STA A TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 6 Ø Linguagem intermediária Begin var op1, op2, r: integer; r := 0; laço : if op2 = 0 go to fim; r := r + op1; op2 := op2 - 1; go to laço; fim: End. TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 7 Ø Linguagem de montagem (Assembly) ORG 0 LDA ZERO STA R LAÇO : LDA OP2 JZ FIM LDA R ADD OP1 STA R LDA OP2 ADD M1 STA OP2 JMP LAÇO FIM : HLT ORG 128 OP1 DEF BYTE OP2 DEF BYTE R DEF BYTE ZERO DEF BYTE = 0 M1 DEF BYTE = -1 go to laço : laço : if op2 = 0 go to fim r := r + op1 op2 := op2 - 1 r := 0 TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 8 Ø Linguagem de máquina ü São linguagens voltadas para a máquina. ü São baseadas no código binário utilizado diretamente pelo computador. • Cadeias de 0s e 1s. ü As instruções variam de processador para processador. ü Vantagens: produz o único conjunto de instruções que um computador entende sem um tradutor, criando códigos concisos e eficientes além de serem consideravelmente menores do que uma versão escrita em C. ü Desvantagens: pouca portabilidade (em geral, um programa para um processador não serve para outro); programas não são estruturados e de difícil compreensão; manutenção e correção de erros extremamente difícil. 0010 0100 0001 1010 TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 9 Ø Linguagem de máquina end.mem. 0 2 83 2 1 82 4 2 81 6 A 16 8 2 82 A 3 80 C 1 82 E 2 81 10 3 84 12 1 81 14 8 4 16 F COMPILADOR 10 DEFINIÇÃO: Ø Um programa de computador que recebe um texto em uma linguagem e gera texto equivalente em outra linguagem. O texto usado na entrada é chamado de código-fonte e o texto na saída é chamado de código-objeto (adaptado de Downing et al. Dictionary of computer and Internet terms). Código-fonte Código-objeto Entrada Saída Compilador Máquina COMPILADOR 11 Ø Durante a compilação, o código fonte é analisado (análise léxica, sintática e semântica), é gerado um código intermediário e são construídas tabelas de símbolos, alocam-se as áreas de memória para variáveis e atribui-se os registradores a serem utilizados, e é finalmente gerado o código objeto em linguagem binária de máquina. Ø Em alguns compiladores, é gerado um código intermediário em Assembly (que pode ser visualizado pelo programador) e que em seguida passa pelo montador para gerar finalmente o código objeto em linguagem de máquina. LINGUAGEM C 12 DEFINIÇÃO: Ø Uma linguagem de programação desenvolvida na década de 1970. Um compilador C é parte do sistema operacional UNIX e boa parte do código do UNIX é escrito em C. A linguagem oferece pleno acesso à representação interna dos dados do computador, o que permite alcançar a maior eficiência disponível em um determinado computador. (adaptado de Downing et al. Dictionary of computer and Internet terms). Ø Uma das linguagens mais utilizadas no mundo! ü http://www.lextrait.com/vincent/implementations.html COMPILADOR C 13 DEFINIÇÃO: Ø Um compilador que recebe um texto escrito em linguagem C e gera um novo texto em linguagem de montagem ou linguagem de máquina (adaptado de Downing et al. Dictionary of computer and Internet terms). ETAPAS DE COMPILAÇÃO EM LINGUAGEM C 14 Programa Fonte (.c)Editor de Texto Compilador Ligador ou Linkeditor Programa Objeto (.o) Programa Executável BibliotecaPadrão (.h) Outras Bibliotecas (.h) AMBIENTES INTEGRADOS DE DESENVOLVIMENTO (IDE) 15 Ø Code::Blocks / QT Creator Ø Eclipse / Netbeans Ø Xcode Ø Visual Studio ü Não incentivaremos nenhuma IDE nesta disciplina. Pelo contrário, visamos a compilação manual dos códigos-fontes atrás de comandos usando um terminal. PROGRAMA 16 DEFINIÇÃO: Ø Um conjunto instruções que pode ser executado por um computador (adaptado de Downing et al. Dictionary of computer and Internet terms). q Aplicações ou aplicativos: programas que realizam tarefas de interesse do usuário. Ex.: processadores e editores de texto, planilhas eletrônicas, sistemas de informação. q Utilitários ou sistemas: programas que realizam tarefas relacionadas com o computador. Ex.: sistemas operacionais, antivírus, compiladores. PROGRAMA 17 FLUXO: 1. Início 2. Entrada 3. Processamento 4. Saída 5. Término Ø Adaptado de Jack Purdum, Beginning C for Arduino, The Five Programming Steps. IMPLEMENTAÇÃO DE ALGORITMOS ETAPAS PARA RESOLVER UM PROBLEMA 18 Definir o problema Projetar um algoritmo para solucionar o problema Editar um arquivo fonte, em uma linguagem de programação Compilar Testar e depurar o programa gerado Redefinir o problema Erros de sintaxe Erros de lógica PASSOS NA CONSTRUÇÃO DE ALGORITMOS 19 Ø Conhecer o problema ü Pensar sobre o que exatamente precisa ser resolvido; ü Focar no que deve ser obtido, nas restrições existentes, etc... e não em como resolver o problema; ü Exemplos: fazer um mousse de chocolate; somar dois números. PASSOS NA CONSTRUÇÃO DE ALGORITMOS 20 Ø Identificar os dados de entrada ü Responder: • Quais valores ou informações precisam ser conhecidos para resolver o problema? • Que valores ou informações mudariam para diferentes instâncias do problema? ü Exemplos: quantidade de chocolate, açúcar, etc; dois números inteiros PASSOS NA CONSTRUÇÃO DE ALGORITMOS 21 Ø Identificar os dados de saída ü Qual o resultado ou resultados esperados? ü Exemplos: quantidade de mousse; um valor inteiro representando a soma. PASSOS NA CONSTRUÇÃO DE ALGORITMOS 22 Ø Construir o algoritmo ü Deve-se pensar os diversos passos para resolver o problema. ü Normalmente é possível resolver o problema de mais de uma maneira, ou seja, é possível ter mais de um algoritmo para resolver o mesmo problema. ü Para aprender a programar, é preciso construiralgoritmos (sem medo de errar e sem se contentar com a primeira solução). PASSOS NA CONSTRUÇÃO DE ALGORITMOS 23 Ø Testar o algoritmo ü Fundamental realizar o chamado teste de mesa! • SEM usar o computador! ü Não tenha preguiça de fazer o algoritmo no papel e fazer o teste de mesa, muita dor de cabeça será evitada! TESTE DE MESA 24 Ø O teste de mesa é feito: ü Escolhendo valores para as variáveis de entrada; ü Seguindo cada uma das etapas do algoritmo; ü Verificando a correção da(s) saída(s). Ø Observação: Com programas pode-se usar o recurso de depuração (debug), mas esse é usado para detectar problemas. A área de Engenharia de Software tem estudos que mostram que quanto antes um erro for detectado, menor é o custo de correção. PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO PARADIGMA IMPERATIVO 25 Ø O modelo Imperativo é baseado na perspectiva do computador: a execução sequencial de comandos e o uso de dados são conceitos baseados no modo como os computadores executam programas no nível de linguagem de máquina. Ø Este modelo é o predominante. Ø As linguagens imperativas são de fácil tradução. Ø Exemplos: FORTRAN, COBOL, ALGOL 60, APL, BASIC, PL/I, SIMULA 67, PASCAL, C e ADA. PARADIGMA IMPERATIVO 26 Ø Exemplo: Linguagem C #include <stdio.h> int main (void) { printf ("Ola! Eu estou vivo!\n"); return 0; } PARADIGMA FUNCIONAL 27 Ø O modelo Funcional focaliza o processo de resolução do problema. A visão funcional resulta num programa que descreve as operações (funções) que devem ser efetuadas para resolver o problema. Ø Baseia-se no conceito matemático de função, que é um mapeamento de um conjunto A num conjunto B. Ø Exemplos:ML, LISP, HASKELL. fun soma ( x: int, y: int) = x + y; fun divide ( x:int , y: int) = x div 2; fun media m n = divide(soma(m,n), 2); media 4 2; PARADIGMA LÓGICO 28 Ø O modelo Lógico está relacionado à perspectiva da pessoa: ela encara o problema de uma perspectiva lógica. Ø Um programa lógico é equivalente à descrição do problema expressa de maneira formal, similar à maneira que o ser humano raciocinaria sobre ele. Ø Escrever um programa é como provar um teorema. Ø Exemplo: PROLOG. colega(carlos,alex). colega(carlos,rafael). colega(carlos,pedro). colega(pedro,paulo). lista_colega(C,L):-bagof(X, colega(C,X), L). PARADIGMA ORIENTADO A OBJETO (OO) 29 Ø O modelo Orientado a Objeto focaliza mais o problema, baseado na união dos conceitos de dados e operações. Ø Um programa OO é equivalente a objetos que mandam mensagens entre si. Os objetos do programa equivalem aos objetos da vida real (problema). Ø A primeira linguagem OO foi Simula, desenvolvida em 1966 e depois refinada em Smalltalk. Existem algumas linguagens híbridas: Modelo Imperativo mais características de Orientação a Objetos (OO), assim como C++. Ø Exemplos: Simula, Smalltalk, Object Pascal, C++, Java, Visual Basic, C#. PARADIGMA ORIENTADO A OBJETO (OO) 30 Ø Exemplo: JAVA class Pessoa { private String nome; private int idade; public Pessoa(String n, int i){ nome = n; idade = i; } public void imprime(){ System.out.println(“Nome: “ + nome); System.out.println(“Idade: “ + idade); } } ATIVIDADE LABORATÓRIO 31 Ø As atividades do laboratório da aula de hoje estão no Moodle.
Compartilhar