Escolar Documentos
Profissional Documentos
Cultura Documentos
Alex...,JeffersonAlvesCosta,JosLuiz...
Em2001:
Aequipeprincipal (Felleisen, Findler, Flatt, Krishnamurthi) escreveu epublicou
seu primeiro livro, Como projetar programas (How to Design Programs),
baseadoemsuafilosofiadeensino.
7deJunho,2010:
PLTSchemepassouaserchamadaRacket.
2. (Alinguagememquesto compilada,interpretadaouhbrida?
scriptingouno?)
Racketumalinguagemmultiparadigma:
Funcional: procura fazer as funes ser mais prximas possvel das
funesmatemticaseevitaestadosoudadosmutveis.
Procedural: um paradigma que usa conceitos de chamada de
procedimentos.
Tem a vantagem de reutilizar o mesmo cdigo em diversas partes do
programa, facilidade de organizar o fluxo do programa, ser modular e
estruturado.
Modular: significa que o programa pode ser compilado separadamente
empartes.bomparaprogramasgrandesecomplicados.
Reflexivo: o programa tem a capacidade de analisar e modificar a
estruturaeocomportamentodeumobjetoemtempodeexecuo.
Orientao a objeto: representa conceitos que tem campos de dados e
procedimentosassociadoschamadosmtodos.
Pragramao meta: a escrita de um programa que escreve ou
manipula outros programas, ou ele mesmo,comoseusdadosoufazem
parte do trabalho em tempo decompilaoque seriafeitaemtempode
execuo.
Lgica:baseadanalgicadeprimeiraordem.
4. (Tiposabstratosdedados,orientaoaobjeto)
Tiposabstratosdedados
Umtipoabstratodedados(TAD)especificaumconjuntodedadoseoperaes
queso executadas sobre esses dados. OTADtem o objetivo desimplificaro
algoritmoatravsdaabstraesdasvariveisemumaentidade.
Umaestruturatemadefinio:
(definestructnomedaestrutura(valor1valor2))
onde,
makenomedaestruturaoconstrutorquecriaaestrutura
nomedaestruturavalor1 e nomedaestruturavalor2 so seletores que extraem
valor1evalo2,respectivamente.
Ex:
(definestructstructagenda(nometelefone))
(defineagenda(makestructagenda'eu'32940568))
>(structagendanomeagenda)
eu
>(structagendatelefoneagenda)
32940568
Orientaoaobjeto
Parasetrabalharcom orientaoaobjeto,oprogramadortemquedeclararno
DrRacketabibliotecaracket/class.
Uma class (classe) contm uma coleo de mtodos, campos que tm
expressesdevaloresiniciaisevaloresqueiniciamosargumentos.
Nesse contexto, um objeto uma coleo de vinculaoporcamposque so
instanciadosdeacordocomadescriodaclasse.
5. (Operadores.)
Tiposprimitivosdedados:
numeros
integers(ex:1,4,3,0)
floats(ex:0.0,3.5,1.23E+10)
rationals(ex:2/3,5/2)
simbolos(ex:fred,x,a12,set!)
boleano:Racketusasimbolosespeciaspararepresentarverdadeiro#t
oufalse#f.
strings(ex:"helloword")
caracteres(ex#\c)
CaseissignificantinRacketforsymbols.(Itisn'tsignificantforsymbolsinthe
R5RSSchemestandard,whichmeansitisn'tsignificantforvariablenames.)
Recommendation:writeyourprogramssothattheyworkcorrectlywhetheror
notcaseissignificantinsymbols.Notethatyoucanhavenonalphanumeric
characterssuchas+oror!inthemiddleofsymbols.(Youcan'thave
parentheses,though.)
Aquiestoalgumasdasfunesbasicasqueschemeproporcionaparaostipos
acima.
FunoesAritmticas(+,,*,/,abs,sqrt)
Relacional(=,<,>,<=,>=)(fornumbers)
Relacional(eq?,eqv?,equal?)paradadosarbitrrios
Logicos(and,or,not):andeorsofunoesdecurtocircuito.
Somefunctionsare
predicates
,thatis,theyaretruthtests.InRacket,they
return#for#t.
number?integer?pair?symbol?boolean?string?
eqv?equal?
=<><=>=
6. (Escopo)
O escopodeumavinculaooconjuntodeformasdeorigemaqueseaplica.
Oambientedeumaformaoconjuntodeligaes,cujoescopoincluiaforma.
7. (Expresses,estruturasdecontrole,desviocondicional.)
Ummdulodoprogramaescritocomo
#lang<langname><topform>
<topform>uma<definio>ouuma<expr>.
Exemplos:
(definex3)definexparaser3
(define(xstr)definexcomoumafunodeumargumento
(substringstr0x)
>x
3
>(xmeucarro)
meu
#notao#
Agramticaparaautilizaodeumaformasintticaalgoapresentadoassim:
(Algo[Id+...]anexpr...)
deveserumaexpresso.
Um ... indica zero ou mais repeties da forma anterior, e... + indica uma ou
maisrepetiesdoqueopontodereferncia
anterior. Caso contrrio, os identificadores noitlico representam a si
mesmos
Combasenagramticaacima,ento,aquiestoalgunsusosconformidade.
(Algo[X])
(Algo[X](+12))
(Algo[Xmyfavoritemartianx](+12)#F)
(Algoelse[thing+...]anexpr...)
thing=thingid
|thingkeyword
O exemplo acima diz que, dentro de uma forma somethingelse, uma thing
umidentificadorouumkeyword.
*Expressesregulares*
1.AescritadepadresRegexp
destringbytebaseadoemregexp.
Alternativamente, umastringoubytestringpode serprefixadocom#Px
,Comoem#px"abc",
porumasintaxeligeiramentealargadodepadresdentrodastring.
A maioria dos caracteres em uma regexp padro so feitos para combinar
ocorrnciasde
si na seqncia de texto . Assim, o padro # rx "abc" corresponde a
umastringquecontmos
caracteres a , b , c em sucesso. Outros caracteres agem como
metacaracteresealgumassequncias
de caracteres atua como metassequncias. Ou seja, eles especificam
algoliteraisdiferentedesimesmos.
Por exemplo, no padro # rx "a.c", os caracteres a e c se por si
mesmos,masometacharacter
.
podecorresponderaqualquercaractere.
Portanto, opadro#rx"a.c"correspondea a,Qualquercaractere,ec
emsucesso.
Estruturasdecontrole
If
Temaforma(if<expr1><expr2><expr3>)
<expr1>=expressodotestedacondio
<expr2>=entoexpr
<expr3>=senoexpr
Exemplo:
>(if(>56)maiormenor)
menor
>(if(=56)"iguais""diferentes")
diferentes
Andeor
Soavaliaescurtocircuitoetmasformas:
(and<expr>*)
(or<expr>*)
Exemplos:
>(and(=56)(<56))
#f
>(or(=56)(<56))
#t
Cond
Temaforma:(cond{[<expr><expr>*]}*)
Testa de condio em condio, se alguma verdadeira, no testa as outras
condies.
Exemplo:
>(cond
[(=56)"iguais"]
[(>56)"maior"]
[(<56)"menor"])
menor
8. (Subprogramas.)
9. (Hsuporteconcorrncia(programaoparalela)?)
#langracket
(define(lucasnum)
(cond
[(=num0)2]
[(=num1)1]
[else(+(lucas(num1))(lucas(num2)))]))
(definemax10001)
(definemin1)
(for([i(inrangeminmax)])
(display(lucasi))
(printf""))
11. Sistemadetipos
Sistemadetipos
Booleanos
#t para verdadeiroe#fparafalso.Emcondicionais,ososvaloresno#fso
tratadoscomoverdadeiro.
Ex:
>(=4(+22))
#t
Oprocedimentoboolean?Reconheceasduasconstantesbooleanas.
Ex:
>(boolean?nao)
#f
Nmeros
Soescritosdojeitousual,incluindofraesenmerosimaginrios.
Inteiro:1
Racional:
Complexo:1+2i
Pontoflutuante:3.14e6.05e+23
Exemplos:
>0.5
0.5
>#e0.5
Caractereres
Caracter corresponde a uminteiro,otipocaracterseparadodosnmeros.Os
procedimentos char>integer e integer>char converte entre nmeros de valor
escalareocaractercorrespondente.
Exemplos:
>(integer>char65)
#\A
>(char>integer#\A)
65
String
Uma string um vetor de caracteres de tamanhofixado e so escritas entre
aspasduplas.
Ex:
>Banana
Banana
Bytes
um inteiro exato entre 0 e 255. O procedimento byte? analisa se byte ou
no.
Ex:
>(byte?4)
#t
>(byte?300)
#f
Smbolos
um valor que vem depos de e o procedimento symbol? Verifica se um
smbolo,retornandoverdadeiro(#t)oufalso(#f).
Exemplos:
>x
x
>(symbol?x)
#t
>(symbol?5)
#f
Palavraschave
igualasmbolosqueimprimecomprfixo#:
Ex:
>(string>keywordbanana)converteastringparapalavrachave
#:banana
Pares
Sodoisvaloresquesocombinadoscomoprocedimentocons.
Ex:
>(cons24)
Imprimecolocandonocomeoe.entreospares
(2.4)
>(car(cons24)) Procedimentocarimprimeoprimeirovalordopar
2
>(cdr(cons24)) Procedimentocdrimprimeosegundovalordopar
4
>(pair?(cons24)) Procedimentopairverificaseumpar
#t
Listas
Combinaodosparesqueformamumalistaligada.
Ex:
>(cons0(cons1(cons2null)))
(012)
Procedimentolist?verificaseumalista,retorna#tou#f.
>(list?(cons24))
#f
Vectors
Umvectorumarraydetamanhofixo.
Ex:
>#(xyz)
#(xyz)