Aula19-Inf1 - ic.uff.brbianca/informatica1/index_arquivos/Aula19-Inf1.pdf · • Foi inventada em...
Transcript of Aula19-Inf1 - ic.uff.brbianca/informatica1/index_arquivos/Aula19-Inf1.pdf · • Foi inventada em...
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.