7. Dados Estruturados Vetores, Matrizes e Strings

Tamanho: px
Começar a partir da página:

Download "7. Dados Estruturados Vetores, Matrizes e Strings"

Transcrição

1 7. Dados Estruturados Vetores, Matrizes e Strings Unesp Campus de Guaratinguetá 7. Dados Estruturados: Array Array - Definição Vetor ou Array é a forma mais familiar de dados estruturados. Curso: Programação de Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Um array é um conjunto de componentes do mesmo tipo, que podem ser acessados individualmente a partir de um único nome. 7. Array - Problema 7. Array - Problema o. Algoritmo Dada uma relação de estudantes, imprimir o numero de matricula de cada estudante, cuja nota é maior do que a média da classe. 3 Início algoritmo Leia(num,nota,num,nota,num3,nota3,num, nota,num,nota) media (nota+nota+nota3+nota+nota) /. Se nota > media então escreva (num) Se nota > media então escreva (num) Se nota3 > media então escreva (num3) Se nota > media então escreva (num) Se nota > media então escreva (num) Fim algoritmo

2 7. Array - Solução. Uma variável para cada número de matricula variáveis. Uma variável para cada nota + variáveis 3. testes 7. Array - Definição Como estes dados têm uma relação entre si, podemos declará-los com um nome ÚNICO para todos os elementos. Seja, por ex, um conjunto de números = Lista 3 Lista[] Lista[3] Lista[99] 6 7. Array - Definição O elemento do vetor tem todas as características de uma variável e pode aparecer em expressões e atribuições. Lista[] Lista[3] + Lista[] Para somar todos os elementos da Lista: soma para i até 99 faça soma soma + Lista[i] 7.Array - Características As características básicas de um Array são: é uma estrutura homogênea, isto é, é formada de elementos do mesmo tipo todos os elementos da estrutura são igualmente acessíveis, isto é, o tempo e o tipo de procedimento para acessar qualquer um dos elementos do Array são iguais cada elemento componente desta estrutura tem um nome próprio segundo sua posição no conjunto 7 8

3 Array - Solução 7. Dados Estruturados: Declaraçã ção o de Vetores o. Algoritmo Início algoritmo Para i até faça Leia(num[i],nota[i]) soma, Para i até faça soma soma + nota[i] media soma/ Para i até faça Se (nota[i] > media) então escrever (num[i]) Na linguagem C a declaração do array é feita juntamente com as demais variáveis, e é preciso dizer qual é o tipo de dado que será armazenado no array. A declaração de um vetor com uma única dimensão é feita do seguinte modo: Exemplo : int val[ ]; tipo nome_variavel[no. de elementos] Cria um vetor de nome val, de tamanho e cujos elementos são do tipo int. Os índices variam de até Fim algoritmo 9 val[] val[] val[] val[3] val[] 7. Dados Estruturados: Declaraçã ção o de Vetores Observações: ) O acesso a cada elemento do vetor é feito através de uma indexação da variável val. ) Em C, a indexação de um vetor varia de zero a n-, onde n representa a dimensão do vetor. Assim: Mas: val [] acessa o primeiro elemento de val val [] acessa o segundo elemento de val... val [] acessa o último elemento de v val[] está ERRADO (invasão de memória) 7. Dados Estruturados: Declaraçã ção o de Vetores Exemplo : Para declarar um vetor com números reais float custo[]; float - Tipo de cada elemento do vetor - No. de elementos do vetor custo - Nome do vetor custo[i] Aquilo que está na posição índice i do vetor custo Exemplo 3: Coloque o valor 3.6 na primeira posição do vetor custo e o valor 6.7 na última posição: custo[] = 3.6; custo[9] = 6.7; Exemplo :Coloque no quarto elemento do vetor o dobro do valor do segundo elemento: custo[3] = * custo[];

4 7. Dados Estruturados: Declaração de Vetores A Linguagem C permite que se faça a declaração do vetor ao mesmo tempo que atribuição de valores iniciais. Exemplo : int val[] = 3,, 6,, ; aqui foi declarado um vetor de inteiros com elementos e atribuído a ele os valores entre chaves 3 6 val[] val[] val[] val[3] val[] O acesso e a modificação dos elementos do vetor é feito diretamente sobre a variável. Exemplo 6: val[] = val[] + ; val[3] = val[]+ val[3]; val[] val[] val[] val[3] 7. Dados Estruturados: Declaraçã ção o de Vetores OBS:Se um vetor for declarado com n elementos e forem atribuídos inicialmente ao vetor, apenas k valores (k<n), então os primeiros k elementos do vetor serão iniciados com os respectivos valores e os restantes serão inicializados com ZERO. Exemplo 7: Suponha a seguinte declaração: int v3[] =,33,; Neste caso os três primeiros elementos do vetor v3 (índices, e ) recebem os valores, 33 e respectivamente. e todos os demais elementos recebem o valor ZERO Assim a declaração acima é equivalentes à: int v3[] =,33,,,,,,,,; val[] 3 7. Dados Estruturados: Vetor - Problemas Programa : Criar um programa com um vetor de inteiros tal que seus elementos são da forma v[i] = i+. Imprimir o vetor. Programa Usando vetores // incluir <stdio.h> e <stdlib.h> int i; int v[]; // Colocando valores em v. for(i=; i < ; i++) v[i] = i + ; // Mostra os elementos de v -> v[i]. for(i=; i < ; i++) printf( %d ", v[i]); puts( ); // Mostra os indices i de v[i]. for(i=; i < ; i++) printf( v[%d] ", i+); // fim programa V [ i ] = i + ; 9 v[] v[] v[8] v[9] printf( %d,v[i]); printf( v[%d],i+); 7. Dados Estruturados: Vetor - Problemas Programa : Fazer um programa que leia um conjunto de elementos numéricos,a partir do teclado, armazene-os na variável A e depois os imprima. #include <stdlib.h> int A[]; int I; // inicio printf("digite os elementos do vetor; sendo um em cada linha\n"); for (I=; I< ;I++)// ler o vetor scanf("%d",&a[i]); printf("vetor lido\n"); for (I=; I<;I++) // imprimir vetor printf("a[%d] = %d\n", I, A[I]); system("pause"); 6

5 7. Dados Estruturados: Vetor - Problemas Programa Exemplo de Execução 7 7. Dados Estruturados: Vetor - Problemas Programa 3: Criar um programa que armazene em um vetor os primeiros termos da seqüência de Fibonacci. Imprimir o vetor. F(n)=F(n-)+F(n-) onde: n=,,, 3,... e F() = F() = Espiral de Fibonacci E I Programa 3 Fibonacci // incluir <stdio.h> e <stdlib.h> int i; int v[]; v[] = v[] = ; // Colocando valores em v. for(i=; i < ; i++) v[i] = v[i-] + v[i-]; // Mostra os elementos de v -> v[i]. for(i=; i < ; i++) printf( %d ", v[i]); puts( ); // Mostra os indices i de v[i]. for(i=; i < ; i++) printf( v[%d] ", i+); // fim programa I E 8 7. Dados Estruturados: Vetor - Problemas 7. Dados Estruturados: Vetor - Problemas Programa : Dada uma relação de estudantes, imprimir a a nota do estudante cuja nota é maior que a média da classe. Etapas de Resolução. Ler e armazenar notas.. Calcular a média. 3. Exibir notas > média. O programa ao lado pode ser melhorado com o uso dos comandos const ou ainda define. 3 //Programa Notas Maiores // incluir <stdio.h> e <stdlib.h> int i; float v[], media =.; // Colocar valores em v. for(i=; i < ; i++) printf( Insira Nota %d:,i+); scanf( %f,&v[i]); for(i=; i < ; i++) // Cálculo média. media=media+v[i]; media=media/; printf( Media = %f \n, media); for(i=; i < ; i++) // Ver v[i]>media. if (v[i] > media) printf( v[%d] = %f \n", i+,v[i]); 9 // fim programa Programa Exemplo de Execução

6 7. Vetor: Definição de Constantes Ao se escrever um programa, deve-se fazê-lo de modo que uma pequena alteração nos dados não provoque grandes transformações no código. O programa 3, por exemplo, foi escrito para rodar com um vetor de elementos. Para que ele possa ser executado para um vetor de elementos ( alunos), é preciso alterar todas as ocorrências do número pelo número. A solução para esse problema é a utilização de constantes, que uma vez alteradas, propagam o novo valor por todas as ocorrências. Uma constante nada mais é que um nome correspondendo a um valor fixo, isto é que não pode ser alterado ao longo da execução do programa. 7. Vetor: Definiçã ção o de Constantes A definição de constantes pode ser feita de duas maneiras distintas: Através da palavra reservada const const tipo simbolo =valor; Através da diretiva de pré processamento #define #define simbolo valor OBS: As constantes declaradas com o #define devem ser feitas imediatamente após as linhas dos #includes. As constantes declaradas com o const podem ser feitas após os #includes ou após o. Pode-se então, reescrever o programa 3, usando constantes. 7. Vetor - Constantes - Uso do comando #define 7. Vetor- Constantes - Uso do comando const //Problema 3 Notas Maiores #define n //sem ponto e virgula int i; float v[n], media =.; // Colocar valores em v. for(i=; i < n; i++) printf( Insira Nota %d:,i+); scanf( %f,&v[i]); for(i=; i < n; i++)// Cálculo média. media=media + v[i]; media=media/n; for(i=; i < n; i++) // Ver v[i]>media. if (v[i] > media) printf( v[%d] = %f \n", i+,v[i]); // fim programa Quando o define é utilizado,o compilador substitui todas as ocorrências do símbolo pelo valor definido. Às constantes definidas com o símbolo #define chamam-se constantes simbólicas. Com a declaração: #define n Em todo lugar onde aparecer a variável n, ela terá o valor constante O qualificador const permite ao programador informar que o valor de uma variável particular não deve ser modificado. Ou seja, a constante obtida com const existe fisicamente em uma dada posição de memória. Exemplo de declaração: const int n=; //Problema 3 Notas Maiores //usando const const int n = ; int i; float v[n], media =.; // Colocar valores em v. for(i=; i < n; i++) printf( Insira Nota %d:,i+); scanf( %f,&v[i]); for(i=; i < n; i++)// Cálculo média. media=media+v[i]; media=media/n; for(i=; i < n; i++) //Ver v[i]>media. if (v[i] > media) printf( v[%d] = %f \n", i+,v[i]); igual a 3 // fim programa

7 7. Vetor Constantes - Problemas Problema : Escreva um programa que realize a leitura dos salários pagos a um individuo durante um ano. Em seguida, o programa deverá mostrar os valores mensais e o total anual. 7. Vetor Relembrando.... Os elementos de um vetor que foi declarado sem qualquer valor inicial contêm valores aleatórios. const int mes = ; float sal[mes+]; /* meses */ float total; int i; for (i=; i<= mes ; i++) //inicio for printf("introd. o salário do mês %d:",i); scanf("%f",&sal[i]); //fim for /* Mostrar valores Mensais e calcular total */ puts(" Mes Valor "); for (i=, total=. ; i<=mes ; i++) // inicio for printf(" %3d %9.f\n",i,sal[i]); total+=sal[i]; //fim for printf("total Anual: %9.f\n",total); system( pause );. O índice do primeiro elemento do vetor é sempre zero. 3. Os índices de um vetor com n elementos variam entre e n-.. O valor existente em uma posição do vetor vet pode ser obtido através do índice em que essa posição está armazenada vet[indice]. OBS: Neste exemplo, desconsiderou- 6 se a posição zero do vetor 7. Vetor Relembrando.... O compilador não verifica se os índices utilizados em um vetor estão corretos ou não, por exemplo se num vetor de dimensão n, for utilizada a posição vet[n], vai gerar um erro grave, pois não existe esta posição na memória. 6. Não se pode declarar um vetor sem dimensão, ou usar uma variável como dimensão. Se não sabemos qual é o espaço de memória que deve ser reservado para o vetor, como o compilador vai saber qual é esse espaço. 7. Quando não se sabe a dimensão exata do vetor a ser declarado, deve-se utilizar um valor de dimensão maior que o valor que pensamos ser necessário Vetor - Problemas Problema : Uma companhia de energia elétrica dispõem dos dados de consumo mensal de energia elétrica em kwh de uma pequena empresa e deseja determinar algumas estatísticas. Para efeito de planejamento da manutenção e expansão da rede elétrica ela deseja determinar os valores e os meses de maior e menor consumo, bem como o consumo médio. Mês kwh Mês kwh Mês kwh

8 7. Vetor Problemas: Problema 7. Vetor Problemas: Problema Idéia do Programa ) Criar um vetor v de elementos e associar o consumo em KWh do mês (i) com a posição (i-). Ou seja: v[ i - ] consumo em kwh no mês i. Posição Mês 3 v[] v[] v[] v[] Elemento kwh Associar posição i com o (i+) mês 9 Idéia do programa ) Achar o mês de maior consumo = Achar o Maior Elemento do Vetor. Para isso é preciso: Criar uma variável maior e guardar nela o primeiro elemento do vetor v. Isto é: maior v[]. Comparar a variável maior com os demais elementos do vetor v[i]. Se maior < v[i], colocar v[i] na variável maior v[] v[] v[] v[] maior = v[] = 8 maior > v[]? não, então: maior = v[] = maior > v[]? não, então: maior = v[] = 36 E assim por diante Vetor Problemas: Problema 7. Vetor - Problemas Idéia do programa 3. Achar o mês de Menor consumo = Achar o Menor Elemento do Vetor. Idem maior valor Criar uma variável menor e guardar nela o primeiro elemento do vetor v. Isto é: menor v[]. Comparar a variável menor com os demais elementos do vetor v[i]. Se menor > v[i], colocar v[i] na variável menor. 3 Problema Consumo Energia const int n = ; int i, imenor, imaior; float v[n], media, maior, menor; media =.; // Leitura dos valores de energia. for(i=; i < n; i++) printf( Insira kwh %d:,i+); scanf( %f,&v[i]); for(i=; i < n; i++) // Cálculo média. media=media+v[i]; media=media/n; // Preparando para encontrar o maior e // e o menor valor. maior = menor = v[]; imaior = imenor = ; Problema Continuação // Laço encontra índice e maior valor. for(i=; i < n; i++) if (v[i] > maior) maior = v[i]; imaior = i; // Laço encontra índice e menor valor. for(i=; i < n; i++) if (v[i] < menor) menor = v[i]; imenor = i; // Mostrando valores encontrados. printf( Maior Valor = %f no mes %d \n",maior, imaior+); printf( Menor Valor = %f no mes %d \n", v[imenor], imenor+); printf( Valor medio = %f \n,media); // fim programa 3

9 7. Vetor - Problemas Problema Exemplo de Execução 7. Vetor Problemas : Problema 6 Problema 6: Criar um programa que simule 6 lançamentos de um dado de 6 faces e armazena o número de vezes que uma face foi sorteada nos elementos de um vetor. Depois, a partir dos valores contidos nos elementos deste vetor construir um histograma, tal como dado a seguir: Face : [][][][][][][][][][] Face : [][][][][][][][][][][][] Face 3 8: [][][][][][][][] Face : [][][][][][][][][][] Face : [][][][][][][][][][][] Face 6 9: [][][][][][][][][] Vetor Problemas: Problema 6 Idéia do programa Criar um vetor v de 6 posições que vai armazenar o no. de vezes que uma face i é sorteada. Então: v[] vai guardar o no. de vezes que a face foi sorteada. v[] vai guardar o no. de vezes que a face foi sorteada e assim por diante. Então: v[ i - ] no.de vezes que a face i foi sorteada. Posição Face 3 v[] v[] v[] v[3] 6 v[] v[] Elemento # Sorteio Associa a posição i com a face fr[] 7. Vetor Problemas Problema 6 Idéia do programa fr[] fr[] 6 lançamentos Vetor do número de ocorrências de uma face para 6 lançamentos. (i+) fr[3] fr[] fr[]

10 7. Vetor Problemas Problema 6 7. Vetor Problemas Problema 6 Gerar uma seqüência de números pseudo- aleatória, ou seja, uma seqüência S que utilize uma fórmula para obter seus termos S n dentro de um intervalo [a, b], os mesmos não se repetem para um valor suficientemente grande de n. S n+ será o número aleatório gerado. S é a semente Idéia do programa Gerador linear congruêncial S n+ = (S n *a + b) mod m onde: é uma boa estratégia usar m, a e b números primos. Uma boa escolha para m, a e b S n+ = (S n * ) mod m 37 Como gerar valores aleatórios em C? Então para gerar valores aleatórios entre [ e ], tem-se srand(time()) s = rand( ) Fornece semente S Fornece S n+ Os números gerados por rand( ) estão no intervalo [, RAND_MAX], onde: RAND_MAX = Para gerar números inteiros no intervalo [a, b-] usa-se o operador % (resto inteiro da divisão): s = (rand() % b) + a Vetor Problemas Problema 6 7. Vetor Problemas Problema 6 O operador % funciona de acordo com o exemplo abaixo: % 6 = % 6 = % 6 = 3 % 6 = 3 % 6 = % 6 = 6 % 6 = 7 % 6 = 8 % 6 = 9 % 6 = 3 % 6 = % 6 = Ou seja, operações com % funcionam como se tivéssemos um relógio: Por esse motivo, as operações com o operador % são chamadas de aritmética modular ou ainda aritmética do relógio Problema 6 6 lançamentos #include <time.h> #include <stdlib.h> const int lanc = 6; int fr[6] =,,,,, ; int i, j, face; // Inicializa gerador aleatório. srand(time()); // Laço gera 6 valores em [,]. for(i=; i < lanc; i++) face = rand( ) % 6; fr[face]++; Problema 6 - Continuação // Laço para imprimir o histograma //a partir dos valores armazenados //no vetor fr. printf( \n\n ); for(i=; i < 6; i++) printf( \bface %d-%d:,i+,fr[i]); // Impressão fr[i] vezes do //caractere [] para formar a //freqüência de ocorrência de uma //dada face. for (j=; j < fr[i]; j++) printf( [] ); // Criando uma nova linha. printf( \n ); // fim programa

11 7. Vetor - Problemas Problema 6 Exemplo de Execução 7. Vetor - Problemas Problema 7: Escreva um programa que solicite ao usuário o número de alunos de uma sala. Depois, de acordo com o valor da nota de cada aluno, deverá ser atribuído um conceito de acordo com a seguinte tabela: Faixa de Valores 9 Nota 7 Nota < 9 Conceito A B Nota < 7 C 3 Nota < D Nota < 3 E Por fim, deverá ser fornecido o percentual de notas da turma para cada conceito. 7. Vetor - Problemas Idéia do programa 7. Vetor - Problemas Idéia do programa ) Criar um vetor notas de dimensão m, onde vn[] vai guardar a nota do º. aluno; vn[] a nota do segundo aluno e assim por diante vn[] vn[] vn[] vn[m] ) Criar um vetor vc[i] de dimensão, para guardar a quantidade de cada conceito. Assim vc[] vai guardar quantos conceitos A tem na turma, vc[] vai guardar quantos conceitos B tem na turma e assim por diante. Inicialmente vc[i] =. 3) Verificar em qual faixa de valores a nota de cada aluno se encontra. Para cada conceito A encontrado, somar mais no vetor vc[], para cada conceito B encontrado, somar mais em vc[] e assim por 9 vn[i] diante. 3 A vn[i] < 9 B vn[i] < 7 C vn[i] < vc[] vc[] vc[] vc[3] vc[] D + vn[i] < 3 E

12 7. Vetor Problemas: Problema 7 7. Vetor - Problemas Problema 7 Conceito x Notas const int m = ; int i, num, vc[] =,,,,; float tmp, vn[m]; // Leitura do número de alunos. printf( Entre com no. alunos: ); scanf( %d, &num); // Leitura dos valores das notas. for(i=; i < num; i++) printf( Insira nota %d:,i+); scanf( %f,&vn[i]); //construir vetor de conceitos //de acordo com a Tabela. Problema 7 Continuação for(i=; i < num; i++) if (vn[i] >= 9.) vc[]++; else if (vn[i] >= 7.) vc[]++; else if (vn[i] >=.) vc[]++; else if (vn[i] >= 3.) vc[3]++; else vc[]++; // Mostrar percentual cada conceito. for(i=; i < ; i++) // Mostrando percentuais. tmp = (float float(vc[i])*)/num; printf( Conceito%d=%f \n", i, tmp); // fim programa Problema 7 Exemplo de Execução 6 7. Vetor - Problemas 7. Vetor - Problemas Problema 8: Acrescentar ao final do programa que resolve o Problema 7, e depois de mostrar a informação de freqüência em percentual, um histograma tal como elaborado para resolver o Problema 6. O programa deve apresentar os resultados como abaixo. Conceito.%: [][] Conceito.%: [][] Conceito 3.%: [][] Conceito 3.%: [][][] Conceito.%: [] Número de ocorrências de notas dentro de cada conceito. 7 Problema 8 Histograma const int m = ; int i, j, num, vc[] =,,,,; float tmp, vn[m]; // Leitura do número de alunos. printf( Entre com no. alunos: ); scanf( %d, &num); // Leitura dos valores das notas. for(i=; i < num; i++) printf( Insira nota %d:,i+); scanf( %f,&vn[i]); // Laço para o vetor de concei- // tos com o número de notas em // cada faixa de acordo com as // estabelecidas na Tabela. Problema 8 continuação for(i=; i < num; i++) if (vn[i] >= 9.) vc[]++; else if (vn[i] >= 7.) vc[]++; else if (vn[i] >=.) vc[]++; else if (vn[i] >= 3.) vc[3]++; else vc[]++; // Mostrar percentual cada conceito. for(i=; i < ; i++) // Mostrando percentuais. tmp = (float(vc[i])*)/num; printf( \n Conceito %d=%f",i+,tmp); // Impressão do Histograma! for(j=; j < vc[i] ;j++) printf( [] ); // fim programa 8

13 7. Vetor - Problemas Problema Exemplo de Execução 7. Vetor Problemas Ordenação de Vetores Problema 9: Ordenação de dados (em ordem crescente ou decrescente) pode ser utilizada para classificar e mostrar os resultados mais significativos obtidos por um buscador Web (Google ou Altavista, por exemplo) para uma dada palavra-chave. Crie um programa que coloca em ordem crescente um vetor de elementos gerados aleatoriamente Um possível algoritmo de ordenação é o Bubble Sort, cujo nome em português é: algoritmo da bolha. Seu funcionamento consiste em fazer os valores maiores afundarem gradualmente até a base do vetor, ao mesmo tempo que os valores menores sobem gradualmente, como as bolhas de ar sobem na água, enquanto os valores maiores afundam para a parte de baixo do vetor Vetor Problemas Ordenação de Vetores Este é o mais popular dos método de ordenação. O principio básico desta técnica, está na comparação e troca entre dois elementos consecutivos do vetor. O exemplo a seguir nos dá uma idéia de como funciona o algoritmo. O método começa comparando o primeiro elemento do vetor com o segundo elemento. Se o primeiro elemento for maior, é feito a troca entre os dois. A seguir compara-se o segundo com o terceiro, e assim por diante, até a comparação do penúltimo com o último elemento. 6 > troca < 9 não troca 9 > 9 troca > troca 9 9 > troca > troca Vetor Problemas Ordenação de Vetores Observe, no nosso exemplo, que agora o maior elemento do vetor está ocupando a última posição A seguir recomeça-se a comparar o primeiro elemento do vetor, assim modificado, com o segundo e assim por diante até a comparação do ante antepenúltimo com o penúltimo >6? não troca 6>9? não troca 9 > 6 não troca 6>76? não troca 76>? Troca >9? não troca >6? não troca 6>9? não troca 9 > troca >6? não troca 6>76? não troca >6? não troca 6>? troca 6>9 não troca 9>6 não troca

14 7. Vetor Problemas Ordenação de Vetores 7. Vetor - Problemas Observe, no nosso exemplo, que os maiores elementos do vetor estão sendo colocados ocupando nas últimas posições. >? troca 6 6>9? não troca 9 9 > 6 6 não troca 6>76? 76 não troca 9 76>? Troca >6? não troca 6<9? não troca 3 Problema 9 Bubble Sort #include <time.h> const int n = ; int i, j, tmp, v[n]; // Geração aleatória dos elementos de v entre [,n-] // srand(time()); for(i=; i < n; i++) v[i] = rand()%n; // Impressão de v antes de ordenar. printf( \n v = ); for(i=; i < n; i++) printf( [%d],v[i]); // Laços encadeados que realizam a // ordenação segundo o algoritmo do // Bubble Sort. Problema 9 Bubble Sort for(i=; i < n-; i++) for (j=; j < n-i-;j++) if (v[j] > v[j+]) tmp = v[j]; v[j] = v[j+]; v[j+] = tmp; // Mostrar vetor ordenado. printf( \n v = ); for(i=; i < n; i++) printf( [%d],v[i]); // fim programa 7. Vetor - Problemas 7. Vetor - Problemas Problema 9 Exemplo de Execução Problema : Um problema freqüente de programação é o de pesquisar um valor-chave, denominado também de chave de pesquisa, em um dado vetor, indicando se o valor existe e qual posição ocupa no vetor. Este processo é chamado de pesquisa e duas técnicas podem ser utilizadas: (i) Pesquisa Linear: Cada elemento do vetor é analisado até encontrar a chave de pesquisa. Encontra-se o índice da posição onde a chave está, ou se chegar ao fim do vetor sem encontrar nada, o valor ( -) é retornado. (ii) Pesquisa Binária: Supõe que o vetor esta ordenado, de forma que a cada comparação da chave com um elemento, metade do vetor é eliminado. Criar um programa que gera um vetor v[i]=*i de tamanho e verificar o funcionamento de (i) e (ii) para chaves digitadas. 6

15 7. Vetor - Problemas 7. Vetor Problemas Problema Pesquisa Linear Problema Pesquisa Linear const int n = ; int i, chave, ind, v[n]; // Digitando a chave de pesquisa. printf( Entre com a chave: ); scanf( %d, &chave); // Gerar o vetor ordenado v. for(i=; i < n; i++) v[i] = *i; // Impressão dos valores de v. for(i=; i < n; i++) printf( %3d,v[i]); // Cabeçalho. printf( \n ); for(i=; i < n; i++) printf( ---- ); printf( \n ); Problema Pesquisa Linear // Laços encadeados: Pesquisa Linear. ind = -; for(i=; i < n; i++) // Se a chave foi encontrada, então, // armazenar o índice i de v[i]. if (chave == v[i]) ind = i; break; // Mostrar resultado. if(ind == -) printf( Chave nao encontrada!\n ); else printf( Chave no indice: %d \n,ind); // fim programa 7 Problema Exemplos de Execução Chave < v[] Chave = v[] Chave [,6] mas Chave = v[3] Chave > v[3] 8 7. Vetor Problemas Problema Pesquisa Binária Idéia da Pesquisa Binária (supõe vetor ordenado!) ) Faça a= primeiro índice do vetor. ) Faça b=último índice do vetor. 3) Calcule o índice k do meio do vetor: k=(a+b)/ ) Verifique se chave < v[k] Então a chave se encontra entre os elementos v[] e v[k]. Faça b=k-, e volte ao passo 3. Senão a chave se encontra entre os elemento v[k] e v[b]. Faça a=k, e volte ao passo Vetor Problemas Problema Pesquisa Binária Idéia da Pesquisa Binária (supõe vetor ordenado!) EX: Seja chave = a= k= b= v[] v[] v[] v[3] v[] 8 a=3 b= a=; b= k = (a+b)/ = Se (chave>v[k]) então o novo intervalo é a=k+=3 e b=; senão o novo intervalo é b=k-= e a= Se (chave= v[k]) então encontrou o valor. A chave está na posição k Novo intervalo k = (a+b)/ = 3. chave = v[3], então a chave está na posição 3 do vetor 6

16 7. Vetor Problemas: Problema Pesquisa Binária 7. Vetor Problemas Problema Pesquisa Binária Quadro resumo dos casos para Pesquisa Binária Caso Condição chave < v[k] Ações b = k ; k = (a+b)/; chave = v[k] Retornar k 3 chave > v[k] a = k + ; k = (a+b)/; b < a Retornar - Imagem 6 Problema Pesquisa Binária const int n = ; int i, j, a, b, k, chave, ind, v[n]; // Digitando da chave de pesquisa. printf( Entre com a chave: ); scanf( %d, &chave); // Preenchendo o vetor ordenado v. for(i=; i < n; i++) v[i] = *i; for(i=; i < n; i++) //Imprime vetor printf( %3d,v[i]); printf( \n ); // Imprime cabeçalho for(i=; i < n; i++) printf( ); printf( \n ); // Inicializando limites da Pesquisa // Binária e valor do inicial do índice. a = ; b = n-; ind = -; Problema Pesquisa Binária // Laços encadeados: Pesquisa Binária. while(a <= b) // Enquanto!= Caso k = (a+b)/; for (j=;j < n;j++) // Imprime vetor if (j < a j > b) printf( ); else if (j == k) printf( %3d*,v[j]); else printf( %3d,v[j]); printf( \n ); // Tratando os 3 casos existentes. if (chave == v[k]) // Caso. ind = k; break; else if (chave < v[k]) // Caso. b = k ; else // Caso 3. a = k + ; // Fim do while. if (ind == -) printf( Sem Chave\n ); else printf( Chave - indice:%d\n,ind); // fim programa 6 7. Vetor Problemas Problema Pesquisa Binária 7. Vetor Problemas Problema : Na FEG existe uma quantidade de alunos matriculados na disciplina PC e na disciplina de Cálculo II. Mas acontece que estas duas disciplinas estão no mesmo horário. É preciso então saber quais são os alunos que estão matriculados nas duas disciplinas ao mesmo tempo. Fazer um programa que seja capaz de imprimir o número de matricula desses alunos. É dado o número de alunos matriculados em cada disciplina, bem como seus números de matricula. 63 //Programa Simultaneo #include <stdlib.h> int PC[], CN[], matrisimult[]; int NCN,NPC,i, j, k; continua... 6

17 7. Vetor Problemas Problema : Continuação Vetor Problemas Problema : continuação... //leitura de dados printf("digite o numero de alunos cursando PC "); scanf("%d",&npc); for(i=; i <= NPC; i++) printf("digite o no. de matric do aluno %d, em PC ", i); scanf("%d",&pc[i]); printf("digite o numero de alunos cursando CN "); scanf("%d",&ncn); i=; while (i <= NCN) printf("digite o no. de matric do aluno %d, em CN ", i); scanf("%d",&cn[i]); i= i+; 6 //Verificação dos alunos que estão com matrícula simultânea k= ; for( i= ;i<= NPC;i++) for (j=; j<= NCN; j++) if (PC[i]==CN[j]) k= k+; matrisimult[k]= PC[i]; // Escrever o vetor de matricula simultânea printf ("vetor de matricula simultanea\n"); for (j= ; j<= k; j++) printf(" aluno no. %d \n",matrisimult[j]); system("pause"); Vetor Problemas 7. Vetor Problemas Problema 3: Fazer um programa em C para ler um vetor A de dimensão N e calcular um vetor B da seguinte maneira: B [] * A [] B [] * A [] B [3] 3 * A [3] B [] * A []... B [N] N * A [N] Em seguida calcular a soma dos elementos de B e imprimir o vetor B. 67 #include <stdlib.h> // Problema 3 int a[], b[], n, i, soma_b; //ler o vetor A printf("quantos elementos tem o seu vetor?"); scanf("%d",&n); for (i=; i<=n; i++) printf("digite o elemento %d do vetor A ", i); scanf("%d", &a[i]); // Gerar o vetor B e for (i=; i<=n; i++) b[i]= i*a[i]; 68

18 7. Vetor Problemas //Continuação... Problema 3 // calcular a soma de b soma_b =; for (i=; i<=n; i++) soma_b= soma_b + b[i]; // imprimir b printf("\n\tvetor B \n"); for (i=; i<=n; i++) printf("\tb[%d] = %d\n", i,b[i]); printf("\n\tsoma de B = %d\n\n", soma_b); system("pause"); 7. Vetor - Problemas Problema : Um método de Criptografia consiste em substituir as letras de uma mensagem através do emparelhamento de alfabetos tal como dado abaixo. Construir um programa que codifica mensagens usando este esquema. Alfabeto original a b c d... v w x y z Alfabeto cifrado B C D E... W X Y Z A Texto original v e n i v i d i v i c i 69 Texto cifrado W F O J W J E J W J D J 7 7. Vetor - Problemas Problema Tabela ASCII int i; // Laço para construir a Tabela ASCII. printf( Tabela ASCII: \n ); printf( int -> char \n ); // A tabela possui ^8 valores, pois // char é um tipo de byte (8 bits). for(i=; i < ; i++) printf( %d -> %c \n, i, char(i)); E se imprimir usando (i+) % 6? e (i+)%6? 7. Vetor - Problemas (i+) % 6 Deslocamento do alfabeto (i+) % 6 O que ocorre? 7 7

19 7. Vetor - Problemas // Inicialização. char tmp, texto[]; // Ler até encontrar.. i = ; while (i < ) tmp = getche(); if (tmp == '.') break; else texto[i] = tmp; i++; // Guardar tamanho da msg. n = i; texto[] texto[] M texto[] e texto[] texto[] Mensagem Secreta. a texto[6] 7. Vetor - Problemas // Inicialização char tmp, texto[]; // Ler até.. Não ler backspace. i = ; while (i < ) tmp = getche(); if (tmp == '.') break; if (int(tmp)!= 8) texto[i] = tmp; i++; else i--; // Guardar tamanho da msg. Corresponde ao caractere backspace na Tabela ASCII. Mr ensagem Secreta. Mensagem Secreta n=7 73 n = i; 7 M texto[] e texto[] a texto[6] 7. Vetor - Problemas 7. Vetor - Problemas Problema Criptografia #include <conio.h> int i, n; char tmp, texto[]; // Armazenando a mensagem. printf( Entre com a mensagem: ); i=; while (i < ) tmp = getche(); // Termina o laço. if (tmp ==. ) break; // Se não for backspace, guarde. if (int(tmp)!= 8) texto[i] = tmp; i = i + ; else i--; //Backspace: elimina ant. Problema Criptografia n = i; // Tamanho do vetor em n. // Codificando a mensagem. for(i=; i < n; i++) texto[i] = (texto[i]+)%6; // Mostrando a mensagem //codificada. printf( \n Mensagem Codificada:\n ); for (i=; i < n; i++) printf( %c,texto[i]); printf( \n ); // fim programa 7 Observe que: M e n s a g e m S e c r e t a N f o t b h f n! T f d s f u b 76

20 7. Vetor - Problemas Problema : Criar um programa que captura uma senha e compara com uma palavra previamente cadastrada. No momento da digitação, a senha não deve aparecer. Somente após a validação da senha é que deverá aparecer a palavra digitada e se a palavra digitada confere com a senha ou não Vetor - Problemas // Inicialização. char texto[], tmp; char senha[] = Secreta ; // Ler até encontrar o enter ( ). i = ; while( i < ) tmp = getch(); // Se digitou, pare leitura. if (int(tmp) == 3) break; else texto[i]=tmp; printf( * ); i++; // Fim while. // Guardar tamanho da msg. n = i; Lê o caractere do teclado, mas o que foi digitado não aparece na tela. Verifica se foi digitado o enter. É preciso ter cuidado com backspace! Vetor - Problemas 7. Vetor - Problemas // Ler até encontrar. i = ; while( i < ) tmp = getch(); // Se digitou, pare leitura. if (int(tmp) == 3) break; else if (int(tmp)!= 8) //. printf( * ); texto[i]=tmp; i++; else i--; // =. // Fim for. // Guardar tamanho da msg. n = i; Tratamento do Backspace Palavra Digitada S x e c r e t texto S e c r e t 79 verif = ; // Supõe que senha = texto. // Tamanho senha igual tamanho texto? if (ns == nt) //nt= tamanho digitado // Ler até achar letra ou fim palavras. for (i=; i < nt; i++) if (texto[i]!= senha[i]) verif = ; break; else // Tamanhos. verif = ; Caso : texto senha i S e c r e S e c r e t a t a 3 6 Caso : texto senha S S e e g c r r e e d t texto[]!= senha[] o a 8

21 7. Vetor - Problemas Problema Senha #include <conio.h> int i, verif, nt, ns = 7; char tmp, texto[]; char senha[]="secreta"; // Armazenando a senha digitada. printf("digite a senha "); i=; while (i < ) tmp = getch(); // Termina o laço se for?. if (int(tmp) == 3) break; else if (int(tmp)!= 8) //??. printf("*"); texto[i] = tmp; i++; else putchar('*'); putchar(' '); putchar(char(8)); i--; //? //fim laço Problema Senha nt = i; // Tamanho digitada em nt. verif = ; // Supõe texto == senha. // Ver se texto e senha tem tam?==. if (nt == ns) for (i=; i < nt; i++) if (texto[i]!= senha[i]) verif = ; break; else verif = ; // Mostrando mensagem. if (verif) printf("\nsenha Correta! \n"); else printf("\nsenha incorreta! \n"); getchar(); // fim programa 8 7. Vetor - Problemas 8 7. Dados Estruturados: Matrizes 7. Dados Estruturados: Matrizes Matrizes - Definição 7. Matrizes Também chamadas conjuntos bidimensionais, contém: um número fixo de elementos; todos são do mesmo tipo; arranjados na forma de tabela de dimensões; 83 8

22 7. Dados Estruturados: Matrizes Matrizes - Definição Ex.: Uma matriz chamada MAT que tenha m elementos (horizontal) e n elementos (vertical) 7. Dados Estruturados: Matrizes Matrizes ou Array bidimesionais são estruturas de dados que organizam informações; de mesmo tipo e mesmo nome; em tabelas. 3 m n-... * Mat[][3] 8 Para tanto, são utilizados dois índices, que correspondem a linhas e colunas. Para se acessar ou modificar um elemento da matriz deve-se especificar o nome da matriz seguido de dois números entre colchetes ([ ]), sendo que o primeiro corresponde a linha e o segundo corresponde a coluna relativa a posição que o elemento ocupa na Tabela Dados Estruturados: Matrizes Declaração e Atribuição de Matrizes Declaração int a[ 3 ][ ]; Uma matriz nada mais é que um vetor de duas dimensões, logo a atribuição de valores a uma matriz é feita de modo semelhante atribuição de valores a um vetor. A declaração de um vetor com n dimensões é feita do seguinte modo: tipo nome_do_vetor [dim ][dim ][dim 3 ]... [dim n ] 7. Dados Estruturados: Matrizes Ex: Declaração de uma matriz de inteiro de dimensão 3x. int mat[3][]; //3 linhas, cada uma delas com posições Linha Linha Linha Coluna mat[][] mat[][] mat[][] Coluna mat[][] mat[][] mat[][] 87 88

23 7. Dados Estruturados: Matrizes - Atribuição Inicial Atribuição Automática Inicial A atribuição inicial é feita da mesma maneira que para vetores de uma só dimensão. Ex: int a[ 3 ][ ] =,,,, 3, 3; Neste exemplo, o vetor tem 3 linha e duas colunas, logo está sendo feita a seguinte atribuição: a[][]= a[][]]= a[][]= a[][]=3 a[][]= a[][]=3 Observe que os dois primeiros números da chave estão sendo atribuídos a ª. linha, os dois seguintes são atribuídos à segunda linha e os dois últimos são atribuídos a terceira linha Dados Estruturados: Matrizes - Atribuição Inicial A atribuição inicial também pode ser feita da seguinte maneira Ex: int a[ 3 ][ ] =,,,, 3, 3 ; Vetor de tamanho x Observe que agora existe uma separação por linhas, sendo:, relativa a ª. linha;, relativa a ª. linha e 3,3 relativa a 3ª. linha. Na realidade em C, uma matriz é considerada um vetor de vetores. Então, no exemplo acima: a É um vetor com 3 elementos (cada elemento é um vetor de inteiros) a[i] É um vetor de inteiro a[i][j] É um inteiro que está colocado na posição i, j do vetor a 9 7. Dados Estruturados: Matrizes 7. Dados Estruturados: Matrizes Acesso e Modificação de valores de uma Matriz Problema : Criar programa com uma matriz 3 x 3 de inteiros cujos elementos são da forma a[i][j] = i + j +. Imprimir a matriz. Matriz Inicial 3 3 Operações Matriz Final a[][]=a[][]+ 3 a[][]=a[][]+ a[][]=a[][]*a[][] 3 9 # include <stdio.h> # include <stdio.h> int i, j; int a[3][3]; // Colocando valores em a. for (i=; i < 3; i++) for (j=; j < 3; j++) a[i][j] = i + j + ; // Mostra elementos de a-> a[i][j]. for (i=; i < 3; i++) for (j=; j < 3; j++) printf( %d ", a[i][j]); puts( ); // fim programa a [ i ] [ j ] = i + j + ; 3 a[][] a[][] a[][] 3 a[][] a[][] a[][] 3 a[][] a[][] a[][] 9

24 7. Matrizes - Problemas Problema : Criar um programa que dado um valor n construa o triângulo de Pascal correspondente até a n-ésima linha O Triângulo de Pascal pode ser calculado usando uma matriz tal que cada elemento é dado por : a[i][j] = a[ i- ][ j- ]+a[ i- ][ j ] a[][] a[][] a[][] Matrizes - Problemas Para gerar o triângulo basta seguir os seguintes passos: Passo : Construir uma matriz nxn de zeros Passo 3: Obter os demais elementos utilizando: a[i][j] = a[ i- ][ j- ]+a[ i- ][ j ] Passo : Preencher a primeira coluna com 9 7. Matrizes Problemas : Problema Pascal Problema Pascal const int n = ; int i, j, a[n][n]; // Inicializando os elementos de a. // Passos e. for (i=; i < n; i++) for (j=; j < n; j++) if (j == ) a[i][j] = ; else a[i][j] = ; // Demais elementos de a. Passo 3. for (i=; i < n; i++) for (j=; j <= i; j++) a[i][j] = a[i-][j-]+a[i-][j]; Problema Continuação // Mostrando os elementos de a. for (i=; i < n; i++) for (j=; j < n; j++) printf( %d,a[i][j]); printf( \n ); // fim programa 9 7. Matrizes - Problemas Problema 3: As notas de uma turma são armazenadas em uma matriz de forma que a i-ésima linha contém todas as notas bimestrais de um aluno. Supondo que o,, 3 e bimestre possuem pesos,, e, respectivamente, calcular e mostrar a média de cada aluno. Idéia do Programa Aluno Aluno m B B B3 B Matriz alunos x notas P P * = P3 P Vetor pesos Vetor médias M Mm

25 7. Matrizes - Problemas Como multiplicar uma matriz por um vetor? 7. Matrizes - Problemas Como é calculado o i-ésimo elemento do vetor r? a a a n v = r r i = a i a i a in v a a a n v r v Primeiro laço a m a m a mn v n r m Segundo laço v n Matriz m x n Vetor m x Vetor n x 97 n i = ikvk i =,..., m k = r a Matrizes - Problemas 7. Matrizes - Problemas Problema 3 Notas // Supondo uma classe com alunos. const int m = ; int i, j, k; float soma; float a[m][], r[m], p[] =,,,; // Armazenando as notas. for (i=; i < m; i++) printf( Aluno %d:, i+); for (j=; j < ; j++) printf( \n Nota %d:,j+); scanf( %f, &a[i][j]); Problema 3 Notas // Calculo da media e resultado em r. for (i=; i < m; i++) soma =.; // Media do aluno i: armazenar a // soma das k notas vezes k pesos. for (k=; k < ; k++) soma = soma + a[i][k]*p[k]; // Calculo da media do aluno i. r[i] = soma/6; // Mostrando a media de cada aluno. printf( Aluno Media \n ); for (i=; i < m; i++) printf( %d %.f \n,i+,r[i]); // fim programa 99 Problema : Uma fazenda foi dividida em 3 regiões e para cada uma delas é armazenada em uma matriz a informação da produção, em toneladas de tipos de culturas: milho, soja, feijão e arroz. Os dados de ano são registrados em uma matriz A. Construir um programa que realize as seguintes tarefas: () Ler os dados de produção de cada cultura em cada uma das regiões da fazenda. () Calcular a produção de grãos de cada região. (3) Calcular a produção de grãos de cada cultura. () Calcular o total de grãos produzidos pela fazenda.

26 7. Matrizes Problemas Resolvidos 7. Matrizes Problemas Resolvidos Idéia do Programa Uma matriz 3x para os dados Região Região Região 3 Total cultura Milho Soja Feijão Arroz Região Região Região Milho Soja Feijão Arroz Total região Problema Fazenda const int m = 3; const int n = ; int i, j, k; float a[m][n], r[m], c[n]; // Armazenando a produção em a. for (i=; i < m; i++) printf( Regiao %d:, i+); for (j=; j < n; j++) printf( \n Cultura %d:,j+); scanf( %f, &a[i][j]); // Calculo do total para cada região. for (i=; i < m; i++) r[i] =.; // Valor inicial. // Soma das culturas da região i. for (k=; k < n; k++) r[i] = r[i] + a[i][k]; printf( Regiao %d: %f\n,i+,r[i]); Problema Fazenda // Calculo do total para cada cultura. for (j=; j < n; j++) c[j] =.; // Valor inicial. // Soma da regiões da cultura i. for (k=; k < m; k++) c[j] = c[j] + a[k][j]; printf( Cultura %d: %f\n,j+,c[j]); // fim programa 7. Matrizes Problemas Resolvidos Problema : Para monitorar o desmatamento de uma determinada área são utilizadas imagens produzidas por um satélite. Para tanto, é necessário dividir a área a ser monitorada em sub-áreas e depois atribuir um valor que indica o grau de cobertura vegetal existente em cada sub-área de acordo com a seguinte tabela Cobertura Vegetal Entre 8% e % Entre 6% e 8% Valor Entre % e 6% 3 Entre % e % Entre % e % 3 7. Matrizes Problemas Resolvidos Ou seja, associa-se uma imagem a uma matriz de valores: Assim, o cálculo do desmatamento de uma área, que consiste em se comparar as diferenças entre duas imagens da área para anos diferentes, pode ser obtido com a soma das diferenças dos elementos de duas matrizes. 3 3

27 7. Matrizes Problemas Resolvidos Ano de 7 Ano de 6 Matriz de variação da cobertura vegetal 7. Matrizes Problemas Resolvidos Problema : Utilizando as informações anteriores, construir um programa que, dadas duas matrizes A e B correspondentes aos dados de cobertura vegetal de uma área em dois anos consecutivos, imprime uma matriz C de variação da cobertura vegetal, bem como o total de unidades desmatadas. Supor A e B como dadas no exemplo abaixo: = = No caso acima pode-se dizer que o desmatamento entre 6 e 7 foi da ordem de unidades. - unidades Matriz A Matriz B - unidades 6 7. Matrizes Problemas Problema Desmatamento const int m = ; const int n = ; int i, j, soma, c[m][n]; int a[m][n] =,,,,,,,,,,,,,3,,; int b[m][n] =,,,,,,,,,,3,3,,,,; // Contabilizando desmatamento em c. for (i=; i < m; i++) for (j=; j < n; j++) c[i][j] = a[i][j] - b[i][j]; // Mostrando a matriz c. for (i=; i < m; i++) for (j=; j < n; j++) printf( %d,c[i][j]); printf( \n ); Resolvidos Problema Desmatamento // Totalizando n. unidades //desmatadas. soma = ; for (i=; i < m; i++) for (j=; j < n; j++) soma = soma + c[i][j]; // Exibindo n. unidades desmatadas. printf( Cobertura Veg. = %d\n,soma); // fim programa 7 7. Matrizes Problemas Resolvidos Problema 6: Construir um programa que simule um jogo da velha. O programa deve cumprir os seguintes requisitos: (i) Permitir movimentos alternados de dois jogadores A e B. (ii) Identificar se um movimento pode ser realizado ou não. (iii) Identificar o término de um jogo, indicando as 3 possíveis situações: () A ganhou, () B ganhou, (3) Empate. (iv) Construir um tabuleiro que permita a representação das jogadas tal como dado abaixo. Jogada de A Jogada de B x o Espaço livre 8

28 7. Matrizes Problemas Resolvidos Requisito (i): Movimentos alternados de A e B. Requisito (iii): Identificar empate. Variável contadora de jogadas válidas: cont. x 3 x 6 o o o x 8 7 x x o if (cont% == ) // Movimento de A else // Movimento de B if (cont == 9) // Empate! 9 7. Matrizes Problemas Resolvidos Requisito (iv): Representação das jogadas. Requisito (ii): Se a jogada pode ser realizada. Coordenadas: Coluna Coordenadas: Caractere. if (m[i][j] ==. ) Pode fazer jogada Linha Linha Linha Matriz de caracteres Coluna Coluna. x. o Matrizes Problemas Resolvidos 7. Matrizes Problemas Resolvidos Requisito (iii): Situações de jogadas vencedoras. x x x x x x x x x x x x x x x x x x x x x x x x if (m[][] == X && m[][] == X && m[][] == X ) Problema 6 Jogo da Velha Algoritmo Simples // Algoritmo Simples do Jogo da Velha. Passo : Criar matriz m de caracteres 3 x 3 cujos elementos são.. Passo : Mostrar estado atual da matriz. Passo 3: Enquanto (True) faça Passo 3.: Verificar se jogador A fez jogada vencedora. Se sim, pare. O jogador A venceu. Passo 3.: Verificar se jogador B fez jogada vencedora. Se sim, pare. O jogador B venceu. Passo 3.3: Verificar se a jogada atual é a décima. Se sim, pare. Ocorreu empate. Passo 3.: Capturar coordenadas i (linha) e j (coluna) da jogada. Se i e j foram válidos então ( ou seja m[i][j]==. ) Passo 3..: Se (jogada de A) preencher a casa com a marca de x. Senão preencher a casa com a marca o. Passo 3..: Incrementar uma variável contadora de jogadas.

29 7. Matrizes Problemas Resolvidos Problema 6 Jogo da Velha #include <stdlib.h> char m[3][3]; int i, j, ci,cj,cont =; const int TRUE = ; const char O = 'o', X = 'x'; printf("digite lin col \n"); // Inicializando a matriz m com.. for (i=; i <= 3; i++) for (j=; j <=3; j++) m[i][j] = '.'; while (TRUE) // Laço infinito. // Mostrando a matriz m. for (i=; i <= 3; i++) for (j=; j <= 3; j++) printf(" %c ",m[i][j]); printf("\n"); Problema 6 Jogo da Velha // Verificando se o jogador A ganhou. if ((m[][]==x && m[][]==x && m[][3]==x) (m[][]==x && m[][]==x && m[][3]==x) (m[][]==x && m[][]==x && m[3][]==x) (m[][]==x && m[][]==x && m[3][]==x) (m[][3]==x && m[][3]==x && m[3][3]==x) (m[3][]==x && m[][]==x && m[][3]==x) (m[][]==x && m[][]==x && m[3][3]==x) ) printf("jogador A ganhou!!! \n"); break; // Verificando se o jogador B ganhou. if ((m[][]==o && m[][]==o && m[][3]==o) (m[][]==o && m[][]==o && m[][3]==o) (m[3][]==o && m[3][]==o && m[3][3]==o) (m[][]==o && m[][]==o && m[3][]==o) (m[][]==o && m[][]==o && m[3][]==o) (m[][3]==o && m[][3]==o && m[3][3]==o) (m[][]==o && m[][]==o && m[3][3]==o) (m[][3]==o && m[][]==o && m[3][]==o) ) printf("jogador B ganhou!!! \n\n"); break; 3 7. Matrizes Problemas Resolvidos Problema 6 Jogo da Velha (Cont.) if (cont == 9) // Sem jogadas. printf("\a Empatou!!! \n\n"); break; // Capturando nova jogada. printf("digite as Coordenadas: "); scanf("%d %d",&ci,&cj); if (m[ci][cj] == '.') // Verifica se Casa está livre? if (cont % == ) // O jogador A é quem jogou. m[ci][cj] = X; else // O jogador B é quem jogou. m[ci][cj] = O; // Contado o n. de jogadas. cont++; // Fim if que verifica casa livre. // Fim do while. // Fim programa 7. Matrizes Problemas Resolvidos Problema 7: Construir um programa que simule o jogo Yucky Choccy. O programa deve cumprir os seguintes requisitos: (i) Permitir movimentos alternados de dois jogadores A e B. (ii) Identificar se um movimento pode ser realizado ou não. (iii) Identificar o término de um jogo, indicando as possíveis situações: () A ganhou, () B ganhou. (iv) Construir um tabuleiro que permita a representação das jogadas tal como dado abaixo. Barra de sabão Jogada de B Jogada de A 7. Matrizes Problemas Resolvidos Requisito (iv): Representação das jogadas. Requisito (ii): Se a jogada pode ser realizada. Coordenadas: Coluna Coordenadas: Caractere. if (m[i][j] ==. ) Pode fazer jogada Linha Linha Linha Matriz de caracteres Coluna Coluna. x x. x x. x x 6

30 7. Matrizes Problemas Resolvidos Problema 7 Yucky Choccy const int m = ; char A[m][m]; int i, j, lin, col, cont =; const char O = o, X = x ; printf( Digite linha e coluna \n ); // Inicializando a matriz m com.. for (i=; i < m; i++) for (j=; j < m; j++) A[i][j] =. ; while () // Laço infinito. // Mostrando a matriz m. for (i=; i < m; i++) for (j=; j < m; j++) printf( %c, A[i][j]); printf( \n ); Problema 7 Yucky Choccy // Capturando nova jogada. if (cont% == ) printf( Jogada de A: ); else printf( Jogada de B: ); scanf( %d %d,&lin,&col); // Casa livre? if (A[lin][col] ==. &&(lin == col == ) ) // É a vez do jogador A. if (cont % == ) // Verificando se A perdeu e B ganhou. if (lin == && col == ) printf( B ganhou! \n ); break; else // Verificando se B perdeu e A ganhou. if (lin == && col == ) printf( A ganhou! \n ); break; // Contado o n. de jogadas. cont++; 7 // Modificar elementos da matriz A para x. 7. Matrizes Problemas Resolvidos Problema 7 Yucky Choccy (Cont.) // Apenas os seguintes elementos serão // modificados: da linha de i até m e da // coluna de i até m. for (i=lin; i < m; i++) for (j=col; j < m; j++) A[i][j] = x ; // Fim if que verifica casa livre. // Fim do while. // Fim main Matrizes Problemas Resolvidos 7. Matrizes Problemas Resolvidos Problema 8: Um veículo submarino autônomo é utilizado para realizar o mapeamento do leito oceânico de uma certa área e a mesma é dividida nas sub-áreas, dada na Figura. Cada sub área pode fornecer uma quantidade de insumos (Tabela ), e cada insumo tem um valor (Tabela ). Construir um programa que calcula o lucro que pode ser obtido em cada sub-área. Passo : Figura Tabela Solo G QAV Nafta Tabela Insumo Valor G. QAV 8.7 Nafta Passo : Indíce da linha: Se área = : *

31 7. Matrizes Problemas Resolvidos 7. Matrizes Problemas Resolvidos Problema 8 Petróleo const int m = 3; const int n = ; int i, j, k; float s, C[m][n], v[m] =., 8.7, 3.78; int A[m][n] =,,,,,,3,,,3,3,3; float B[m][m] = 7.,.3,., 6.,.3, 8.,.,.3, 3.6; // Varrendo a matriz A e de acordo // com o valor A[i][j], calcular o valor // com B*v e guardar em C[i][j]. for (i=; i < m; i++) for (j=; j < n; j++) s =.; for (k=; k < m; k++) s = s + B[A[i][j]-][k]*v[k]; C[i][j] = s; // Mostrando a matriz C com os lucros. printf( Matriz de lucros \n ); for (i=; i < m; i++) for (j=; j < n; j++) printf( [%7.f],C[i][j]); Problema 8 Petróleo printf( \n ); // fim programa Resultado da Execução Dados Estruturados: Strings 7.3 Strings - Definições A linguagem C apresenta algumas limitações no que diz respeito ao tratamento da string, pois diferentemente das outras linguagem, em C a string não é um tipo básico 7.3 Strings Logo, em C não é possível atribuir uma string a uma variável ou concatenar uma string a outra utilizando os sinais de atribuição (=) e soma (+) como é possível nas outras linguagens Definição: Na linguagem C uma string é um conjunto de caracteres armazenados num vetor. 3

32 7.3 Strings - Definições Em C, as strings são representadas usando aspas, enquanto que os caracteres são representados entre aspas simples Exemplos de strings Exemplos de caracteres Luis Carlos L Pedro Henrique > Receita de Bolo de Chocolate B 7.3 Strings - Definições Então, em C, strings são seqüências de caracteres adjacentes na memória. O caractere \ (= valor inteiro zero) indica o fim da seqüência. Exemplo : char aluno[3]; define um string de nome aluno e reserva para ele um espaço de 3 ( + \ ) bytes na memória. Em C, declaração de strings obedece à sintaxe de declaração de vetores de caracteres. Para marcar o fim da string, é colocado na ultima str: aluno \ OBS: No exemplo acima o caractere de fim de seqüência \ ocupa a primeira posição do vetor, porque ainda não foi atribuído nenhum caractere ao mesmo. posição do vetor, um marcador de final de string Strings - Definições Exemplo : char nome[6] = Pindamonhangaba ; define uma string de nome nome, reserva para ele um espaço de memória de 6 ( + \ ) bytes e o inicia com o texto indicado nome: P i n d a m o n h a n g a b a \ Os caracteres podem ser individualmente acessados por indexação: Exemplo 3: nome[] = P ; nome[] = n Strings Leitura e Impressão de Strings A função printf pode ser utilizada para imprimir cada caractere da string s, ou verificando se n caracteres foram percorridos, ou verificando se o caractere \ foi encontrado. Exemplo Usando n const int n = ; int i; char s[n] = Uma string tipica. ; // Varrendo cada componente do //vetor e imprimindo até que i < n. for (i=; i < 8; i++) printf( %c,s[i]); Exemplo Usando \ const int n = ; int i; char s[n] = Uma string tipica. ; // Varrendo cada componente do // vetor e imprimindo até // que s[i] == \. for (i=; s[i]!= \ ; i++) printf( %c,s[i]); 8

Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante

Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 14 - Vetores Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante Vetores, Matrizes e Strings 1 14.1 Vetor Problemas

Leia mais

Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante

Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 16 - Matrizes Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 16.1 Dados Estruturados: Matrizes Matrizes

Leia mais

12 - Dados Estruturados Vetores, Matrizes e Strings

12 - Dados Estruturados Vetores, Matrizes e Strings 12 - Dados Estruturados Vetores, Matrizes e Strings Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante Vetores,

Leia mais

7. Dados Estruturados Vetores, Matrizes e Strings

7. Dados Estruturados Vetores, Matrizes e Strings 7. Dados Estruturados Vetores, Matrizes e Strings Unesp Campus de Guaratinguetá Curso: Programação de Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 1 7.1 Dados Estruturados: Array Array - Definição!

Leia mais

Dados Estruturados Vetores e Matrizes. SCC120 - Introdução à Ciência de Computação

Dados Estruturados Vetores e Matrizes. SCC120 - Introdução à Ciência de Computação Dados Estruturados Vetores e Matrizes SCC120 - Introdução à Ciência de Computação São Carlos Abril de 2011 Array - Definição Vetor ou Array é a forma mais familiar de dados estruturados. Um array é um

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

14.1 Vetor - Problemas

14.1 Vetor - Problemas Problema 14: Um método de Criptografia consiste em substituir as letras de uma mensagem através do emparelhamento de alfabetos tal como dado abaixo. Construir um programa que codifica mensagens usando

Leia mais

LINGUAGEM C: ARRAY: VETORES E MATRIZES

LINGUAGEM C: ARRAY: VETORES E MATRIZES LINGUAGEM C: ARRAY: VETORES E MATRIZES Prof. André Backes POR QUE USAR ARRAY? As variáveis declaradas até agora são capazes de armazenar um único valor por vez. Sempre que tentamos armazenar um novo valor

Leia mais

Linguagem de Programação I. Aula 08 Linguagem C: Arrays

Linguagem de Programação I. Aula 08 Linguagem C: Arrays Linguagem de Programação I Aula 08 Linguagem C: Arrays Da Aula Anterior Tipos de dados básicos em C Modificadores de tipo Declaração de Variáveis Operadores em C Estruturas de Controle Nesta Aula Arrays

Leia mais

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Vetores e Matrizes Prof: Luciano Barbosa Recapitulando: Funções 2 Recapitulando: Função Void 3 Recapitulando: Escopo das Variáveis Referência à variável global A variável de escopo

Leia mais

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Strings Prof: Luciano Barbosa Recapitulando: Vetores Representar uma coleção de variáveis de um mesmo tipo em uma dimensão Ex: float notas[5]; ou float notas[5] = {2.5,3.2,1.9,4.1,2.0};

Leia mais

Vetores. e o programa deverá ler os valores separadamente:

Vetores. e o programa deverá ler os valores separadamente: Vetores Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos (do mesmo tipo). Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos.

Leia mais

Estruturas de repetição

Estruturas de repetição Título em português: FEITIÇO DO TEMPO (1993) Sinopse: Um repórter de televisão que faz previsões de meteorologia vai à uma pequena cidade para fazer uma matéria especial sobre o inverno. Querendo ir embora

Leia mais

Linguagem C: Introdução

Linguagem C: Introdução Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná em C Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Uma matriz é uma coleção de variáveis do mesmo tipo que é referenciada por um nome comum; Em C todas as matrizes consistem

Leia mais

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU Aula 8 Oficina de Programação Vetores Profa. Elaine Faria UFU - 2017 Variáveis Compostas Homogêneas O que uma variável composta homogênea? - Conjunto de variáveis do mesmo tipo - É chamada de forma geral

Leia mais

LÓGICA DE PROGRAMAÇÃO. Resumo da Linguagem C. Sérgio Carlos Portari Júnior

LÓGICA DE PROGRAMAÇÃO. Resumo da Linguagem C. Sérgio Carlos Portari Júnior LÓGICA DE PROGRAMAÇÃO Resumo da Linguagem C Sérgio Carlos Portari Júnior Tipos de dados mais usados em C Inteiro int 2 bytes Real float 4 bytes Caractere char 1 byte String não existe* xxxxxxx Booleano

Leia mais

Estruturas de Repetição

Estruturas de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS DISCIPLINA: Lab. de Programação PROF: MSc. Flávio Barros PERÍODO: 2 DATA: Aluno (s): 01 ATIVIDADE / / Revisão de Conteúdo

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes

Leia mais

ESTRUTURAS COMPOSTAS

ESTRUTURAS COMPOSTAS ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR Clique para adicionar texto Profa. Dra. Elisa Yumi Nakagawa 1. Semestre de 2017 Slides inicialmente preparados pela Profa. Rosely Sanches

Leia mais

LISTA DE EXERCÍCIOS - ro. 04

LISTA DE EXERCÍCIOS - ro. 04 USP ICMC SSC SSC0100 - Introdução à Ciência da Computação I (Prática) Professor responsável: Fernando Santos Osório Semestre: 2009/1 Horário: Terça 14h20 (Turma A2) E-mail: fosorio.at. icmc.usp.br fosorio.at.

Leia mais

Aula 06 Introdução à Programação Matrizes

Aula 06 Introdução à Programação Matrizes Aula 06 Introdução à Programação Matrizes Prof. Gustavo Callou gustavo.callou@ufrpe.br gcallou@gmail.com Roteiro Matrizes Unidimensionais (Vetor) Bidimensionais String Exercícios Gustavo Callou DEINFO/UFRPE

Leia mais

3.1 - Funções para manipular dados de entrada e saída padrão

3.1 - Funções para manipular dados de entrada e saída padrão 1616161616161616161616161616161616161616161616161616 3- ENTRADA E SAÍDA EM C Os principais meios para executar operações de entrada e saída (E/S) são: Entrada e saída pelo console (ou padrão): teclado

Leia mais

Variáveis, Tipos de Dados e Operadores

Variáveis, Tipos de Dados e Operadores ! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória

Leia mais

ESTRUTURAS COMPOSTAS VETOR

ESTRUTURAS COMPOSTAS VETOR ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR slides desenvolvidos pela Profa. Rosely Sanches 2 ESTRUTURAS COMPOSTAS Pode-se organizar tipos simples em tipos mais complexos formando as

Leia mais

Aula 10: Introdução a Vetores e Matrizes

Aula 10: Introdução a Vetores e Matrizes Aula 10: Introdução a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Vetores e Matrizes Programação de Computadores IV 1 / 50 Agenda

Leia mais

prim = A ; prim = &A[0];

prim = A ; prim = &A[0]; 57 12 - MAIS SOBRE APONTADOR 12.1 - Ponteiros e arrays Em C, ponteiros e matrizes são tratados de maneira semelhante. 12.1.1 - Nome O nome é um ponteiro, ou seja, aponta (contém o endereço) para o primeiro

Leia mais

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 7 Vetores ou Matrizes Unidimensionais Matrices Multidimencionais Susana M Iglesias 1 INTRODUÇÃO Um vetor geralmente é associado a uma lista ou conjunto de elementos similares,

Leia mais

Linguagem C. André Tavares da Silva.

Linguagem C. André Tavares da Silva. Linguagem C André Tavares da Silva dcc2ats@joinville.udesc.br Variáveis Posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo programa. Todas as variáveis devem ser

Leia mais

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Profa Rosana Braga 1º semestre de 2010 1 Arquivo-FONTE /*******************************/ /* Primeiro exemplo arq exemplo1.c

Leia mais

Linguagem C (repetição)

Linguagem C (repetição) Linguagem C (repetição) André Tavares da Silva andre.silva@udesc.br Exercício Escrever um programa que conte (mostre na tela) os números de 1 a 100. Comandos aprendidos até o momento: printf, scanf, getchar,

Leia mais

Aula 15 Variáveis Indexadas (vetores)

Aula 15 Variáveis Indexadas (vetores) Aula 15 Variáveis Indexadas (vetores) Além das variáveis normais já conhecidas, podemos ter também variáveis indexadas. Tais variáveis são referenciadas por um nome e um índice. Especialmente úteis para

Leia mais

Matrizes. DCC 119 Algoritmos

Matrizes. DCC 119 Algoritmos Matrizes DCC 119 Algoritmos Matrizes: vetores multidimensionais Assim como os vetores, as matrizes são estruturas de dados homogêneas. Podem ser construídas dos diversos tipos básicos primitivos (real,

Leia mais

Programação de Computadores I Funções Básicas da Linguagem C PROFESSORA CINTIA CAETANO

Programação de Computadores I Funções Básicas da Linguagem C PROFESSORA CINTIA CAETANO Programação de Computadores I Funções Básicas da Linguagem C PROFESSORA CINTIA CAETANO Função Printf() Sintaxe printf( expressão de controle, argumentos); É uma função padrão para exibir uma mensagem na

Leia mais

Aula 04. Agregados Homogêneos. Agregados Heterogêneos. Matrizes

Aula 04. Agregados Homogêneos. Agregados Heterogêneos. Matrizes Logo Aula 04 Agregados Homogêneos Matrizes Agregados Heterogêneos 2 Matriz Da mesma forma que as variáveis indexadas vetoriais, vistas anteriormente, as variáveis indexadas bidimensionais são utilizadas

Leia mais

Aula 4 Introdução ao C

Aula 4 Introdução ao C Considere o nosso MSC. O Processador Central, entende o conjunto de instruções, leia, imprima, atribuição e condicional e com ela resolvemos vários problemas, construindo vários algoritmos. As instruções

Leia mais

Exercícios: Vetores e Matrizes

Exercícios: Vetores e Matrizes Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Vetores e Matrizes 1 Vetores 1. Faça um programa que possua um vetor

Leia mais

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados TÉCNICAS DE PROGRAMAÇÃO Estrutura de dados O que são estrutura de dados? É a forma como os armazenamos tipos de dados, vistos dia a dia, ou seja, nada mais são do que a transformação de uma forma de armazenamento

Leia mais

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: ALGORITMOS

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: ALGORITMOS CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: ALGORITMOS PROFESSOR : Romilson Lopes Sampaio Introdução a Lógica de Programação

Leia mais

VETORES ADAPTADO DO MATERIAL DE PROF. L. A. ALVARES

VETORES ADAPTADO DO MATERIAL DE PROF. L. A. ALVARES VETORES ADAPTADO DO MATERIAL DE PROF. L. A. ALVARES SEJA O PROBLEMA: LER 30 VALORES E CALCULAR A MÉDIA ARITMÉTICA DOS MESMOS. Pergunta-se: Quantas variáveis serão necessárias para ler os 30 valores? 30?

Leia mais

Estruturas de Dados. Nem sempre, a manipulação de dados é feita por simples elementos...

Estruturas de Dados. Nem sempre, a manipulação de dados é feita por simples elementos... Estruturas de Dados Nem sempre, a manipulação de dados é feita por simples elementos... Vetores, Matrizes e Strings Programação de Computadores 1 de 27 Estruturas de Dados Estruturas de dados permitem

Leia mais

CCO 016 Fundamentos de Programação

CCO 016 Fundamentos de Programação CCO 016 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 09 Agregados Homogêneos Variáveis Indexadas Vetores EXEMPLO 1 Um programa deve calcular quem

Leia mais

4ª Lista de Exercícios de Programação I

4ª Lista de Exercícios de Programação I 4ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C. 1. Faça um algoritmo que leia 10 valores inteiros armazenando-os em um vetor e depois calcule a soma dos valores

Leia mais

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores 1- Faça um programa que preencha um vetor com seis elementos numéricos inteiros, calcule e mostre: a.

Leia mais

Introdução à Computação - Linguagem C: aula 06. Mauro Cesar Bernardes 04/Junho/2014

Introdução à Computação - Linguagem C: aula 06. Mauro Cesar Bernardes 04/Junho/2014 Introdução à Computação - Linguagem C: aula 06 Mauro Cesar Bernardes 04/Junho/2014 Agenda Passagem de parâmetros por valor e por referência Vetores e Matrizes Passagem de parâmetros por valor #include

Leia mais

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02 Programação 1 Atribuição, operadores aritméticos, entrada de dados Técnico em Eletrônica Semestre 5 02 Armazenando na memória tipo de variável #include #include main() { int ano; Declaração

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para

Leia mais

LÓGICA DE PROGRAMAÇÃO (C) VETORES E MATRIZES. Professor Carlos Muniz

LÓGICA DE PROGRAMAÇÃO (C) VETORES E MATRIZES. Professor Carlos Muniz Vetores são estruturas de dados que armazenam usualmente uma quantidade fixa de dados de um certo tipo; por esta razão, também são conhecidos como estruturas homogêneas de dados. Internamente, um vetor

Leia mais

SITUAÇÃO VETORES. Imagine o seguinte problema:

SITUAÇÃO VETORES. Imagine o seguinte problema: 13/08/2014 PROF. FABIANO TAGUCHI http://fabianotaguchi.wordpress.com ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO AULA 07 VETORES MATRIZES EXERCÍCIOS 1 SITUAÇÃO Imagine o seguinte problema: Crie um programa que

Leia mais

4ª Lista de Exercícios de Programação I

4ª Lista de Exercícios de Programação I 4ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C. 1. Faça um algoritmo que leia 10 valores inteiros armazenando-os em um vetor e depois calcule a soma dos valores

Leia mais

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Estruturas de Dados. Profa. Juliana Pinheiro Campos Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória

Leia mais

Exercícios Repetição

Exercícios Repetição Curso de Engenharia de Controle e Automação Disciplina: Informática para a Automação Professor: Marcelo Cendron Exercícios Repetição 1.1 8.3 Exercícios 1. Faça um programa utilizando o comando while, que

Leia mais

ESTRUTURAS COMPOSTAS VETOR

ESTRUTURAS COMPOSTAS VETOR ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR slides desenvolvidos pela Profa. Rosely Sanches ESTRUTURAS COMPOSTAS Pode-se organizar tipos simples em tipos mais complexos formando as ESTRUTURAS

Leia mais

Métodos Computacionais em Física

Métodos Computacionais em Física Métodos Computacionais em Física Tatiana G. Rappoport tgrappoport@if.ufrj.br 214-2 Variáveis indexadas (arrays) Diversos problemas requerem o uso de vetores ou matrizes: Um conjunto de dados do mesmo tipo

Leia mais

Vetores e Matrizes. Conceito. Conceito. Conceito. Conceito. Conceito. Variáveis Compostas Homogêneas. Matriz

Vetores e Matrizes. Conceito. Conceito. Conceito. Conceito. Conceito. Variáveis Compostas Homogêneas. Matriz Variáveis Compostas Homogêneas São conhecidas na linguagem C como matrizes. Vetores e es É um conjunto de variáveis do mesmo tipo, acessíveis com um único nome e armazenadas de forma contínua na memória.

Leia mais

Estruturas de Dados. Nem sempre, a manipulação de dados é feita por simples elementos... Vetores, Matrizes e Strings Introdução à Computação 1 de 27

Estruturas de Dados. Nem sempre, a manipulação de dados é feita por simples elementos... Vetores, Matrizes e Strings Introdução à Computação 1 de 27 Estruturas de Dados Nem sempre, a manipulação de dados é feita por simples elementos... Vetores, Matrizes e Strings Introdução à Computação 1 de 27 Estruturas de Dados Estruturas de dados permitem que

Leia mais

Introdução à Programação

Introdução à Programação Programação de Computadores Introdução à Programação Prof. Helton Fábio de Matos hfmatos@dcc.ufmg.br Agenda Algoritmo & Programa Variáveis Declaração de tipos Comando de entrada ou de leitura Comando de

Leia mais

ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza

ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR Baseado nos slides de Rosely Sanches e Simone Senger de Souza 2 ESTRUTURAS COMPOSTAS Pode-se organizar os dados dos tipos simples em tipos

Leia mais

1ª Lista de Exercícios

1ª Lista de Exercícios Universidade Federal do Rio de Janeiro Data: 26/04/05 Disciplina: Computação I 1ª Lista de Exercícios 1) Faça um programa, em pseudo-código, que peça ao usuário que informe n números reais e então calcule

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 8 Matrizes Profa. Marina Gomes marinagomes@unipampa.edu.br 30/05/2017 Engenharia de Computação - Unipampa 1 Matrizes As variáveis vetores declarados até o momento possuem

Leia mais

Prof. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68

Prof. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68 INE5231 Computação Científica I Prof. A. G. Silva 25 de abril de 2017 Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de 2017 1 / 68 Conteúdo programático O computador - [3 horas-aula] Representação

Leia mais

Tabela T1: Tags para comandos de impressão.

Tabela T1: Tags para comandos de impressão. O que é um nome? O que chamamos rosa não cheiraria igualmente doce em outro nome? W. Shakespeare. PRINTF O comando printf é capaz de imprimir uma mensagem na tela, bem como o comando puts, que além de

Leia mais

A sintaxe para se declarar uma variável do tipo ponteiro é dada por:

A sintaxe para se declarar uma variável do tipo ponteiro é dada por: Pense duas vezes e faça uma vez. Provérbio Chinês. PONTEIROS Um ponteiro nada mais é que uma variável capaz de armazenar um número hexadecimal que corresponde a um endereço de memória de outra variável.

Leia mais

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações

Leia mais

1) Operadores de auto incremento ++ e auto decremento --

1) Operadores de auto incremento ++ e auto decremento -- Aula 09 - Operadores de auto incremento e auto decremento, atribuição múltipla, atribuição na declaração, atribuição resumida e algumas regras de boa programação. 1) Operadores de auto incremento ++ e

Leia mais

Introdução a Programação de Jogos

Introdução a Programação de Jogos Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição

Leia mais

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C PROFESSOR : Romilson Lopes Sampaio STRINGS Não existe um tipo String em

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Linguagem C Controle do Fluxo de Execução. Lógica de Programação Linguagem C Controle do Fluxo de Execução Lógica de Programação Caro(a) aluno(a), Aqui começaremos a escrever os nossos primeiros programas em uma Linguagem de Programação. Divirta-se!!! Estrutura Seqüencial

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

Vetores são estruturas indexadas utilizadas para armazenar dados de um mesmo tipo: int, char, float ou double. Oexemploaseguirédeumvetordeinteiros:

Vetores são estruturas indexadas utilizadas para armazenar dados de um mesmo tipo: int, char, float ou double. Oexemploaseguirédeumvetordeinteiros: 18 Vetores Ronaldo F. Hashimoto e Carlos H. Morimoto Nessa aula vamos introduzir o tipo vetor. Aofinaldessaaulavocêdeverásaber: Descrever o que são vetores na linguagem C. Declarar vetores. Como acessar

Leia mais

Introdução a Linguagem C (Parte I) UFPA Sistemas de Informação. Roberto Araujo 2013

Introdução a Linguagem C (Parte I) UFPA Sistemas de Informação. Roberto Araujo 2013 Introdução a Linguagem C (Parte I) UFPA Sistemas de Informação Roberto Araujo 2013 Meu primeiro programa em C #include main() { printf( Primeiro Programa \n ); Biblioteca padrão Função principal

Leia mais

Estruturas Compostas Matriz

Estruturas Compostas Matriz Estruturas Compostas Matriz Profa. Dra. Elisa Yumi Nakagawa 1. Semestre de 2017 Slides inicialmente preparados pela Profa. Dra. Simone Souza 2 Introdução n Como armazenar um nome em um programa? n Uso

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

Variáveis Compostas Homogêneas Vetores

Variáveis Compostas Homogêneas Vetores Variáveis Compostas Homogêneas Vetores Lógica de Programação Prof. Kleber Rezende Considerações Iniciais Os vetores são variáveis estruturadas homogêneas capazes de armazenar uma série de informações de

Leia mais

Universidade Federal de Goiás Instituto de Informática Introdução à Computação Professor: Julliano Rosa Nascimento

Universidade Federal de Goiás Instituto de Informática Introdução à Computação Professor: Julliano Rosa Nascimento Universidade Federal de Goiás Instituto de Informática Introdução à Computação Professor: Julliano Rosa Nascimento Parte 1: Vetores Gabarito - Lista de Exercícios 5 Vetores e Matrizes 1) O que será impresso

Leia mais

Modulo 4: while do while (limites de variáveis)

Modulo 4: while do while (limites de variáveis) PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 4: while do while (limites de variáveis) Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro Até aqui apreendemos as estruturas: If e If...else Switch

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: estruturas de repetição While / Do While / For Prof. Renato Pimentel 1 Estruturas de repetição O real poder dos computadores está

Leia mais

EXERCÍCIO DE SONDAGEM SEMESTRE DATAS: 21/06/2016 (TURMAS 01 E 02) Matrícula Nome Nota

EXERCÍCIO DE SONDAGEM SEMESTRE DATAS: 21/06/2016 (TURMAS 01 E 02) Matrícula Nome Nota Professor de INTRODUÇÃO À PROGRAMAÇÃO Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Departamento de Sistemas e Computação Disciplina: Técnicas de Programação Prof.:

Leia mais

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental USP - ICMC - SSC SSC 0301-2o. Semestre 2013 Disciplina de Introdução à Computação para Engenharia Ambiental Prof. Dr. Fernando Santos Osório LRM - Laboratório de Robótica Móvel do ICMC / CROB-SC Email:

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação

Leia mais

Aula 16: Laços aninhados e desvios

Aula 16: Laços aninhados e desvios Aula 16: Laços aninhados e desvios Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Comandos de Repetição (Parte

Leia mais

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 5: Array. (complemento de dois) Aura - Erick

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 5: Array. (complemento de dois) Aura - Erick PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 5: Array (complemento de dois) Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro Vetores Matrizes Como são tratados os números negativos Operação

Leia mais

1 Resumo: Matrizes. 2.1 Como declarar uma matriz IME/USP. Departamento de Ciência da Computação

1 Resumo: Matrizes. 2.1 Como declarar uma matriz IME/USP. Departamento de Ciência da Computação Departamento de Ciência da Computação MAC2166 Introdução a Computação IME/USP Matrizes 1 Resumo: Matrizes são estruturas bi-dimensionais utilizadas para armazenar dados de um mesmo tipo. Para declarar

Leia mais

Lógica de Programação e Algoritmos

Lógica de Programação e Algoritmos Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Cap. 4 Estruturas de Dados Homogêneas Vetores e Matrizes Conteúdo: 4.1 Variáveis compostas homogêneas... 55 4.2 Vetores... 56 Exercícios

Leia mais

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende Sub Rotinas Estrutura de Dados Prof. Kleber Rezende Considerações Iniciais Uma dos métodos mais comuns e amplamente utilizados em programação de computadores é o Top-Down. Nesta abordagem um problema é

Leia mais

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP Programação de Computadores 1 Lista 2 Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP 0.1 Vetores e Cadeias de Caracteres 1. Codifique um programa que leia e armazene duas notas de 10 alunos e calcule

Leia mais

Instruções, dados e expressões

Instruções, dados e expressões Instruções, dados e expressões Marina Andretta ICMC-USP 1 de março de 2016 Marina Andretta (ICMC-USP) sme0230-ipc 1 de março de 2016 1 / 50 Dados Um computador manipula informações presentes em sua memória.

Leia mais

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes Computação 2 Aula 2 Vetores e Matrizes Profª. Fabiany fabianyl@utfpr.edu.br Vetores Vetor também é conhecido como variável composta homogênea unidimensional; Um vetor computacional é um variável composta

Leia mais

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1 Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação Lista de Exercícios 1 1. O programa seguinte tem vários erros em tempo de compilação. Encontre-os. Main() int a=1; b=2,

Leia mais

Módulo 7 Cadeias de Caracteres

Módulo 7 Cadeias de Caracteres Estruturas de Dados Módulo 7 Cadeias de Caracteres 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

Leia mais

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO Matrizes Prof. Alex Camargo alexcamargoweb@gmail.com Definição Matriz é uma variável composta homogênea multidimensional. Conjunto de

Leia mais

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU Aula 9 Oficina de Programação Strings Profa. Elaine Faria UFU - 2017 String Cadeia de caracteres (ou String) É uma seqüência de letras e símbolos, na qual os símbolos podem ser espaços em branco, dígitos

Leia mais

INF 1620 P1-13/09/02 Questão 1 Nome:

INF 1620 P1-13/09/02 Questão 1 Nome: INF 1620 P1-13/09/02 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$

Leia mais

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando

Leia mais