Anda di halaman 1dari 159

Linguagens de Programao

Prof. Miguel Elias Mitre Campista


http://www.gta.ufrj.br/~miguel

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Parte II
Programao em Linguagens Estruturadas

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Relembrando da ltima Aula...


Algoritmo
Um procedimento bem definido computacionalmente que recebe uma entrada e produz uma sada

Estrutura de dados
So formas de armazenar e organizar dados para facilitar o acesso e possveis modificaes

Programa computacional
um algoritmo expresso em uma linguagem de programao

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Nveis de Linguagens de Programao


Linguagens declarativas

Linguagens de alto nvel

Linguagens de montagem (Assembly)

Nvel de abstrao

Linguagens de mquina

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Nveis de Linguagens de Programao


Linguagens declarativas
Linguagens expressivas como a linguagem oral
Expressam o que fazer ao invs de como fazer

Linguagens de alto nvel


Linguagens tpicas de programao
Permitem que algoritmos sejam expressos em um nvel e estilo de escrita fcil para leitura e compreenso Possuem caractersticas de portabilidade j que podem ser transferidas de uma mquina para outra

Linguagens de montagem e linguagens de mquina


Linguagens que dependem da arquitetura da mquina
Linguagem de montagem uma representao simblica da linguagem de mquina associada
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Nveis de Linguagens de Programao


Pascal Z:= W+X*Y Linguagem de Montagem LOAD 3,X MULTIPLY 2,Y Linguagem de Mquina 41 3 0C1A4 3A 2 0C1A8

ADD 3,W
STORE 3,Z

1A 3 0C1A0
50 3 0C1A4

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Nveis de Linguagens de Programao


Pascal Z:= W+X*Y Linguagem de Montagem LOAD 3,X MULTIPLY 2,Y Linguagem de Mquina 41 3 0C1A4 3A 2 0C1A8

ADD 3,W
STORE 3,Z

1A 3 0C1A0
50 3 0C1A4

Correspondncia 1 para 1

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programa Montador
Responsvel por converter o programa na linguagem de mquina correspondente
Programa na Linguagem de Montagem X Mquina X Programa equivalente na Linguagem de Mquina X

Montador

Mquina X

Entrada de execuo

Sada de execuo

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programa Montador
Responsvel por converter o programa na linguagem de mquina correspondente
Programa na Linguagem de Montagem X Mquina X Programa equivalente na Linguagem de Mquina X

Montador

Mquina X

Entrada de execuo

Sada de execuo

Como ficaria o programa compilador? E o interpretador?


Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Programa Compilador

Programa na Linguagem de Alto nvel Y

Mquina X Compilador

Programa equivalente na Linguagem de Mquina X

Mquina X

Entrada de execuo

Sada de execuo

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programa Interpretador
Programa na Linguagem de Alto nvel Y

Mquina X
Interpretador

Entrada de execuo

Sada de execuo

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Paradigmas de Programao em Alto Nvel


Programao Imperativa

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programao Imperativa
Chamada tambm de programao algortmica Descreve a computao em detalhes em termos de sentenas que mudam o estado do programa
Define sequncias de comandos para o computador executar
Semelhante a uma linguagem oral imperativa:
Chefe: - Some dois nmeros! Chefe: - Exiba o resultado! Chefe: - Volte ao seu trabalho anterior! Chefe: - etc.

Relembrando: Estado de um programa definido pelas suas estruturas de dados e variveis


Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Sentenas
Menor elemento em uma linguagem de programao imperativa capaz de realizar mudana de estado
Sentena simples
Atribuio: a = a + 1 Chamada: funcao() Retorno: return 0 Desvio: goto 1 Assero: assert(a == 0)

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Sentenas
Menor elemento em uma linguagem de programao imperativa capaz de realizar mudana de estado
Sentena composta
Bloco: begin
write(Y');

end Condio: if a>3 then


write(Y');

else
write('N');

end

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Sentenas
Menor elemento em uma linguagem de programao imperativa capaz de realizar mudana de estado
Sentena composta
Chaveamento: switch (c) case 'a':
alert(); break;

case 'q':
quit(); break;

end Lao de repetio: while a>3 do


write(Y);

end

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Sentenas
Diferenas nas sintaxes
Separao de sentenas Trmino de sentenas
Linguagem Separao/Terminao de Sentena

Cobol C e C++
Java, Perl Python

. (ponto) ; (ponto e vrgula)


; (ponto e vrgula) Nova linha

Lua

Espao em branco (separando)

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Paradigmas de Programao em Alto Nvel


Programao Imperativa

Programao No-estruturada

Programao Estruturada

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programao Noestruturada
Tipo de programao imperativa
Cdigo caracterizado pela presena de sentenas do tipo goto
Cada sentenas ou linha de cdigo identificada por um rtulo ou um nmero
Chefe: 10 - Imprimir resultado Chefe: 20 - Se A+B for maior que C Chefe: 30 - V para 10 Chefe: 40 Se A+B for menor que C Chefe: 50 - Some mais 1

Oferece liberdade de programao


Entretanto...
Torna o cdigo complexo
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Programao Noestruturada
Tipo de programao imperativa
Cdigo caracterizado pela presena de sentenas do tipo goto
Cada sentenas ou linha de cdigo identificada por um rtulo ou um nmero
Chefe: 10 - Imprimir resultado Chefe: 20 - Se A+B for maior que C O goto e o if, por Chefe: 30 - V para 10 algum tempo, eram as Chefe: 40 Se A+B for menor que C nicas estruturas de Chefe: 50 - Some mais 1 controle das

Oferece liberdade de programao


Entretanto...
Torna o cdigo complexo
Linguagens de Programao DEL-Poli/UFRJ

linguagens de programao. No existia, p.ex., o while nem o seento-seno!


Prof. Miguel Campista

Programao Estruturada
Tipo de programao imperativa
Basicamente no utiliza sentenas do tipo goto
Dispensa os rtulos
Chefe: - Se A+B for maior que C Chefe: - Imprimir resultado Chefe: - Caso contrrio Chefe: - Some mais 1

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Paradigmas de Programao em Alto Nvel


Programao Imperativa

Programao No-estruturada

Programao Estruturada

Programao Procedural

Programao Orientada a Objetos

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programao Procedural
Tipo de programao imperativa e estruturada baseada em procedimentos
Procedimentos so sinnimos de funes, mtodos ou sub-rotinas
Ex.: Linguagem C
Chefe: - somar(a, b) Chefe: - imprimir(terminado!) Chefe: - voltar

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programao Procedural
Tipo de programao imperativa e estruturada baseada em procedimentos
Procedimentos so sinnimos de funes, mtodos ou sub-rotinas
Ex.: Linguagem C
Chefe: - somar(a, b) Chefe: - imprimir(terminado!) Chefe: - voltar

Resolve o problema por partes, subdividindo-o at que a subdiviso seja simples o suficiente para ser resolvida por apenas um procedimento.
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Programao Procedural
Uso de procedimentos permite:
Reuso de procedimentos em diferentes partes do cdigo
Chefe: r = somar(a,b) Chefe: imprimir(r) Chefe: r = somar(a,r)

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programao Procedural
Uso de procedimentos permite:
Reuso de procedimentos em diferentes partes do cdigo!
Aumenta a eficincia da programao
Chefe: r = somar(a,b) Chefe: imprimir(r) Chefe: r = somar(a,r)

Reuso do mesmo procedimento

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programao Orientada a Objetos


Tipo de programao imperativa e estruturada, porm...
Enquanto a programao procedural estruturada em...
Procedimentos
Estruturas de dados e algoritmos

A programao orientada a objetos estruturada em...


Classes e objetos
Objetos encapsulam estruturas de dados e procedimentos

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Programao Orientada a Objetos


Tipo de programao imperativa e estruturada, porm...
Enquanto a programao procedural estruturada em...
Procedimentos
Estruturas de dados e algoritmos

A programao orientada a objetos estruturada em...


Classes e objetos
Objetos encapsulam estruturas de dados e procedimentos

Procedural
main() { define_carro(); entra_carro(); sair_carro(); }
Linguagens de Programao DEL-Poli/UFRJ

Orientada a objetos
main() { Carro carro; carro.entrar(); carro.sair(); }
Prof. Miguel Campista

Outros Paradigmas de Programao...


Programao baseada em eventos
Fluxo do programa determinado pelo surgimento de eventos
Eventos podem ser disparados pela recepo de mensagens ou expirao de temporizadores

Programao orientada a agentes


Programa estruturado em agentes
Agente uma abstrao de um software capaz de tomar decises autnomas
Ao invs de mtodos e atributos, um agente possui comportamento

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Outros Paradigmas de Programao...


Programao orientada a componentes
Programa cujo o objetivo unir blocos funcionais
Diferente da orientao a objetos, no h a preocupao em modelar objetos como objetos da vida real

Comunicao com o cliente

Processador de dbito

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Linguagens de Programao Estruturadas


Assim como os programadores e as aplicaes...
As linguagens so especializadas dependendo da aplicao para qual foram desenvolvidas
Aplicaes cientficas
Especializadas em manipulao de nmeros e vetores Empregam ferramentas matemticas e estatsticas Requerem mais processamento que entrada e sada de dados
Ex.: Pascal, Fortran, APL

Aplicaes de processamento de dados


Especializadas na criao, manuteno, minerao e resumo de dados em registros ou em arquivos Requerem entrada e sada e nem tanto de processamento
Exs.: Cobol e PL/I
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Linguagens de Programao Estruturadas


Assim como os programadores e as aplicaes...
As linguagens so especializadas dependendo da aplicao para qual foram desenvolvidas
Aplicaes de processamento de texto
Especializadas em manipulao de textos em linguagem natural, ao invs de nmeros e dados
Ex.: SNOBOL

Aplicaes de inteligncia artificial


Especializadas na emulao de comportamento inteligente Incluem algoritmos de jogos, reconhecimento de padro etc.
Exs.: LISP e Prolog

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Linguagens de Programao Estruturadas


Assim como os programadores e as aplicaes...
As linguagens so especializadas dependendo da aplicao para qual foram desenvolvidas
Aplicaes de programao de sistemas
Especializadas no desenvolvimento de programas para interface entre o programa e o hardware da mquina Lidam com eventos imprevistos como erros Incluem compiladores, interpretadores, montadores etc.
Exs. Ada e Modula-2

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Linguagens de Programao Estruturadas


Assim como os programadores e as aplicaes...
As linguagens so especializadas dependendo da aplicao para qual foram desenvolvidas
Aplicaes de programao de sistemas
Especializadas no desenvolvimento de programas para interface entre o programa e o hardware da mquina Lidam com eventos imprevistos como erros Incluem compiladores, interpretadores, montadores etc.
Exs. Ada e Modula-2

Apesar da motivao inicial de desenvolvimento, com o passar do tempo, as linguagens se tornaram mais versteis e completas. Ex.: C++, Lua e Python
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Critrios de Avaliao e Comparao de Linguagens


Expressividade
Capacidade de refletir com clareza o seu objetivo
Ex.: C = A + B C := A + B (SETQ C(+ A B)) ADD A, B GIVING C

Delineamento
Capacidade da linguagem no apresentar ambiguidades

Estruturas e tipos de dados


Suporte a diferentes estruturas de dados e tipos

Modularidade
Suporte subprogramao e extenso
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Critrios de Avaliao e Comparao de Linguagens


Entrada e sada
Suporte a diferentes maneiras de acesso a dados e arquivos

Portabilidade
Dependncia de mquinas especficas

Eficincia
Velocidade de compilao/traduo e execuo

Generalidade
Capacidade de uso em diferentes aplicaes

Simplicidade de aprendizado

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Primeiras Linguagens
Lua Perl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Linguagem Lua
Criada em 1993 na PUC-Rio Linguagem de script dinmica
Semelhante a Python, PHP e Ruby

Possui simplicidade de codificao, eficincia e portabilidade Possui possibilidade de embutir o interpretador em uma aplicao C Tamanho pequeno
Ncleo da linguagem mais bibliotecas ocupa menos de 200k
Importante para arquiteturas com recursos limitados
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Linguagem Lua
uma linguagem dinmica...
Interpretao dinmica
Linguagem capaz de executar trechos de cdigo criados dinamicamente no mesmo ambiente de execuo
Ex.: funo loadstring

f () = loadstring (i = i + 1) i = 0 f (); print (i) -- Imprime 1

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Linguagem Lua
uma linguagem dinmica...
Tipagem dinmica forte
Linguagem faz verificao de tipos em tempo de execuo e no em tempo de compilao Linguagem no aplica uma operao a um tipo incorreto

Gerncia automtica de memria dinmica


Memria no precisa ser tratada explicitamente no programa
Ex.: Alocao e liberao de memria

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Linguagem Lua
Possui propsito geral
Pode ser utilizada em...
Pequenos scripts e sistemas complexos

Principais aplicaes
Desenvolvimento de jogos Ex.: World of Warcraft e The Sims Middleware do Sistema Brasileiro de TV Digital
Ex.: Projeto Ginga

Software comercial Ex.: Adobe Photoshop Lightroom Software para Web Ex.: Publique!
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Linguagem Lua
Trecho
Pedao de cdigo em Lua

Compila cdigos para mquina virtual (MV) Depois de compilado, Lua executa o cdigo com o interpretador para a MV
Interpretador: lua
Compila e executa o cdigo
lua <arq-codigo>

Compilador: luac
Apenas compila
luac o <nome-arq-compilado> <arq-codigo>

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Primeiro Exemplo em Lua


Programa: HelloWorld.lua
print Hello, world!

Compilao+Execuo: lua HelloWorld.lua


shell>$ lua HelloWorld.lua
Hello, world!

shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Primeiro Exemplo em Lua


Programa: HelloWorld.lua
print Hello, world!

Compilao seguida de execuo: luac o l HelloWorld.lua


shell>$ luac -o l HelloWorld.lua
shell>$ lua l

Hello, world!
shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Primeiro Exemplo em Lua


Programa: HelloWorld.lua
print Hello, world!

Compilao seguida de execuo: luac o l HelloWorld.lua


shell>$ luac -o l HelloWorld.lua
shell>$ lua l

Hello, world!
shell>$ Distribuio de Lua para Windows: Lua for windows http://code.google.com/p/luaforwindows/
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Variveis em Lua
Escopo
Por padro, as variveis so sempre globais (Escopo lxico)
Para indicar variveis locais, usa-se a palavra-chave: local

Tipos
Determinados dinamicamente, dependendo do valor que est sendo armazenado
Variveis podem armazenar qualquer um dos tipos bsicos de Lua
nil, boolean, number, string, function, userdata, thread e table

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Variveis em Lua
Escopo
Por padro, as variveis so sempre globais (Escopo lxico)
Para indicar variveis locais, usa-se a palavra-chave: local

Tipos
Determinados dinamicamente, dependendo do valor que est sendo armazenado
Variveis podem armazenar qualquer um dos tipos bsicos de Lua
nil, boolean, number, string, function e table

Semelhante ao NULL, significada ausncia de valor


Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Variveis em Lua
Escopo
Por padro, as variveis so sempre globais (Escopo lxico)
Para indicar variveis locais, usa-se a palavra-chave: local

Tipos
Determinados dinamicamente, dependendo do valor que est sendo armazenado
Variveis podem armazenar qualquer um dos tipos bsicos de Lua
nil, boolean, number, string, function e table

Varivel booleana
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Variveis em Lua
Escopo
Por padro, as variveis so sempre globais (Escopo lxico)
Para indicar variveis locais, usa-se a palavra-chave: local

Tipos
Determinados dinamicamente, dependendo do valor que est sendo armazenado
Variveis podem armazenar qualquer um dos tipos bsicos de Lua
nil, boolean, number, string, function e table

Ponto flutuante (pode ser usada para representar umCampista inteiro) Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel

Variveis em Lua
Escopo
Por padro, as variveis so sempre globais (Escopo lxico)
Para indicar variveis locais, usa-se a palavra-chave: local

Tipos
Determinados dinamicamente, dependendo do valor que est sendo armazenado
Variveis podem armazenar qualquer um dos tipos bsicos de Lua
nil, boolean, number, string, function e table

Cadeia de caracteres: cadeia, cadeia ou [[cadeia]]


Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Variveis em Lua
Escopo
Por padro, as variveis so sempre globais (Escopo lxico)
Para indicar variveis locais, usa-se a palavra-chave: local

Tipos
Determinados dinamicamente, dependendo do valor que est sendo armazenado
Variveis podem armazenar qualquer um dos tipos bsicos de Lua
nil, boolean, number, string, function e table

Representa funes
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Variveis em Lua
Escopo
Por padro, as variveis so sempre globais (Escopo lxico)
Para indicar variveis locais, usa-se a palavra-chave: local

Tipos
Determinados dinamicamente, dependendo do valor que est sendo armazenado
Variveis podem armazenar qualquer um dos tipos bsicos de Lua
nil, boolean, number, string, function e table

Tipo para tabelas (arrays, conjuntos, grafos etc.)


Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Variveis em Lua
Escopo
Por padro, as variveis so sempre globais (Escopo lxico)
Para indicar variveis locais, usa-se a palavra-chave: local

Tipos
Determinados dinamicamente, dependendo do valor que est sendo armazenado
Variveis podem armazenar qualquer um dos tipos bsicos de Lua
nil, boolean, number, string, function e table
Function e table armazenam uma referncia

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Lua


Programa: tipos.lua

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Lua


Programa: tipos.lua

Varivel a declarada local

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Lua


Programa: tipos.lua

Funo type que retorna o tipo da varivel

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Lua


Programa: tipos.lua

Comentrio

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Lua


Programa: tipos.lua

Interpretao: lua tipos.lua


shell>$ lua tipos.lua number string boolean function shell>$
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Inicializao de Variveis
Programa: initvar.lua

shell>$ lua initvar.lua bola nil 1 2 nil bola casa casa bola shell>$
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Operadores em Lua
Relacionais
<, >, <=, >=, ==, ~=
Operadores retornam true ou false (0 tipo number) Negao da igualdade: ~=

Lgicos
and, or, not

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Operadores em Lua
Relacionais
<, >, <=, >=, ==, ~=
Operadores retornam true ou false Negao da igualdade: ~=

Lgicos
and, or, not
Arquivo: var.lua

and: retorna o primeiro se for false ou nil ou o segundo, caso contrrio

or: retorna o primeiro operando que no for nil ou false


not: retorna sempre um valor booleano

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Operadores em Lua
Relacionais
<, >, <=, >=, ==, ~=
Operadores retornam true ou false Negao da igualdade: ~=

Lgicos
and, or, not
Arquivo: var.lua
shell>$ lua var.lua 34 false 0 true lua 34 100 shell>$
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Operadores em Lua
Pra que eu poderia usar a funo abaixo em Lua?
function initx (v) x = v or 100 end

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Operadores em Lua
Pra que eu poderia usar a funo abaixo em Lua?
function initx (v) x = v or 100 end

Funo para inicializar x com valor padro (100) caso v no seja atribudo.

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Operadores em Lua
Arquivo: defaultInit.lua

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Tabelas em Lua
Uso do operador {}
Tabela vazia: t = {} Tabela com trs elementos: t = {4, lua, false} Tabela associativa (chave e valor): t = {x=4, y=l,z=false}

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Tabelas em Lua
Uso do operador {}
Tabela vazia: t = {} Tabela com trs elementos: t = {4, lua, false} Tabela associativa (chave e valor): t = {x=4, y=l,z=false}
Arquivo: tabela.lua

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Tabelas em Lua
Uso do operador {}
Tabela vazia: t = {} Tabela com trs elementos: t = {4, lua, false} Tabela associativa (chave e valor): t = {x=4, y=l,z=false}
Arquivo: tabela.lua
shell>$ lua tabela.lua 4 lua false number string boolean nil nil nil 4 lua false 4 lua false

shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Tabelas em Lua
Programa: tabela2.lua (Variveis do tipo table armazenam referncias)

shell>$ lua tabela2.lua false true 20 shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Tabelas em Lua
Insero em tabelas
Arquivo: insereTable.lua

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Estruturas de Controle em Lua


Condio
if x > 10 then print (x > 10) elseif x > 5 then print (5 > x > 10) else print (x < 5) end -- valor inicial, cond. de contorno e passo for x=1, 10, 1 do print (x) end for x=1, 10 do --Passo igual a 1 pode omitir print (x) end for x=10, 1, -1 do print (x) end
Prof. Miguel Campista

Lao
while x < 10 do x=x+1 end

Linguagens de Programao DEL-Poli/UFRJ

Estruturas de Controle em Lua


For genrico: Percorre valores com uma f iteradora
ipairs: percorre ndices de um array pairs: percorre chaves de uma tabela io.lines: percorre linhas de um arquivo
Programa iteradores.lua
shell>$ lua iteradores.lua 1 3 5 x 1 y 3 z 5 aluno eletrnica linguagens
Linguagens de Programao DEL-Poli/UFRJ

shell>$

Prof. Miguel Campista

Estruturas de Controle em Lua


Qual for genrico pode ser usado para imprimir todos os elementos (ipairs, pairs, io.lines)?

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Estruturas de Controle em Lua


Qual for genrico pode ser usado para imprimir todos os elementos (ipairs, pairs, io.lines)?

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Funes em Lua
Declarao de funes
function
function nome-da-funcao (arg1, arg2, ..., argn) Corpo da funo end

Ex.: function fatorial (n)

Funes podem receber e retornar n parmetros


function nome-da-funcao (arg1, arg2, ..., argn) corpo da funo return par1, par2, ..., parn end x1, x2, ..., xn = nome-da-funcao(arg1, arg2, ..., argn)
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Funes em Lua

shell>$ lua parimpar.lua 2 true shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Bibliotecas Padro
As bibliotecas padro de Lua oferecem funes teis
So implementadas diretamente atravs da API C
Algumas dessas funes oferecem servios essenciais para a linguagem (ex. type) Outras oferecem acesso a servios "externos" (ex. E/S)

Funes poderiam ser implementadas em Lua


Entretanto, so bastante teis ou possuem requisitos de desempenho crticos que levam ao uso da implementao em C (ex. table.sort)

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Exemplo 1: Fatorial
Escreva um programa em Lua para calcular o nmero fatorial de um inteiro passado pelo usurio

?
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1: Fatorial

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Exemplo 2: Fibonacci
Escreva um programa em Lua para calcular o ensimo nmero da srie de Fibonacci.
O ensimo nmero passado pelo usurio

?
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Fibonacci

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Exemplo 3: Soma de Matrizes


Escreva um programa em Lua para calcular a soma de duas matrizes quadradas

?
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 3: Soma de Matrizes

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Exemplo 4: Lista Encadeada


Escreva um programa em Lua para inserir elementos em uma lista encadeada

?
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 4: Lista Encadeada

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Linguagem Perl
Criada em 1987 por Larry Wall na Unisys
Baseada em C, shell script, AWK e sed

Linguagem de script dinmica


Semelhante a Python, PHP e Ruby

Possui simplicidade de codificao, eficincia e portabilidade Possui possibilidade de embutir o interpretador em uma aplicao C

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Linguagem Perl
Possui propsito geral
Pode ser utilizada em...
Pequenos scripts e sistemas complexos

Principais aplicaes
Processamento de texto
Aplicao original

Web
Amazon.com, BBC Online, Ticketmaster

Desenvolvimento de software
Twiki

Comunicaes
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Linguagem Perl
Perl uma linguagem interpretada
Interpretador: perl
Interpreta e executa o cdigo
perl <arq-codigo>

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Primeiro Exemplo em Perl


Programa: HelloWorld.pl
print Hello, world!\n;

Interpretao: perl HelloWorld.pl


shell>$ perl HelloWorld.pl
Hello, world!

shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Primeiro Exemplo em Perl


Programa: HelloWorld.pl
print Hello, world!\n;

Interpretao: perl HelloWorld.pl


shell>$ perl HelloWorld.pl
Hello, world!

shell>$

Distribuio de Perl para Windows: Strawberry Perl http://strawberryperl.com


Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Variveis em Perl
Escopo
Por padro, as variveis so sempre globais
Para indicar variveis locais, usa-se a palavra-chave: my

Tipos
Perl possui trs tipos principais
scalar
Representa um nico valor

array
Representa uma lista de valores

hash
Representa um conjunto de pares chave/valor

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Variveis em Perl
Escopo
Por padro, as variveis so sempre globais
Para indicar variveis locais, usa-se a palavra-chave: my

Tipos
Perl possui trs tipos principais
scalar

ser strings, inteiros array e pontos flutuantes. O Perl Representa uma lista de valores automaticamente converte hash entre os tipos. Essas Representa um conjunto de pares devem ser sempre variveis chave/valor precedidas por $
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Representa um nico valor Podem

Variveis em Perl
Escopo
Por padro, as variveis so sempre globais
Para indicar variveis locais, usa-se a palavra-chave: my

Tipos
Perl possui trs tipos principais
scalar

Representa uma lista de array valores que podem ser Representa uma lista de valores escalares. Essas variveis hash devem ser sempre Representa um conjunto de pares chave/valor precedidas por @
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Representa um nico valor

Variveis em Perl
Escopo
Por padro, as variveis so sempre globais
Para indicar variveis locais, usa-se a palavra-chave: my

Tipos
Perl possui trs tipos principais
scalar

um conjunto de array chaves e valores Representa uma lista de valores associados. Essas variveis hash devem ser sempre Representa um conjunto de pares chave/valor por % precedidas
Linguagens de Programao DEL-Poli/UFRJ

Representa um nico valor Representa

Prof. Miguel Campista

Segundo Exemplo em Perl


Programa: escalares.pl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Perl


Programa: escalares.pl

Varivel escalar s declarada local

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Perl


Programa: escalares.pl

Marcao de trmino da sentena

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Perl


Programa: escalares.pl

Comentrio

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Segundo Exemplo em Perl


Programa: escalares.pl

Interpretao: perl escalares.pl


shell>$ perl escalares.pl A varivel : 3 A varivel : perl agora A varivel : perl agora 2.23 shell>$
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Terceiro Exemplo em Perl


Programa: vetores.pl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Terceiro Exemplo em Perl


Programa: vetores.pl

Interpretao: perl vetores.pl

shell>$ perl vetores.pl camel llama 1.23 camelllama camelllamaowl llamaowl shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Quarto Exemplo em Perl


Programa: hashes.pl

Interpretao: perl hashes.pl


Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Quarto Exemplo em Perl


Programa: hashes.pl

Interpretao: perl hashes.pl


Linguagens de Programao DEL-Poli/UFRJ

shell>$ perl hashes.pl vemelha verde macabanana verdepreta shell>$


Prof. Miguel Campista

Quinto Exemplo em Perl


Programa: hasheHashes.pl
Tipos mais complexos de dados podem ser construdos usando referncias
Referncias so variveis escalares

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Quinto Exemplo em Perl


Programa: hasheHashes.pl
Tipos mais complexos de dados podem ser construdos usando referncias
Referncias so variveis escalares

shell>$ perl hasheHashes.pl Scalars begin with a $ shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Sexto Exemplo em Perl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Sexto Exemplo em Perl

shell>$ perl ordena.pl verdeamarela maduraestragada estragadamadura shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Operadores em Perl
Relacionais numricos
<, >, <=, >=, ==, !=

Relacionais strings
eq, ne, lt, gt, le, ge

Lgicos
&& (and), || (or), ! (not)

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Estruturas de Controle em Perl


Condio:
if ($x > 10) { print x > 10; } elsif ($x > 5) { print 5 > x > 10; } else { print x < 5; }

# precisa das chaves mesmo se houver apenas uma linha no bloco unless ($x == 10) { print x != 10; } # Mesmo que if ($x != 10) {...}

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Estruturas de Controle em Perl


Lao:
while ($x < 10) { $x = $x + 1; }

# valor inicial, cond. de contorno e passo for ($x=1, $x<10, $x++) { print $x; } foreach (@vetor) { #Varre o vetor print Elemento $_; # $_ var. padro } foreach (keys %hash) { print Chaves $_; } foreach my $k (keys %hash) { print Chaves $k; # Sem a var. padro } Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Estruturas de Controle em Perl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Estruturas de Controle em Perl


Obriga uso das chaves

Dispensa uso das chaves

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Sub-rotinas em Perl
Declarao de sub-rotinas
sub
sub nome-da-funcao { corpo da funo; }

Ex.: sub fatorial(n)

Funes podem receber e retornar n parmetros


sub nome-da-funcao { ($par1, $par2, ..., $parn) = @_; corpo da funo; return $par1, $par2, ..., $parn; } ($x1, $x2, ..., $xn) = nome-da-funcao(arg1, arg2, ..., argn);
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Stimo Exemplo em Perl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Stimo Exemplo em Perl

shell>$ perl ordenaSub.pl 123 shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Entrada e Sada
Uso das funes open () e close ()
Abertura e fechamento de arquivos, respectivamente
# Entrada open (my $in, <, input.txt) or die Cant open input.txt: $!; #Sada open (my $in, >, output.txt) or die Cant open output.txt: $!; #Concatenao open (my $in, >>, log.txt) or die Cant open log.txt: $!;

#Fechamento close $in or die $in: $!;

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Oitavo Exemplo em Perl

Arquivo: input.txt Exemplo Entrada Sada Usando Arquivos

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Oitavo Exemplo em Perl


shell>$ perl arquivoES.pl Exemplo Entrada Sada Usando Arquivos *** S a primeira linha *** Exemplo *** Arquivo todo *** Exemplo Entrada Sada Usando Arquivos shell>$
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Mdulos
A linguagem Perl rica em mdulos
Carregados com o uso do use

shell>$ perl modulo.pl 546 shell>$


Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Mdulos
A linguagem Perl rica em mdulos
Carregados com o uso do use

shell>$ perl modulo.pl Name "main::hash" used only once: possible typo at modulo.pl line 9. 546 shell>$
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Mdulos
A linguagem Perl rica em mdulos
Carregados com o uso do use

shell>$ perl modulo.pl Global symbol "@hash" requires explicit package name at modulo.pl line 9. Execution of modulo.pl aborted due to compilation errors. shell>$
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1: Fatorial
Escreva um programa em Perl para calcular o nmero fatorial de um inteiro passado pelo usurio

?
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1: Fatorial

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Exemplo 2: Fibonacci
Escreva um programa em Perl para calcular o ensimo nmero da srie de Fibonacci.
O ensimo nmero passado pelo usurio

?
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Fibonacci

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Exemplo 3: Ordenamento de Cadastro


Escreva um programa em Perl que ordene os nomes passados por um usurio

?
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Expresses Regulares
Avaliao de presena de expresses regulares Simples match
Se a varivel for $_

if (/foo/) {...}
Caso contrrio...

if ($s =~ /foo/) {...} Substituio simples


$s =~ s/foo/bug/ Muitas outras podem ser vistas na documentao do Perl...
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Expresses Regulares
Arquivo: expReg.pl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Expresses Regulares
\S caractere diferente de espao em branco e \s Arquivo: expReg.pl caractere de espao em branco

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Criao de um Mdulo em Perl


Uso do programa: h2xs
Vem com a distribuio do Perl
Cria arquivo de extenses para o Perl (*.xs) de cabealhos .h do C
Changes

Execuo do programa cria estrutura de diretrios com:


Makefile.PL README Diretrio t
Registra mudanas
Arquivo usado para gerar o Makefile

Diretrio lib

Arquivos para teste Arquivo do mdulo


Prof. Miguel Campista

Linguagens de Programao DEL-Poli/UFRJ

Criao de um Mdulo em Perl


Uso do programa: h2xs
Opo n: Nome do mdulo
shell>$ h2xs n testeModule Writing testeModule/ppport.h Writing testeModule/lib/testeModule.pm Writing testeModule/testeModule.xs Writing testeModule/fallback/const-c.inc Writing testeModule/fallback/const-xs.inc Writing testeModule/Makefile.PL Writing testeModule/README Writing testeModule/t/testeModule.t Writing testeModule/Changes Writing testeModule/MANIFEST shell>$
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Criao de um Mdulo em Perl


Criao do mdulo
Edio do arquivo *.pm no diretrio lib
Insero da interface a ser exportada Insero da funo

Instalao
Criao do Makefile Compilao Cpia dos arquivos compilados para os diretrios padro

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Criao de um Mdulo em Perl

interface

Criao da funo oi
funo

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Nono Exemplo em Perl

shell>$ perl oi.pl Hello World! shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Criao de um Mdulo em Perl

Interface mais restritiva. Evita acessos errados

Criao da funo oi
funo

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Nono Exemplo em Perl

shell>$ perl oi.pl Hello World! shell>$

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Criao de um Mdulo em Perl


Instalao: COM permisso de super usurio
shell>$ h2xs n testeModule ... shell>$ cd testeModule shell/testeModule>$ perl Makefile.PL shell/testeModule>$ make shell/testeModule>$ sudo make install

Instalao: SEM permisso de super usurio


shell>$ h2xs n testeModule ... shell>$ cd testeModule shell/testeModule>$ perl Makefile.PL INSTALL_BASE=/home/mydir shell/testeModule>$ make shell/testeModule>$ make install
Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Criao de um Mdulo em Perl


Instalao: COM permisso de super usurio
shell>$ h2xs n testeModule SEM permisso ... super usurio requer a configurao da de shell>$ varivel cd testeModule PERL5LIB para que ela encontre o mdulo de ambiente shell/testeModule>$ perl Makefile.PL no shell/testeModule>$ make Para isso, mas um passo necessrio: diretrio escolhido. shell/testeModule>$ sudo make install

shell/testeModule>$ export PERL5LIB=/home/mydir/lib/perl5

Instalao: SEM permisso de super usurio

shell>$ h2xs n testeModule ... shell>$ cd testeModule shell/testeModule>$ perl Makefile.PL INSTALL_BASE=/home/mydir shell/testeModule>$ make shell/testeModule>$ make install
Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Criao de um Mdulo em Perl


Instalao: SEM permisso de super usurio
Opo -X: Especifica que o mdulo no est ligado com cdigo em C
shell>$ h2xs X n testeModule ... shell>$ cp testeModule/lib/testeModule.pm . ... Incluir as subrotinas em testeModule.pm e apagar a linha:

use AutoLoader qw(AUTOLOAD)


... shell>$ chmod R 777 testeModule shell>$ rm rf testeModule ... O diretrio testeModule pode ser apagado...
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Uso do Perl em um Cdigo C/C++


Implica incluir o interpretador Perl no cdigo do programa C/C++
Ligao com a biblioteca Perl
Deve estar de acordo com os requisitos do programa C/C++
Ex.: No se deve usar o interpretador como uma thread separada se o programa executado em uma thread nica

Criao de uma instncia do interpretador Perl


Invoca o interpretador para a execuo do cdigo em Perl Aps o uso do interpretador, ele deve ser destrudo
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Configurao para Uso do Interpretador Perl


perl V::cc:
Verifica o compilador de C

perl V::ld:
Verifica o ligador

perl MExtUtils::Embed e ccopts


Verifica os includes necessrios

perl MExtUtils::Embed e ldopts


Verifica as bibliotecas necessrias Informaes necessrias para compilar cdigos com interpretador Perl. O prprio interpretador j oferece as informaes necessrias
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Configurao para Uso do Interpretador Perl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Insero de Trecho de Cdigo Perl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Insero de Trecho de Cdigo Perl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Funes e Macros
PERL_SYS_INIT3 e PERL_SYS_TERM
Macros para inicializar e finalizar, respectivamente, tarefas necessrias para criar e remover o interpretador Perl em um cdigo C S devem ser utilizados uma vez, independente do nmero de interpretadores utilizados

perl_alloc, perl_construct, perl_destruct e perl_free


Funes usadas para criar e destruir um nico interpretador

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Funes e Macros
PL_EXIT_DESTRUCT_END e PL_exit_flags
Flags necessrias para que o interpretador execute o bloco de trmino

perl_parse
Configura o interpretador usando opes de linhas de comando

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Chamada de Sub-rotinas Individuais


showtime.pl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Chamada de Sub-rotinas Individuais

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Chamada de Sub-rotinas Individuais


Uso das funes call_* G_NOARGS e G_DISCARD
Usadas quando a sub-rotina em Perl no possui nem argumentos nem valor de retorno, respectivamente

args
Lista de argumentos a ser passada para as rotinas individuais
Lista de strings terminadas por NULL

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Trechos de Cdigo Perl em Programas em C/C++

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Trechos de Cdigo Perl em Programas em C/C++

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Trechos de Cdigo Perl em Programas em C/C++


Uso das funes eval_pv e get_sv
eval_pv permite avaliar string Perl individuais
Extrai variveis por coero de tipos em C
inteiro no primeiro (SvIV) float do segundo (SvNV) char * do terceiro (SvPV)

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Interao com Sub-rotinas em Perl


Uso de sub-rotinas em Perl a partir do cdigo C
Passagem de argumentos Recepo de retorno
Manipulao de pilha

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Trechos de Cdigo Perl em Programas em C/C++


calc.pl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Trechos de Cdigo Perl em Programas em C/C++


calc.pl

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Trechos de Cdigo Perl em Programas em C/C++

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Exerccio
Escrever uma agenda em Lua ou Perl
Implementar procedimentos de insero, remoo e consulta

Linguagens de Programao DEL-Poli/UFRJ

Prof. Miguel Campista

Leitura Recomendada
Captulo 1 do livro
Allen B. Tucker, Programming Languages", Editora McGrawHill, 2 Edio, 1985

LabLua, Lua: Conceitos Bsicos e API C, 2008, acessado em http://www.lua.org/portugues.html Roberto Ierusalimschy, Uma Introduo Programao em Lua, Jornadas de Atualizao em Informtica (JAI), 2009 Kirrily "Skud" Robert, A brief introduction, 2010, acessado em http://www.perl.org/learn.html
Linguagens de Programao DEL-Poli/UFRJ Prof. Miguel Campista

Anda mungkin juga menyukai