• Nenhum resultado encontrado

Working 08 : Tipos Abstratos de Dados

N/A
N/A
Protected

Academic year: 2021

Share "Working 08 : Tipos Abstratos de Dados"

Copied!
7
0
0

Texto

(1)

Centro Tecnologico

Working 08 : Tipos Abstratos de Dados

Objetivos:

• Compreender a definição e dominar a implementação estruturas e TAD’s em C.

(2)

1

STRUCTS

Structs(abreviação de structures, estruturas , em inglês) são conjuntos de variáveis que po-dem ou não ter tipos diferentes.

1.1 Declarando uma Struct

O exemplo aado mostra a declaração de uma struct “x” com 3 variáveis que podem ser utilizadas para armazenar nome, idade e nota.

1 s t r u c t{

c h a r nome ;

3 i n t i d a d e ;

f l o a t n o t a ;

5 } x ;

Você pode também dar um nome a struct da seguinte forma.

1 s t r u c t a l u n o {

c h a r nome ;

3 i n t i d a d e ;

f l o a t n o t a ;

5 } ;

Para declaração de uma struct:

1 s t r u c t a l u n o a l u n o 1 ;

s t r u c t a l u n o abc ;

3

Para acessar cada variavel da estrutura basta utilizar:

a l u n o 1 . nome = " Joao ";

2 a l u n o 1 . i d a d e = 1 6 ;

a l u n o 1 . n o t a = 8 . 5 ;

4

1.2 Typedef

Structs podem ser tratadas como um novo tipo de dados da seguinte forma:

1 t y p e d e f s t r u c t a l u n o {

c h a r nome ;

3 i n t i d a d e ;

f l o a t n o t a ;

(3)

1 s t r u c t a l u n o { c h a r nome ; 3 i n t i d a d e ; f l o a t n o t a ; 5 } ; t y p e d e f s t r u c t a l u n o Aluno ; 7

Após declarado o novo tipo de dados é possível criar uma variável:

Aluno a l u n o 1 ;

(4)

Praticando

Agora vamos praticar! Para todos os praticando em que é pedido que se escreva um programa, escreva o código do seu programa e nos envie o .c (código fonte) correspondente.

1. Faça um programa que armazene uma data em um struct. A entrada será ser escrita por extenso, ou seja, dia (inteiro), mês (escrito por extenso com a primeira letra maiúscula) e ano (inteiro). A saída deverá ser mostrada no formato DD/MM/AAAA conforme o exemplo abaixo.

Obs: Todas as saídas dos seus códigos devem ser finalizadas sem quebra de linha. Entrada: 01 2 Setembro 1993 Saída: 0 1 / 0 9 / 1 9 9 3

2. Suzana é professora e quer um programa que a auxilie com seus alunos. Tendo ela N alunos, ela quer colocar as notas da P1, da P2 e da P3, e saber se eles estarão aprovados ou reprovados. Considerando que a média é 7, faça um programa que receba o valor N, os nomes dos N alunos (separados por quebra e linha) e em seguida receba os valores da P1 dos N alunos, depois da P2 dos N alunos e da P3 dos N alunos e imprima se cada aluno está aprovado ou não, junto com sua média. A saída deverá conter os dados dos N alunos, sendo eles: nome, a média e sua situação (Aprovado ou Reprovado). Siga exatamente a saída. Faça a estrutura necessária para receber os nomes e suas devidas notas.

Obs: O tamanho máximo de caracteres para o nome de cada aluno é igual a 25. Todas as saídas dos seus códigos devem ser finalizadas com uma quebra de linha. Entrada: 3 2 Aluno1 Aluno2 4 Aluno3 8 7 7 ( n o t a s P1 ) 6 6 10 7 ( n o t a s P2 ) 5 . 5 7 7 ( n o t a s P3 ) Saída:

Aluno1 : media 6 . 5 , Reprovado .

2 Aluno2 : media 8 , Aprovado .

(5)

3. Você foi contratado por um banco para fazer um programa de gerenciamento de clien-tes. O cadastro dos clientes contêm nome, cidade, número da conta e o saldo. O seu programa deve conter uma função para cadastrar clientes, uma para checar o saldo de um cliente e outra para imprimir o saldo de um cliente na tela.

Seu código deve ser dividido em 2 arquivos (banco.c, banco.h) e funcionar com o código main abaixo. NÃO ENVIE O CÓDIGO MAIN PARA O RUN.CODES

#i n c l u d e < s t d i o . h> 2 #i n c l u d e " banco . h" 4 i n t main ( ) { i n t n ; 6 s c a n f ("%d", &n ) ; 8 C l i e n t e c l i e n t e s [ n ] ; 10 f o r(i n t i = 0 ; i < n ; i ++){ c a d a s t r a C l i e n t e ( c l i e n t e s , i ) ; 12 } 14 f l o a t media = 0 ; f o r(i n t i = 0 ; i < n ; i ++){ 16 media+=s a l d o C l i e n t e ( c l i e n t e s , i ) ; i m p r i m e S a l d o ( c l i e n t e s , i ) ; 18 } 20 p r i n t f (" Media d o s S a l a r i o s : %.2 l f \n", media / (f l o a t) n ) ; r e t u r n 0 ; 22 } introcomp_main.c Entrada:

A primeira linha da entrada contém um inteiro N indicando quantos clientes serão ca-dastrados. Cada uma das N linhas seguintes contem um inteiro, duas strings e um número decimal indicando o número da conta, nome, cidade e saldo do cliente, respec-tivamente.

Obs: Considere também que as strings possuem tamanho maximo igual a 50 e que não possuem espaços em branco.

3 2 333 C l a r a V i t o r i a 3 0 0 . 0 0 444 B r i s a V i l a V e l h a 0 . 0 2 4 555 I s a b e l C a r i a c i c a 2 0 0 0 . 0 0 Saída: C l i e n t e C l a r a mora em V i t o r i a e tem R$300 . 0 0 na c o n t a 333 2 C l i e n t e B r i s a mora em V i l a V e l h a e tem R$0 . 0 2 na c o n t a 444 C l i e n t e I s a b e l mora em C a r i a c i c a e tem R$2000 . 0 0 na c o n t a 555 4 Media d o s S a l a r i o s : 7 6 6 . 6 7

(6)

Empreendendo

No mundo da tecnologia o que você não pode é ficar parado, ocioso no tempo. Você deve correr atrás, buscar a informação, o conhecimento. Empreender é isso, é correr atrás. Não é fundar uma empresa, ser um grande empresário e blablabla. É simplesmente correr atrás dos seus planos e sonhos e não deixar o tempo te pegar. Ás vezes, ao nosso redor talvez não tenhamos exemplos de pessoas que são assim, querendo e buscando sempre mais do que é possível. Mas o que importa mesmo é explorarmos nossa capacidade e fazer aquilo que gostamos. Se você está gostando de programar, de pensar algoritmicamente, se você não vê a hora de produzir tecnologia, sei lá, um aplicativo de celular, uma solução na web, vocêestá no caminho certo. Mas, entenda, em nada você terá sucesso sem esforço, sem ul-trapassar barreiras insuportáveis, desde que essas barreiras façam parte dos seus objetivos. O Introcomp está aí pra isso, testar sua capacidade, sua vontade de fazer a diferença. Faça os praticando, curta os Workings, pergunte suas dúvidas, faça mais do que é pedido, busque mais na internet sobre programação de computadores, aplicações etc. Não é proibido que você saiba o que á uma struct ou até mesmo uma função recursiva antes de abordarmos estes tópicos com você (;D). Vá além! Os desafio a seguir é proposto para que você possa ir além de seus limites, e desenvolver ainda mais sua capacidade de programação em C! Utilize todos os conceitos aprendidos em sala de aula para a compreensão do enunciado destes de-safios, e preste muita atenção nos dados de entrada e saída. Explique o raciocínio utilizado para resolver o problema, e comente o código. Não esqueça de utilizar as boas práticas de programação, como indentação do código fonte, e atribuição de nomes de variáveis coerentes com o programa a ser desenvolvido.

Desafios

1. Crie uma biblioteca(data.c e data.h) que contenha uma struct data(dia, mes e ano) e com as funções: InicializaData e AvançaData. A funçao InicializaData deve receber uma data e criar uma variavel do tipo da struct. A função AvançaData recebe a data e retorna o próximo dia).

Obs: A saída deverá conter a data no formato: DIA MES ANO, todas em número, e sem quebra de linha. Cabeçalho das funções:

Data I n i c i a l i z a D a t a ( ) ;

2 Data A v a n a D a t a ( Data x ) ;

Exemplo de entradas e saídas Entrada:

1 28 2 2012

Saída:

(7)

Entrada:

31 8 2014

Saída:

Referências

Documentos relacionados

• É a variação de entalpia verificada na dissolução de um mol de soluto em determinada quantidade de solvente, de modo que a adição de mais solvente não

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Após 96 horas, houve um aumento no consumo, com o aumento de 100 para 160 ninfas, que não diferiu significativamente da densidade 220; com 280 ninfas disponíveis houve um

As questões das decisões tomadas pelo doente gravitam, pois, à volta do seu consentimento com prévia informação e esclarecimento o que, se é determinante para

A tendência manteve-se, tanto entre as estirpes provenientes da comunidade, isoladas de produtos biológicos de doentes da Consulta Externa, como entre estirpes encontradas

Por ser um estudo que utilizou como fonte de dados requisições de medicamentos gerados pelo Sistema Nacional de Gestão da Assistência Farmacêutica - HÓRUS, conforme os autores Costa

Por esta razão, muitas foram às mudanças ao longo dos anos no setor de transporte logístico, surge à problemática: quais as principais dificuldades e benefícios que o mesmo