Programao Avanada
Aulas 2 Ponteiros e Programao Modular
Manter o celular sempre desligado/silencioso quando estiver em sala de aula Nunca atender o celular em sala de aula
O acesso aos membros da estrutura atravs de um ponteiro feito usando o operador seta ->
typedef struct{ int id; char titulo[50]; int numero_de_paginas; } livro; int main(){ livro *p; livro l = {10,Linguagem C, 150}; p = &l; cout<<"Dados do livro ID:<< p->id << endl; cout<<"-Nome:<< p->titulo << endl; cout<<"-Numero de Paginas:<<p->numero_de_paginas<<endl; return 0; }
possvel executar um programa em C++ passando-se argumentos (parmetros) para o programa. Como podemos escrever programas em C++ que acessem esses argumentos?
Os argumentos digitados so enviados pelo sistema operacional como parmetros da funo main() Para que essa funo possa reconhec-los, necessrio declar-los, como feito em qualquer funo C++.
O primeiro argumento argc representa o nmero de argumentos transmitidos. O segundo argumento uma matriz de ponteiros para char.
As cadeias de caracteres podem ser acessadas por meio da notao argv[0], argv[1] etc.
Programao Modular
Mdulos
De fato, quando desenvolvemos programas, procuramos identificar funes afins e agrup-las por arquivo. Quando temos um arquivo com funes que representam apenas parte da implementao de um programa completo, denominamos esse arquivo de mdulo. Assim, a implementao de um programa pode ser composta por um ou mais mdulos.
Mdulos
No caso de um programa composto por vrios mdulos, cada um desses mdulos deve ser compilado separadamente, gerando um arquivo objeto (arquivo com extenso .o) para cada mdulo. Aps a compilao de todos os mdulos, uma outra ferramenta, denominada ligador, usada para juntar todos os arquivos objeto em um nico arquivo executvel.
Mdulos
Para programas pequenos, o uso de vrios mdulos pode no se justificar. Porm, para programas de mdio e grande porte, a sua diviso em vrios mdulos uma tcnica fundamental, pois facilita a diviso de uma tarefa maior e mais complexa em tarefas menores e mais fceis de implementar. Alm disso, um mdulo com funes C++ pode ser utilizado para compor vrios programas, e assim poupar muito tempo de programao.
Mdulos
O arquivo converte.cpp apresentado no exemplo pode ser utilizado para compor outros programas que queiram utilizar a funo float converte (float c); Para que as funes implementadas em convert.cpp possam ser usadas por um outro mdulo C++, ele precisa conhecer os prottipos das funes oferecidas por
converte.cpp
No exemplo anterior, isso foi resolvido por meio da repetio dos prottipos da funo converte no incio do arquivo main.cpp.
Mdulos
Entretanto, para mdulos que ofeream vrias funes ou que queiram usar funes de muitos outros mdulos, essa repetio manual pode ficar muito trabalhosa e sensvel a erros. Para contornar esse problema, todo mdulo de funes C++ costuma ter associado um arquivo que contm apenas os prottipos das funes oferecidas e, s vezes, os tipos de dados exportados (structs).
Esse arquivo de prottipos caracteriza a interface do mdulo, e em geral tem o mesmo nome do mdulo, s que com extenso .h
Exemplo converte.h
Nesta aula, discutiremos uma importante tcnica de programao baseada em tipos estruturados, conhecida como tipos abstratos de dados (TAD).
A idia central encapsular (esconder) de que usa um determinado tipo a forma concreta com que ele foi implementado.
Por exemplo, se criamos um tipo para representar um ponto no espao, um usurio desse tipo usa-o de forma abstrata, com base apenas nas funcionalidade oferecidas pelo tipo. A forma com que ele foi implementado (armazenando cada coordenada num campo ou agrupando todas num vetor) passa a ser um detalhe de implementao. Desacoplamento da implementao e seu uso.
Facilidade de Manuteno Aumento do potencial de reutilizao do tipo criado.
Um mdulo agrupa vrios tipos e funes com funcionalidades relacionadas. Por exemplo, vimos um mdulo com funes para a converso de temperaturas. Nos casos em que um mdulo define um novo tipo de dado e o conjunto de operaes para manipular dados desse tipo, dizemos que o mdulo representa um TAD
Por exemplo, podemos criar um tipo matriz e uma srie de funes que o manipulam. Se criarmos um TAD, podemos esconder a estratgia de implementao. Quem usa o TAD precisa apenas conhecer a sua funcionalidade.
Vamos considerar a criao de um tipo de dado para representar um ponto no R2 Para isso, devemos definir um tipo abstrato, denominado Ponto, e o conjunto de funes que operam sobre esse tipo. Neste exemplo, vamos considerar as seguintes operaes:
atribui: operao que atribui novos valores s coordenadas de um ponto. acessa: operao que retorna as coordenadas de um ponto; distancia: operao que calcula a distncia entre dois pontos.
Vamos considerar a criao de um tipo de dado para representar um crculo no R2 As seguintes operaes podem ser oferecidas
atribui: operao que atribui valores ao raio e ao centro do crculo. area: operao que calcula a rea do crculo; interior: operao que verifica se um dado ponto est dentro do crculo.