programação de computadoresii - siccciber · 2019. 11. 3. · soma(), produtointerno(),...
TRANSCRIPT
![Page 1: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/1.jpg)
ProgramaçãodeComputadores II9. Tipo Abstrato de Dados
Raphael M.
2019.1
Raphael M. Aula 09.T i po Abstratode Dados
![Page 2: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/2.jpg)
TipoAbstratode Dados
Tipo Abstrato de Dados (TAD) é um modelo no qual a definição de um conjunto de dados e suas operações é semântica.
Foco nos aspectos essenciais do dado. Abstração de como ele foi implementado.Num bom programa o main() só faz declarações e chamadas para TADs.O TAD é um caixa preta que resolve problemas, fornece dados sem que o usuário precise saber como o problema está sendo resolvido e como os dados estão sendorepresentados.
Raphael M. Aula 09.T i po Abstratode Dados
![Page 3: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/3.jpg)
TipoAbstratode Dados
TiposSão as variáveis que serão utilizadas, normalmente declarada comstruct e typedef.
OperaçõesSão operações que são realizadas nos dados, normalmente sãofunções que ou retornam ou possuem como argumento o tipodefinido.
Raphael M. Aula 09.T i po Abstratode Dados
![Page 4: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/4.jpg)
TipoAbstratode Dados
TiposSão as variáveis que serão utilizadas, normalmente declarada comstruct e typedef.
Estudante: nome, matricula, notaP, notaT
OperaçõesSão operações que são realizadas nos dados, normalmente sãofunções que ou retornam ou possuem como argumento o tipodefinido.
calculaMedia(), defineNome(), validaMatricula()
Raphael M. Aula 09.T i po Abstratode Dados
![Page 5: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/5.jpg)
TipoAbstratode Dados
TiposSão as variáveis que serão utilizadas, normalmente declarada comstruct e typedef.
Estudante: nome, matricula, notaP, notaT Vetor: elementos
OperaçõesSão operações que são realizadas nos dados, normalmente sãofunções que ou retornam ou possuem como argumento o tipodefinido.
calculaMedia(), defineNome(), validaMatricula() soma(), produtoInterno(), produtoVetorial()
Raphael M. Aula 09.T i po Abstratode Dados
![Page 6: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/6.jpg)
TipoAbstratode Dados
TiposSão as variáveis que serão utilizadas, normalmente declarada comstruct e typedef.
Estudante: nome, matricula, notaP, notaT Vetor: elementosPontos: x, y,z
OperaçõesSão operações que são realizadas nos dados, normalmente sãofunções que ou retornam ou possuem como argumento o tipodefinido.
calculaMedia(), defineNome(), validaMatricula() soma(), produtoInterno(), produtoVetorial() saoIguais(), calculaDistancia(), valorX()
Raphael M. Aula 09.T i po Abstratode Dados
![Page 7: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/7.jpg)
Fração
Fracao f ;
Fracao = cr iaFracao(int den, i n t num); i n t porZero (Fracao f ) ;i n t ehNegativa (Fracao f ) ;i n t valorDenominador (Fracao f ) ; i n t valorNumerador (Fracao f ) ; void reduz (Fracao f ) ;Fracao soma (Fracao f 1 , Fracao f 2 ) ; Fracao sub t ra i (Fracao f 1 , Fracao f 2 ) ; Fracao mult ipl ica (Fracao f 1 , Fracao f 2 ) ; Fracao divide (Fracao f 1 , Fracao f 2 ) ;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 8: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/8.jpg)
Fração
typedef s t r u c t fracao { i n t numerador;i n t denominador;
} Fracao;
i n t porZero (Fracao f ) {i f (f.denominador == 0) re turn 1 ;e l se re turn 0 ;
}
Fracao mult ipl ica (Fracao f 1 , Fracao f2 ) { Fracao f ;f.numerador = f1.numerador * f2.numerador; f.denominador = f1.denominador * f2.denominador; re turn f ;
}
Raphael M. Aula 09.T i po Abstratode Dados
![Page 9: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/9.jpg)
Fração
#define NUM 0#define DEN 1typedef i n t Fracao[2];
i n t porZero (Fracao f ) {i f (f[DEN] == 0) re turn 1 ;e l se re turn 0 ;
}
Fracao mult ipl ica (Fracao f 1 , Fracao f2 ) { Fracao f ;f[NUM] = f1[NUM] * f2[NUM];f[DEN] = f1[DEN] * f2[DEN];re turn f ;
}
Raphael M. Aula 09.T i po Abstratode Dados
![Page 10: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/10.jpg)
TipoAbstratode Dados
O usuário não vê a implementação.Não há referência à maneira que os dados são representados ouutilizados.Separação do programa, da especificação e da implementação.
Raphael M. Aula 09.T i po Abstratode Dados
![Page 11: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/11.jpg)
VantagensdoTAD
Mais fácil modificar o código.O código pode ser reutilizado.Mais fácil acharerros.O código podeser compartilhado entre maisdeumprograma.
Raphael M. Aula 09.T i po Abstratode Dados
![Page 12: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/12.jpg)
VantagensdoTAD
Num TAD a implementação deve toda ser abstraída no arquivo principal. Assim, qualquer acesso direto a elementos do TAD é uma violação a essaregra.
#include "fracao.h"
i n t main() {Fracao f1 = criaFracao(10, 3 ) ; Fracao f2 = criaFracao(20, 9 ) ; Fracao f3 = soma ( f 1 , f 2 ) ; re turn 0 ;
}
O arquivo main acima funciona com ambas as implementações de Fração vistas.
Raphael M. Aula 09.T i po Abstratode Dados
![Page 13: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/13.jpg)
Ponto
typedef s t r u c t ponto { i n t x ;i n t y ;
} Ponto;
Ponto definePonto ( i n t x , i n t y ) ;i n t calculaDistancia (Ponto p1, Ponto p2); i n t valorX (Ponto p ) ;i n t valorY (Ponto p ) ;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 14: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/14.jpg)
Circulo
typedef s t r u c t c i rcu lo { Ponto centro ;i n t r a i o ;
} Circulo;
Circulo defineCirculo ( i n t r a i o , Ponto cen t ro ) ; Circulo mudaCentro (Circulo c , Ponto cen t ro ) ; Circulo mudaRaio (Circulo c , i n t r a i o ) ;f l o a t calculaArea (Circulo c ) ; i n t valorRaio (Circulo c ) ; Ponto valorCentro (Circulo c ) ;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 15: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/15.jpg)
Desenho
typedef s t r u c t desenho { Ponto pontos[100]; Circulo c irculos[100]; i n t p ;i n t c ;
} Desenho;
Desenho criaDesenho();Desenho insereCirculo(Desenho d , Circulo c ) ; Desenho removeCirculo(Desenho d , Circulo c ) ; Desenho inserePonto(Desenho d , Ponto p ) ; Desenho removePonto(Desenho d , Ponto p ) ;i n t numeroFormas(Desenho d ) ;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 16: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/16.jpg)
SoftwareemCamadas
Raphael M. Aula 09.T i po Abstratode Dados
![Page 17: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/17.jpg)
Exemplo1: Data
Raphael M. Aula 09.T i po Abstratode Dados
![Page 18: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/18.jpg)
Exemplo1: Data
typedef s t r u c t data { i n t d i a ;i n t mes; i n t ano;
} Data;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 19: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/19.jpg)
Exemplo1: Data
typedef s t r u c t data { i n t d i a ;i n t mes; i n t ano;
} Data;
Data c r iaData( in t d i a , i n t mes, i n t ano); i n t comparaData(Data d1, Data d2);void imprimeData(Data d ) ;Data mudaDia(int d i a , Data d ) ; i n t anoBissexto (Data d ) ;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 20: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/20.jpg)
Exemplo2: Horario
Raphael M. Aula 09.T i po Abstratode Dados
![Page 21: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/21.jpg)
Exemplo2: Horario
typedef s t r u c t horario { i n t hora;i n t minuto; i n t segundo; i n t fuso;
} Horario;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 22: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/22.jpg)
Exemplo2: Horario
typedef s t r u c t horario { i n t hora;i n t minuto; i n t segundo; i n t fuso;
} Horario;
Horario cr iaHorar io( in t hora, i n t min, i n t seg ) ; i n t comparaHorario(Horario h1, Horario h2);void imprimeHorario(Horario h ) ; void horarioDeVerao(Horario *h);
Raphael M. Aula 09.T i po Abstratode Dados
![Page 23: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/23.jpg)
Exemplo3:Conta Bancária
Raphael M. Aula 09.T i po Abstratode Dados
![Page 24: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/24.jpg)
Exemplo3:Conta Bancária
typedef s t r u c t conta { f l o a t sa ldo;f l o a t depositos[100]; f l o a t t ransferencias[100]; char *usuario;i n t senha;
} Conta;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 25: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/25.jpg)
Exemplo3:Conta Bancária
typedef s t r u c t conta { f l o a t sa ldo;f l o a t depositos[100]; f l o a t t ransferencias[100]; char *usuario;i n t senha;
} Conta;
Conta criaConta(char *usuario, i n t senha); void deletaConta(Conta c ) ;void deposi to(f loa t va lo r , Conta c ) ; void saque(f loat va lo r , Conta c ) ;void t r a n s f ( f l o a t va lo r , Conta origem, Conta des t ino ) ; f l o a t saldo(Conta c ) ;
Raphael M. Aula 09.T i po Abstratode Dados
![Page 26: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/26.jpg)
Exercício
Em matemática, função polinomial é uma função que pode ser expressa da forma:
f (x) = anxn + an−1xn−1 +···+ a1x1+a0x0
Projete o TAD para funções polinomiais. Pense em qual seria o tipo de dados e quais operações deveriam ser implementadas.
Raphael M. Aula 09.T i po Abstratode Dados
![Page 27: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/27.jpg)
Exercício: Solução
Projete o TAD para equações polinomiais. Pense em qual seria o tipo de dados e quais funções deveriam ser implementadas.
#define MAX 100
typedef s t r u c t polinomio {i n t coeficientes[MAX];i n t grau;
} Polinomio;
Polinomio criaPolinomio ( i n t grau) ;void insereCoeficiente (Polinomio *p, i n t termo, i n t coe f ) ; Polinomio soma (Polinomio p1, Polinomio p2);Polinomio mult ipl ica (Polinomio p1, Polinomio p2);
Raphael M. Aula 09.T i po Abstratode Dados
![Page 28: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/28.jpg)
ProgramaçãodeComputadores II10. Modularização
RaphaelM.
2019.1
Raphael M. Aula 10. Modularização
![Page 29: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/29.jpg)
SoftwareemCamadas
Raphael M. Aula 10. Modularização
![Page 30: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/30.jpg)
SoftwareemCamadas
Raphael M. Aula 10. Modularização
![Page 31: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/31.jpg)
Arquivos.he .c
O.h(header)contémasestruturasnecessárias,osprotótiposdasfunçõeseasbibliotecaspadrão.Elanãocontémnenhumaimplementação.Oarquivo.cpossuidefatoasimplementaçõesdasfunçõeseincluiapenaso .h.Oarquivoprincipalpossuisomenteafunçãomain()efazchamadasatodasasfunçõeseestruturasimplementadasnasbibliotecas.Umarquivo.cnuncadeveserincluídocomo biblioteca!
Paraincluirumabibliotecapadrãoutilizamos<nome.h>eparaincluirumabibliotecanossautilizamos "nome.h".
Raphael M. Aula 10. Modularização
![Page 32: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/32.jpg)
ponto.h
Raphael M. Aula 10. Modularização
![Page 33: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/33.jpg)
ponto.c
Raphael M. Aula 10. Modularização
![Page 34: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/34.jpg)
circulo.h
Raphael M. Aula 10. Modularização
![Page 35: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/35.jpg)
circulo.c
Raphael M. Aula 10. Modularização
![Page 36: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/36.jpg)
quadrado.h
Raphael M. Aula 10. Modularização
![Page 37: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/37.jpg)
quadrado.c
Raphael M. Aula 10. Modularização
![Page 38: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/38.jpg)
desenho.h
Raphael M. Aula 10. Modularização
![Page 39: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/39.jpg)
desenho.c
Raphael M. Aula 10. Modularização
![Page 40: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/40.jpg)
main.c
Faráchamadasparaasfunçõesdefinidas.Nãofaráacessodiretoanenhum struct.Faráainteraçãodasfunçõescomousuário final.
Raphael M. Aula 10. Modularização
![Page 41: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/41.jpg)
main.c
Raphael M. Aula 10. Modularização
![Page 42: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/42.jpg)
CompilaçãoporLinhadeComando
Cadabiblioteca(conjuntodearquivos.ce.h)deverágerarumobjeto (.o).Oprograma-objetoseráumexecutáveldaquela biblioteca.Aocompilarseuarquivoprincipalmain.cvocêdeveincluircada biblioteca.
Raphael M. Aula 10. Modularização
![Page 43: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/43.jpg)
Criando Objetos
gcc-c<nomedo programa>.c
gcc-cponto.c=⇒ ponto.ogcc-ccirculo.c=⇒ circulo.ogcc-cquadrado.c=⇒ quadrado.ogcc-cdesenho.c=⇒ desenho.o
Raphael M. Aula 10. Modularização
![Page 44: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/44.jpg)
Criando Executável
gcc<nomedoprograma>.c-o<nomedoexecutável><nomedosobjetos>
gccmain.c-omainponto.ocirculo.oquadrado.o desenho.o=⇒ main
Raphael M. Aula 10. Modularização
![Page 45: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/45.jpg)
Makefile
Paraevitarescrevertodasaslinhasdecompilaçãopodemoscriarum Makefile
OarquivodevesechamarMakefileestarnamesmapastaqueoscódigos.Aodigitarmakenoterminal,omakeexecutaráefaráacompilação necessária.Seumconjuntodearquivos.he.cquegerouum.onãofoialteradooMakefileevitaa recompilação.
Raphael M. Aula 10. Modularização
![Page 46: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/46.jpg)
Makefile
Paraevitarescrevertodasaslinhasdecompilaçãopodemoscriarum Makefile
Raphael M. Aula 10. Modularização
![Page 47: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/47.jpg)
#ifndef
Se uma biblioteca é incluída duas vezes em C temos um erro deconflito. Assim, para evitar esse problema usamos no header osseguintes comandos.
#ifndef:Seumtokennãofoidefinido.#ifdef:Seumtokenfoidefinido.#else:Senãoparaqualquerumdosifs.#endif:Fimdasaçõesdeif.
#ifndef TOKEN #define TOKEN
::
#endif
Raphael M. Aula 10. Modularização
![Page 48: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/48.jpg)
#ifndef
Raphael M. Aula 10. Modularização
![Page 49: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/49.jpg)
Códigos
Códigosdisponíveisnositedocurso
Raphael M. Aula 10. Modularização
![Page 50: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/50.jpg)
Exercício
FaçaoTAD,incluindocadaarquivo,paraequaçõespolinomiaiscomleitura,escritaesoma.
Raphael M. Aula 10. Modularização
![Page 51: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/51.jpg)
Exercício: Solução
FaçaoTAD,incluindocadaarquivo, paraequaçõespolinomiais.
polinomio.h
Raphael M. Aula 10. Modularização
![Page 52: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/52.jpg)
Exercício: Solução
FaçaoTAD,incluindocadaarquivo, paraequaçõespolinomiais.
polinomio.cRaphael M. Aula 10. Modularização
![Page 53: Programação de ComputadoresII - SICCCiber · 2019. 11. 3. · soma(), produtoInterno(), produtoVetorial() Raphael M. Aula 09. Tipo Abstrato deDados. Tipo Abstrato deDados Tipos](https://reader033.vdocuments.pub/reader033/viewer/2022060913/60a76244337eb5114b7db7f8/html5/thumbnails/53.jpg)
Exercício: Solução
FaçaoTAD,incluindocadaarquivo, paraequaçõespolinomiais.
main.c
Raphael M. Aula 10. Modularização