Introdução à Programação

Documentos relacionados
Paradigmas de Linguagens

Linguagens de Programação Conceitos e Técnicas. Amarrações

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

Linguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira

Paradigmas de Programação

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

Introdução à Programação

Linguagens de Programação

Paradigmas de Linguagens

ao paradigma imperativo

3. Linguagem de Programação C

Classificação das linguagens de programação

Histórico de Linguagens de Programação

Programação I Apresentação

Linguagens de Programação

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

Linguagens de Programação Classificação

Nomes, vinculações e escopos

Linguagens de Programação Aula 3

Aspectos preliminares

Capítulo 6: Linguagens de Programação

3. Linguagem de Programação C

Nomes, vinculações e escopos

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

Introdução a lógica e a Linguagem de Programação

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

Linguagens de Programação

Linguagens Computacionais (Conceitos Básicos)

Curso: Análise e Desenvolvimento de Sistemas. (Introdução a disciplina Algoritmos e Programação)

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

Conceitos básicos de programação

Linguagens de Programação

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO

Engenharia de Software

Trabalho Linguagem e Programação de Compiladores

Noções de compilação

Programação Básica. Introdução à programação de computadores

Instituto Superior de Engenharia de Lisboa

Capítulo 1. Aspectos Preliminares

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN

Fundamentos de Programação 1

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

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

PLANO DE UNIDADE DIDÁTICA- PUD

Programação Estruturada

Programação Estruturada e Orientada a Objetos

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software

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

Linguagens de Programação

Linguagem de Programação

Noções de compilação

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

Linguagens de Programação

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

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Introdução à Computação

Linguagens de Programação 2 Amarrações

Paradigmas de Programação

Algoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

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

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Linguagens de Programação Subprogramas

Aula 01 Algoritmos e lógica de programação e introdução ao C++

Programação Estruturada

Aula 01 Algoritmos e lógica de programação e introdução ao C++

INTRODUÇÃO À LINGUAGEM C

Aula 1 Java Prof. Dr. Sylvio Barbon Junior

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Informática I. Aula 19. Aula 19-31/10/2007 1

Linguagens de Programação Conceitos e Técnicas. Variáveis e Constantes

Classes e Objetos. Sintaxe de classe em Java

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

Introdução as Máquinas de Autômatos

Programação Básica. Introdução à programação de computadores

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

Linguagens de Programação

Programação de Computadores

Programação Orientada a Objetos. Manipulação de Exceções

A linguagem C (visão histórica)

Reinaldo Gomes Análise/projeto estruturado

PROGRAMAÇÃO I. Introdução

Linguagens de Programação

Persistência. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Aspectos preliminares

Linguagens de Programação

Elementos básicos das linguagens de programação

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

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

Linguagem de Programação. Thiago Leite Francisco Barretto

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Conceitos de Linguagens de Programação

Introdução à Programação

Paradigmas de Linguagens de Programação. Nomes, Vinculações, Verificação de Tipos e Escopos

Capítulo 7. Expressões e Sentenças de Atribuição

Transcrição:

Introdução à Programação Linguagens de Programação: conceituação, classificação e paradigmas de linguagens de programação Engenharia da Computação Professor: Críston Pereira de Souza Web: www.univasf.edu.br/~criston.souza/algoritmos.html email: criston.souza@univasf.edu.br

Sumário Conceitos Classificação 2

Conceitos Uma LP é uma ferramenta utilizada para escrever programas. As primeiras linguagens de programação eram muito simples. LPs de baixo nível Ex.: Linguagem de máquina Com o avança dos computadores e a necessidade de se desenvolver aplicações mais complexas as LPs passaram a ser mais robustas. LPs de alto nível Ex.: C, C++, Java, Pascal,... 3

Conceitos Exemplo 1: Linguagem de alto nível int A, B; int main() { A = 2; B = 1; A = A + B; } Exemplo 2: Linguagem de baixo nível MOV AX,0002 MOV BX,0001 ADD AX,BX 4

Conceitos As linguagens de programação surgiram da necessidade de tornar o processo de desenvolvimento de software mais produtivo. Processo de desenvolvimento de software: Especificação de requisitos; Projeto do software; Implementação; Validação; Manutenção. 5

Conceitos Propriedades desejáveis de uma LP: Legibilidade Facilidade para ler e entender um programa. Problemas com goto (programação macarrônica). Ambiguidade: Instrução this em Java (usado para referenciar um objeto e também para chamar um método construtor de um objeto), e Operador * em C e C++ (indicação de conteúdo de memória apontado por um ponteiro e operação de multiplicação). 6

Conceitos Propriedades desejáveis de uma LP: Redigibilidade Esta propriedade melhor diferencia as linguagens de alto nível e de baixo nível. Possibilita ao programador se concentrar unicamente nos algoritmos centrais do problema. LPs que requerem muita programação de entrada e saída e que não dispõem de mecanismos para o tratamento de erros tendem a obscurecer os algoritmos centrais nos programas. 7

Conceitos Propriedades desejáveis de uma LP: Confiabilidade Importante que a LP permita a verificação automática durante o processo de compilação ou execução. LPs que possuem mecanismos para detectar eventos indesejáveis e especificar respostas adequadas a tais eventos permitem a construção de programas mais confiáveis. 8

Conceitos Propriedades desejáveis de uma LP: Eficiência Dependendo da aplicação são necessários certos recursos da linguagem. Ex.: Aplicações de tempo real, aplicações embarcadas (baixo consumo de memória e energia),... Algumas LP s possuem bons compiladores que tendem a otimizar automaticamente o código gerado. LP s que requerem verificação de tipos durante a execução são menos eficientes do que aquelas que não fazem este tipo de verificação. 9

Conceitos Propriedades desejáveis de uma LP: Facilidade de aprendizado O programador deve ser capaz de aprender a LP com facilidade. LPs com muitas características e múltiplas maneiras de realizar a mesma funcionalidade tendem a ser mais difíceis de aprender. Ex.: incremento em C e C++» c = c + 1, c += 1, c++, ++c 10

Conceitos Propriedades desejáveis de uma LP: Ortogonalidade Diz respeito à capacidade de a LP permitir ao programador combinar seus conceitos básicos sem que se produzam efeitos anômalos nessa combinação. Em LPs ortogonais o programador pode prever, com segurança, o comportamento de uma determinada combinação de conceitos. 11

Conceitos Propriedades desejáveis de uma LP: Reusabilidade Possibilidade de reutilizar o mesmo código para diversas aplicações. Quanto mais reusável for um código, maior será a produtividade de programação. Uma forma de permitir a reusabilidade é através da parametrização de subprogramas (procedimentos e funções). Uso de bibliotecas de subprogramas. 12

Conceitos Propriedades desejáveis de uma LP: Modificabilidade Facilidade oferecida pela LP para possibilitar ao programador alterar o programa em função de novos requisitos, sem que tais modificações impliquem mudanças em outras partes do programa. Uso de constantes simbólicas e separação entre interface e implementação. Ex.:» const float pi = 3.14;» #DEFINE COLUNAS 10 13

Conceitos Propriedades desejáveis de uma LP: Portabilidade É desejável que programas escritos em uma determinada LP se comportem da mesma maneira independente da ferramenta utilizada para traduzí los para a linguagem de máquina ou da arquitetura computacional sobre a que estão executados. Um mesmo programa ou biblioteca deve ser utilizado em vários ambientes e diferentes situações sem que seja necessário despender tempo de programação para reescrevê los ou adaptá los ao novo ambiente de tradução ou execução. Padronizações do tipo ISO ou IEEE» Ex.: C padrão ANSI (American National Standards Institute) 14

Classificação Linguagem de máquina Linguagem que a máquina é capaz de entender sem precisar ser traduzida. Programas em linguagens de máquina são compostos por sequências de bits. Ex.: 000110110 As sequências de bits referem se a instruções e dados a serem executados. 15

Classificação Linguagem simbólica Refere se a uma abstração sobre as instruções e os dados. As instrução são representadas por um rótulo simbólico que denota o verbo definido pela instrução. Ex.: MOV AX, 0003 Um dado pode ser especificado diretamente na instrução ou pelo endereço de memória onde o dado é armazenado. O endereço é denotado por um rótulo arbitrário definido pelo programador. Programas em linguagem simbólica precisam ser traduzidos para outro equivalente em linguagem de máquina. Os tradutores são chamados de montadores (assemblers). Esse tipo de linguagem é utilizada em casos extremos onde é necessário extrair a máxima eficiência do hardware. 16

Classificação Linguagem de alto nível Em uma LP de alto nível o grau de abstração é bem alto, próximo ao modo de o ser humano pensar. Nas LPs de alto nível os programadores trabalham com o conceito de comando e não de instruções de máquina, como acontece em LPs de baixo nível. Um único comando em uma LP de alto nível pode se referir a vários comandos em uma LP de baixo nível. O acesso a memória é realizado por meio de variáveis e constantes. Os programas escritos em LPs de alto nível precisam ser traduzidos ou interpretados para serem executados. 17

Paradigma é um conjunto de características que servem para categorizar um grupo de linguagens. Os paradigmas mais comum para LPs são: Estruturado Orientado a objetos Funcional Lógico. 18

Paradigmas Imperativo Estruturado Concorrente Declarativo Funcional Lógico Orientado a objetos 19

Paradigma imperativo Fundamentado na idéia de computação como um processo que realiza mudanças de estado. Um estado representa uma configuração qualquer da memória do computador. Os programas de LPs incluídas nesse paradigma especificam como uma computação é realizada por uma sequência de alterações no estado da memória do computador. O foco deste paradigma é especificar como um processamento deve ser feito no computador. 20

Paradigma imperativo Estruturado Oriundo da necessidade em se eliminar os desvios incondicionais (goto) dos programas. Baseia se na idéia de desenvolvimento de programas por refinamentos sucessivos (top down). A programação estruturada consegue organizar o fluxo de controle de execução dos programas. Desestimula o uso de comandos de desvio incondicionais e incentiva a divisão dos programas em subprogramas e em blocos aninhados de comandos. Ex.: as linguagens Pascal e C são exemplos deste paradigma. 21

Paradigma imperativo Exemplo: Paradigma Estruturado: Programa em Linguagem Pascal PROGRAM RaizQuadrada(INPUT,OUTPUT); VAR n,raiz,erro: REAL; BEGIN WRITE('Qual o número de que quer calcular a raiz quadrada?'); READLN(n); raiz:=sqrt(n); raiz:=(n/raiz+raiz)/2; erro:=(n/sqr(raiz)) 1; IF erro < 1E 06 THEN WRITELN('A raiz de ',n,' ',raiz,' ',erro) ELSE WRITELN('Existe um erro > 10E 06') END. 22

Paradigma imperativo Exemplo: Paradigma Estruturado: Programa em Linguagem C #include <stdio.h> void main() { int t; for(t = 0; t < 100; t++) { printf( %d,t); if(t == 10) break; } } 23

Paradigma imperativo Orientado a Objetos Oferece conceitos que objetivam tornar mais rápido e confiável o desenvolvimento de sistemas. Esse paradigma enfoca a abstração de dados como elemento básico programação. Classes são abstrações que definem uma estrutura de dados e um conjunto de operações que podem ser realizadas sobre elas, chamadas métodos. Os objetos são instâncias de classes. Ex.: as linguagens C++, Smalltalk e Java são exemplos deste paradigma. 24

Paradigma imperativo Exemplo: Paradigma Orientado a Objetos: Programa em Linguagem C++ class moeda { private: static float US; public: static void usvalor() { cout << \ndigite o valor do dólar: ; cin >> US; } }; 25

Paradigma imperativo Exemplo: Paradigma Orientado a Objetos: Programa em Linguagem Smalltalk anobject amessage. anobject firstmessage; secondmessage; lastmessage. variablename := anobject amessage. 26

Paradigma imperativo Exemplo: Paradigma Orientado a Objetos: Programa em Linguagem Java public class Hello { public static void main(string[] args) { System.out.println("Hello, world!"); } } 27

Paradigma imperativo Concorrente A programação concorrente ocorre quando vários processos executam simultaneamente e concorrem por recursos. Permitem utilizar uma única unidade de processamento ou várias unidades em paralelo. As linguagens Pascal Concorrente e Java (entre outras) são exemplos de LPs que permitem desenvolver sistemas concorrentes. 28

Paradigma imperativo Exemplo: Paradigma Concorrente: Programa em Pascal Concorrente PROGRAM Exemplo; PROCESS TYPE hello; VAR i : integer; BEGIN FOR i:=1 TO 5 DO writeln('hello World!'); END; VAR first, second : hello; BEGIN COBEGIN first; second COEND; END. VAR msg : ARRAY [1..N] OF hello; BEGIN COBEGIN FOR i:=1 TO N DO msg[i](params,...); COEND; END. 29

Paradigma imperativo Exemplo: Paradigma Concorrente: Programa em Linguagem Java public class SimpleThread extends Thread { public SimpleThread(String str) { super(str); } public void run() { for (int i = 0; i < 10; i++) { System.out.println(i + " " + getname()); try { sleep((long)(math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println("DONE! " + getname()); } } public class TwoThreadsDemo { public static void main (String[] args) { new SimpleThread("Jamaica").start(); new SimpleThread("Fiji").start(); } } 30

Paradigma declarativo Este paradigma os programas são especificações sobre o que é a tarefa. O programador não precisa se preocupar sobre como o computador é implementado, nem sobre a maneira pela qual ele é melhor utilizado para realizar uma tarefa. O programador deve descrever de forma abstrata a tarefa a ser resolvida. Tipicamente, programas em LPs declarativas são especificações de relações ou funções. 31

Paradigma declarativo Funcional LPs funcionais operam somente sobre funções, as quais recebem listas de valores e retornam um valor. O objetivo é definir uma função que retorne um valor como a resposta do problema. As principais operações nesse tipo de programação são a composição de funções e a chamada recursiva de funções. Funções podem ser passadas como parâmetros a outras funções. Ex.: Lisp, Haskell e ML 32

Paradigma declarativo Exemplo: Paradigma Funcional: Programa em Lisp (defun bar (x) ( setq x (* x 3)) (setq x (/ x 2)) (+ x 4) ) 33

Paradigma declarativo Exemplo: Paradigma Funcional: Programa em Haskell factorial :: Integer > Integer factorial 0 = 1 factorial n n > 0 = n * factorial (n 1) 34

Paradigma declarativo Exemplo: Paradigma Funcional: Programa em ML fun fib 0 = 1 fib 1 = 1 fib n = fib(n 1) + fib(n 2); fun square x = x * x; fun inc x = x + 1; 35

Paradigma declarativo Lógico LPs lógicas são normalmente baseadas em um subconjunto do cálculo de predicados. Um predicado define uma relação entre constantes ou variáveis. Um programa lógica é composto por cláusulas que definem predicados e relações factuais. A execução de um programa lógico corresponde a um processo de dedução automática. Ex.: Prolog 36

Paradigma declarativo Exemplo: Paradigma Lógico: Programa em Prolog empresta(x,maria,livro(p)) : dono(x,livro(p)). dono(joao,livro(linguagens_de_programcao)).? empresta(joao,maria,livro(x)). 37

38