A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagem de Programação II Parte VII Professora: Flávia Balbino da Costa.

Apresentações semelhantes


Apresentação em tema: "Linguagem de Programação II Parte VII Professora: Flávia Balbino da Costa."— Transcrição da apresentação:

1 Linguagem de Programação II Parte VII Professora: Flávia Balbino da Costa

2 Conteúdo Programático: Revisão (estruturas de decisão e repetição, procedimentos e funções ) Trabalhando com a Linguagem C Estrutura de dados homogêneas I - vetores Estrutura de dados homogêneas II - matrizes Estrutura de dados heterogêneas - registros Recursividade Ponteiros, alocação dinâmica, listas

3 Estrutura de dados heterogêneas REGISTROS Os registros são chamados de tipos estruturados heterogêneos porque estes têm como objetivo fazer com que uma variável do tipo registro possa armazenar ao mesmo tempo diversos valores que podem ser de tipos distintos. Chamaremos cada elemento de um registro de campo e para cada campo teremos que definir o seu tipo e o seu identificador. Podemos definir quantos campos forem necessários.

4 Em C, declaramos inicialmente o tipo registro, normalmente, após a definição das constantes do seguinte modo: struct NOME_TIPO{ tipo campo1; tipo campo2;... tipo campoN; }; Estrutura de dados heterogêneas REGISTROS

5 Note que a definição dos campos é similar à declaração de variáveis. Portanto, assim, como na declaração das variáveis podemos declarar campos do mesmo tipo, na mesma linha, separados por vírgulas. Declaramos uma variável registro, na própria declaração de variáveis do seguinte modo: struct NOME_TIPO varReg1, varReg2,..., varRegN; Estrutura de dados heterogêneas REGISTROS

6 Para manipularmos um registro temos que, normalmente, fazê-lo campo a campo, como no caso dos elementos dos vetores. A única coisa que temos de diferente é que podemos fazer atribuição direta entre variáveis registros, o que não pode ser feito entre vetores. Estrutura de dados heterogêneas REGISTROS

7 Ao se fazer uma atribuição entre duas variáveis registros, automaticamente o conteúdo de todos os campos (mesmo que alguns deles sejam vetores) de uma variável é copiado para os campos da outra variável. Estrutura de dados heterogêneas REGISTROS

8 Para se ter acesso a um campo de uma variável registro, seja para utilizar o valor desse campo ou alterar o seu conteúdo, faremos do seguinte modo: varReg.campo Estrutura de dados heterogêneas REGISTROS

9 Registros (ou estruturas, como também são chamados em C) são geralmente utilizados quando queremos trabalhar com tabelas heterogêneas ou quando estamos trabalhando com arquivos binários. Esta última situação será vista mais tarde com arquivos. Quanto à primeira situação, criamos uma tabela heterogênea simplesmente criando-se um vetor de registros. Estrutura de dados heterogêneas REGISTROS

10 Veja o exemplo a seguir de como isso pode ser feito: struct Aluno { char nome[80], curso[30]; long matricula; int anoIngresso; };... void main () { struct Aluno tab[1000];... } Estrutura de dados heterogêneas REGISTROS

11 Neste exemplo, foi definido um tipo registro Aluno, com quatro campos (duas strings, um inteiro longo e um inteiro simples) e, no início do programa principal, está sendo declarado um vetor de 1000 registros. Podemos pensar nesse vetor de registros como sendo uma tabela de 1000 linhas e quatro colunas (as duas primeiras colunas para guardar valores strings, a terceira para guardar um inteiro longo e a quarta para guardar um inteiro simples). Estrutura de dados heterogêneas REGISTROS

12 NomeCursoMatriculaAnoIngresso

13 Faça um programa em C que leia do teclado os nomes e as notas das duas provas de cada aluno de uma turma de 80 alunos, calcule a média de cada um deles e liste na tela todos os dados de todos os alunos em ordem alfabética crescente. Exemplo de REGISTROS

14 Solução – parte 1:

15 Solução – parte 2:

16 Tratamento de Strings: Como já foi diversas vezes informado, string não é um tipo básico do C, sendo que, para se trabalhar com uma variável string temos que defini-la como um vetor de caracteres. Com isso, algumas operações básicas, como atribuição e comparação, não podem ser realizadas diretamente como podem ser realizadas com uma variável inteira, por exemplo.

17 Tratamento de Strings: Para corrigir tal problema, um conjunto de funções foi definido no C padrão para fazer tratamento de variáveis strings. Tais funções fazem parte da biblioteca string.h, e listaremos algumas delas a seguir: 1)strlen(VAR_STR) – função que retorna a quantidade de caracteres que o valor armazenado em VAR_STR possui;

18 2)strcpy(VAR_STR1, VAR_STR2) – comando para copiar o conteúdo de VAR_STR2 para VAR_STR1 (ou seja, faz o papel da atribuição); 3)strcat(VAR_STR1, VAR_STR2) – comando que concatena os valores contidos nas duas variáveis, armazenando o resultado na primeira; 4)strupr(VAR_STR) – comando para converter todos os caracteres letras minúsculas contidos em VAR_STR para letras maiúsculas; 5)strlwr(VAR_STR) – comando para converter todos os caracteres letras maiúsculas contidos em VAR_STR para letras minúsculas.

19 6)strcmp(VAR_STR1, VAR_STR2) – função que retorna um valor inteiro de acordo com o resultado da comparação lexicográfica (isto é, de acordo com a ordem alfabética) entre os valores contidos nas duas variáveis strings. Se este valor retornado for negativo, significa que o primeiro é menor que o segundo; se for igual a 0, significa que os valores das variáveis são iguais e, se o valor retornado for positivo, significa que o valor contido na primeira variável é maior que o valor contido na segunda;strcat(VAR_STR1, VAR_STR2) – comando que concatena os valores contidos nas duas variáveis, armazenando o resultado na primeira;

20 Exercícios: 1)Faça um programa que leia dados de apenas uma Nota Fiscal. Esta NF é composta por um conjunto de produtos vendidos, onde são armazenadas as seguintes informações para cada produto: Código do produto; Nome do produto; Preço unitário; e Quantidade. O programa deverá inserir novos produtos enquanto o usuário digitar o código do produto diferente de 0. A cada loop, mostre o valor total de cada produto (quantidade * preço unitário). OBS: não usar vetor neste exercício).

21 Exercícios: 2)Agora faça um programa que leia 5 Notas Fiscais (crie um vetor de registro de 5 posições) compostas de alguns produtos vendidos, com as seguintes informações: cod_produto, nome_produto, valor_unit, quant e valor_total_prod. No final, mostre o valor total por produto, o valor total de cada Nota Fiscal (total de valores dos produtos) e o valor total das 5 Notas Fiscais.

22 Exercícios: 3)Faça um programa que leia as seguintes informações sobre uma turma: número da turma; número de aulas dadas; número de alunos inscritos. Deve ser lido também para cada aluno inscrito o seu número de faltas. O programa deve imprimir o percentual de faltas para cada aluno e ao final do processamento o total de alunos reprovados por falta (25% de faltas).

23 Exercícios: 4)Faça um programa que leia um número indeterminado de cartões contendo cada um a idade de uma pessoa e o sexo (0 - masculino, 1 - feminino). O último cartão (que não entrará nos cálculos) contém o valor da idade igual a zero. Calcule e imprima a idade média destas pessoas, quantas pessoas do sexo feminino estão na faixa dos 18 aos 25 anos e o número total de pessoas do sexo masculino.


Carregar ppt "Linguagem de Programação II Parte VII Professora: Flávia Balbino da Costa."

Apresentações semelhantes


Anúncios Google