1. EXEMPLO ESTRUTURA
1.º PASSO: definir a estrutura
Estrutura Simples
Número da conta
Nome do cliente
Saldo
TYPE REGISTRO = RECORD
num : INTEGER;
nome : STRING[35];
saldo : REAL;
END;
2.º PASSO: Construir o Conjunto da Estrutura
Um vetor de 15 posições. Cada posição tem uma estrutura dentro .
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Membro1
Membro2
Membro3
Membro1
Membro2
Membro3
conta: ARRAY[1..15] OF REGISTRO;
3.º PASSO: Definir as Variáveis
i, op, posi, achou, num_conta : INTEGER;
saldo_cliente, menor_saldo : REAL;
nome_cliente :STRING[35];
4.º PASSO: Inicializar as variáveis e estruturas
FOR i := 1 TO 15 DO
BEGIN
conta[i].num := 0;
conta[i].nome:='';
conta[i].saldo := 0;
END;
5.º PASSO: Fazer um repeat para trabalhar com as opções do menu
Quando OP for igual a 5, o programa é encerrado! Enquanto for diferente de 5, o usuário deve
escolher alguma opção do menu!
Repeat
//comandos;
Until(op!=5)
6.º PASSO: Comandos que vão dentro do repeat
2. O valor digitado para OP deve estar dentro da faixa de valores entre 1 e 4. Se estiver fora, uma
mensagem deve ser mostrada ao usuário, pedindo para que ele digite o valor de opção correto;
IF((op < 1) OR (op > 5)) THEN
WRITELN(' Opcao Invalida ');
Criar o IF ou então um Switch/Case para trabalhar as opções de cadastro, visualização e exclusão.
if ( op = 1 ) then
begin
//comandos – cadastro;
End;
if ( op = 2 ) then
begin
//comandos – visualização;
End;
if ( op = 3 ) then
begin
//comandos – exclusão;
End;
if ( op = 4 ) then
begin
//comandos – visualização;
End;
Implementar os códigos que vão em cada IF.
OPÇÃO1:
a) Solicitar que o usuário digite o número da conta a ser cadastrada
WRITELN(' Digite o n£mero da conta a ser incluida ');
READLN(num_conta);
b) Verificar se a conta digitada pelo usuário já existe no vetor. O vetor pode incialmente, estar vazio
e não ter registro algum, mas o contrário também é verdadeiro. O FOR percorre o vetor de estrutura
comparando o número digitado pela pessoa com os números de contas cadastradas no vetor de
estrutura. Se achar algum registro com o mesmo número digitado pelo usuário, seta o valor da
variável ACHOU com 1.
FOR i := 1 TO 15 DO
BEGIN
IF(num_conta = conta[i].num) THEN
achou := 1;
END;
3. c) Em seguida, um IF é implementado de forma a avaliar o valor armazenado em ACHOU, que é a
nossa variável auxiliar. Se ACHOU for igual a um, então, um registro foi encontrado, portanto, este
número de conta não pode ser cadastrado. O usuário terá que digitar outro número.
IF achou = 1 THEN
WRITELN(' Ja existe conta cadastrada com esse numero ');
d) Se o ACHOU for diferente de um, então, o número da conta digitada pelo usuário pode ser usado
para cadastrar uma nova conta. Nesse ponto temos que verificar se ainda há posições disponíveis no
vetor para realizar o armazenamento de mais uma conta. Para isso, inicializamos o valor de POSI
com zero (indica que não há mais posições disponíveis) e i com um. O While vai percorrer o vetor
de estrutura, todas as quinze posições e dentro dele, uma verificação é feita usando IF. Se o número
da conta da posição i for igual a zero, então, POSI receberá o valor de i e i receberá o valor 16.
posi := 0;
i := 1;
WHILE(i <= 15) DO
BEGIN
IF(conta[i].num = 0) THEN
BEGIN
posi := i;
i := 16;
END;
i := i + 1;
END;
Teste de Mesa (usando como base quatro posições no vetor!)
posi i i < 4 conta[i].num = 0 posi := i i = 16 i++
0 1
1 < 4
V
conta[1].num = 0
10 = 0
F
pula pula 1+1=1
0 2
2 < 4
V
conta[2].num = 0
5 ==0
F
pula pula 2+1=3
0 3
3 < 4
V
conta[3].num = 0
0 = 0
V
posi = 3 i = 16 3+1 =4
3 4
4 < 4
F
pula pula pula pula
De acordo com o teste de mesa, a posição 3 está livre, pois contém o valor zero. Lembre-se,
o vetor de estrutura foi inicializado com zero em todas as posições. Portanto, ainda há uma posição
livre no vetor que pode ser usada para inserir uma nova conta.
e) Agora, podemos verificar se há ou não posições disponíveis no vetor. Se o valor da variável
auxiliar POSI for igual a 0, isso significa que não há posições disponíveis. Uma mensagem deve ser
emitida ao usuário.
IF(posi = 0) THEN
WRITELN(' Impossivel cadastrar novas contas ')
4. f) Caso contrário, isto é, se o valor armazenado em POSI for diferente de zero, isso significa que
ainda temos posições disponíveis para usar no vetor. Então, os valores serão solicitados ao usuário e
a conta será cadastrada. Devemos usar POSI como índice neste momento, para que os dados sejam
inseridos na posição do vetor que está vazia!
ELSE //else2
BEGIN
WRITE(' Digite o nome do cliente ');
READLN(nome_cliente);
WRITE(' Digite o saldo do cliente ');
READLN(saldo_cliente);
conta[posi].num := num_conta;
conta[posi].nome := nome_cliente;
conta[posi].saldo := saldo_cliente;
WRITELN(' Conta cadastrada com sucesso ');
END; //fim do else 1
END; //fim do else 2
OPÇÃO 2:
a) A opção 2 deve permitir visualizar todas as contas de um determinado cliente. Primeiro, o
usuário deve digitar o nome do cliente que ele quer visualizar.
WRITE('Digite o nome do cliente a ser consultado ');
READLN(nome_cliente);
achou := 0;
b) O For abaixo percorre o vetor de estrutura verificando se o nome digitado pelo usuário é igual a
algum nome registrado no vetor.
FOR i := 1 TO 15 DO
BEGIN
IF(conta[i].nome = nome_cliente) THEN
BEGIN
WRITELN(' || CONTA || SALDO ||');
WRITELN(' || ', conta[i].num, ' || ', conta[i].saldo:5:2, ' || ');
achou := 1;
END;
END;
Teste de Mesa para quatro posições
achou = 0 i=1 i<4 i++ conta[i].nome = nome_cliente conta[i].num conta[i].saldo
achou =
1
achou = 0 i= 1
1<4
V
1+1=2
conta[1].nome = “Elaine”
“Edson” = “Elaine”
F
pula pula pula
achou = 0 i=2
2<4
V
2+1=3
conta[2].nome = “Elaine”
“Franciele” = “Elaine”
F
pula pula Pula
achou = 0 i=3
3<4
V
3+1=4
conta[3].nome = “Elaine”
“Elaine” = “Elaine”
V
conta[3].num
20
conta[3].saldo
200
achou=1
achou = 1 i=4
4<4
F
4+1=5 pula pula pula pula
5. c) Se a variável auxiliar ACHOU for igual a zero, então o cliente não está cadastrado.
IF(achou = 0) THEN
WRITELN(' Nao existe conta cadastrada para este cliente ');
OPÇÃO 3:
a)
b) Agora que já temos o valor da variável ACHOU, podemos fazer as verificações. Primeiro,
verificamos se ACHOU é igual a zero. Se sim, então nenhuma conta não foi cadastrada.
IF achou = 0
THEN WRITELN('Nenhuma conta foi cadastrada')
c)
d) Não esqueça do getchar();
Você pode ainda incluir uma opção para imprimir o vetor inteiro:
if(op==4){
for(i=0;i<15;i++){
printf(" --------------------------------------------
------- ");
printf(" n Numero da Conta: %d", conta[i].num);
printf(" n Nome do Cliente: %s", conta[i].nome);
printf(" n Saldo da Conta do Cliente: R$ %5.3f",
conta[i].saldo);
printf(" n n ");
}
printf(" ----------------------------------------------
----- ");
}