Linguagens de Programa¸c˜ao - FCUP - Departamento de Ciência de...

Post on 11-Feb-2019

215 views 0 download

Transcript of Linguagens de Programa¸c˜ao - FCUP - Departamento de Ciência de...

Linguagens de Programacao

Evolucao das linguagens de programacao

Maquina Versus Raciocınio Humano

Perto da maquina+dependentes damaquina+difıcil para o raciocıniohumano

>>>>

Perto do raciocınio hu-mano(algoritmos)+independenteda maquinaVarios paradigmas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 1 / 36

Linguagens de Programacao

Evolucao das linguagens de programacao

Maquina Versus Raciocınio Humano

Perto da maquina+dependentes damaquina+difıcil para o raciocıniohumano

>>>>

Perto do raciocınio hu-mano(algoritmos)+independenteda maquinaVarios paradigmas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 1 / 36

Linguagens de Programacao

Evolucao das linguagens de programacao

Maquina Versus Raciocınio Humano

Perto da maquina+dependentes damaquina+difıcil para o raciocıniohumano

>>>>

Perto do raciocınio hu-mano(algoritmos)+independenteda maquinaVarios paradigmas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 1 / 36

Linguagens de Programacao

Evolucao das linguagens de programacao

Maquina Versus Raciocınio Humano

Perto da maquina+dependentes damaquina+difıcil para o raciocıniohumano

>>>>

Perto do raciocınio hu-mano(algoritmos)+independenteda maquinaVarios paradigmas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 1 / 36

Linguagens de Programacao

Evolucao das linguagens de programacao

Maquina Versus Raciocınio Humano

Perto da maquina+dependentes damaquina+difıcil para o raciocıniohumano

>>>>

Perto do raciocınio hu-mano(algoritmos)+independenteda maquinaVarios paradigmas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 1 / 36

Linguagens de Programacao

Evolucao das linguagens de programacao

Maquina Versus Raciocınio Humano

Perto da maquina+dependentes damaquina+difıcil para o raciocıniohumano

>>>>

Perto do raciocınio hu-mano(algoritmos)+independenteda maquinaVarios paradigmas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 1 / 36

Linguagem maquina (1a¯ geracao)

Sequencias de bits que um CPU descodifica em instrucoes que executa.

Cada instrucao tem um codigo para a operacao e informacao sobre osoperandos.

Exemplo dum programa em linguagem maquina (eventualemente...):

000100010101001000110011

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 2 / 36

Linguagem maquina (1a¯ geracao)

Sequencias de bits que um CPU descodifica em instrucoes que executa.

Cada instrucao tem um codigo para a operacao e informacao sobre osoperandos.

Exemplo dum programa em linguagem maquina (eventualemente...):

000100010101001000110011

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 2 / 36

Linguagem maquina (1a¯ geracao)

Sequencias de bits que um CPU descodifica em instrucoes que executa.

Cada instrucao tem um codigo para a operacao e informacao sobre osoperandos.

Exemplo dum programa em linguagem maquina (eventualemente...):

000100010101001000110011

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 2 / 36

Linguagem maquina (1a¯ geracao)

Sequencias de bits que um CPU descodifica em instrucoes que executa.

Cada instrucao tem um codigo para a operacao e informacao sobre osoperandos.

Exemplo dum programa em linguagem maquina (eventualemente...):

000100010101001000110011

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 2 / 36

Linguagem maquina (1a¯ geracao)

Sequencias de bits que um CPU descodifica em instrucoes que executa.

Cada instrucao tem um codigo para a operacao e informacao sobre osoperandos.

Exemplo dum programa em linguagem maquina (eventualemente...):

000100010101001000110011

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 2 / 36

Linguagem maquina (1a¯ geracao)

Sequencias de bits que um CPU descodifica em instrucoes que executa.

Cada instrucao tem um codigo para a operacao e informacao sobre osoperandos.

Exemplo dum programa em linguagem maquina (eventualemente...):

000100010101001000110011

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 2 / 36

Linguagem Assembly (2a¯ geracao)

mnemonicas para as instrucoes

etiquetas para os enderecos

directivas para a reserva e a inicializacao de posicoes de memoria

Linguagem Apoo

load x R1load y R2add R1 R2store R2 z

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 3 / 36

Linguagem Assembly (2a¯ geracao)

mnemonicas para as instrucoes

etiquetas para os enderecos

directivas para a reserva e a inicializacao de posicoes de memoria

Linguagem Apoo

load x R1load y R2add R1 R2store R2 z

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 3 / 36

Linguagem Assembly (2a¯ geracao)

mnemonicas para as instrucoes

etiquetas para os enderecos

directivas para a reserva e a inicializacao de posicoes de memoria

Linguagem Apoo

load x R1load y R2add R1 R2store R2 z

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 3 / 36

Linguagem Assembly (2a¯ geracao)

mnemonicas para as instrucoes

etiquetas para os enderecos

directivas para a reserva e a inicializacao de posicoes de memoria

Linguagem Apoo

load x R1load y R2add R1 R2store R2 z

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 3 / 36

Linguagem Assembly (2a¯ geracao)

mnemonicas para as instrucoes

etiquetas para os enderecos

directivas para a reserva e a inicializacao de posicoes de memoria

Linguagem Apoo

load x R1load y R2add R1 R2store R2 z

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 3 / 36

Assembladores

Programa que traduz de Assembly para linguagem maquina:

NOTA:para cada linguagem-maquina e Assembly tem de haver umassemblador

Os assembladores podem traduzir em 2 passos:

1 constroem uma tabela em que associam as etiquetas a enderecos(tabela de sımbolos)

2 para cada instrucao, traduzem cada mnemonica pelo codigo (seq. debits) de cada operacao e cada identificador por um endereco (umendereco relativo).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 4 / 36

Assembladores

Programa que traduz de Assembly para linguagem maquina:

NOTA:para cada linguagem-maquina e Assembly tem de haver umassemblador

Os assembladores podem traduzir em 2 passos:

1 constroem uma tabela em que associam as etiquetas a enderecos(tabela de sımbolos)

2 para cada instrucao, traduzem cada mnemonica pelo codigo (seq. debits) de cada operacao e cada identificador por um endereco (umendereco relativo).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 4 / 36

Assembladores

Programa que traduz de Assembly para linguagem maquina:

NOTA:para cada linguagem-maquina e Assembly tem de haver umassemblador

Os assembladores podem traduzir em 2 passos:

1 constroem uma tabela em que associam as etiquetas a enderecos(tabela de sımbolos)

2 para cada instrucao, traduzem cada mnemonica pelo codigo (seq. debits) de cada operacao e cada identificador por um endereco (umendereco relativo).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 4 / 36

Assembladores

Programa que traduz de Assembly para linguagem maquina:

NOTA:para cada linguagem-maquina e Assembly tem de haver umassemblador

Os assembladores podem traduzir em 2 passos:

1 constroem uma tabela em que associam as etiquetas a enderecos(tabela de sımbolos)

2 para cada instrucao, traduzem cada mnemonica pelo codigo (seq. debits) de cada operacao e cada identificador por um endereco (umendereco relativo).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 4 / 36

Assembladores

Programa que traduz de Assembly para linguagem maquina:

NOTA:para cada linguagem-maquina e Assembly tem de haver umassemblador

Os assembladores podem traduzir em 2 passos:

1 constroem uma tabela em que associam as etiquetas a enderecos(tabela de sımbolos)

2 para cada instrucao, traduzem cada mnemonica pelo codigo (seq. debits) de cada operacao e cada identificador por um endereco (umendereco relativo).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 4 / 36

Assembladores

Programa que traduz de Assembly para linguagem maquina:

NOTA:para cada linguagem-maquina e Assembly tem de haver umassemblador

Os assembladores podem traduzir em 2 passos:

1 constroem uma tabela em que associam as etiquetas a enderecos(tabela de sımbolos)

2 para cada instrucao, traduzem cada mnemonica pelo codigo (seq. debits) de cada operacao e cada identificador por um endereco (umendereco relativo).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 4 / 36

Assembladores

Programa que traduz de Assembly para linguagem maquina:

NOTA:para cada linguagem-maquina e Assembly tem de haver umassemblador

Os assembladores podem traduzir em 2 passos:

1 constroem uma tabela em que associam as etiquetas a enderecos(tabela de sımbolos)

2 para cada instrucao, traduzem cada mnemonica pelo codigo (seq. debits) de cada operacao e cada identificador por um endereco (umendereco relativo).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 4 / 36

Assembladores

Programa que traduz de Assembly para linguagem maquina:

NOTA:para cada linguagem-maquina e Assembly tem de haver umassemblador

Os assembladores podem traduzir em 2 passos:

1 constroem uma tabela em que associam as etiquetas a enderecos(tabela de sımbolos)

2 para cada instrucao, traduzem cada mnemonica pelo codigo (seq. debits) de cada operacao e cada identificador por um endereco (umendereco relativo).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 4 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Embora o Apoo seja um processador virtual, pode-se facilmente associaruma linguagem maquina.

Apoo32

(P. Vasconcelos, 2006)

maquina com 32 registos de 32 bits

cada codigo de instrucao ocupa 1 ou 2 palavras de 32 bits

a primeira palavra e dividida em 3 campos:

codigo da operacao (opcode) (7:0): de 0x0 a 0x17e dois operandos opcionais (arg0 e arg1), que representam registos:inteiros de 8 bits.

a segunda palavra se existir um campo de 32bits que podera conterum endereco ou um valor (modo imediato)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 5 / 36

Assemblador para o Apoo

Por exemplo:

Add R2 R3

opcode Add : 0x7arg0 R2 : 0x2arg1 R3 : 0x3

palavra 0 : 0x30207

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 6 / 36

Assemblador para o Apoo

Por exemplo:

Add R2 R3

opcode Add : 0x7arg0 R2 : 0x2arg1 R3 : 0x3

palavra 0 : 0x30207

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 6 / 36

Assemblador para o Apoo

Por exemplo:

Add R2 R3

opcode Add : 0x7arg0 R2 : 0x2arg1 R3 : 0x3

palavra 0 : 0x30207

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 6 / 36

Assemblador para o Apoo

Por exemplo:

Add R2 R3

opcode Add : 0x7arg0 R2 : 0x2arg1 R3 : 0x3

palavra 0 : 0x30207

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 6 / 36

Assemblador para o Apoo

Por exemplo:

Add R2 R3

opcode Add : 0x7arg0 R2 : 0x2arg1 R3 : 0x3

palavra 0 : 0x30207

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 6 / 36

Assembladores

O codigo gerado por um assemblador e normalmente recolocavel:osenderecos sao relativos a um valor base que so sera conhecido quando oprograma estiver a ser executado. Nessa altura os enderecos passam aabsolutos.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 7 / 36

Assembladores

O codigo gerado por um assemblador e normalmente recolocavel:osenderecos sao relativos a um valor base que so sera conhecido quando oprograma estiver a ser executado. Nessa altura os enderecos passam aabsolutos.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 7 / 36

Assembladores

O codigo gerado por um assemblador e normalmente recolocavel:osenderecos sao relativos a um valor base que so sera conhecido quando oprograma estiver a ser executado. Nessa altura os enderecos passam aabsolutos.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 7 / 36

Assembladores

O codigo gerado por um assemblador e normalmente recolocavel:osenderecos sao relativos a um valor base que so sera conhecido quando oprograma estiver a ser executado. Nessa altura os enderecos passam aabsolutos.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 7 / 36

Assembladores

O codigo gerado por um assemblador e normalmente recolocavel:osenderecos sao relativos a um valor base que so sera conhecido quando oprograma estiver a ser executado. Nessa altura os enderecos passam aabsolutos.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 7 / 36

Assembladores

O codigo gerado por um assemblador e normalmente recolocavel:osenderecos sao relativos a um valor base que so sera conhecido quando oprograma estiver a ser executado. Nessa altura os enderecos passam aabsolutos.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 7 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores permitem associar varios programas objectos num so codigoexecutavel.Resolvem referencias externas aos programas objecto.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 8 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores permitem associar varios programas objectos num so codigoexecutavel.Resolvem referencias externas aos programas objecto.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 8 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores permitem associar varios programas objectos num so codigoexecutavel.Resolvem referencias externas aos programas objecto.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 8 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores permitem associar varios programas objectos num so codigoexecutavel.Resolvem referencias externas aos programas objecto.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 8 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores podem ser:

Estaticos Ligam os programas objecto num programa executavel, quedepois pode ser carregado. Esse programa executavel enormalmente guardado num ficheiro.

Dinamicos So ligam os programas quando estao carregados em memoriapara execucao

Os carregadores colocam o programa numa area de memoria, identificadapelo sistema de operacao e encarregam-se dos ajustamentos necessariosdurante a execucao do programa.

Ambos sao usados tambem pelos programas que foram compilados...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 9 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores podem ser:

Estaticos Ligam os programas objecto num programa executavel, quedepois pode ser carregado. Esse programa executavel enormalmente guardado num ficheiro.

Dinamicos So ligam os programas quando estao carregados em memoriapara execucao

Os carregadores colocam o programa numa area de memoria, identificadapelo sistema de operacao e encarregam-se dos ajustamentos necessariosdurante a execucao do programa.

Ambos sao usados tambem pelos programas que foram compilados...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 9 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores podem ser:

Estaticos Ligam os programas objecto num programa executavel, quedepois pode ser carregado. Esse programa executavel enormalmente guardado num ficheiro.

Dinamicos So ligam os programas quando estao carregados em memoriapara execucao

Os carregadores colocam o programa numa area de memoria, identificadapelo sistema de operacao e encarregam-se dos ajustamentos necessariosdurante a execucao do programa.

Ambos sao usados tambem pelos programas que foram compilados...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 9 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores podem ser:

Estaticos Ligam os programas objecto num programa executavel, quedepois pode ser carregado. Esse programa executavel enormalmente guardado num ficheiro.

Dinamicos So ligam os programas quando estao carregados em memoriapara execucao

Os carregadores colocam o programa numa area de memoria, identificadapelo sistema de operacao e encarregam-se dos ajustamentos necessariosdurante a execucao do programa.

Ambos sao usados tambem pelos programas que foram compilados...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 9 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores podem ser:

Estaticos Ligam os programas objecto num programa executavel, quedepois pode ser carregado. Esse programa executavel enormalmente guardado num ficheiro.

Dinamicos So ligam os programas quando estao carregados em memoriapara execucao

Os carregadores colocam o programa numa area de memoria, identificadapelo sistema de operacao e encarregam-se dos ajustamentos necessariosdurante a execucao do programa.

Ambos sao usados tambem pelos programas que foram compilados...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 9 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores podem ser:

Estaticos Ligam os programas objecto num programa executavel, quedepois pode ser carregado. Esse programa executavel enormalmente guardado num ficheiro.

Dinamicos So ligam os programas quando estao carregados em memoriapara execucao

Os carregadores colocam o programa numa area de memoria, identificadapelo sistema de operacao e encarregam-se dos ajustamentos necessariosdurante a execucao do programa.

Ambos sao usados tambem pelos programas que foram compilados...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 9 / 36

Ligadores-Carregadores (Linkers-Loaders)

Os ligadores podem ser:

Estaticos Ligam os programas objecto num programa executavel, quedepois pode ser carregado. Esse programa executavel enormalmente guardado num ficheiro.

Dinamicos So ligam os programas quando estao carregados em memoriapara execucao

Os carregadores colocam o programa numa area de memoria, identificadapelo sistema de operacao e encarregam-se dos ajustamentos necessariosdurante a execucao do programa.

Ambos sao usados tambem pelos programas que foram compilados...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 9 / 36

Linguagens de alto-nıvel

Existem varias geracoes e paradigmas.

Alguns dos objectivos:

Descrever os problemas em termos dos conceitos relativos aoproblema a resolver e nao aos da maquinaPermitir programas (algoritmos) mais legıveis; mais faceis deconceber, de corrigir erros e de modificarMaior independencia da maquina (e do sistemas de operacao):permitir portabilidade

Qualquer destas linguagens tem de ter tradutores para aslinguagem-maquina!

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 10 / 36

Linguagens de alto-nıvel

Existem varias geracoes e paradigmas.

Alguns dos objectivos:

Descrever os problemas em termos dos conceitos relativos aoproblema a resolver e nao aos da maquinaPermitir programas (algoritmos) mais legıveis; mais faceis deconceber, de corrigir erros e de modificarMaior independencia da maquina (e do sistemas de operacao):permitir portabilidade

Qualquer destas linguagens tem de ter tradutores para aslinguagem-maquina!

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 10 / 36

Linguagens de alto-nıvel

Existem varias geracoes e paradigmas.

Alguns dos objectivos:

Descrever os problemas em termos dos conceitos relativos aoproblema a resolver e nao aos da maquinaPermitir programas (algoritmos) mais legıveis; mais faceis deconceber, de corrigir erros e de modificarMaior independencia da maquina (e do sistemas de operacao):permitir portabilidade

Qualquer destas linguagens tem de ter tradutores para aslinguagem-maquina!

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 10 / 36

Linguagens de alto-nıvel

Existem varias geracoes e paradigmas.

Alguns dos objectivos:

Descrever os problemas em termos dos conceitos relativos aoproblema a resolver e nao aos da maquinaPermitir programas (algoritmos) mais legıveis; mais faceis deconceber, de corrigir erros e de modificarMaior independencia da maquina (e do sistemas de operacao):permitir portabilidade

Qualquer destas linguagens tem de ter tradutores para aslinguagem-maquina!

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 10 / 36

Linguagens de alto-nıvel

Existem varias geracoes e paradigmas.

Alguns dos objectivos:

Descrever os problemas em termos dos conceitos relativos aoproblema a resolver e nao aos da maquinaPermitir programas (algoritmos) mais legıveis; mais faceis deconceber, de corrigir erros e de modificarMaior independencia da maquina (e do sistemas de operacao):permitir portabilidade

Qualquer destas linguagens tem de ter tradutores para aslinguagem-maquina!

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 10 / 36

Linguagens de alto-nıvel

Existem varias geracoes e paradigmas.

Alguns dos objectivos:

Descrever os problemas em termos dos conceitos relativos aoproblema a resolver e nao aos da maquinaPermitir programas (algoritmos) mais legıveis; mais faceis deconceber, de corrigir erros e de modificarMaior independencia da maquina (e do sistemas de operacao):permitir portabilidade

Qualquer destas linguagens tem de ter tradutores para aslinguagem-maquina!

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 10 / 36

Linguagens de alto-nıvel

Existem varias geracoes e paradigmas.

Alguns dos objectivos:

Descrever os problemas em termos dos conceitos relativos aoproblema a resolver e nao aos da maquinaPermitir programas (algoritmos) mais legıveis; mais faceis deconceber, de corrigir erros e de modificarMaior independencia da maquina (e do sistemas de operacao):permitir portabilidade

Qualquer destas linguagens tem de ter tradutores para aslinguagem-maquina!

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 10 / 36

Linguagens de alto-nıvel

Existem varias geracoes e paradigmas.

Alguns dos objectivos:

Descrever os problemas em termos dos conceitos relativos aoproblema a resolver e nao aos da maquinaPermitir programas (algoritmos) mais legıveis; mais faceis deconceber, de corrigir erros e de modificarMaior independencia da maquina (e do sistemas de operacao):permitir portabilidade

Qualquer destas linguagens tem de ter tradutores para aslinguagem-maquina!

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 10 / 36

Linguagens de alto-nıvel

Conceitos gerais as linguagens de programacao:

Estruturas de dados

Estrutura de programas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 11 / 36

Linguagens de alto-nıvel

Conceitos gerais as linguagens de programacao:

Estruturas de dados

Estrutura de programas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 11 / 36

Linguagens de alto-nıvel

Conceitos gerais as linguagens de programacao:

Estruturas de dados

Estrutura de programas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 11 / 36

Linguagens de alto-nıvel

Conceitos gerais as linguagens de programacao:

Estruturas de dados

Estrutura de programas

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 11 / 36

Paradigmas de Programacao

Imperativo

Orientado a objectos

Declarativo: funcional ou logico

Associados a aplicacoes: folhas de calculo, gestores de bases dedados, processadores de texto, cientıficas (MATHEMATICA,MAPLE,. . . ), de“scripting”, “de cola”, etc. 4a

¯ geracao)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 12 / 36

Paradigmas de Programacao

Imperativo

Orientado a objectos

Declarativo: funcional ou logico

Associados a aplicacoes: folhas de calculo, gestores de bases dedados, processadores de texto, cientıficas (MATHEMATICA,MAPLE,. . . ), de“scripting”, “de cola”, etc. 4a

¯ geracao)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 12 / 36

Paradigmas de Programacao

Imperativo

Orientado a objectos

Declarativo: funcional ou logico

Associados a aplicacoes: folhas de calculo, gestores de bases dedados, processadores de texto, cientıficas (MATHEMATICA,MAPLE,. . . ), de“scripting”, “de cola”, etc. 4a

¯ geracao)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 12 / 36

Paradigmas de Programacao

Imperativo

Orientado a objectos

Declarativo: funcional ou logico

Associados a aplicacoes: folhas de calculo, gestores de bases dedados, processadores de texto, cientıficas (MATHEMATICA,MAPLE,. . . ), de“scripting”, “de cola”, etc. 4a

¯ geracao)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 12 / 36

Paradigmas de Programacao

Imperativo

Orientado a objectos

Declarativo: funcional ou logico

Associados a aplicacoes: folhas de calculo, gestores de bases dedados, processadores de texto, cientıficas (MATHEMATICA,MAPLE,. . . ), de“scripting”, “de cola”, etc. 4a

¯ geracao)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 12 / 36

Paradigmas de Programacao

Imperativo

Orientado a objectos

Declarativo: funcional ou logico

Associados a aplicacoes: folhas de calculo, gestores de bases dedados, processadores de texto, cientıficas (MATHEMATICA,MAPLE,. . . ), de“scripting”, “de cola”, etc. 4a

¯ geracao)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 12 / 36

Paradigmas de Programacao

Imperativo

Orientado a objectos

Declarativo: funcional ou logico

Associados a aplicacoes: folhas de calculo, gestores de bases dedados, processadores de texto, cientıficas (MATHEMATICA,MAPLE,. . . ), de“scripting”, “de cola”, etc. 4a

¯ geracao)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 12 / 36

Linguagens Imperativas (3a¯ geracao)

influencia da linguagem maquina

estrutura sequencial de instrucoes

Paradigma imperativo de programacao:

Desenvolvimento duma sequencia de comandos, que quandoseguidos manipulam os dados para obter um determinadoresultado. Os programas representam um metodo para resolverum dado problema.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 13 / 36

Linguagens Imperativas (3a¯ geracao)

influencia da linguagem maquina

estrutura sequencial de instrucoes

Paradigma imperativo de programacao:

Desenvolvimento duma sequencia de comandos, que quandoseguidos manipulam os dados para obter um determinadoresultado. Os programas representam um metodo para resolverum dado problema.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 13 / 36

Linguagens Imperativas (3a¯ geracao)

influencia da linguagem maquina

estrutura sequencial de instrucoes

Paradigma imperativo de programacao:

Desenvolvimento duma sequencia de comandos, que quandoseguidos manipulam os dados para obter um determinadoresultado. Os programas representam um metodo para resolverum dado problema.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 13 / 36

Linguagens Imperativas (3a¯ geracao)

influencia da linguagem maquina

estrutura sequencial de instrucoes

Paradigma imperativo de programacao:

Desenvolvimento duma sequencia de comandos, que quandoseguidos manipulam os dados para obter um determinadoresultado. Os programas representam um metodo para resolverum dado problema.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 13 / 36

Linguagens Imperativas (3a¯ geracao)

influencia da linguagem maquina

estrutura sequencial de instrucoes

Paradigma imperativo de programacao:

Desenvolvimento duma sequencia de comandos, que quandoseguidos manipulam os dados para obter um determinadoresultado. Os programas representam um metodo para resolverum dado problema.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 13 / 36

Linguagens Imperativas (3a¯ geracao)

influencia da linguagem maquina

estrutura sequencial de instrucoes

Paradigma imperativo de programacao:

Desenvolvimento duma sequencia de comandos, que quandoseguidos manipulam os dados para obter um determinadoresultado. Os programas representam um metodo para resolverum dado problema.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 13 / 36

Linguagens Imperativas (3a¯ geracao)

influencia da linguagem maquina

estrutura sequencial de instrucoes

Paradigma imperativo de programacao:

Desenvolvimento duma sequencia de comandos, que quandoseguidos manipulam os dados para obter um determinadoresultado. Os programas representam um metodo para resolverum dado problema.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 13 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

Linguagem Descricao Autores DataFORTRAN (FORmula TRANslation) Para calculo numerico Backus 1957F77 (FORmula TRANslation) 1977F97 1997ALGOL 60 +Estruturado; Descricao Formal 1960ALGOL 68BASIC Beginners all-purpose symbolic instruction code Kemeny 1965VisualBasic (Varias geracoes) 199?PASCAL +Estruturas de Dados programacao sistematica N. Wirth 1971C Origem: BCPL; associado a implementacao do

UNIXKerninghan &D.Ritchie

1978

Ansi C 1988

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 14 / 36

Exemplos de linguagens imperativas

FORTRANINTEGER IREAL X(10), SUMSUM = 0.0DO 100 I=1,10

100 SUM=SUM+ X(I)**2IF (SUM .GT. 1E+5) STOPWRITE(6,200) I,SUM

200 FORMAT(’SOMA’,I,’VALORES E’,E15.7)END

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 15 / 36

Exemplos de linguagens imperativas

FORTRANINTEGER IREAL X(10), SUMSUM = 0.0DO 100 I=1,10

100 SUM=SUM+ X(I)**2IF (SUM .GT. 1E+5) STOPWRITE(6,200) I,SUM

200 FORMAT(’SOMA’,I,’VALORES E’,E15.7)END

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 15 / 36

Exemplos de linguagens imperativas

BASIC10 INPUT N20 LET FACT=130 IF N=0 THEN GOTO 7040 FOR K=N TO 1 STEP -150 LET FACT=FACT*K60 NEXT K70 PRINT ’’fact’’N’’E’’FACT80 END

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 16 / 36

Exemplos de linguagens imperativas

BASIC10 INPUT N20 LET FACT=130 IF N=0 THEN GOTO 7040 FOR K=N TO 1 STEP -150 LET FACT=FACT*K60 NEXT K70 PRINT ’’fact’’N’’E’’FACT80 END

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 16 / 36

Exemplos de linguagens imperativas

PASCAL

PROGRAM factorial(input,output);VAR n: INTEGER;

FUNCTION fac(i:INTEGER): INTEGER;BEGINIF i = 0

THEN fac := 1ELSE fac := i*fact(i-1)

END;BEGIN program

REPEATREAD(n);WRITELN(fac(n))

UNTIT n=0END.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 17 / 36

Exemplos de linguagens imperativas

PASCAL

PROGRAM factorial(input,output);VAR n: INTEGER;

FUNCTION fac(i:INTEGER): INTEGER;BEGINIF i = 0

THEN fac := 1ELSE fac := i*fact(i-1)

END;BEGIN program

REPEATREAD(n);WRITELN(fac(n))

UNTIT n=0END.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 17 / 36

Exemplos de linguagens imperativas

C

int factorial(int);main(){int n;scanf("%d",&n);printf(’Factorial de %d = %d\n’,n,factorial(n));

}/* definic~ao da func~ao */int factorial(int x){

if(x==0) return(1);return(x*factorial(x-1));

}

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 18 / 36

Exemplos de linguagens imperativas

C

int factorial(int);main(){int n;scanf("%d",&n);printf(’Factorial de %d = %d\n’,n,factorial(n));

}/* definic~ao da func~ao */int factorial(int x){

if(x==0) return(1);return(x*factorial(x-1));

}

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 18 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Dadosconstantes

variaveis

Tipos de Dados

Simples: inteiros, racionais, caracteres (Codigo ASCII), booleanos (0ou 1), apontadores (enderecos)

Complexos: variaveis indexadas, estruturas, listas, arvores, conjuntos,etc.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 19 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Dadosconstantes

variaveis

Tipos de Dados

Simples: inteiros, racionais, caracteres (Codigo ASCII), booleanos (0ou 1), apontadores (enderecos)

Complexos: variaveis indexadas, estruturas, listas, arvores, conjuntos,etc.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 19 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Dadosconstantes

variaveis

Tipos de Dados

Simples: inteiros, racionais, caracteres (Codigo ASCII), booleanos (0ou 1), apontadores (enderecos)

Complexos: variaveis indexadas, estruturas, listas, arvores, conjuntos,etc.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 19 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Dadosconstantes

variaveis

Tipos de Dados

Simples: inteiros, racionais, caracteres (Codigo ASCII), booleanos (0ou 1), apontadores (enderecos)

Complexos: variaveis indexadas, estruturas, listas, arvores, conjuntos,etc.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 19 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Dadosconstantes

variaveis

Tipos de Dados

Simples: inteiros, racionais, caracteres (Codigo ASCII), booleanos (0ou 1), apontadores (enderecos)

Complexos: variaveis indexadas, estruturas, listas, arvores, conjuntos,etc.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 19 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Dadosconstantes

variaveis

Tipos de Dados

Simples: inteiros, racionais, caracteres (Codigo ASCII), booleanos (0ou 1), apontadores (enderecos)

Complexos: variaveis indexadas, estruturas, listas, arvores, conjuntos,etc.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 19 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Dadosconstantes

variaveis

Tipos de Dados

Simples: inteiros, racionais, caracteres (Codigo ASCII), booleanos (0ou 1), apontadores (enderecos)

Complexos: variaveis indexadas, estruturas, listas, arvores, conjuntos,etc.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 19 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Programas

A descricao de um programa pode ser:

Ascendente sequencia de passos elementares

Descendente divide-se um programa em sub-programas

Os passos elementares sao as INSTRUCOES, isto e, accoes quemanipulam os dados.As instrucoes tem uma sintaxe rıgida.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 20 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Programas

A descricao de um programa pode ser:

Ascendente sequencia de passos elementares

Descendente divide-se um programa em sub-programas

Os passos elementares sao as INSTRUCOES, isto e, accoes quemanipulam os dados.As instrucoes tem uma sintaxe rıgida.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 20 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Programas

A descricao de um programa pode ser:

Ascendente sequencia de passos elementares

Descendente divide-se um programa em sub-programas

Os passos elementares sao as INSTRUCOES, isto e, accoes quemanipulam os dados.As instrucoes tem uma sintaxe rıgida.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 20 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Programas

A descricao de um programa pode ser:

Ascendente sequencia de passos elementares

Descendente divide-se um programa em sub-programas

Os passos elementares sao as INSTRUCOES, isto e, accoes quemanipulam os dados.As instrucoes tem uma sintaxe rıgida.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 20 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Programas

A descricao de um programa pode ser:

Ascendente sequencia de passos elementares

Descendente divide-se um programa em sub-programas

Os passos elementares sao as INSTRUCOES, isto e, accoes quemanipulam os dados.As instrucoes tem uma sintaxe rıgida.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 20 / 36

Estruturas de Dados e de Programas de LinguagensImperativas

Programas

A descricao de um programa pode ser:

Ascendente sequencia de passos elementares

Descendente divide-se um programa em sub-programas

Os passos elementares sao as INSTRUCOES, isto e, accoes quemanipulam os dados.As instrucoes tem uma sintaxe rıgida.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 20 / 36

Tipos de instrucoes

Exemplos em C

Atribuicao Associcao de valores a variaveisEx. x=3;

Condicional Execucao de instrucoes condicionada pela verificacao dumacondicao.Ex. if (x==0) x=3;

Instrucao composta Sequencia de instrucoesEx: {x=8; y=5}

Ciclo Repeticao (iteracao) de instrucoes de acordo com umacondicao. Ex. while (x>0) x--;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 21 / 36

Tipos de instrucoes

Exemplos em C

Atribuicao Associcao de valores a variaveisEx. x=3;

Condicional Execucao de instrucoes condicionada pela verificacao dumacondicao.Ex. if (x==0) x=3;

Instrucao composta Sequencia de instrucoesEx: {x=8; y=5}

Ciclo Repeticao (iteracao) de instrucoes de acordo com umacondicao. Ex. while (x>0) x--;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 21 / 36

Tipos de instrucoes

Exemplos em C

Atribuicao Associcao de valores a variaveisEx. x=3;

Condicional Execucao de instrucoes condicionada pela verificacao dumacondicao.Ex. if (x==0) x=3;

Instrucao composta Sequencia de instrucoesEx: {x=8; y=5}

Ciclo Repeticao (iteracao) de instrucoes de acordo com umacondicao. Ex. while (x>0) x--;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 21 / 36

Tipos de instrucoes

Exemplos em C

Atribuicao Associcao de valores a variaveisEx. x=3;

Condicional Execucao de instrucoes condicionada pela verificacao dumacondicao.Ex. if (x==0) x=3;

Instrucao composta Sequencia de instrucoesEx: {x=8; y=5}

Ciclo Repeticao (iteracao) de instrucoes de acordo com umacondicao. Ex. while (x>0) x--;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 21 / 36

Tipos de instrucoes

Exemplos em C

Atribuicao Associcao de valores a variaveisEx. x=3;

Condicional Execucao de instrucoes condicionada pela verificacao dumacondicao.Ex. if (x==0) x=3;

Instrucao composta Sequencia de instrucoesEx: {x=8; y=5}

Ciclo Repeticao (iteracao) de instrucoes de acordo com umacondicao. Ex. while (x>0) x--;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 21 / 36

Tipos de instrucoes

Exemplos em C

Atribuicao Associcao de valores a variaveisEx. x=3;

Condicional Execucao de instrucoes condicionada pela verificacao dumacondicao.Ex. if (x==0) x=3;

Instrucao composta Sequencia de instrucoesEx: {x=8; y=5}

Ciclo Repeticao (iteracao) de instrucoes de acordo com umacondicao. Ex. while (x>0) x--;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 21 / 36

Tipos de instrucoes

Exemplos em C

Atribuicao Associcao de valores a variaveisEx. x=3;

Condicional Execucao de instrucoes condicionada pela verificacao dumacondicao.Ex. if (x==0) x=3;

Instrucao composta Sequencia de instrucoesEx: {x=8; y=5}

Ciclo Repeticao (iteracao) de instrucoes de acordo com umacondicao. Ex. while (x>0) x--;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 21 / 36

Tipos de instrucoes

Exemplos em C

Escolha da execucao de instrucoes com base em certos valores de umparametro. Ex. switch(i) 1:2: x=3;break; default:x=0;

Transferencia de controlo (saltos) execucao duma instrucao noutro pontodo programa.Ex.(Em C nao se usa.) GOTO 70 (BASIC)

Chamada de sub-programa Ex. fact(5);

Retorno de sub-programa Ex. return n;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 22 / 36

Tipos de instrucoes

Exemplos em C

Escolha da execucao de instrucoes com base em certos valores de umparametro. Ex. switch(i) 1:2: x=3;break; default:x=0;

Transferencia de controlo (saltos) execucao duma instrucao noutro pontodo programa.Ex.(Em C nao se usa.) GOTO 70 (BASIC)

Chamada de sub-programa Ex. fact(5);

Retorno de sub-programa Ex. return n;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 22 / 36

Tipos de instrucoes

Exemplos em C

Escolha da execucao de instrucoes com base em certos valores de umparametro. Ex. switch(i) 1:2: x=3;break; default:x=0;

Transferencia de controlo (saltos) execucao duma instrucao noutro pontodo programa.Ex.(Em C nao se usa.) GOTO 70 (BASIC)

Chamada de sub-programa Ex. fact(5);

Retorno de sub-programa Ex. return n;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 22 / 36

Tipos de instrucoes

Exemplos em C

Escolha da execucao de instrucoes com base em certos valores de umparametro. Ex. switch(i) 1:2: x=3;break; default:x=0;

Transferencia de controlo (saltos) execucao duma instrucao noutro pontodo programa.Ex.(Em C nao se usa.) GOTO 70 (BASIC)

Chamada de sub-programa Ex. fact(5);

Retorno de sub-programa Ex. return n;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 22 / 36

Tipos de instrucoes

Exemplos em C

Escolha da execucao de instrucoes com base em certos valores de umparametro. Ex. switch(i) 1:2: x=3;break; default:x=0;

Transferencia de controlo (saltos) execucao duma instrucao noutro pontodo programa.Ex.(Em C nao se usa.) GOTO 70 (BASIC)

Chamada de sub-programa Ex. fact(5);

Retorno de sub-programa Ex. return n;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 22 / 36

Tipos de instrucoes

Exemplos em C

Escolha da execucao de instrucoes com base em certos valores de umparametro. Ex. switch(i) 1:2: x=3;break; default:x=0;

Transferencia de controlo (saltos) execucao duma instrucao noutro pontodo programa.Ex.(Em C nao se usa.) GOTO 70 (BASIC)

Chamada de sub-programa Ex. fact(5);

Retorno de sub-programa Ex. return n;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 22 / 36

Tipos de instrucoes

Exemplos em C

Escolha da execucao de instrucoes com base em certos valores de umparametro. Ex. switch(i) 1:2: x=3;break; default:x=0;

Transferencia de controlo (saltos) execucao duma instrucao noutro pontodo programa.Ex.(Em C nao se usa.) GOTO 70 (BASIC)

Chamada de sub-programa Ex. fact(5);

Retorno de sub-programa Ex. return n;

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 22 / 36

Linguagens Declarativas

A questao e Qual e o problema? e nao Como se resolve o problema?.

Paradigma declarativo:

Implementacao de um algoritmo generico de resolucao deproblemas. Para resolver um problema ele tem de ser descritode um modo compatıvel com esse algoritmo e depois aplica-se oalgoritmo. Neste contexto, a tarefa do programador edesenvolver uma descricao precisa do problema em vez dedescobrir um metodo para o resolver.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 23 / 36

Linguagens Declarativas

A questao e Qual e o problema? e nao Como se resolve o problema?.

Paradigma declarativo:

Implementacao de um algoritmo generico de resolucao deproblemas. Para resolver um problema ele tem de ser descritode um modo compatıvel com esse algoritmo e depois aplica-se oalgoritmo. Neste contexto, a tarefa do programador edesenvolver uma descricao precisa do problema em vez dedescobrir um metodo para o resolver.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 23 / 36

Linguagens Declarativas

A questao e Qual e o problema? e nao Como se resolve o problema?.

Paradigma declarativo:

Implementacao de um algoritmo generico de resolucao deproblemas. Para resolver um problema ele tem de ser descritode um modo compatıvel com esse algoritmo e depois aplica-se oalgoritmo. Neste contexto, a tarefa do programador edesenvolver uma descricao precisa do problema em vez dedescobrir um metodo para o resolver.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 23 / 36

Linguagens Declarativas

A questao e Qual e o problema? e nao Como se resolve o problema?.

Paradigma declarativo:

Implementacao de um algoritmo generico de resolucao deproblemas. Para resolver um problema ele tem de ser descritode um modo compatıvel com esse algoritmo e depois aplica-se oalgoritmo. Neste contexto, a tarefa do programador edesenvolver uma descricao precisa do problema em vez dedescobrir um metodo para o resolver.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 23 / 36

Linguagens Declarativas

A questao e Qual e o problema? e nao Como se resolve o problema?.

Paradigma declarativo:

Implementacao de um algoritmo generico de resolucao deproblemas. Para resolver um problema ele tem de ser descritode um modo compatıvel com esse algoritmo e depois aplica-se oalgoritmo. Neste contexto, a tarefa do programador edesenvolver uma descricao precisa do problema em vez dedescobrir um metodo para o resolver.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 23 / 36

Linguagens logicas)

Descricao de problemas em predicados de logica

Deducao de verdades usando regras de inferencia

PROLOG

(1974)A:-B le-se B implica A ou A se B

Suponhamos que e verdade:

pai(luis,antonio).pai(jose,luis).antepassado(X,Y) :- pai(X,Y).antepassado(X,Y) :- pai(X,Z), antepassado(Z,Y).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 24 / 36

Linguagens logicas)

Descricao de problemas em predicados de logica

Deducao de verdades usando regras de inferencia

PROLOG

(1974)A:-B le-se B implica A ou A se B

Suponhamos que e verdade:

pai(luis,antonio).pai(jose,luis).antepassado(X,Y) :- pai(X,Y).antepassado(X,Y) :- pai(X,Z), antepassado(Z,Y).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 24 / 36

Linguagens logicas)

Descricao de problemas em predicados de logica

Deducao de verdades usando regras de inferencia

PROLOG

(1974)A:-B le-se B implica A ou A se B

Suponhamos que e verdade:

pai(luis,antonio).pai(jose,luis).antepassado(X,Y) :- pai(X,Y).antepassado(X,Y) :- pai(X,Z), antepassado(Z,Y).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 24 / 36

Linguagens logicas)

Descricao de problemas em predicados de logica

Deducao de verdades usando regras de inferencia

PROLOG

(1974)A:-B le-se B implica A ou A se B

Suponhamos que e verdade:

pai(luis,antonio).pai(jose,luis).antepassado(X,Y) :- pai(X,Y).antepassado(X,Y) :- pai(X,Z), antepassado(Z,Y).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 24 / 36

Linguagens logicas)

Descricao de problemas em predicados de logica

Deducao de verdades usando regras de inferencia

PROLOG

(1974)A:-B le-se B implica A ou A se B

Suponhamos que e verdade:

pai(luis,antonio).pai(jose,luis).antepassado(X,Y) :- pai(X,Y).antepassado(X,Y) :- pai(X,Z), antepassado(Z,Y).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 24 / 36

Linguagens logicas)

Descricao de problemas em predicados de logica

Deducao de verdades usando regras de inferencia

PROLOG

(1974)A:-B le-se B implica A ou A se B

Suponhamos que e verdade:

pai(luis,antonio).pai(jose,luis).antepassado(X,Y) :- pai(X,Y).antepassado(X,Y) :- pai(X,Z), antepassado(Z,Y).

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 24 / 36

Linguagens logicas)

PROLOG

Podemos perguntar:

?- antepassado(jose,antonio).yes

?- antepassado(X,Y).X = luisY = antonio ? ;X = joseY = luis ? ;X = joseY = antonio ? ;no

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 25 / 36

Linguagens logicas)

PROLOG

Podemos perguntar:

?- antepassado(jose,antonio).yes

?- antepassado(X,Y).X = luisY = antonio ? ;X = joseY = luis ? ;X = joseY = antonio ? ;no

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 25 / 36

Linguagens logicas)

PROLOG

Podemos perguntar:

?- antepassado(jose,antonio).yes

?- antepassado(X,Y).X = luisY = antonio ? ;X = joseY = luis ? ;X = joseY = antonio ? ;no

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 25 / 36

Linguagens logicas

PROLOG

E o factorial fica:

fac(0,1).fac(X,Y):- X1 is X-1,fac(X1,Y1), Y is Y1*X.

?-fac(5,X).X = 120

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 26 / 36

Linguagens logicas

PROLOG

E o factorial fica:

fac(0,1).fac(X,Y):- X1 is X-1,fac(X1,Y1), Y is Y1*X.

?-fac(5,X).X = 120

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 26 / 36

Linguagens logicas

PROLOG

E o factorial fica:

fac(0,1).fac(X,Y):- X1 is X-1,fac(X1,Y1), Y is Y1*X.

?-fac(5,X).X = 120

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 26 / 36

Linguagens logicas

PROLOG

E o factorial fica:

fac(0,1).fac(X,Y):- X1 is X-1,fac(X1,Y1), Y is Y1*X.

?-fac(5,X).X = 120

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 26 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

Linguagens funcionais (ou aplicativas)

Baseadas em metodos gerais de avaliacao de funcoes quedescrevem o problema. O objectivo e dividir o problema numconjunto de sub-tarefas (funcoes) cada uma delas aceitandodados e produzindo um resultado, que podera ser os dados deoutra.

Exemplos:

Linguagem Descricao Autores Data

LISP List Processing J. McCarthy 195?ML Meta language R.Milner 1979Scheme Tipo LISP G.Steele&G.J.Sussman 1975HASKELL Wadler&al. 1989GOFER M.Jones 1991

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 27 / 36

LISP

Baseia-se na avaliacao de expressoes S: listas e constantes

Ex: (a b c)

Quando e que um elemento pertence a uma lista?

(defun member (items)(cond ((null s) nil)

((equal item (car s)) s)(t (member item (cdr s)))))

e o factorial...

(defun factorial (n)(cond ((zerop n) 1)

(t (times n (factorial (sub 1 n))))))

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 28 / 36

LISP

Baseia-se na avaliacao de expressoes S: listas e constantes

Ex: (a b c)

Quando e que um elemento pertence a uma lista?

(defun member (items)(cond ((null s) nil)

((equal item (car s)) s)(t (member item (cdr s)))))

e o factorial...

(defun factorial (n)(cond ((zerop n) 1)

(t (times n (factorial (sub 1 n))))))

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 28 / 36

LISP

Baseia-se na avaliacao de expressoes S: listas e constantes

Ex: (a b c)

Quando e que um elemento pertence a uma lista?

(defun member (items)(cond ((null s) nil)

((equal item (car s)) s)(t (member item (cdr s)))))

e o factorial...

(defun factorial (n)(cond ((zerop n) 1)

(t (times n (factorial (sub 1 n))))))

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 28 / 36

LISP

Baseia-se na avaliacao de expressoes S: listas e constantes

Ex: (a b c)

Quando e que um elemento pertence a uma lista?

(defun member (items)(cond ((null s) nil)

((equal item (car s)) s)(t (member item (cdr s)))))

e o factorial...

(defun factorial (n)(cond ((zerop n) 1)

(t (times n (factorial (sub 1 n))))))

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 28 / 36

LISP

Baseia-se na avaliacao de expressoes S: listas e constantes

Ex: (a b c)

Quando e que um elemento pertence a uma lista?

(defun member (items)(cond ((null s) nil)

((equal item (car s)) s)(t (member item (cdr s)))))

e o factorial...

(defun factorial (n)(cond ((zerop n) 1)

(t (times n (factorial (sub 1 n))))))

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 28 / 36

HASKELL

Funcoes de ordem superior (funcoes que tem funcoes comoargumento)

Sistema de tipos polimorficos para as funcoes

Avaliacao parcial de funcoes

Avaliacao retardada de funcoes

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 29 / 36

HASKELL

Funcoes de ordem superior (funcoes que tem funcoes comoargumento)

Sistema de tipos polimorficos para as funcoes

Avaliacao parcial de funcoes

Avaliacao retardada de funcoes

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 29 / 36

HASKELL

Funcoes de ordem superior (funcoes que tem funcoes comoargumento)

Sistema de tipos polimorficos para as funcoes

Avaliacao parcial de funcoes

Avaliacao retardada de funcoes

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 29 / 36

HASKELL

Funcoes de ordem superior (funcoes que tem funcoes comoargumento)

Sistema de tipos polimorficos para as funcoes

Avaliacao parcial de funcoes

Avaliacao retardada de funcoes

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 29 / 36

HASKELL

Funcoes de ordem superior (funcoes que tem funcoes comoargumento)

Sistema de tipos polimorficos para as funcoes

Avaliacao parcial de funcoes

Avaliacao retardada de funcoes

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 29 / 36

HASKELL

Funcoes de ordem superior (funcoes que tem funcoes comoargumento)

Sistema de tipos polimorficos para as funcoes

Avaliacao parcial de funcoes

Avaliacao retardada de funcoes

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 29 / 36

HASKELL

Varias maneiras de calcular o factorial...

Factorial

fac n := if n=0 then 1 else n* fac(n-1)fac1 0 = 1fac1 n = n* fac(n-1)fac2 n =product[1..n]

Comprimento duma lista:

len []=0len (x:xs)=1 + len xs

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 30 / 36

HASKELL

Varias maneiras de calcular o factorial...

Factorial

fac n := if n=0 then 1 else n* fac(n-1)fac1 0 = 1fac1 n = n* fac(n-1)fac2 n =product[1..n]

Comprimento duma lista:

len []=0len (x:xs)=1 + len xs

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 30 / 36

HASKELL

Varias maneiras de calcular o factorial...

Factorial

fac n := if n=0 then 1 else n* fac(n-1)fac1 0 = 1fac1 n = n* fac(n-1)fac2 n =product[1..n]

Comprimento duma lista:

len []=0len (x:xs)=1 + len xs

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 30 / 36

HASKELL

Varias maneiras de calcular o factorial...

Factorial

fac n := if n=0 then 1 else n* fac(n-1)fac1 0 = 1fac1 n = n* fac(n-1)fac2 n =product[1..n]

Comprimento duma lista:

len []=0len (x:xs)=1 + len xs

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 30 / 36

HASKELL

A avaliacao e baseada em reducoes, que nao sao efectuadas se faltaremargumentos:

(\ x y -> y + x) 2 35

Mas

(\ x y -> y + x) 4

Nao e avaliada...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 31 / 36

HASKELL

A avaliacao e baseada em reducoes, que nao sao efectuadas se faltaremargumentos:

(\ x y -> y + x) 2 35

Mas

(\ x y -> y + x) 4

Nao e avaliada...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 31 / 36

HASKELL

A avaliacao e baseada em reducoes, que nao sao efectuadas se faltaremargumentos:

(\ x y -> y + x) 2 35

Mas

(\ x y -> y + x) 4

Nao e avaliada...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 31 / 36

HASKELL

A avaliacao e baseada em reducoes, que nao sao efectuadas se faltaremargumentos:

(\ x y -> y + x) 2 35

Mas

(\ x y -> y + x) 4

Nao e avaliada...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 31 / 36

HASKELL

A avaliacao e baseada em reducoes, que nao sao efectuadas se faltaremargumentos:

(\ x y -> y + x) 2 35

Mas

(\ x y -> y + x) 4

Nao e avaliada...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 31 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os dados sao “objectos” a que estao associados metodos(rotinas, mensagens) que os manipulam. Os objectosorganizam-se em classes que possuem metodos e pode haverhierarquias de classes com heranca de metodos.Isso permite oencapsulamento da informacao em estruturas de dadosabstractas.

Exemplos:

Linguagem Autor Data

SIMULA 1978?SMALLTALK Alan Kay 1972C++ B. Stroustrup 1980Java J. Gosling& al. 1990Python Guido van Rossum 1990

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 32 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Linguagens Orientadas a Objectos

Os objectos podem ser:

dados estrurados

graficos: linhas, rectangulos, imagens

interfaces: janelas, menus, icons,...

processos

ficheiros

pontos de rede

...

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 33 / 36

Exemplo de um interface grafico (escrito em python)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 34 / 36

Exemplo de um interface grafico (escrito em python)

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 34 / 36

Exemplo de um interface grafico (escrito em python)

from Tkinter import *class Test(Frame):

def printit(self):print self.hi_there["command"]

def createWidgets(self):self.QUIT = Button(self,text=’QUIT’,foreground=’red’,

command=self.quit)self.QUIT.pack(side=LEFT, fill=BOTH)self.hi_there = Button(self, text=’Hello’,

command=self.printit)self.hi_there.pack(side=LEFT)self.guy2 = Button(self, text=’button 2’)self.guy2.pack()self.guy3 = Button(self, text=’button 3’)self.guy3.pack()

def __init__(self, master=None):Frame.__init__(self, master)Pack.config(self)self.createWidgets()

test = Test()test.mainloop()

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 35 / 36

Exemplo de um interface grafico (escrito em python)

from Tkinter import *class Test(Frame):

def printit(self):print self.hi_there["command"]

def createWidgets(self):self.QUIT = Button(self,text=’QUIT’,foreground=’red’,

command=self.quit)self.QUIT.pack(side=LEFT, fill=BOTH)self.hi_there = Button(self, text=’Hello’,

command=self.printit)self.hi_there.pack(side=LEFT)self.guy2 = Button(self, text=’button 2’)self.guy2.pack()self.guy3 = Button(self, text=’button 3’)self.guy3.pack()

def __init__(self, master=None):Frame.__init__(self, master)Pack.config(self)self.createWidgets()

test = Test()test.mainloop()

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 35 / 36

Leituras

[Bro97] GB, Cap. 4.5,5

J. Glenn Brookshear.Computer Science, an overview.Addison-Wesley, 1997.

Nelma Moreira (DCC-FC) Introducao aos Computadores Aula 13 36 / 36