ATPS -Programação Estruturada II - Relatório 2

21
Sumário 1. Struct.................................................... 2 1.1 Onde é usada uma Struct................................2 1.2 Como declarar uma Struct...............................3 Como alterar uma struct em uma função.......................5 a. Principais Banco de Dados...............................19 Banco de dados Oracle...................................19 Banco de dados SQL Server...............................19 Banco de dados MySQL....................................20 Banco de dados MS Access................................20 b. Formalização de prestação de Serviços...................20 c. Registro de Reunião.....................................20 d. Descrição do Negócio....................................21 i. Modelos de Objetivos do Negócio.......................21 ii.Modelos de Processos do Negócio.......................21 iii................................Modelos de casos de usos 21 e. Arquitetura do Software.................................21 f. Planos de Testes........................................21 g. Alocação de recursos....................................22 h. Estratégia de Implantação...............................22 2. Softwares................................................ 22 1

description

Atps completaProgramação estrutura 2

Transcript of ATPS -Programação Estruturada II - Relatório 2

Sumrio

21.Struct

21.1Onde usada uma Struct

31.2 Como declarar uma Struct

5Como alterar uma struct em uma funo

19a.Principais Banco de Dados

19Banco de dados Oracle

19Banco de dados SQL Server

20Banco de dados MySQL

20Banco de dados MS Access

20b.Formalizao de prestao de Servios

20c.Registro de Reunio

21d.Descrio do Negcio

21i.Modelos de Objetivos do Negcio

21ii.Modelos de Processos do Negcio

21iii.Modelos de casos de usos

21e.Arquitetura do Software

21f.Planos de Testes

22g.Alocao de recursos

22h.Estratgia de Implantao

222.Softwares

223.Metodologias

234.Estudo de viabilidade de sistema de vendas

ETAPA 2 PASSO 1.

1. StructStructs, que servem para manusear uma quantidade maior de informaes de uma maneira mais simples, eficiente e de tipos diferentes.Uma Struct uma estrutura de armazenamento em bloco de diversas informaes.

Dentro dessa estrutura podemos criar uma estrutura com o varivel tipo int e outra estrutura com o varivel tipo string e outro tipo float. Exemplo pode criar uma estrutura para cadastro de um funcionrio com int para idade, string para seu nome e float para salrio.

Assim, sempre que quisssemos um dado de um funcionrio, bastaramos ter acesso a strutura dele, e todas as informaes viriam juntas.

As estruturas podem conter quantos elementos e tipos que necessitem, basta voc escolher a estrutura e depois declarar seus nomes e elementos.Depois s definir quantos elementos vai conter e os declarar com nomes diferentes.Aps isso, em vez de voc manipular as milhares de variveis dos mais diversos tipos que tenha criado, voc trabalha s com a estrutura.Assim no tem que se preocupar com cada detalhe da estrutura. Esses detalhes so definidos somente uma vez, na declarao da estrutura.1.1 Onde usada uma Struct

tructs so muito usadas quando temos elementos em nossos programas que precisam e fazem uso de vrios tipos de variveis e caractersticas.

Usandostruct, podemos trabalhar com vrios tipos de informaes de uma maneira mais fcil, rpida e organizada, uma vez que no temos que nos preocupar em declarar e decorar o nome de cada elemento da struct.

Por exemplo, vamos supor que voc foi contratado para criar um aplicativo de uma escola.

As structs servem para voc organizar as informaes de uma maneira mais otimizada.

Para isso, basta colocarmos as informaes comuns na estrutura.

Quais seriam os elementos comuns que deveramos colocar nessa estrutura?

Ora, vamos trabalhar com alunos, ento temos que colocar elementos na struct que representem os alunos: nome, notas, mensalidade, se esta mensalidade foi paga ou no etc.

Assim, podemos cria ruma struct para cada aluno e, automaticamente, esse aluno ter as variveis acima citadas.

Outro exemplo seria para tratar carros de uma montadora.

Podemos representar a estrutura de um carro colocando alguns tipos de variveis, que vo representar as caractersticas dos carros.

Por exemplo, qual a potncia do motor, ano de fabricao, quantas portas possui, seu preo etc.

Assim, cada carro vai ter os elementos dessa struct automaticamente.

1.2 Como declarar uma StructStruct nada mais que um conjunto de estruturas, ou bloco, de variveis:A sintaxe a seguinte:

struct Nome_de_sua_struct{ tipos nome_dos_tipos;};Declaramos, como exemplo, uma struct para representar os dados dos funcionrios:

struct Funcionario{ int idade; char *nome; float salario;};Podemos ver as structs como um tipo de dado.Por exemplo, Funcionario, que foi declarado anteriormente, pode ser visto como um novo

de tipo de varivel. uma varivel, ou um tipo, que define os funcionrios.

Essa viso, de que criamos um novo tipo de varivel, to certa que possvel criar e declarar

mais variveis do tipo struct Funcionario.

A sintaxe para declarar outras structs do tipo struct Funcionario :

struct Funcionario empregado1;struct Funcionario chefe;struct Funcionario secretaria;No que no momento da criao do modelo da struct Funcionario, declaramos um inteiro,

uma string e um float dentro da struct.

Assim, todas as structs do tipo Funcionario tero uma varivel inteira, uma string e um float.

Sempre que declaramos uma nova struct desse tipo, essas variveis so automaticamente. criadas e tero essas variveis. Outra maneira de declarar variveis de um tipo struct que queremos, criar esses elementos. Aps as chaves na hora de criar a struct Funcionario.

struct Funcionario{ int idade; char *nome; float salario;}empregado1, chefe, secretaria;Criamos 3 funcionrios desse tipo, e todos eles tero os mesmos elementos internos, com os mesmos nomes: idade, nome e salario.

Se tem o mesmo nome, como vamos diferenciar esses elementos?

Pelo nome da varivel do tipo struct Funcionario.

Agora existem 3 variveis do tipo struct Funcionario: empregado1, chefe e secretaria.

So usados dois operadores para acesso a membros de estruturas: O operador de

membro de estrutura (.) tambm chamado operador de ponto e o operador de

ponteiro de estrutura ( ->) tambm chamado operador de seta. O operador de

membro de estrutura acessa um membro de uma estrutura por meio do nome da varivel

da estrutura. Por exemplo, para imprimir o membro funcionario da estrutura a da declarao

anterior, use a instruo

printf("%s", a.funcionario);Apenas isso, basta botar um ponto aps o nome que voc escolheu para a struct.

Aps isso, estamos acessando normalmente a varivel:

chefe.idade -> um inteiro como outro qualquer.

empregado1.nome -> uma string como outra qualquer.

secretaria.salario -> um float como outro qualquer.

1.3Como alterar uma struct em uma funo

Ler os dados de uma struct atravs de funes bem simples e feito exatamente da mesma maneira que qualquer outros tipos de dados.Porm, s ler nem sempre to igual. No necessrio a alterao do main() ? Para fazer, a funo deve ser declarada de modo a esperar receber, como argumento, um endereo de memria. Ou seja, o parmetro um ponteiro. A nossa funo preenche seria:

void Preenche(CARRO *car);

E para passar para struct ? Temos que passar o endereo de memria dessa estrutura, e isso feito colocando o operador & antes do nome da struct:

Preenche(&fusca);

O problema vem quando vamos tratar a estrutura dentro da funo, pois devemos ter um cuidado especial e aqui onde os iniciantes costumam se confundir e se complicar.

A funo vai receber um ponteiro car de uma estrutura. Para alterarmos os membros da estrutura, temos que usar o asterisco antes do ponteiro. O ponteiro em si s um endereo de memria, o valor para qual esse ponteiro aponta obtido quando colocamos um asterisco antes do nome do ponteiro.

Por exemplo, para preenchermos o campo modelo:

gets( (*car).modelo);

E para acessar o elemento que armazena a potncia do motor?

(*car).potenciaMotor

E para alterar esse valor, dentro da funo scanf(), por exemplo?

scanf("%f", &(*car).potenciaMotor);ETAPA 2 PASSO 2.

2. Proposta de problemas utilizando StructsA) Cadastro de pessoa, com nme, idade, peso e sexo:

B) Escrever um programa que cadastre vrios produtos. Em seguida, imprima uma lista com o cdigo e nome da cada produto. Por ltimo, consulte o preo de um produto atravs de seu cdigoC) Crie um programa na linguagem C que define a estrutura de um carro, altere seus dados atravs de uma funo (use passagem por referncia e o operador ->) bem como use outra funo para exibir os membros da struct.

D) Defina um tipo Aluno, com nome, matricula, turma e nota de 3 provas.Defina funes para leitura e impresso de um aluno.Defina uma funcao que calcula sua mdia final (a funo pede que o usurio digite uma quarta nota caso ele tenha ficado de prova final).

E) Defina uma estrutura que ir representar bandas de msica.Essa estrutura deve ter o nome da banda, que tipo de msica ela toca, o nmero de integrantes e em que posio do ranking essa banda est dentre as suas 5 bandas favoritas.

ETAPA 2 PASSO 3.

3. Solues dos ProblemasA) Cadastro de pessoa, com nme, idade, peso e sexo

#include

#include

#include

main()

{

int i;

struct Pessoa {char nome [20]; int idade; float peso; char sexo;};

struct Pessoa p [3];

for(i = 1; i ) bem como use outra funo para exibir os membros da struct.

typedef struct

{

char modelo[30];

float potenciaMotor;

int anoFabricacao,

numPortas;

}CARRO;

void Exibe(CARRO car)

{

printf("\n\tExibindo carro\n");

printf("Modelo: %s\n", car.modelo);

printf("Motor: %.1f\n", car.potenciaMotor);

printf("Ano: %dn", car.anoFabricacao);

printf("%d portas\n", car.numPortas);

}

void Preenche(CARRO *car)

{

printf("Modelo do carro: ");

gets( car->modelo );

printf("Motor: ");

scanf("%f", &car->potenciaMotor);

printf("Ano: ");

scanf("%d", &car->anoFabricacao);

printf("Numero de portas: ");

scanf("%d", &car->numPortas);

}

int main(void)

{

CARRO fusca;

Preenche(&fusca);

Exibe(fusca);

return 0;

}G) Defina um tipo Aluno, com nome, matricula, turma e nota de 3 provas.Defina funes para leitura e impresso de um aluno.Defina uma funcao que calcula sua mdia final (a funo pede que o usurio digite uma quarta nota caso ele tenha ficado de prova final).

#include #include

typedef struct {char nome[30];char mat[10];char turma[10];

double n1, n2, n3, pf;} Aluno;

void leAluno (Aluno *p) {printf ("Digite nome, matricula e turma do aluno: ");scanf ("%s %s %s", p->nome, p->mat, p->turma);

printf ("Digite as 3 notas do aluno: ");scanf ("%lf %lf %lf", &p->n1, &p->n2, &p->n3);

if ( (p->n1 + p->n2 + p->n3) < 60 ) {printf ("Digite nota da prova final: ");scanf ("%lf", &p->pf);}}

void imprimeAluno (Aluno *p) {printf ("Nome: %s\n", p->nome);printf ("Matricula: %s\n", p->mat);printf ("Turma: %s\n", p->turma);printf ("Nota 1: %.2f\n", p->n1);printf ("Nota 2: %.2f\n", p->n2);printf ("Nota 3: %.2f\n", p->n3);}

double media (Aluno *p) {double m;

m = p->n1 + p->n2 + p->n3;

if ( m < 60 ) {m = 0.4*m + 0.6*p->pf;}

return m;

}

/*double media (Aluno *p) {double m, pf;

m = p->n1 + p->n2 + p->n3;

if ( m < 60 ) {printf ("Aluno de prova final. Digite nota da PF: ");scanf ("%lf", &pf);

m = 0.4*m + 0.6*pf;}

return m;

}*/

/*int main (int argc, char **argv) {Aluno a;double m;

leAluno (&a);imprimeAluno (&a);

m = media (&a);

if ( m >= 60 ) printf ("%s passou na disciplina com media %.2f.\n", a.nome, m);else printf ("Game over para %s, que reprovou com %.2f.\n", a.nome, m);

return 0;}*/

void alunoComMaiorMedia (Aluno *v, int n) {int i, m = 0;

for (i = 1; i < n; i++) {if ( media (&v[i]) > media (&v[m]) ) m = i;}

printf ("O aluno com maior media (%.2f) foi %s.\n", media (&v[m]), v[m].nome);}

int main (int argc, char **argv) {int n; // numero de alunosAluno *v; // vetor de alunosint i;

printf ("Digite o numero de alunos: ");scanf ("%d", &n);

v = (Aluno *)malloc (n * sizeof (Aluno));if (v == NULL) {printf ("Erro de memoria.\n");exit (1);}

for (i = 0; i < n; i++) leAluno ( &v[i] );

//for (i = 0; i < n; i++) imprimeAluno ( &v[i] );

printf ("Resultado Final: \n");for (i = 0; i < n; i++) {double m = media ( &v[i] );if ( m >= 60 ) printf ("%s / %.2f / Aprovado\n", v[i].nome, m);else printf ("%s / %.2f / Reprovado\n", v[i].nome, m);}

alunoComMaiorMedia (v, n);

return 0;}

H)Defina uma estrutura que ir representar bandas de msica.Essa estrutura deve ter o nome da banda, que tipo de msica ela toca, o nmero de integrantes e em que posio do ranking essa banda est dentre as suas 5 bandas favoritas.#include #include typedef struct banda{char nome_banda[20];char estilo_musical[15];int n_integrantes;int position_ranking;}banda;

void limpaBuffer(void){char c;while(c=getchar()!='\n' && c !=EOF);}

void preferencia(banda *pt){int i;int cont;

for(cont=0;cont19)pt==(NULL);}while(i>19);

printf("\nEstilo musical: ");gets(pt[cont].estilo_musical);fflush(stdin);

printf("\nNumero de integrantes: ");scanf("%d",&pt[cont].n_integrantes);

printf("\nPosicao no ranking: ");scanf("%d",&pt[cont].position_ranking);}}

void exibe_preferencia(banda *exib){int cont;for(cont=0;cont