Baixe o app para aproveitar ainda mais
Prévia do material em texto
11/9/2015 1 Linguagens de Programação Prof. Dr. Paulo Nazareno Maia Sampaio Aula 5 SUMÁRIO 2 Linguagens de Programação � Estruturas de dados: Vetores 11/9/2015 2 Estruturas de Dados � Os tipos primitivos (inteiro, real, literal e lógico) não são suficientes para representar todos os tipos de informação. � Particularmente quando temos mais de uma informação relacionada. Ex: Lista dos nomes dos alunos de uma sala, endereço de alguém etc. � Utilizaremos os tipos primitivos para construir outras estruturas de dados mais complexas. Linguagens de Programação Vetores � É a forma mais simples de estruturar um conjunto de dados; � São estruturas de dados unidimensionais homogêneas; � A quantidade de elementos deve ser definida no momento da declaração; Linguagens de Programação 11/9/2015 3 Vetores (cont´) � São estruturas estáticas; � Os elementos têm ordinalidade, cada um pode ser identificado pela sua posição; � Cada elemento do vetor, por meio do seu índice, pode ser acessado como uma variável individual. 8,5 7,0 9,0 6,5 8,0 6,0 ... 1 2 3 4 5 6 ... Vetor Notas Escreva (Notas[1]); Escreva (Notas [3]); Linguagens de Programação Vetores (cont´) �� Permitem a manipulaPermitem a manipulaçãção de um conjunto de o de um conjunto de informainformaçõções de um mesmo tipo primitivoes de um mesmo tipo primitivo �� DeclaraDeclaraçãção :o : <lista-de-variáveis> : vetor "["<lista-de-intervalos>"]" de <tipo-de- dado> Onde: Onde: <intervalo>: <valor-inicial> .. <valor-final> Exemplo :Exemplo : Um vetor com nome Um vetor com nome ““dadosdados”” de 40 poside 40 posiçõções reais teres reais teráá a a seguinte declaraseguinte declaraçãção.o. NNome_variavel: vetor [1 .. 40] de realome_variavel: vetor [1 .. 40] de real Linguagens de Programação 11/9/2015 4 Vetores (cont´) • Declaração: tipo nomedovetor[DimMax]; • Em C, os índices dos vetores variam de 0 a DimMax-1 (Isto é importante!!!) • Exemplos de declarações: float NOTAS[100]; int Conjunto[50]; char Nome[15]; • Acesso: if(NOTAS[99] )== 10.0) {....}// NOTAS[100] É ERRO! while (Conjunto[49] > 10) {....}//Conjunto[50]!!! Nome[14] = ‘ ‘; // Nome[15]!!! Linguagens de Programação Vetores (cont´) Vetores Numéricos • Recebem valores inteiros, de ponto flutuante (Precisão Simples) e de ponto flutuante (Precisão Dupla) • Declaração e Inicialização (feitas conjuntamente) int Vet[4] = {0,0,0,0}; /* inicializa todos com 0*/ int Vet[4] = {-1,-1}; /* inicializa os dois primeiros elementos com -1*/ float V[3] = {1.0f, 1.1f, 1.5f}; /* inicializa todos com const. tipo float*/ int A[ ] = {0,0,0,0,0,0,0,0}; /* a dimensão assume o tamanho da inic.*/ • A declaração e inicialização conjuntas é útil para Linguagens de Programação 11/9/2015 5 Vetores (cont´) #include <stdio.h> #include <stdlib.h> main() { int numero[10]; int i; for (i = 0; i < 10; i++) { numero[i] = i; printf ("\n %d”, numero[i]); } system(“PAUSE”); } Linguagens de Programação Vetores de Caracteres • Vetores de caracteres podem ser encarados como “especiais”. • Um vetor comporta uma ‘frase’, chamada no jargão da informática de string. • Na verdade, nesse jargão, o vetor de caracteres é chamado (ele mesmo) de string. • Detalhe: Todo vetor de caracteres, para ser encarado como string, deve ser finalizado com um caractere ‘especial’, o caractere ‘\0’. Linguagens de Programação 11/9/2015 6 Vetores de Caracteres (cont´) #include <stdio.h> #include <stdlib.h> //Programa Nomes e notas de alunos. main () { float notas[3]; char nome[50]; // Um vetor de caracteres ou “string”. printf ("\n Digite o nome do aluno: \n"); scanf ("%s", &nome); printf ("Digite as duas notas do aluno \n"); printf ("Primeira nota: "); scanf ("%f", ¬as[0]); printf ("Segunda nota: "); scanf ("%f", ¬as[1]); notas[2] = ( notas[0] + notas[1] ) / 2.0; printf (" \n A média do aluno %s é %f: \n", nome, notas[2] ); system(“PAUSE”); } Linguagens de Programação Vetores de Caracteres • Funcionou???? • Completamente??? • (E nomes compostos???) • Como resolver? • Funções específicas para manipulação de Strings! Ex: (disponíveis na biblioteca “string.h”) Linguagens de Programação 11/9/2015 7 Vetores de Caracteres (cont´) #include <stdio.h> #include <stdlib.h> //Programa Nomes e notas de alunos. main () { float notas[3]; char nome[50]; // Um vetor de caracteres ou “string”. printf ("\n Digite o nome do aluno: \n"); gets(nome); printf ("Digite as duas notas do aluno \n"); printf ("Primeira nota: "); scanf ("%f", ¬as[0]); printf ("Segunda nota: "); scanf ("%f", ¬as[1]); notas[2] = ( notas[0] + notas[1] ) / 2.0; printf (" \n A média do aluno %s é %f: \n", nome, notas[2] ); system(“PAUSE”); } Linguagens de Programação Matrizes � São estruturas de dados bidimensionais homogêneas que utiliza linhas e colunas para identificação de elementos; � Por convenção adota-se primeiro a linha e depois a coluna, como identificação de cada elemento; � Por exemplo, o elemento [1,3] refere-se ao elemento da primeira linha e terceira coluna. Linguagens de Programação 11/9/2015 8 Matrizes (cont´) Uma matriz de m linhas e n colunas 1 2 3 4 n-1 n 1 2 3 4 m Linguagens de Programação Matrizes (cont´) � Representação de uma matriz: Linguagens de Programação 11/9/2015 9 Matrizes (cont´) #include <stdio.h> #include <stdlib.h> main () { float notas[4] [3]; int i, j, soma; soma=0; for (i=0; i<4; i++) { for (j=0; j<3; j++) { printf (”Escreva o valor de [%d, %d]:”, i, j); scanf ("%f", ¬as[i] [j]); soma += notas[i] [j]; } } printf(“A soma dos valores é: %f”, soma); system(“PAUSE”); } Linguagens de Programação Matrizes (cont´) #include <stdio.h> #include <stdlib.h> main () { char strings [5][100]; int count; for (count=0;count<5;count++) { printf ("\n\nDigite uma string: "); gets (strings[count]); } printf ("\n\n\nAs strings que voce digitou foram:\n\n"); for (count=0;count<5;count++) printf ("%s\n",strings[count]); system(“PAUSE”); } Linguagens de Programação 11/9/2015 10 Strings em Matrizes � C tem muitas funções de manipulação de strings, as mais comuns são: Nome Função strcpy(s1, s2) Copia s2 em s1 strcat(s1, s2) Concatena s2 ao final de s1 strlen(s1) Retorna o tamanho de s1 strcmp(s1, s2) Retorna 0 se s1 e s2 são iguais; menor que 0 se s1 < s2; maior que 0 se s1 > s2 strchr(s1, ch) Retorna um ponteiro para a primeira ocorrência de ch em s1 strstr(s1, s2) Retorna um ponteiro para a primeira ocorrência de s2 em s1 Linguagens de Programação #include <stdio.h> #define MAX 100 #define LEN 80 char text[MAX][LEN]; void main(void){ register int t, i, j; printf("Digite SAIR para sair.\n"); for (t = 0; t < MAX; t++){ printf("%d: ", t); scanf("%s", text[t]); // Se encontrar comando sair, sai if (!strcmp(text[t], "SAIR")) break; } for (i = 0; i < t; i++){ for (j = 0; text[i][j]; j++) putchar(text[i][j]); putchar('\n'); }} Strings em Matrizes Linguagens de Programação 11/9/2015 11 Registro � São estruturas de dados heterogêneas, que possuem as seguintes características: � Contém um número fixo de campos � Cada campo do registro funciona como uma variável primitiva; � Os registros não podem ser acessados sem a especificação individual dos campos.< Linguagens de Programação Registro (cont´) Algoritmos e Programação • A palavra reservada struct indica ao compilador que está sendo criada uma estrutura • Uma estrutura deve ser declarada após incluir as bibliotecas e antes da main struct <identificador_struct> { tipo <nome_variável_campo1>; tipo <nome_variável_campo2>; : } ; struct <identificador_struct> <var1>, <var2>;11/9/2015 12 Registro (cont´) #include <stdio.h> #include <stdlib.h> struct Ficha { char nome[30]; int codigo; float salario; }; main () { struct Ficha funcionario; printf ("\nDigite o nome do funcionario: "); gets(funcionario.nome); printf ("\nDigite o codigo do funcionario: "); scanf(“%d”, &funcionario.codigo); printf ("\nDigite o salario do funcionario: "); scanf(“%f”, &funcionario.salario); printf ("\nO salario do funcionario %s é R$ %f”, funcionario.nome, funcionario.salario); system(“PAUSE”); } Linguagens de Programação Exercício 1 Escrever um algoritmo que lê um vetor de 10 elementos e informe qual o maior número e a sua posição no vetor. Linguagens de Programação 11/9/2015 13 Exercício 1 Algoritmos e Programação#include <stdio.h> #include <stdlib.h> main () { int num[10]; int i, maiornum, posmaior; for (i=0; i<10; i++) { scanf(“%d”, &num[i]); } maiornum= 0; posmaior=0; for (i=0; i<10; i++) { if (num[i] > maiornum) { maiornum = num[i]; posmaior = i; } } printf ("\nO maior numero e : %d, e a sua posicao e: %d”, maiornum, posmaior); system(“PAUSE”); } Exercício 2 Escrever um algoritmo para armazenar valores inteiros em uma matriz 3X4. A seguir, calcular a média dos valores pares contidos na matriz. Linguagens de Programação 11/9/2015 14 Exercício 3 Elabore um programa para ler o nome e o sobrenome de dez pessoas, imprimindo-os no seguinte formato: sobrenome, nome. Linguagens de Programação Exercício 4 Elabore um programa para ler as notas dos 22 alunos da turma, calcule a média da turma, e calcule também quantos alunos tiveram notas abaixo da média, e quantos tiveram notas acima da média. Linguagens de Programação 11/9/2015 15 Exercício 5 Defina um registro empregado para guardar os dados (nome, sobrenome, data de nascimento, RG, data de admissão, salário) de um empregado de sua empresa. Defina um vetor de empregados para armazenar todos os empregados de sua empresa. Linguagens de Programação Referências 1. Batista, C.A.T. “Estruturas de dados”. (disponível na web) 2. Marquez, M.G.”Algoritmos – Estruturas de Dados”. (disponível na web) 3. Gomes, W.; Vitor, A.; Aleixo, F.; Humberto, J. “Vetores” . (disponível na web) 11/9/2015 16 Linguagens de Programação Prof. Dr. Paulo Nazareno Maia Sampaio Aula 5
Compartilhar