Generalidades

Download Report

Transcript Generalidades

Programação estruturada
Generalidades
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Diagrama de blocos do HARDWARE de um PC
TERMINAL
CPU
DISCO RÍGIDO
ROM
FLOPY-DISK
RAM
CD-ROM
ENTRADA/SAÍDA
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1-2
Diagrama de blocos do SOFTWARE
Comandos
Ferramentas de
desenvolvimento
Parte suficiente
para os utilizadores
Aplicação
1
Aplicação
N
Interface Aplicacional ( system calls / API )
Sistema O perativo
Hardware
(RAM,ROM,CPU,Periféricos)
Interface com o utilizador ( cada aplicação tem a sua interface ).
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1-3
Sistemas operativos
• Mono utilizador
– MSDOS
• Desenvolvido pela Microsoft na década de 80, por encomenda
da IBM, para correm em PC’s IBM compatíveis.
• Baseado no CP/M e UNIX.
• Actualmente está em declínio (felizmente para alguns !!!)
– Windows 3.x.
• Multi utilizador
–
–
–
–
Unix (muito heterogéneos).
Novell.
OS/2.
Windows NT.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1-4
Alguns conceitos básicos de programação
• Primeiras barreiras a ultrapassar :
– Disciplinar raciocínio, por forma a traduzir algoritmicamente a solução do
problema.
• Algoritmo
– Conjunto finito de regras sobre as quais se pode dar execução a um dado
processo (Knuth73v1)
• Exº ordenação de um conjunto, pesquisa numa base de dados.
– Atributos que deve possuir:
• Ser finito, inteligível, exequível, caracterizável.
– Formas de representação :
• Narrativa, Fluxograma, Pseudo código, Linguagens de programação.
• Processo
– Conjunto ordenado de acções, sujeitos a critérios de decisão
condicionados por variáveis.
– Executa as regras de um algoritmo, para atingir o seu objectivo.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1-5
Representação dos algoritmos (1)
Algoritmo de Euclides (geómetra grego )
desenvolvido em 600 AC.
• Enunciado:
– Dados dois inteiros m e n, encontrar o maior inteiro que os
divida a ambos exactamente.
• Descrição narrativa:
– Algoritmo E (Algoritmo de Euclides)
• E 1- (Encontrar o resto) - Dividir m por n e afectar r com o resto (
0 <= r < n)
• E 2 - ( O resto é zero?) - Se r=0, o algoritmo termina ; n é o valor
procurado.
• E 3 - (Substituir) - Afectar m com n e n com r, voltando ao passo
E1.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1-6
Representação dos algoritmos(2)
Descrição em fluxograma
MDC de m e n
r =m % n
n =r
m = n
Descrição em linguagem C++
int mdc(int m, int n) {
int r;
while ( (r= m % n) != 0) {
m=n;
n=r;
}
return n;
}
r =0 ?
T RUE
MDC = n
FALSE
m % n - significa
resto da divisão
inteira de m por n
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1-7
Constituintes dos algoritmos
•Parâmetros do processo ou entradas.
•Variáveis intermédias (temporárias)
•Índices de iteração
•Acções primitivas.
•Resultados finais ou saídas.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1-8
Algoritmos e linguagens estruturadas
O conjunto S normalmente adoptado envolve as
primitivas:
Ponto de entrada
• Decisão binária: if (condição) acção1 else acção2
• Repetição condicional: while (condição) acção
• Decisão múltipla : switch (expressão) {
case expressão1: acção1
case expressão2:
acção2
…
S
(conjunto de primitivas de controlo.
p.e C++)
}
Um algoritmo diz-se estruturado
em relação ao conjunto S se todo
ele for explicitado exclusivamente
com essas primitivas.
Ponto de saída
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1-9
O que é programar ?
Enquanto na literatura, a arte de escrever, revela-se na
interligação das regras gramaticais, expressas numa
dada língua (não bastando para isso dominar a
gramática) ,na programação, a arte de programar,
revela-se na concepção dos algoritmos, expressos
numa dada linguagem.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1 - 10
Linguagens e paradigmas de programação
A evolução das linguagens pode analisar-se através
dos paradigmas de programação que suportam.
G e r a ç õ e s T e c n o ló g ic a s d o s c o m p u ta d o r e s
Gerações de Linguagens
Geração
1ª
2ª
3ª
década
Paradigmas de programação que suportam
50 e 60 Não estruturada ( Cobol, Fortran, Basic).
G e ra ç ã o
década
1ª
40
V á lv u la s e le c tró n ic a s
2ª
50
T ra n s ís to re s
70
Procedimental ( Pascal, linguagem C)
3ª
60
C irc u ito s in te g ra d o s d e p e q u e n a e m é d ia e s c a la .
4ª
70
C irc u ito s in te g ra d o s d e la rg a e m u ito la rg a e s c a la .
80
Modular ( modula II).
80
Abstracção de Tipos de Dados ( ADA).
5ª
4ª
5ª
te c n o lo g ia
8 0 e 9 0 E s tru tu ra s d e p ro c e s s a d o re s .
80 e 90 Programação Orientada para Objectos
( Smalltalk, C++, JAVA).
A evolução das linguagens de programação tem
vindo a acompanhar as evoluções do Hardware.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1 - 11
Paradigmas de programação (1)
– Programação procedimental
– decomposição de um problema em pequenos problemas
(procedimentos)
– cada procedimento utiliza os algoritmos mais
adequados ao que se pretende realizar.
– procedimentos suportados por um conjunto de
primitivas de controlo.
– Programação modular
– suporta princípio do encapsulamento de dados.
– programa dividido em módulos (ficheiros).
– programa resulta da ligação (“link”) de vários módulos.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1 - 12
Paradigmas de programação (2)
• Abstracção de tipo de dados
– Possibilidade de definição de tipos de dados novos
semelhantes aos já existentes suportando cada um deles
um conjunto novo de:
– Operações já existentes sobrecarregadas (overload) para o
novo tipo ( novas operações e métodos de acesso).
– Tipo de objecto => CLASSE
– Instância de uma classe => OBJECTO
– Extensão natural aos tipos (classes) pré-definidos.
Complexo a, b, c;
a = 2.3;
b = 1 / a;
c = a + b * Complexo(1,2.3);
c = c - ( ( a / 2 ) + 2 );
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1 - 13
Paradigmas de programação (3)
Programação orientada por
objectos
– Definir as classes ou tipos de
objectos que sejam necessários.
– Munir essas classes com um
conjunto completo de operações.
– Explicitar as características
comuns entre elas, através de
mecanismos de herança.
– Usar polimorfismo de métodos
entre objectos de classes
derivadas.
Form
{abstract}
based
color : int
getPosition:Point
move( Point )
contain( Point )
paint
show
hide
PolyLine
Rectangle
vertices
contain( Point )
paint
addPoint( Point )
Circle
end point
contain( Point )
paint
contain( Point )
paint
Point
1
Triangle
2..*
Legenda
Classe
Nome da classe
No caso de não existirem características
comuns entre classes de objectos, a
programação por objectos degenera na
abstracção de dados.
radius : int
x : int
y : int
1
Herança
Classe base
atributo : tipo
método( argumentos ) : tipo_de_retorno
Classe derivada
Agregação
Classe A
Nome
Cardinalidade
Classe B
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1 - 14
A linguagem C++
– A linguagem C foi desenvolvida nos Laboratórios BELL em 1970 por
B. W. Kernighan e D. M. Ritchie.
– Em 1983, foi normalizada pela ANSI (American National Standards
Institute), uma versão melhorada da linguagem C original, o standard
ANSI C .
– Em 1988, também nos Laboratórios BELL, Bjarne Stroustrup
desenvolveu uma extensão à linguagem C ANSI, destinada a suportar
todos os paradigmas de programação a que atrás nos referimos, e que
tomou a designação de C ++.
– O C++ vem acrescentar novas potencialidades à linguagem C:
– Refinar conceitos de estruturação.
– Facilitar o trabalho entre grandes equipas.
– Maior reutilização de código.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Generalidades
1 - 15