Вы находитесь на странице: 1из 17

Sumrio

1.

Struct....................................................................................................................................2
1.1

Onde usada uma Struct..............................................................................................2

1.2 Como declarar uma Struct................................................................................................3


Como alterar uma struct em uma funo................................................................................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.

Formalizao de prestao de Servios.........................................................................20

c.

Registro de Reunio.......................................................................................................20

d.

Descrio do Negcio....................................................................................................21
i.

Modelos de Objetivos do Negcio.............................................................................21

ii.

Modelos de Processos do Negcio.............................................................................21

iii. Modelos de casos de usos...........................................................................................21


e.

Arquitetura do Software.................................................................................................21

f.

Planos de Testes.............................................................................................................21

g.

Alocao de recursos.....................................................................................................22

h.

Estratgia de Implantao..............................................................................................22

2.

Softwares...........................................................................................................................22

3.

Metodologias.....................................................................................................................22

4.

Estudo de viabilidade de sistema de vendas......................................................................23

ETAPA 2 PASSO 1.

1. Struct

Structs, 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.
Usando struct, 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.
2

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 Struct


Struct 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;
};
3

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;
4

}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.3

Como 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 Structs

A) 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 cdigo
C)
D)
E) 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.
F)
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).
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.

ETAPA 2 PASSO 3.

3. Solues dos Problemas


A) Cadastro de pessoa, com nme, idade, peso e sexo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main()
{
int i;
struct Pessoa {char nome [20]; int idade; float peso; char sexo;};
struct Pessoa p [3];

for(i = 1; i <=2; i++)


{
printf("\n\nDigite nome %d: \n\n", i);
scanf("%s", &p[i].nome);
printf("\n\nDigite a idade %d: \n\n", i);
scanf("%d", &p[i].idade);
printf("\n\nDigite o peso %d: \n\n", i);
scanf("%f", &p[i].peso);
printf("\n\nDigite o sexo %d: \n\n", i);
scanf(" %c", &p[i].sexo);
}

if(p[1].idade < p[2].idade)


{
printf("\n\nPessoa mais nova: \n\nNome: %s. \n\nIdade: %d. \n\nPeso: %f. \n\nSexo: %c.\n\n", p[1].nome,
p[1].idade, p[1].peso, p[1].sexo);
}
else
{
printf("\n\nPessoa mais nova: \n\nNome: %s. \n\nIdade: %d. \n\nPeso: %f. \n\nSexo: %c.\n\n", p[2].nome,
p[2].idade, p[2].peso, p[2].sexo);
}
system("pause");
}
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 cdigo.

#include <stdio.h>
typedef struct {
long codigo;
char nome[100];
float preco;
} Produto;
#define QUANTIDADE_DE_PRODUTOS 5
int main(){
Produto produtos[QUANTIDADE_DE_PRODUTOS];
printf("Campos: codigo-do-produto nome preco\n");

for(int i=0; (i < QUANTIDADE_DE_PRODUTOS); i++){


printf("\nInforme os dados do produto(%i): ",i+1);
scanf("%ld %s %f",&produtos[i].codigo,produtos[i].nome,
&produtos[i].preco);
}
for(int i=0; (i < QUANTIDADE_DE_PRODUTOS); i++){
printf("\n%ld\t%s R$ %1.2f", produtos[i].codigo,
produtos[i].nome,produtos[i].preco);
}
long codigo_digitado;
printf("\nInforme o codigo do produto: ");
scanf("%ld", &codigo_digitado);
for(int i=1; (i < QUANTIDADE_DE_PRODUTOS); i++){
if (produtos[i].codigo == codigo_digitado) {
printf("\nPreo: R$ %1.2f\n", produtos[i].preco);
}
}
getchar();
return 0;
}

E) 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.
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);
}
9

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 <stdio.h>
#include <stdlib.h>

10

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 <span id="xrp024ej0_2" class="xrp024ej0">nota da
prova</span> 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);

11

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;

12

}*/

/*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) {

13

int n;
Aluno *v;

// numero de alunos
// vetor de alunos

int 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
14

de integrantes e em que posio do ranking essa banda est dentre as suas 5


bandas favoritas.

#include <stdio.h>
#include <stdlib.h>

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;cont<3;cont++)
{
fflush(stdin);
do{
system("cls");
printf("\nNome da banda: ");
gets(pt[cont].nome_banda);
i=strlen(pt[cont].nome_banda);
if(i>19)
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);
15

}
}
void exibe_preferencia(banda *exib)
{
int cont;
for(cont=0;cont<3;cont++)
{
printf("\n\nBanda: %s",exib[cont].nome_banda);
printf("\nEstilo: %s",exib[cont].estilo_musical);
printf("\nIntegrantes: %d",exib[cont].n_integrantes);
printf("\nPosicao: %d",exib[cont].position_ranking);
}
}
void procura(banda *busca)
{
fflush(stdin);
char musica2[50];
int compara=0,cont;
printf("\nInforme seu tipo de musica: ");
gets(musica2);
fflush(stdin);
for(cont=0;cont<100;cont++)
{
if(strcmp(busca[cont].estilo_musical,musica2)==0){
compara=1;
printf("\nBanda: %s",busca[cont].nome_banda);
}
if(busca[cont].nome_banda=='\0')
break;
}
if(compara==1)
printf("\nencontrado");
else
printf("\nausente");
}

main()
{
banda p[3];//variavel do tipo banda.
char musica[15];
preferencia(p);
procura(p);
16

exibe_preferencia(p);
getch();
return 0;
}

17