• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Final presentation of proposal language
 

Final presentation of proposal language

on

  • 164 views

Final presentation of proposal language

Final presentation of proposal language

Statistics

Views

Total Views
164
Views on SlideShare
164
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Final presentation of proposal language Final presentation of proposal language Presentation Transcript

    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAProjeto de especificac¸˜ao da linguagem C+-Caio Santos, Gabriel Valsiljevic, Jean Silva, Victor HenriqueUniversidade Federal do Rio Grande do NorteCentro de Ciˆencias Exatas e da TerraDepartamento de Inform´atica e Matem´atica Aplicada4 de junho de 20131/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICACONTE ´UDOINTRODUC¸ ˜AOLINGUAGEM IMPERATIVADom´ınio de Aplicac¸˜aoPrincipais caracter´ısticasSistema de TiposTipos PrimitivosDesignadores dos tipos primitivosTipos compostosExpress˜oes da LinguagemEntrada e Sa´ıdaEstruturas de ControleLINGUAGEM FUNCIONALDiferenc¸as marcantes do paradigma imperativoSistema de TiposExpress˜oes da LinguagemEscopo e Tempo de VidaArraysEstruturas de controleLINGUAGEM L ´OGICADiferenc¸as marcantes do paradigma imperativoTiposEscopoOperadores e express˜oesArmazenamento de valoresArraysEstruturas de controle2/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICADOM´INIO DE APLICAC¸ ˜AOLinguagem baseada em C e FORTRANDom´ınio de aplicac¸˜ao cient´ıficoEstruturas de dados simplesManipulac¸˜ao de grandes quantidades de dadosAlta precis˜aoPublico alvoMatem´aticos e cientistas3/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAPRINCIPAIS CARACTER´ISTICASLegibilidadePequeno n´umero de componentes b´asicos (simplicidadeglobal)Nomes (designadores) dos tipos primitivos refletem bemsuas finalidades. Ex.: int ≡ inteiro´E case sensitveConfiabilidade´E fortemente tipadaOferece mecanismos de tratamento de excec¸ ˜oesCapacidade de escrita´E pouca ortogonalSistema de implementac¸˜ao: compiladaUsa compilac¸˜ao separada4/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICASISTEMA DE TIPOSA linguagem ´e fortemente tipadaCompatibilidade entre tiposCompatibilidade de nomes e estruturas ser˜ao usados5/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS PRIMITIVOSTabela: Designadores dos tipos primitivos da linguagemNome Descri¸c˜ao Tamanho Faixachar Caractere 1byte −128 a 127 e unsigned: 0 a 255short Inteiro curto 2bytes −32768 a 32767 e unsigned: 0 `a 65535int Inteiro 4bytes −2147483648 a 2147483647 e unsigned: 0`a 4294967295long Inteiro longo 8bytes −263 `a 263 − 1 e unsigned: 0 `a 264 − 1bigInt Inteiro muito longo 16bytes −2127 `a 2127 − 1 e unsigned: 0 `a 2128 − 1bool Valor booleano. 1byte true ou falsefloat Pronto flutuante 4bytes ±3.4e ± 38double Precis˜ao dupla doponto flutuante8bytes ±1.7e ± 308complex N´umeros comple-xos8bytes −264 `a 264 − 16/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS COMPOSTOSConjunto (Set)1 import utility.set;2 ...3 set <int> A;4 set < set <int> > B;5 B.add(A);6 /**7 * $B supset A$8 */7/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS COMPOSTOSConjunto (Set)1 import utility.set;2 ...3 set <int> A;4 set < set <int> > B;5 B.add(A);6 /**7 * $B supset A$8 */Lista (List)1 import utility.list;2 ...3 list <int> a;4 list < list <int> > b;7/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS COMPOSTOSPilha (Stack)1 import utility.stack2 ...3 stack <int> mystack;4 mystack.push(5);5 mystack.push(4);6 mystack.push(3);7 mystack.pop();8 write("%dn", mystack.top());8/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS COMPOSTOSPilha (Stack)1 import utility.stack2 ...3 stack <int> mystack;4 mystack.push(5);5 mystack.push(4);6 mystack.push(3);7 mystack.pop();8 write("%dn", mystack.top());Fila (Queue)1 import utility.queque;2 ...3 queue f<int> myqueue;4 myqueue.push_back(8);5 myqueue.push_back(7);6 write("front: %d; back: %dn", myqueue.front(), myqueue.back());7 myqueue.pop_front();8/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS COMPOSTOSVetor1 int v[10];2 int vet[3] = {1, 2, 3};3 int mat[2][2] = {1, 0;4 0, 1};9/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS COMPOSTOSVetor1 int v[10];2 int vet[3] = {1, 2, 3};3 int mat[2][2] = {1, 0;4 0, 1};O usu´ario pode desejar definir seus pr´oprios tipos1 struct ListaT {2 int info;3 ListaT * prox;4 };5 ...9/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAEXPRESS ˜OES DA LINGUAGEMOperador Descric¸˜aoOperadores Aritim´eticos+ adic¸˜ao- subtrac¸˜ao* multiplicac¸˜ao/ divis˜ao% mod ou resto de divis˜aoIncremento e Decremento++ incremento– decrementoOperadores Relacionais== Igualdade!= Diferenc¸a>, < maior que, e menor que>=, <= maior igual, e menor igual10/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAEXPRESS ˜OES DA LINGUAGEMOperador Descric¸˜aoOperadores L´ogicos! NOT&& AND|| OROperadores bit-a-bit& AND| ORˆ XOR˜ NOT11/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS DEFINIDOS PELO USU ´ARIODefinic¸˜ao1 template <typedef struct T>2 typedef struct Par {3 T a, b;4 };56 template <typedef struct T>7 function getMax (Par <T> p ) : T {8 return p.a > p.b ? p.a : p.b;9 }Uso1 Par <double> p;2 p.a = 5.5, p.b = 5.4;3 write("%lf", getMax(p));12/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAENTRADA E SA´IDA1 import io;23 function main(): int {4 int a, b;5 read("%i %i", &a, &b);6 int soma = a + b;7 write("%in", soma);8 return 0;9 }13/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLECONDICIONAL: COMANDO IF1 import io;23 function main(): int {4 int n;5 read("%d", &n);6 if (n > 0) {7 write("%d eh um numero positivon", n);8 } else if(n < 0){9 write("%d eh um numero negativon", n);10 } else {11 write("%d eh zeron", n);12 }13 return 0;14 }14/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLECONDICIONAL: COMANDO SWITCH-CASE1 import io;23 function main(): int {4 string op;5 read("%s", &op);6 switch(op) {7 case "um":8 write("1n");9 break;10 case "dois":11 write("2n");12 break;13 case "tres":14 write("3n");15 break;16 default:17 write("qwertyn");18 break;19 }20 return 0;21 }15/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLEREPETIC¸ ˜AO: COMANDO FOR1 import io;23 function main(): int {4 int n;5 read("%d", &n);6 for (int i = 0; i < n; i++) {7 write("%d ", 2 * (i + 1));8 }9 write("n");10 return 0;11 }16/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLEREPETIC¸ ˜AO: COMANDO FOR-EACH1 import io;2 import utility.list;34 function main(): int {5 list <int> lst;6 lst.add(0);7 lst.add(2);8 lst.add(3);9 lst.add(4);1011 foreach (int a : lst) {12 write("%d ", a);13 }14 write("n");15 return 0;16 }17/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLEREPETIC¸ ˜AO: COMANDO WHILE1 import io;23 function main(): int {4 int n;5 read("%d", &n);6 int i = 0;7 while(i < n) {8 ++i;9 write("%d ", 2 * i);10 }11 write("n");12 return 0;13 }18/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLEREPETIC¸ ˜AO: COMANDO DO-WHILE1 import io;23 function main(): int {4 int i = 5;5 do {6 write("%d ", i);7 i--;8 } while (i != 0);9 write("n");10 return 0;11 }19/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLETRATAMENTO DE EXCEC¸ ˜OES1 procedure g() {2 int x;3 write("Digite um numero positivo: n");4 try {5 read(x);6 if(x < 0){7 throw x;8 }9 } catch(int erro) {10 write("Erro! numero negativo: %i n", erro);11 }12 }20/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICASUBPROGRAMAS1 function fib(int n): int {2 if (n == 0 || n == 1) return n;3 else4 return fib(n - 1) + fib(n - 2);5 }1 procedure printTest() {2 write("Opa...aprendi C+-!");3 }21/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICALINGUAGEM FUNCIONALDIFERENC¸ AS MARCANTES DO PARADIGMA IMPERATIVOLinguagems de programac¸˜ao funcional tratamcomputac¸oes como avaliac¸ ˜oes matem´aticas.N˜ao usa vari´aveis ou instruc¸ ˜oes de atribuic¸˜ao.Programas s˜ao definic¸ ˜oes e aplicac¸ ˜oes de func¸ ˜oes.Simplificac¸˜ao da semˆantica.22/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICASISTEMA DE TIPOSPraticamente todos os tipos primitivos permanecer˜ao.Os tipos compotos ser˜ao representados pela tupla.23/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAEXPRESS ˜OES DA LINGUAGEMOs operadores aritm´eticos permanecem da mesma forma.O incremento e decremento ser˜ao definidos como func¸ ˜oesprimitivas.1 (int, float, string)24/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESCOPO E TEMPO DE VIDAComportamento de func¸ ˜oes matem´aticas.Escopo das vari´aveis ´e est´atico.Seu resultado n˜ao deve ser afetado pelo contexto em que afunc¸˜ao foi chamada.25/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAARRAYSArrays foram substituidos por Listas.Avaliac¸˜ao preguic¸osa, evita c´alculos desnecess´arios epermite construir estruturas infinitas.26/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLEAs estruturas condicionais se resumem em uma mescla docomportamento do switch-case com a avaliac¸˜ao decondic¸ ˜oes de guarda do if.Estruturas de repetic¸˜ao interativas deixaram de existir.Alteradores de fluxo (jumps e escapes) tamb´em ser˜aoeliminados.27/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLE1 //Exemplo Imperativo2 function ehPrimo(int n) : bool {3 int i=2;4 while(i*i){5 if(i%n==0) return false;6 i++;7 }8 return true;9 }1011 //Exemplo Funcional12 function ehPrimo n : int -> bool13 ehPrimoAux(2,n)1415 function ehPrimoAux i, n : int, int16 {i*i>n, true}17 {i%n == 0, false}18 ehPrimoAux i+1, n28/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICALINGUAGEM L ´OGICADIFERENC¸ AS MARCANTES DO PARADIGMA IMPERATIVOTrabalha com regras e fatosVari´aveis n˜ao s˜ao blocos de mem´oriaO programador se preocupa em descrever o problema, en˜ao sua soluc¸˜aoUtiliza backtracking para tentar unificar as vari´aveis29/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS PRIMITIVOSN˜ao haver´a ponteirosN˜ao existir˜ao blocos de mem´oria vis´ıveis ao programadorunsigned e string ser˜ao substitu´ıdos por symbol30/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICATIPOS COMPOSTOSUsu´arios poder˜ao definir predicados compostosExemplo:#predicado simplesgosta(gabriel, lpcp).#predicado compostogosta(gabriel, disciplina(lpcp)).31/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESCOPOFatos s˜ao vis´ıveis globalmenteVari´aveis s˜ao vis´ıveis apenas dentro da regra onde est˜aoinstanciadas32/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAOPERADORES E EXPRESS ˜OESOperadores aritm´eticos e l´ogicos permanecem inalteradosExcec¸˜ao: operador ‘=’ ´e utilizado para unificac¸˜ao, apenasUtiliza-se ‘is’ para atribuic¸˜aoExemplo:tenta_unificar(X,Y) :- X = Y.atribuir(X, Y) :- X is Y + 3.33/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAARMAZENAMENTO DE VALORESFatos s˜ao armazenados em modelo est´aticoVari´aveis s˜ao armazenadas em modelo dinˆamico em pilhaDevido ao seu uso no backtracking, cujo comportamento ´erecursivo34/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAARRAYSDefinidos como listas ligadasRepresentadas como [H|T]H ´e o primeiro elemento da lista e T seu restante (e.g.:[1, 2, 3] seria [1|[2, 3]])Exemplos:somatorio([], 0).somatorio([H|T], X) :- somatorio(T, Y), X is H + Y.35/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAESTRUTURAS DE CONTROLEN˜ao existir˜ao estruturas de controle e fluxo como if-else ewhilePara utilizar estes recursos, deve-se utilizar m´etodosl´ogicos e recurs˜aoComando “!” (cut) utilizado para interromper o processode resoluc¸˜ao e impedir lac¸os infinitos36/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAEXEMPLO DE PROGRAMA#numero de elementos de uma listanum_elements([], 0).num_elements([_|T], X) :- num_elements(T, Y), X is 1 + Y.37/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAEXEMPLO DE PROGRAMA# alguns fatosprogenitor(joao, mario).progenitor(helena, carlos).progenitor(mario, carlos).sexo(jose, ’masculino’).sexo(joao, ’masculino’).sexo(maria, ’feminino’).sexo(ana, ’feminino’).38/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAEXEMPLO DE PROGRAMA# diversas relacoes de parentescoirma(X, Y) :- sexo(X, ’feminino’), progenitor(Z, X), progenitor(Z, Y).irmao(X, Y) :- sexo(X, ’masculino’), progenitor(Z, X),progenitor(Z, Y)mae(X, Y) :- sexo(X, ’feminino’), progenitor(X, Y).pai(X, Y) :- sexo(X, ’masculino’), progenitor(X, Y).avo(X, Y) :- sexo(X, ’masculino’), progenitor(X, Z), progenitor(Z, Y).tio(X, Y) :- irmao(X, Z), progenitor(Z, Y).descendente(X, Y) :- progenitor(Y, X).descendente(X, Y) :- progenitor(Y, Z), descendente(X, Z).39/40
    • INTRODUC¸ ˜AO LINGUAGEM IMPERATIVA LINGUAGEM FUNCIONAL LINGUAGEM L ´OGICAFIMD´uvidas?40/40