LAPRO I. Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN. Prof. Dr. Rafael Garibotti

Documentos relacionados
Linguagens de Programação Classificação

PROGRAMAÇÃO I. Introdução

Programação de Computadores

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO

Programação de Computadores

Programação de Computadores

3. Linguagem de Programação C

Programação de Computadores:

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Algoritmos e Programação

Revisão: linguagens de programação

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Informática I. Aula 9. Aula 9-17/05/2006 1

1 Introdução à Programação O que é? Para que serve?... 1

Algoritmos e Programação

Informática I. Aula Aula 18-29/10/2007 1

Algoritmos e Programação

Introdução à Computação

Introdução à Computação

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

Desenvolvimento de Aplicações Desktop

Linguagens de Programação Aula 3

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Introdução à Computação

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

As fases de um compilador

Projeto de Compiladores

Compiladores. Introdução à Compiladores

Linguagens de Programação

Computação Eletrônica

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Informática I. Aula 9. Aula 9-27/09/2006 1

Paradigmas de Programação

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares

As fases de um compilador

Fundamentos de Programação 1

Introdução a Ciência da Computação

Sistema Computacional

Linguagens de Programação. Introdução. Carlos Bazilio

Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação

Fundamentos de Programação 1

Algoritmos. Prof. Jonatas Bastos Site:

Programação Estruturada Aula - Introdução a Linguagem C

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Métodos de implementação de linguagens. Kellen Pinagé

Noções de compilação

Noções de compilação

Introdução a Programação de Jogos

16. Compilação no Linux

Aspectos preliminares

Introdução à Computação: Máquinas Multiníveis

Classificação das linguagens de programação

Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas

Programação Estruturada Aula - Introdução a Linguagem de Programação

Introdução à Computação: Máquinas Multiníveis

Conceitos de Linguagens de Programação

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação

Aula teórica 7. Preparado por eng.tatiana Kovalenko

Introdução à linguagem C

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

INF 1005 Programação I

Linguagem de Montagem do NeanderX

Capítulo 6: Linguagens de Programação

Paradigmas de Linguagem de Programação. Aspectos Básicos

MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Nomes, vinculações e escopos

Programação I Apresentação

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Computação Parte 2

MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação

Nomes, vinculações e escopos

Compiladores. Introdução

Projeto de Compiladores

ao paradigma imperativo

Python - Variáveis e expressões

Capítulo 1. Aspectos Preliminares

Paradigmas de Linguagem de Programação

Linguagem de Programação

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Slides trabalhados durante a quinta aula

1 Introdução e Conceitos básicos

Introdução à Programação

Estrutura e funcionamento básico de um computador

Fundamentos de Sistemas Operacionais

Linguagens de Programação

Programação de Computadores II

Linguagens Computacionais (Conceitos Básicos)

II.1 Conceitos Fundamentais. Uma delas é programar o =>

Algoritmos e Programação

MC-102 Aula 01. Instituto de Computação Unicamp

Introdução aos Algoritmos

EA876 - Introdução a Software de Sistema

Transcrição:

Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN LAPRO I Prof. Dr. Rafael Garibotti v Baseado no material cedido pelos Profs. Dr. Marco Mangan e Dr. Matheus Trevisan

AULA SOBRE: LINGUAGEM DE PROGRAMAÇÃO

LINGUAGEM DE PROGRAMAÇÃO 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? 1

TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Ø 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 2

TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Ø 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. Contador := 0; ü 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). 3

TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Ø 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 4

TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Ø Linguagem de montagem (assembly) ü São linguagens voltadas para a máquina e para o usuário. LDA 4 STA A ü 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. 5

TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Ø 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. 6

TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Ø 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 r := 0 laço : if op2 = 0 go to fim r := r + op1 op2 := op2-1 go to laço : 7

TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Ø 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. 0010 0100 0001 1010 ü 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. 8

TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Ø 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 9

COMPILADOR 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). Entrada Código-fonte Compilador Código-objeto Máquina Saída 10

COMPILADOR Ø 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. 11

LINGUAGEM C 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 12

COMPILADOR C 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). 13

ETAPAS DE COMPILAÇÃO EM LINGUAGEM C Editor de Texto Programa Fonte (.c) Compilador Programa Objeto (.o) Biblioteca Padrão (.h) Outras Bibliotecas(.h) Ligador ou Linkeditor Programa Executável 14

AMBIENTES INTEGRADOS DE DESENVOLVIMENTO (IDE) Ø 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. 15

PROGRAMA 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. 16

PROGRAMA 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. 17

IMPLEMENTAÇÃO DE ALGORITMOS

ETAPAS PARA RESOLVER UM PROBLEMA Definir o problema Projetar um algoritmo para solucionar o problema Editar um arquivo fonte, em uma linguagem de programação Redefinir o problema Erros de sintaxe Compilar Testar e depurar o programa gerado Erros de lógica 18

PASSOS NA CONSTRUÇÃO DE ALGORITMOS Ø 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. 19

PASSOS NA CONSTRUÇÃO DE ALGORITMOS Ø 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 20

PASSOS NA CONSTRUÇÃO DE ALGORITMOS Ø Identificar os dados de saída ü Qual o resultado ou resultados esperados? ü Exemplos: quantidade de mousse; um valor inteiro representando a soma. 21

PASSOS NA CONSTRUÇÃO DE ALGORITMOS Ø 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 construir algoritmos (sem medo de errar e sem se contentar com a primeira solução). 22

PASSOS NA CONSTRUÇÃO DE ALGORITMOS Ø 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! 23

TESTE DE MESA Ø 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. 24

PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO

PARADIGMA IMPERATIVO Ø 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. 25

PARADIGMA IMPERATIVO Ø Exemplo: Linguagem C #include <stdio.h> int main (void) { printf ("Ola! Eu estou vivo!\n"); return 0; } 26

PARADIGMA FUNCIONAL Ø 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; 27

PARADIGMA LÓGICO Ø 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). 28

PARADIGMA ORIENTADO A OBJETO (OO) Ø 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, ObjectPascal, C++, Java, Visual Basic, C#. 29

PARADIGMA ORIENTADO A OBJETO (OO) Ø 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); } 30

ATIVIDADE

LABORATÓRIO Ø As atividades do laboratório da aula de hoje estão no Moodle. 31