• Nenhum resultado encontrado

Programação em C/C++ #ifndef TIPOS_H

No documento Linguagem C C ppt (páginas 121-142)

#define TIPOS_H typedef struct { double x, y, z; /* coords x, y, z */ } XYZ; typedef struct {

double energia; /* energia em keV */

XYZ posicao; /* posicao do foton */

XYZ direcao; /* dir. de propagacao */

} foton;

typedef struct {

double energia, /* energia em keV*/

prob; /* probabilidade */

} espectro;

#include "tipos.h"

double Sortear_Valor(void);

double Sortear_Energia(espectro *lista,

int tam);

XYZ Sortear_Posicao(double foco);

Programação em C/C++

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <time.h> #include "tipos.h" #include "funcoes.h"

double Sortear_Valor(void) {

return rand()/(double)RAND_MAX; }

double Sortear_Energia(espectro *lista,

int tam) {

double ene, /* energia sorteada */

eps; /* variavel auxiliar */

int i; /* contador */

for ( i=0; i<tam; i++ ) {

if (lista[i].prob>=eps) { ene = lista[i].energia; break; } } return ene; }

XYZ Sortear_Posicao(double foco) {

double raio, teta;

XYZ pos;

raio = 0.5*foco*Sortear_Valor(); teta = 2*M_PI*Sortear_Valor(); pos.x = raio*cos(teta);

Programação em C/C++

XYZ Sortear_Direcao(double abertura) {

double teta, xsi;

XYZ dir;

teta = abertura*Sortear_Valor(); xsi = 2*M_PI*Sortear_Valor(); dir.x = sin(teta)*cos(xsi); dir.y = sin(teta)*sin(xsi); dir.z = cos(teta);

return dir; }

Programação em C/C++

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <time.h> #include "funcoes.h"

void main(int argc, char *argv[]) { int eventos = 10, tam;

int i;

double soma = 0, prob; foton hv; espectro *rx; FILE *fp,*fp1; if (argc > 1) { fp = fopen("espectro.txt","rt"); fscanf(fp,"%d",&tam); rx = (espectro *) malloc(tam*sizeof(espectro)); for ( i=0; i<tam; i++ ) {

fscanf(fp,"%lf",

&rx[i].energia); fscanf(fp,"%lf",&prob);

rx[i].prob = soma + prob; soma = rx[i].prob; #ifdef TESTE printf("Energia: %lf\t Prob. Acum: %lf\n", rx[i].energia,rx[i].prob); #endif } fclose(fp);

Programação em C/C++

#ifdef TESTE

fp = fopen("posicao.txt","wt"); fp1 = fopen("direcao.txt","wt"); #endif

for ( i=0; i<eventos; i++ ) {

hv.energia = Sortear_Energia(rx,tam); hv.posicao = Sortear_Posicao(1); hv.direcao = Sortear_Direcao(0.25*M_PI); #ifdef TESTE printf("Foton: energia= %7.3lf\n",hv.energia); printf(" posicao= (%7.3lf,%7.3lf,%7.3lf)\n", hv.posicao.x,hv.posicao.y, hv.posicao.z); printf(" direcao= (%7.3lf,%7.3lf,%7.3lf)\n", hv.direcao.x,hv.direcao.y, fprintf(fp,"%lf\t%lf\n", hv.posicao.x,hv.posicao.y); fprintf(fp1,"%lf\t%lf\t%lf\n", hv.direcao.x,hv.direcao.y, hv.direcao.z); #endif } #ifdef TESTE fclose(fp); fclose(fp1); #endif }

Programação em C/C++

Programação Orientada a Objeto

❑ O que é esse paradigma?

❑ Qual a grande diferença dos demais modelos?

❑ O que muda na lógica de programação?

Programação em C/C++

Programação Orientada a Objeto

❑ O paradigma (modelo) da programação orientada

a objeto está baseada na observação de que

algumas categorias de problemas podem ser

solucionadas através da adoção de elementos lógicos que englobam informações (dados) e

Programação em C/C++

Programação Orientada a Objeto

❑ A solução propriamente dita é obtida através da

interação entre estes elementos lógicos.

❑ O processo de interação entre os elementos

lógicos ocorre através de trocas de estímulos.

❑ Computacionalmente, os elementos lógicos são

unidades de processamento de informação ou

unidades de execução e a troca de estímulos se

Programação em C/C++

Programação Orientada a Objeto

❑ No jargão da programação orientada a objeto, a

unidade de execução é chamada de OBJETO.

❑ Um programa orientado a objeto é uma coleção

de OBJETOS (unidades de execução) que colaboram entre si através de trocas de

MENSAGENS para que a solução computacional se concretize.

Programação em C/C++

Programação Orientada a Objeto

❑ Todo OBJETO é uma materialização de um

modelo.

❑ No jargão da programação orientada a objeto, um

modelo de objeto é chamado de CLASSE.

❑ Um OBJETO é um INSTANCIAMENTO de uma

Programação em C/C++

Programação Orientada a Objeto

❑ A capacidade de implementação de soluções

lógicas em programação orientada a objeto depende diretamente das propriedades das CLASSES e OBJETOS.

❑ As CLASSES possuem três propriedades

básicas:

◼ Encapsulamento ◼ Hereditariedade

Programação em C/C++

Programação Orientada a Objeto

❑ A propriedade de encapsulamento é a mais

básica das três propriedades.

❑ A programação orientada a objeto se baseia

naturalmente nesta propriedade.

❑ Ela diz respeito a capacidade da unidade lógica

de programação de incluir na sua concepção o agrupamento de dados e ações numa única entidade.

Programação em C/C++

Programação Orientada a Objeto

❑ Ou seja, uma classe encapsula atributos (dados)

e métodos (ações).

❑ Sendo o objeto um instanciamento de uma

classe, ele transporta consigo os atributos e métodos encapsulados na classe.

❑ Este encapsulamento pode organizar os atributos

e os métodos como públicos, protegidos e privados, chamados de visibilidade do

Programação em C/C++

Programação Orientada a Objeto

❑ Os atributos e métodos públicos podem ser

acessados diretamente por outros objetos.

❑ Os atributos e métodos protegidos e privados só

são acessados internamente.

❑ Normalmente, os métodos de uma classe são

declarados como públicos e os atributos, como protegidos ou privados.

Programação em C/C++

Programação Orientada a Objeto

❑ A propriedade de hereditariedade responde à

capacidade de uma classe de transmitir para classes descendentes o seu conteúdo

encapsulado, isto é, seus atributos e métodos públicos e protegidos.

❑ Atributos e métodos privados só existem na

classe de objeto que as contêm.

Programação em C/C++

Programação Orientada a Objeto

❑ A propriedade de herança também é um

mecanismo natural da programação orientada a objeto.

❑ Esta propriedade permite que as classes se

organizem em diferentes níveis (categorias) de complexidade (especialização).

❑ Uma classe pode tanto originar múltiplos

Programação em C/C++

Programação Orientada a Objeto

❑ Os descendentes de uma classe podem

encapsular atributos e métodos próprios bem

como sobrescrever atributos e métodos herdados de seus ancestrais.

❑ Exemplo:

◼ Classe Radiação

❑ Atributo Protegido Energia ❑ Método Público LerEnergia()

Programação em C/C++

Programação Orientada a Objeto

❑ Exemplo:

◼ Classe Radiação

❑ Método Público LerEnergia(valor)

▪ Energia ← valor

❑ Fim

❑ Método Público EscreverEnergia()

▪ Retornar Energia

Programação em C/C++

Programação Orientada a Objeto

❑ Exemplo:

◼ Classe Partícula, descendente de Classe Radiação

❑ Atributo Protegido Massa ❑ Método Público LerMassa()

❑ Método Público EscreverMassa()

◼ Classe Onda, descendente de Classe Radiação

❑ Atributo Protegido Frequência ❑ Método Público LerFrequência()

Programação em C/C++

Programação Orientada a Objeto

❑ Exemplo:

◼ Objeto Elétron, instância de Classe Partícula ◼ Elétron.LerEnergia(E)

◼ Elétron.LerMassa(m)

◼ E ← Elétron.EscreverEnergia() ◼ m ← Elétron.EscreverMassa()

Programação em C/C++

Programação Orientada a Objeto

❑ Exemplo:

◼ Objeto Fóton, instância de Classe Onda ◼ Fóton.LerEnergia(E)

◼ Fóton.LerFrequência(f)

◼ E ← Fóton.EscreverEnergia() ◼ f ← Fóton.EscreverFrequência()

Programação em C/C++

Modelagem de um tubo de raios X

E I

K K

No documento Linguagem C C ppt (páginas 121-142)

Documentos relacionados