Aula19-Inf1 - ic.uff.brbianca/informatica1/index_arquivos/Aula19-Inf1.pdf · • Foi inventada em...

32
Aula 19 - 31/10/2007 1 Informática I Aula 19 http://www.ic.uff.br/~bianca/informatica1/

Transcript of Aula19-Inf1 - ic.uff.brbianca/informatica1/index_arquivos/Aula19-Inf1.pdf · • Foi inventada em...

Aula 19 - 31/10/2007 1

Informática I

Aula 19

http://www.ic.uff.br/~bianca/informatica1/

Aula 19 - 31/10/2007 2

Ementa

• Noções Básicas de Computação (Hardware, Software e Internet) • HTML e Páginas Web • Internet e a Web• Javascript e páginas dinâmicas • Números e expressões em Javascript • Formulários em HTML (Programação orientada a Eventos)• Histórico dos Computadores • Abstração e Definição de Funções • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional • Representação de dados • Computação e sociedade

Aula 19 - 31/10/2007 3

Tipos de Linguagens de Programação

• Linguagens de baixo nível: Assembler.• Linguagens não estruturadas: Cobol e Basic.• Linguagens procedurais: C, Pascal, Fortran, Ada,

Modula 2 e Modula 3.• Linguagens funcionais: Prolog, LISP e Scheme.• Linguagens orientadas a objeto: Simula, Smalltalk, C++

e Java.• Linguagens específicas: SQL, HTML, Perl.

– Restritas a um domínio de aplicação específicos.– Não são propriamente linguagens de programação

• Linguagens visuais: Simulink, Visual Basic e Delphi.

Aula 19 - 31/10/2007 4

Linguagens Procedurais

• Elas possuem estruturas de controle, organizando de forma mais eficiente e clara a sintaxe de um programa.– Eliminam o uso de JUMPs ou GOTOs.

• Os programas são divididos em funções ou procedimentos.– O programa principal sendo executado determina

uma seqüência de chamadas de procedimentos.– O mesmo procedimento pode ser chamado repetidas

vezes.

Aula 19 - 31/10/2007 5

Tipos de Estrutura

1. Estrutura de teste– If (condição)

then (comandos1)else (comandos2)

end-if.

Exemplo:a=1; b=3If (a>b)then

print(a);elseprint(b);

end-if.

Aula 19 - 31/10/2007 6

Tipos de Estrutura

2. Estrutura de repetição– Repetição contada (FOR)

FOR nome-var = início TO fim(comandos)

END-FOR

– Repetição “enquanto”WHILE condição

(comandos)

END-WHILE

Exemplo:FOR i=1 TO 10

j = i*i;print(j);

END-FOR.

Exemplo:i=0;WHILE (i<10)

j = i*i;print(j);i=i+1;

END-WHILE.

Aula 19 - 31/10/2007 7

Tipos de Estruturas

3. Estrutura de seleção de alternativas– SWITCH (expressão)

CASE expressão-1(comandos)

CASE expressão-2(comandos)..

CASE expressão-n(comandos)

END-SWITCH

Exemplo:n=1;SWITCH (n)

CASE 0: print(“n é zero”);

CASE 1:print(“n é um”);

CASE 2:print(“n é dois”);

END-SWITCH.

Aula 19 - 31/10/2007 8

Funções e Procedimentos

• Funções– São sub-programas que retornam um valor ao

programa que o chama.– Exemplo:

FUNCTION Maior-de-Idade(int idade):lógicoIF (Idade≥18)

RETURN true;ELSE

RETURN false;END-IF

END-FUNCTION

Exemplo de chamadas:t = Maior-de-Idade(19);u = Maior-de-Idade(17);

Aula 19 - 31/10/2007 9

Funções e Procedimentos

• Procedimentos– São subprogramas que não retornam um valor ao

programa que o chama.– Exemplo:

PROCEDURE Maior-de-Idade(int idade)IF (Idade≥18)

print(“Maior”);ELSE

print(“Menor”);END-IFRETURN;

END-PROCEDURE

Exemplo de chamadas:Maior-de-Idade(19);Maior-de-Idade(17);

Aula 19 - 31/10/2007 10

Exemplos de Linguagens Procedurais

• C• Pascal• Fortran• Algol• Ada• Modula-2• Modula-3

Aula 19 - 31/10/2007 11

Linguagem C

• Foi desenvolvida no início da década de 1970 por Dennis Ritchie para uso no sistema operacional UNIX.

• Por gerar código muito eficiente, foi e continua sendo muito usada para a criação de programas de todo tipo tais como:– Sistemas operacionais– Processadores de texto– Planilhas eletrônicas– Gerenciadores de banco de dados– Programas de comunicação

• É difícil para programadores iniciantes por ter algumas peculiaridades de sintaxe e por não detectar operações indesejadas.

Aula 19 - 31/10/2007 12

Exemplo: Programa em C

#include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) {

int n = 1; while ( n < argc ) {

printf(“Argumento %d é %s\n", n, argv[n]);n++;

} return 0;

}

Aula 19 - 31/10/2007 13

Linguagem Pascal

• Foi criada em 1970 pelo suíço Niklaus Wirth, inicialmente para ensinar programação estruturada a estudantes.

• Foi baseada na linguagem ALGOL e seu nome é em homenagem ao matemático Blaise Pascal.

• Rapidamente tornou-se uma linguagem de propósito geral.– Partes do sistema operacional do Macintosh foram

implementadas em Pascal.• Perdeu lugar para a linguagem C por não ser

tão flexível e eficiente.

Aula 19 - 31/10/2007 14

Linguagem Fortran

• Foi desenvolvida por John Backus a partir da década de 1950 e continua sendo usada até hoje.

• É usada principalmente para cálculos matemáticos.– Manipula números complexos diretamente.– Processa arrays eficientemente.

• Foi a primeira linguagem de alto nível.• O nome tem origem na expressão FORmula

TRANslation.

Aula 19 - 31/10/2007 15

Exemplo: Programa em Fortranprogram cilindro! Calcula a area de um cilindro.!! Declara variables and constants.integer :: ierrreal :: raio,altura,areareal , parameter :: pi = 3.14159do

! Pede ao usuário o raio e a alturawrite (*,*) “Digite o raio e a altura, 'q' para sair."read (*,*,iostat=ierr) raio, altura! ! Se raio e altura não podem ser lidos corretamente, termina o programa.if (ierr /= 0) stop “terminando o programa"!! Calcula a area. O ** significa “eleve a potência".area = 2*pi*(raio**2 + raio*altura)!! Escreve as variáveis de entrada (raio, altura) e saída (área) na tela.write (*,"(1x,‘raio=',f6.2,5x,‘altura=',f6.2,5x,'area=',f6.2)") raio,altura,area

end doend program cilindro

Aula 19 - 31/10/2007 16

Tipos de Linguagens de Programação

• Linguagens de baixo nível: Assembler.• Linguagens não estruturadas: Cobol e Basic.• Linguagens procedurais: C, Pascal, Fortran, Ada,

Modula 2 e Modula 3.• Linguagens funcionais: Prolog, LISP e Scheme.• Linguagens orientadas a objeto: Simula, Smalltalk, C++

e Java.• Linguagens específicas: SQL, HTML, Perl.

– Restritas a um domínio de aplicação específicos.– Não são propriamente linguagens de programação

• Linguagens visuais: Simulink, Visual Basic e Delphi.

Aula 19 - 31/10/2007 17

Linguagens Procedurais vs. Linguagens Funcionais

• Nas linguagens procedurais, a programação é baseada na execução sequencial de comandos.– Variáveis são definidas.– Comandos alteram o valor das variáveis.– Repetição é realizada através de comandos

explícitos (for, while).• Nas linguagens funcionais, a programação é

feita somente através da definição de funções.– Funções podem receber outras funções como

parâmetro.– A repetição é feita através da recursão: uma função

chama a si mesma.

Aula 19 - 31/10/2007 18

Exemplo: Números de Fibonacci

• Os números de Fibonacci são uma sequência definida recursivamente por:

• 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, …

Aula 19 - 31/10/2007 19

Números de Fibonacci em Linguagem Procedural (Pascal)

procedure Fibonacci(n:integer);

var F : array[1...n] of integer;

var i : integer;

begin

F[1] = 0;

F[2] = 1;

i := 3;

while (i<=n) do

begin

F[i] := F[i-1] + F[i-2];

i := i+1;

end;

end.

Aula 19 - 31/10/2007 20

Números de Fibonacci em Linguagem Funcional (LISP)

(defun fib(n)

(if (<= n 2)

1

(+ (fib (- n 1))(fib (-n 2)))

)

)

Aula 19 - 31/10/2007 21

Exercício

• Programar a função fatorial em LISP:

(defun fatorial(n)

(if (<= n 1)

1

(* n (fatorial (-n 1)))

)

Aula 19 - 31/10/2007 22

Linguagem Lisp

• Foi inventada em 1958 por John McCarthy no MIT.– Segunda linguagem de programação de alto nível, veio depois

de Fortran.

• O nome Lisp veio de “List Processing” = Processamento de Listas.– Listas são objetos básicos em Lisp.– Trocadilho Lisp = “Lots of Irritant Stupid Parenthesis”.

• A linguagem foi muito utilizada em pesquisas na área de Inteligência Artificial.

• Nos anos 80 e 90, vários dialetos de LISP foram unificados no dialeto Common Lisp.– Outro dialeto que sobrevive é o Scheme.

Aula 19 - 31/10/2007 23

Listas em Lisp

• Funções são chamadas através de listas.– O primeiro elemento é o nome da função. – Os outros elementos são parâmetros.

• (+ 3 4) ⇒ 7• (* 5 (+ 2 5)) ⇒ 35• (fatorial 4) ⇒ 24

• A função quote retorna os seus argumentos.– (quote (1 2 3)) ⇒ (1 2 3)– ‘(1 2 3) ⇒ (1 2 3)

• A função first retorna o primeiro elemento de uma lista.– (first ‘(1 2 3)) ⇒ 1

• A função rest retorna a lista sem o primeiro elemento.– (rest ‘(1 2 3)) ⇒ ‘(2 3)

Aula 19 - 31/10/2007 24

Prolog

• Foi criada em 1973 na França.• O nome Prolog vem de “programmation

en logique”.• É baseada na lógica de primeira de

ordem.• O programa é uma declaração de fatos

lógicos formando uma base de conhecimento à qual são feitas perguntas (“queries”).

Aula 19 - 31/10/2007 25

Exemplo de programa Prolog

• irmão(X,Y) :- mae(Z,X), mae(Z,Y).

irmão(X,Y) :- pai(Z,Y), pai(Z,Y).

mãe(maria, felipe).

pai(joão, antonio).

pai(joão, guilherme).

pai(miguel, joão).

• ? irmão(antonio,guilherme)

• ? irmão(joão,guilherme)

Aula 19 - 31/10/2007 26

Números de Fibonacciem Prolog

• Fib(0,0).

• Fib(0,1).

• Fib(n,F1+F2):-Fib(n-1,F1), Fib(n-2,F2).

• ? Fib(10, F).

F = 55.

Aula 19 - 31/10/2007 27

Tipos de Linguagens de Programação

• Linguagens de baixo nível: Assembler.• Linguagens não estruturadas: Cobol e Basic.• Linguagens procedurais: C, Pascal, Fortran, Ada,

Modula 2 e Modula 3.• Linguagens funcionais: Prolog, LISP e Scheme.• Linguagens orientadas a objeto: Simula, Smalltalk, C++

e Java.• Linguagens específicas: SQL, HTML, Perl.

– Restritas a um domínio de aplicação específicos.– Não são propriamente linguagens de programação

• Linguagens visuais: Simulink, Visual Basic e Delphi.

Aula 19 - 31/10/2007 28

Linguagens Orientadas a Objetos

• Surgiram na fim da década de 1960 e se tornaram populares a partir da década de 1980.

• Programação tradicional:– Programa é uma coleção de instruções ou funções.

• Programação orientada a objeto:– Programa é uma coleção de objetos independentes.– Cada objeto é capaz de receber mensagens,

processar dados e enviar mensagens.

Aula 19 - 31/10/2007 29

Conceitos de Orientação a Objetos

• Classe: representa um conjunto de objetos com as mesmas características.– Define o comportamento dos objetos através de métodos (ou

funções) e o estado dos objetos através de atributos.• Objeto: é uma instância de uma classe.

– Armazena estados através de seus atributos.– Recebe mensagens de outros objetos.– Envia mensagens a outros objetos.

• Mensagem: é uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe.

• Herança: é o mecanismo pelo qual uma classe pode extender outra classe, aproveitando seus métodos e atributos.

Aula 19 - 31/10/2007 30

Exemplo: Herança em Orientação a Objetos

Classe Janela

TamanhoCorTítuloTexto

-Abrir-Fechar-Escrever

Classe Janela com scrollPosição da barra de scroll

-Rolar barraExemplo de pseudo-código:J = novo objeto do tipo janela com scrollJ.escrever(“Texto dentro da janela .........”)J.Abrir()J.RolarBarra()J.Fechar()

Aula 19 - 31/10/2007 31

Tipos de Linguagens de Programação

• Linguagens de baixo nível: Assembler.• Linguagens não estruturadas: Cobol e Basic.• Linguagens procedurais: C, Pascal, Fortran, Ada,

Modula 2 e Modula 3.• Linguagens funcionais: Prolog, LISP e Scheme.• Linguagens orientadas a objeto: Simula, Smalltalk, C++

e Java.• Linguagens específicas: SQL, HTML, Perl.

– Restritas a um domínio de aplicação específicos.– Não são propriamente linguagens de programação

• Linguagens visuais: Simulink, Visual Basic e Delphi.

Aula 19 - 31/10/2007 32

Linguagens Específicas

• São linguagens que tem uma finalidade específica, ao contrário das linguagens de propósito geral.– Linguagens para banco de dados: Clipper e

SQL.– Linguagens de simulação: Matlab,

Mathematica, R.– Linguagens de scripts: Perl, TCL/TK, awk.– Linguagens de formatação de textos: HTML,

PostScript, PDF.