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ÇÃ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.
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.
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);
}}