36
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 Programacao · 2018-08-23 · TIPOS DE LINGUAGENS DE PROGRAMAÇÃO 2 Ø Linguagem de alto nível ü Ex.: C, C#, Objective-C, Java, Ruby, Python, Erlang, Clojure, Prolog,

  • Upload
    lyhanh

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

LAPROIProf.Dr.RafaelGaribotti

PontifíciaUniversidadeCatólicadoRioGrandedoSulFaculdadedeInformática- FACIN

v Baseado nomaterialcedido pelos Profs.Dr.MarcoMangan eDr.MatheusTrevisan

LINGUAGEMDEPROGRAMAÇÃOAULASOBRE:

LINGUAGEMDEPROGRAMAÇÃO

1

DEFINIÇÃO:

Ø Linguagemutilizadaparaenviarinstruções aumcomputador.Comoqualquerlinguagem,apresentasímbolos eregrasparaacombinaçãodessessímbolos.(adaptadodeDowning etal.Dictionary of computerand Internetterms).

Quaislinguagensdeprogramação vocês

conhecem?

TIPOSDELINGUAGENSDEPROGRAMAÇÃO

2

Ø Linguagemdealtonívelü Ex.:C,C#,Objective-C,Java,Ruby,Python,Erlang,

Clojure,Prolog,Processing.

Ø Linguagemdemontagem(assembly)ü Ex.:MicrosoftMacroAssembler.

Ø Linguagemdemáquinaü Ex.:conjuntodeinstruções paraprocessadoresIntel.

Contador:=0;

LDA4STAA

0010010000011010

TIPOSDELINGUAGENSDEPROGRAMAÇÃO

3

Ø Linguagemdealtonível

ü Sãolinguagensvoltadasparaousuário(programador).

ü Oscomandosdaslinguagensapresentamumnívelmaisaltodeabstraçãoepróximosdalinguagemhumana.

ü Necessitamdeprogramasespeciais(compiladoresouinterpretadores)paratraduzirocódigoparalinguagemdemáquina.

ü Vantagens:têmmaiorportabilidadepodendoserexecutadasemváriasplataformascompouquíssimasmodificações;nãoexigemconhecimentodocódigodemáquina.

ü Desvantagens: asrotinasgeradassãomaisgenéricaseportantomaiscomplexaseporissosãomaislentaseocupammaismemória(ocódigonãoétãootimizado).

Contador:=0;

TIPOSDELINGUAGENSDEPROGRAMAÇÃO

4

Ø Linguagemdealtonível

Beginvar op1, op2, r: integer;r := 0;while op2 > 0 do

beginr := r + op1;op2 := op2 - 1;

endEnd

TIPOSDELINGUAGENSDEPROGRAMAÇÃO

5

Ø Linguagemdemontagem(assembly)

ü Sãolinguagensvoltadasparaamáquinaeparaousuário.ü Sãolinguagensintermediáriasentrealinguagemdemáquinaealinguagemde

altonível.ü Asinstruçõessãosimplificaçõesdalinguagemdemáquinaqueusamcódigo

mnemônicos(eminglês).ü Vantagens: comandoscomsintaxemaisinteligívelquenaslinguagensde

máquina.ü Desvantagens:algunsmnemônicosaindasãodedifícilcompreensão;ainda

dependentedaarquiteturadocomputadoremquestão.

LDA4STAA

TIPOSDELINGUAGENSDEPROGRAMAÇÃO

6

Ø Linguagemintermediária

Beginvar 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.

TIPOSDELINGUAGENSDEPROGRAMAÇÃO

7

Ø Linguagemdemontagem(Assembly)ORG 0LDA ZEROSTA RLAÇO : LDA OP2JZ FIMLDA RADD OP1STA RLDA OP2ADD M1STA OP2JMP LAÇOFIM : HLTORG 128OP1 DEF BYTEOP2 DEF BYTER DEF BYTEZERO DEF BYTE = 0M1 DEF BYTE = -1

go to laço :

laço : if op2 = 0 go to fim

r := r + op1

op2 := op2 - 1

r := 0

TIPOSDELINGUAGENSDEPROGRAMAÇÃO

8

Ø Linguagemdemáquina

ü Sãolinguagensvoltadasparaamáquina.ü Sãobaseadasnocódigobinárioutilizadodiretamentepelocomputador.• Cadeiasde0se1s.

ü Asinstruçõesvariamdeprocessadorparaprocessador.ü Vantagens: produzoúnicoconjuntodeinstruçõesqueumcomputadorentendesem

umtradutor,criandocódigosconcisoseeficientesalémdeseremconsideravelmentemenoresdoqueumaversãoescritaemC.

ü Desvantagens: poucaportabilidade(emgeral,umprogramaparaumprocessadornãoserveparaoutro);programasnãosãoestruturadosededifícilcompreensão;manutençãoecorreçãodeerrosextremamentedifícil.

0010010000011010

TIPOSDELINGUAGENSDEPROGRAMAÇÃO

9

Ø Linguagemdemáquinaend.mem.0 2 832 1 824 2 816 A 168 2 82A 3 80C 1 82E 2 8110 3 8412 1 8114 8 416 F

COMPILADOR

10

DEFINIÇÃO:

Ø Umprogramadecomputadorquerecebeumtextoemumalinguagemegeratextoequivalenteemoutralinguagem.Otextousadonaentradaéchamadodecódigo-fonte eotextonasaídaéchamadodecódigo-objeto(adaptadodeDowning etal.Dictionary of computer and Internetterms).

Código-fonte Código-objeto

Entrada

Saída

Compilador Máquina

COMPILADOR

11

Ø Duranteacompilação,ocódigofonteéanalisado(análiseléxica,sintáticaesemântica),égeradoumcódigointermediárioesãoconstruídastabelasdesímbolos,alocam-seasáreasdememóriaparavariáveiseatribui-seosregistradoresaseremutilizados,eéfinalmentegeradoocódigoobjetoemlinguagembináriademáquina.

Ø Emalgunscompiladores,égeradoumcódigointermediárioemAssembly(quepodeservisualizadopeloprogramador)equeemseguidapassapelomontadorparagerarfinalmenteocódigoobjetoemlinguagemdemáquina.

LINGUAGEMC

12

DEFINIÇÃO:

Ø Umalinguagemdeprogramaçãodesenvolvidanadécadade1970.UmcompiladorCépartedosistemaoperacionalUNIXeboapartedocódigodoUNIXéescritoemC.Alinguagemofereceplenoacessoàrepresentaçãointernadosdadosdocomputador,oquepermitealcançaramaioreficiênciadisponívelemumdeterminadocomputador.(adaptadodeDowning etal.Dictionary of computer and Internetterms).

Ø Umadaslinguagensmaisutilizadasnomundo!ü http://www.lextrait.com/vincent/implementations.html

COMPILADORC

13

DEFINIÇÃO:

Ø UmcompiladorquerecebeumtextoescritoemlinguagemCegeraumnovotextoemlinguagemdemontagemoulinguagemdemáquina(adaptadodeDowning etal.Dictionary of computer and Internetterms).

ETAPASDECOMPILAÇÃOEMLINGUAGEMC

14

Programa Fonte (.c)EditordeTexto

Compilador

Ligador ouLinkeditor

Programa Objeto (.o)

Programa Executável

BibliotecaPadrão (.h)

Outras Bibliotecas (.h)

AMBIENTESINTEGRADOSDEDESENVOLVIMENTO(IDE)

15

Ø Code::Blocks /QTCreator

Ø Eclipse/Netbeans

Ø Xcode

Ø VisualStudio

ü Não incentivaremos nenhumaIDEnestadisciplina.Pelocontrário,visamos acompilação manualdoscódigos-fontes atrás decomandosusando umterminal.

PROGRAMA

16

DEFINIÇÃO:

Ø Umconjuntoinstruçõesquepodeserexecutadoporumcomputador(adaptadodeDowning etal.Dictionary of computer and Internetterms).

q Aplicaçõesouaplicativos:programasquerealizamtarefasdeinteressedousuário.Ex.:processadoreseeditoresdetexto,planilhaseletrônicas,sistemasdeinformação.

q Utilitários ousistemas:programasquerealizamtarefasrelacionadascomocomputador.Ex.:sistemasoperacionais,antivírus,compiladores.

PROGRAMA

17

FLUXO:

1. Início2. Entrada3. Processamento4. Saída5. Término

Ø AdaptadodeJackPurdum,Beginning CforArduino,TheFiveProgramming Steps.

IMPLEMENTAÇÃODEALGORITMOS

ETAPASPARARESOLVERUMPROBLEMA

18

Definiroproblema

Projetarumalgoritmo parasolucionaroproblema

Editarumarquivofonte,emumalinguagemdeprogramação

Compilar

Testaredepuraroprogramagerado

Redefiniroproblema

Errosdesintaxe

Errosdelógica

PASSOSNACONSTRUÇÃODEALGORITMOS

19

Ø Conheceroproblema

ü Pensarsobreoqueexatamenteprecisaserresolvido;

ü Focarnoquedeveserobtido,nasrestriçõesexistentes,etc...enãoemcomoresolveroproblema;

ü Exemplos: fazerummoussedechocolate;somardoisnúmeros.

PASSOSNACONSTRUÇÃODEALGORITMOS

20

Ø Identificarosdadosdeentradaü Responder:• Quaisvaloresouinformaçõesprecisamserconhecidos

pararesolveroproblema?• Quevaloresouinformaçõesmudariamparadiferentes

instânciasdoproblema?

ü Exemplos: quantidadedechocolate,açúcar,etc;doisnúmerosinteiros

PASSOSNACONSTRUÇÃODEALGORITMOS

21

Ø Identificarosdadosdesaída

ü Qualoresultadoouresultadosesperados?ü Exemplos: quantidadedemousse;umvalorinteiro

representandoasoma.

PASSOSNACONSTRUÇÃODEALGORITMOS

22

Ø Construiroalgoritmo

ü Deve-sepensarosdiversospassospararesolveroproblema.ü Normalmenteépossívelresolveroproblemademaisdeuma

maneira,ouseja,épossíveltermaisdeumalgoritmopararesolveromesmoproblema.

ü Paraaprenderaprogramar,éprecisoconstruiralgoritmos(semmedodeerraresemsecontentarcomaprimeirasolução).

PASSOSNACONSTRUÇÃODEALGORITMOS

23

Ø Testaroalgoritmo

ü Fundamentalrealizarochamadotestedemesa!• SEMusarocomputador!

ü Nãotenhapreguiçadefazeroalgoritmonopapelefazerotestedemesa,muitadordecabeçaseráevitada!

TESTEDEMESA

24

Ø Otestedemesaéfeito:

ü Escolhendovaloresparaasvariáveisdeentrada;ü Seguindocadaumadasetapasdoalgoritmo;ü Verificandoacorreçãoda(s)saída(s).

Ø Observação: Comprogramaspode-seusarorecursodedepuração(debug),masesseéusadoparadetectarproblemas.AáreadeEngenhariadeSoftwaretemestudosquemostramquequantoantesumerrofordetectado,menoréocustodecorreção.

PARADIGMASDELINGUAGENSDEPROGRAMAÇÃO

PARADIGMAIMPERATIVO

25

Ø OmodeloImperativoébaseadonaperspectivadocomputador:aexecuçãosequencialdecomandoseousodedadossãoconceitosbaseadosnomodocomooscomputadoresexecutamprogramasnoníveldelinguagemdemáquina.

Ø Estemodeloéopredominante.Ø Aslinguagensimperativassãodefáciltradução.Ø Exemplos: FORTRAN,COBOL,ALGOL60,APL,BASIC,PL/I,SIMULA67,

PASCAL,CeADA.

PARADIGMAIMPERATIVO

26

Ø Exemplo: LinguagemC

#include <stdio.h>int main (void){

printf ("Ola! Eu estou vivo!\n");return 0;

}

PARADIGMAFUNCIONAL

27

Ø OmodeloFuncionalfocalizaoprocessoderesoluçãodoproblema.Avisãofuncionalresultanumprogramaquedescreveasoperações(funções)quedevemserefetuadaspararesolveroproblema.

Ø Baseia-senoconceitomatemáticodefunção,queéummapeamentodeumconjuntoAnumconjuntoB.

Ø 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;

PARADIGMALÓGICO

28

Ø OmodeloLógicoestárelacionadoàperspectivadapessoa:elaencaraoproblemadeumaperspectivalógica.

Ø Umprogramalógicoéequivalenteàdescriçãodoproblemaexpressademaneiraformal,similaràmaneiraqueoserhumanoraciocinariasobreele.

Ø Escreverumprogramaécomoprovarumteorema.Ø Exemplo: PROLOG.

colega(carlos,alex).colega(carlos,rafael).colega(carlos,pedro).colega(pedro,paulo).lista_colega(C,L):-bagof(X, colega(C,X), L).

PARADIGMAORIENTADOAOBJETO(OO)

29

Ø OmodeloOrientadoaObjetofocalizamaisoproblema,baseadonauniãodosconceitosdedadoseoperações.

Ø UmprogramaOOéequivalenteaobjetosquemandammensagensentresi.Osobjetosdoprogramaequivalemaosobjetosdavidareal(problema).

Ø AprimeiralinguagemOOfoiSimula,desenvolvidaem1966edepoisrefinadaemSmalltalk.Existemalgumaslinguagenshíbridas:ModeloImperativomaiscaracterísticasdeOrientaçãoaObjetos(OO),assimcomoC++.

Ø Exemplos: Simula,Smalltalk,Object Pascal,C++,Java,VisualBasic,C#.

PARADIGMAORIENTADOAOBJETO(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

Ø Asatividadesdolaboratóriodaauladehojeestão noMoodle.