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á Curso: Programação de Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Dados Estruturados: Array Array - Definição! Vetor ou Array é a forma mais familiar de dados estruturados.! Um array é um conjunto de componentes do mesmo tipo, que podem ser acessados individualmente a partir de um único nome. 2

2 7.1 Array - Problema Dada uma relação de estudantes, imprimir o numero de matricula de cada estudante, cuja nota é maior do que a média da classe Array - Problema 1 o. Algoritmo Início algoritmo Leia(num1,nota1,num2,nota2,num3,nota3,num4, nota4,num,nota) media (nota1+nota2+nota3+nota4+nota) /. Se nota1 > media então escreva (num1) Se nota2 > media então escreva (num2) Se nota3 > media então escreva (num3) Se nota4 > media então escreva (num4) Se nota > media então escreva (num) Fim algoritmo 4

3 7.1 Array - Solução 1 1. Uma variável para cada número de matricula 1 variáveis 2. Uma variável para cada nota + 1 variáveis 3. 1 testes 7.1 Array - Definição " Como estes dados têm uma relação entre si, podemos declará-los com um nome ÚNICO para todos os 1 elementos. " Seja, por ex, um conjunto de 1 números = Lista Lista[] Lista[3] Lista[99] 6

4 7.1 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[2] Lista[3] + Lista[2] " Para somar todos os elementos da Lista: soma para i até 99 faça soma soma + Lista[i] 7 7.1Array - 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 8

5 Array - Solução 2 2 o. Algoritmo Início algoritmo Para i até 4 faça Leia(num[i],nota[i]) soma, Para i até 4 faça soma soma + nota[i] media soma/ Para i até 4 faça Se (nota[i] > media) então escrever (num[i]) Fim algoritmo Dados Estruturados: Declaraçã ção o de Vetores " 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: tipo nome_variavel[no. de elementos] Exemplo 1: int val[ ]; Cria um vetor de nome val, de tamanho e cujos elementos são do tipo int. val[] val[1] val[2] val[3] val[4] Os índices variam de até 4 1

6 7.1 Dados Estruturados: Declaraçã ção o de Vetores! Observações: 1) O acesso a cada elemento do vetor é feito através de uma indexação da variável val. 2) Em C, a indexação de um vetor varia de zero a n-1, onde n representa a dimensão do vetor. Assim: val [] # acessa o primeiro elemento de val val [1] # acessa o segundo elemento de val... val [4] # acessa o último elemento de v Mas: val[] # está ERRADO (invasão de memória) Dados Estruturados: Declaraçã ção o de Vetores Exemplo 2: 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 34.6 na primeira posição do vetor custo e o valor 6.7 na última posição: custo[] = 34.6; custo[49] = 6.7; Exemplo 4:Coloque no quarto elemento do vetor o dobro do valor do segundo elemento: custo[3] = 2* custo[1]; 12

7 7.1 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, 2, 6, 4, ; aqui foi declarado um vetor de inteiros com elementos e atribuído a ele os valores entre chaves ! val[] " O acesso e a modificação dos elementos do vetor é feito diretamente sobre a variável.!! val[1] val[2]! val[3]! val[4] Exemplo 6: val[1] = val[1] + 1; val[3] = val[1]+ val[3]; ! val[]!! val[1] val[2]! val[3]! val[4] 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[1] = 1,33,4; Neste caso os três primeiros elementos do vetor v3 (índices, 1 e 2) recebem os valores 1, 33 e 4 respectivamente. e todos os demais elementos recebem o valor ZERO Assim a declaração acima é equivalentes à: int v3[1] = 1,33,4,,,,,,,; 14

8 7.1 Dados Estruturados: Vetor - Problemas Programa 1: Criar um programa com um vetor de 1 inteiros tal que seus elementos são da forma v[i] = i+1. Imprimir o vetor. Programa 1 Usando vetores main() // incluir <stdio.h> e <stdlib.h> int i; int v[1]; // Colocando valores em v. for(i=; i < 1; i++) v[i] = i + 1; // Mostra os elementos de v -> v[i]. for(i=; i < 1; i++) printf( %d ", v[i]); puts( ); // Mostra os indices i de v[i]. for(i=; i < 1; i++) printf( v[%d] ", i+1); // fim programa 1 2 v[] v[1] V [ i ] = i + 1; 9 v[8] 1 v[9] printf( %d,v[i]); printf( v[%d],i+1); Dados Estruturados: Vetor - Problemas Programa 2 : Fazer um programa que leia um conjunto de 1 elementos numéricos,a partir do teclado, armazene-os na variável A e depois os imprima. #include <stdlib.h> #include <stdio.h> main() int A[1]; int I; // inicio printf("digite os 1 elementos do vetor; sendo um em cada linha\n"); for (I=; I< 1;I++)// ler o vetor scanf("%d",&a[i]); printf("vetor lido\n"); for (I=; I<1;I++) // imprimir vetor printf("a[%d] = %d\n", I, A[I]); system("pause"); 16

9 7.1 Dados Estruturados: Vetor - Problemas Programa 2 Exemplo de Execução Dados Estruturados: Vetor - Problemas Programa 3: Criar um programa que armazene em um vetor os 1 primeiros termos da seqüência de Fibonacci. Imprimir o vetor. F(n)=F(n-1)+F(n-2) onde: n=,1,2, 3,... e F() = F(1) = 1 Espiral de Fibonacci E I Programa 3 Fibonacci main() // incluir <stdio.h> e <stdlib.h> int i; int v[1]; v[1] = v[] = 1; // Colocando valores em v. for(i=2; i < 1; i++) v[i] = v[i-1] + v[i-2]; // Mostra os elementos de v -> v[i]. for(i=; i < 1; i++) printf( %d ", v[i]); puts( ); // Mostra os indices i de v[i]. for(i=; i < 1; i++) printf( v[%d] ", i+1); // fim programa I E 18

10 7.1 Dados Estruturados: Vetor - Problemas Programa 4 : 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 1. Ler e armazenar notas. 2. 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 //Programa 4 Notas Maiores main() // incluir <stdio.h> e <stdlib.h> int i; float v[], media =.; // Colocar valores em v. for(i=; i < ; i++) printf( Insira Nota %d:,i+1); 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+1,v[i]); 19 // fim programa 7.1 Dados Estruturados: Vetor - Problemas Programa 4 Exemplo de Execução 2

11 7.1 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 4 elementos (4 alunos), é preciso alterar todas as ocorrências do número pelo número 4. " 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 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 main(). Pode-se então, reescrever o programa 3, usando constantes. 22

12 7.1 Vetor - Constantes - Uso do comando #define //Problema 3 Notas Maiores #include <stdio.h> #define n //sem ponto e virgula main() int i; float v[n], media =.; // Colocar valores em v. for(i=; i < n; i++) printf( Insira Nota %d:,i+1); 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+1,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 igual a Vetor- Constantes - Uso do comando const 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 #include <stdio.h> main() const int n = ; int i; float v[n], media =.; // Colocar valores em v. for(i=; i < n; i++) printf( Insira Nota %d:,i+1); 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+1,v[i]); // fim programa 24

13 7.1 Vetor Constantes - Problemas Problema 4: 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. #include <stdio.h> #include <stdio.h> main() const int mes = 12; float sal[mes+1]; /* 12 meses */ float total; int i; for (i=1; 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=1, total=. ; i<=mes ; i++) // inicio for printf(" %3d %9.2f\n",i,sal[i]); total+=sal[i]; //fim for printf("total Anual: %9.2f\n",total); system( pause ); OBS: Neste exemplo, desconsiderouse a posição zero do vetor Vetor Relembrando Os elementos de um vetor que foi declarado sem qualquer valor inicial contêm valores aleatórios. 2. 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]. 26

14 7.1 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

15 7.1 Vetor Problemas: Problema Idéia do Programa Posição Elemento 1) Criar um vetor v de 12 elementos e associar o Mês 1 v[] kwh 824 consumo em KWh do 2 v[1] 112 mês (i) com a posição (i-1). Ou seja: v[ i -1 ] consumo em kwh no mês i v[2] v[11] Associar posição i com o (i+1) mês Vetor Problemas: Problema Idéia do programa 2) 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[1] v[2] v[11] maior = v[] = 824 maior > v[1]? não, então: maior = v[1] = 112 maior > v[2]? não, então: maior = v[2] = 1236 E assim por diante. 3

16 7.1 Vetor Problemas: Problema 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 Vetor - Problemas Problema Consumo Energia #include <stdio.h> main() const int n = 12; 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+1); 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=1; i < n; i++) if (v[i] > maior) maior = v[i]; imaior = i; // Laço encontra índice e menor valor. for(i=1; 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+1); printf( Menor Valor = %f no mes %d \n", v[imenor], imenor+1); printf( Valor medio = %f \n,media); // fim programa 32

17 7.1 Vetor - Problemas Problema Exemplo de Execução 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 1 1: [][][][][][][][][][] Face 2 12: [][][][][][][][][][][][] Face 3 8: [][][][][][][][] Face 4 1: [][][][][][][][][][] Face 11: [][][][][][][][][][][] Face 6 9: [][][][][][][][][] 34

18 7.1 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. Posição Face 1 v[] 2 v[1] Elemento # Sorteio Então: v[] vai guardar o no. de vezes que a face 1 foi sorteada. v[1] vai guardar o no. de vezes que a face 2 foi sorteada e assim por diante. Então: v[ i -1 ] no.de vezes que a face i foi sorteada. 3 v[2] 4 v[3] v[4] 6 v[] Associa a posição i com a face (i+1) Vetor Problemas Problema 6 Idéia do programa lançamentos fr[] fr[1] fr[2] fr[3] fr[4] fr[] Vetor do número de ocorrências de uma face para 6 lançamentos. 36

19 7.1 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. Idéia do programa Gerador linear congruencial S n+1 = (S n *a + b) mod m onde: é uma boa estratégia usar m, a e b números primos. S é a semente S n+1 será o número aleatório gerado. Uma boa escolha para m, a e b S n+1 = (S n * ) mod m Vetor Problemas Problema 6 Como gerar valores aleatórios em C? srand(time()) s = rand( ) Fornece semente S Fornece S n+1 Os números gerados por rand( ) estão no intervalo [, RAND_MAX], onde: RAND_MAX = Então para gerar valores aleatórios entre [ e ], tem-se Para gerar números inteiros no intervalo [a, b-1] usa-se o operador % (resto inteiro da divisão): s = (rand() % b) + a. 38

20 7.1 Vetor Problemas Problema 6 O operador % funciona de acordo com o exemplo abaixo: % 6 = 6 % 6 = Ou seja, operações com % funcionam como se tivéssemos um relógio: 1 1 % 6 = 1 2 % 6 = 2 3 % 6 = 3 4 % 6 = 4 % 6 = 7 % 6 = 1 8 % 6 = 2 9 % 6 = 3 1 % 6 = 4 11 % 6 = Por esse motivo, as operações com o operador % são chamadas de aritmética modular ou ainda aritmética do relógio Vetor Problemas Problema 6 Problema 6 6 lançamentos #include <stdio.h> #include <time.h> #include <stdlib.h> const int lanc = 6; main() 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 %2d-%2d:,i+1,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 4

21 7.1 Vetor - Problemas Problema 6 Exemplo de Execução 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 1 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. 42

22 7.1 Vetor - Problemas Idéia do programa 1) Criar um vetor notas de dimensão m, onde vn[] vai guardar a nota do 1º. aluno; vn[1] a nota do segundo aluno e assim por diante vn[] vn[1] vn[2] vn[m] 2) 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[1] 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 1 no vetor vc[], para cada conceito B encontrado, somar mais 1 em vc[1] e assim por diante Vetor - Problemas Idéia do programa 9 vn[i] 1 7 vn[i] < 9 vn[i] < 7 3 vn[i] < vn[i] < 3 A B C D E vc[] vc[1] vc[2] vc[3] vc[4] 44

23 7.1 Vetor Problemas: Problema 7 Problema 7 Conceito x Notas #include <stdio.h> main() const int m = 1; 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+1); 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[1]++; else if (vn[i] >=.) vc[2]++; else if (vn[i] >= 3.) vc[3]++; else vc[4]++; // Mostrar percentual cada conceito. for(i=; i < ; i++) // Mostrando percentuais. tmp = (float float(vc[i])*1)/num; printf( Conceito%d=%f \n", i, tmp); // fim programa Vetor - Problemas Problema 7 Exemplo de Execução 46

24 7.1 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 1 2.%: [][] Conceito 2 2.%: [][] Conceito 3 2.%: [][] Conceito 4 3.%: [][][] Conceito 1.%: [] Número de ocorrências de notas dentro de cada conceito Vetor - Problemas Problema 8 Histograma #include <stdio.h> main() const int m = 1; 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+1); 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[1]++; else if (vn[i] >=.) vc[2]++; else if (vn[i] >= 3.) vc[3]++; else vc[4]++; // Mostrar percentual cada conceito. for(i=; i < ; i++) // Mostrando percentuais. tmp = (float(vc[i])*1)/num; printf( \n Conceito %d=%f",i+1,tmp); // Impressão do Histograma! for(j=; j < vc[i] ;j++) printf( [] ); // fim programa 48

25 7.1 Vetor - Problemas Problema Exemplo de Execução 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.

26 7.1 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 >1 troca < 91 não troca 91 > 9 troca > troca > troca > 1 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 1>46? não troca 46>9? não troca 9 > 62 não troca 62>76? não troca 76>1? Troca >91? não troca >46? não troca 46>9? não troca 9 > 1 troca >62? não troca 62>76? não troca >46? não troca 46>1? troca 46>9 não troca 9>62 não troca

27 7.1 Vetor Problemas Ordenação de Vetores " Observe, no nosso exemplo, que os maiores elementos do vetor estão sendo colocados ocupando nas últimas posições >1? troca 46>9? não troca 9 > 62 não troca 62>76? não troca 76>1? Troca >46? não troca 46<9? não troca Vetor - Problemas Problema 9 Bubble Sort #include <stdio.h> #include <time.h> const int n = 1; main() int i, j, tmp, v[n]; // Geração aleatória dos elementos de v entre [,n-1] // 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( [%2d],v[i]); // Laços encadeados que realizam a // ordenação segundo o algoritmo do // Bubble Sort. Problema 9 Bubble Sort for(i=; i < n-1; i++) for (j=; j < n-i-1;j++) if (v[j] > v[j+1]) tmp = v[j]; v[j] = v[j+1]; v[j+1] = tmp; // Mostrar vetor ordenado. printf( \n v = ); for(i=; i < n; i++) printf( [%2d],v[i]); // fim programa 4

28 7.1 Vetor - Problemas Problema 9 Exemplo de Execução 7.1 Vetor - Problemas Problema 1: 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 ( -1) é 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]=2*i de tamanho 14 e verificar o funcionamento de (i) e (ii) para chaves digitadas. 6

29 7.1 Vetor - Problemas Problema 1 Pesquisa Linear #include <stdio.h> const int n = 14; main() 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] = 2*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 1 Pesquisa Linear // Laços encadeados: Pesquisa Linear. ind = -1; 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 == -1) printf( Chave nao encontrada!\n ); else printf( Chave no indice: %d \n,ind); // fim programa Vetor Problemas Problema 1 Pesquisa Linear Problema 1 Exemplos de Execução Chave < v[] Chave = v[] Chave [,26] mas Chave = v[13] Chave > v[13] 8

30 7.1 Vetor Problemas Problema 11 Pesquisa Binária Idéia da Pesquisa Binária (supõe vetor ordenado!) 1) Faça a= primeiro índice do vetor. 2) Faça b=último índice do vetor. 3) Calcule o índice k do meio do vetor: k=(a+b)/2 4) Verifique se chave < v[k] Então a chave se encontra entre os elementos v[] e v[k]. Faça b=k-1, 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 11 Pesquisa Binária Idéia da Pesquisa Binária (supõe vetor ordenado!) EX: Seja chave = 1 a= v[] v[1] k=2 v[2] v[3] b=4 v[4] a=3 b=4 a=; b=4 k = (a+b)/2 = 2 Se (chave>v[k]) então o novo intervalo é a=k+1=3 e b=4; senão o novo intervalo é b=k-1=1 e a= Se (chave= v[k]) então encontrou o valor. A chave está na posição k Novo intervalo k = (a+b)/2 = 3. chave = v[3], então a chave está na posição 3 do vetor 6

31 7.1 Vetor Problemas: Problema 11 Pesquisa Binária Quadro resumo dos casos para Pesquisa Binária Caso Condição Ações Imagem 1 chave < v[k] b =k 1; k = (a+b)/2; 2 chave = v[k] Retornar k 3 chave > v[k] a = k + 1; k = (a+b)/2; 4 b < a Retornar Vetor Problemas Problema 11 Pesquisa Binária Problema 11 Pesquisa Binária #include <stdio.h> const int n = 14; main() 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] = 2*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-1; ind = -1; Problema 11 Pesquisa Binária // Laços encadeados: Pesquisa Binária. while(a <= b) // Enquanto!= Caso4 k = (a+b)/2; 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 2. ind = k; break; else if (chave < v[k]) // Caso 1. b = k 1; else // Caso 3. a = k + 1; // Fim do while. if (ind == -1) printf( Sem Chave\n ); else printf( Chave - indice:%d\n,ind); // fim programa 62

32 7.1 Vetor Problemas Problema 11 Pesquisa Binária Vetor Problemas Problema 12: 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 numero de matricula desses alunos. É dado o número de alunos matriculados em cada disciplina, bem como seus números de matricula. //Programa Simultaneo #include <stdlib.h> #include <stdio.h> main() int PC[1], CN[22], matrisimult[1]; int NCN,NPC,i, j, k; continua... 64

33 7.1 Vetor Problemas Problema 12: Continuação... //leitura de dados printf("digite o numero de alunos cursando PC "); scanf("%d",&npc); for(i=1; 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=1; while (i <= NCN) printf("digite o no. de matric do aluno %d, em CN ", i); scanf("%d",&cn[i]); i= i+1; Vetor Problemas Problema 12: continuação... //Verificação dos alunos que estão com matrícula simultânea k= ; for( i= 1;i<= NPC;i++) for (j=1; j<= NCN; j++) if (PC[i]==CN[j]) k= k+1; matrisimult[k]= PC[i]; // Escrever o vetor de matricula simultânea printf ("vetor de matricula simultanea\n"); for (j= 1; j<= k; j++) printf(" aluno no. %d \n",matrisimult[j]); system("pause"); 66

34 7.1 Vetor Problemas Problema 13: Fazer um programa em C para ler um vetor A de dimensão N e calcular um vetor B da seguinte maneira: B [1] $ 1 * A [1] B [2] $ 2 * A [2] B [3] $ 3 * A [3] B [4] $ 4 * A [4]... B [N] $ N * A [N] Em seguida calcular a soma dos elementos de B e imprimir o vetor B Vetor Problemas #include <stdlib.h> // Problema 13 #include <stdio.h> main() int a[1], b[1], n, i, soma_b; //ler o vetor A printf("quantos elementos tem o seu vetor?"); scanf("%d",&n); for (i=1; i<=n; i++) printf("digite o elemento %d do vetor A ", i); scanf("%d", &a[i]); // Gerar o vetor B e for (i=1; i<=n; i++) b[i]= i*a[i]; 68

35 7.1 Vetor Problemas //Continuação... Problema 13 // calcular a soma de b soma_b =; for (i=1; i<=n; i++) soma_b= soma_b + b[i]; // imprimir b printf("\n\tvetor B \n"); for (i=1; i<=n; i++) printf("\tb[%d] = %d\n", i,b[i]); printf("\n\tsoma de B = %d\n\n", soma_b); system("pause"); 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 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 Texto cifrado W F O J W J E J W J D J 7

36 7.1 Vetor - Problemas Problema 14 Tabela ASCII #include <stdio.h> main() int i; // Laço para construir a Tabela ASCII. printf( Tabela ASCII: \n ); printf( int -> char \n ); // A tabela possui 2^8 valores, pois // char é um tipo de 1 byte (8 bits). for(i=; i < 2; i++) printf( %4d -> %c \n, i, char(i)); E se imprimir usando (i+1) % 26? e (i+2)%26? O que ocorre? Vetor - Problemas (i+1) % 26 Deslocamento do alfabeto (i+2) % 26 72

37 7.1 Vetor - Problemas // Inicialização. char tmp, texto[1]; // Ler até encontrar.. i = ; while (i < 1) tmp = getche(); if (tmp == '.') break; else texto[i] = tmp; i++; // Guardar tamanho da msg. n = i; texto[] texto[1] texto[1] Mensagem Secreta. M e a texto[] texto[1] texto[16] n= Vetor - Problemas // Inicialização char tmp, texto[1]; // Ler até.. Não ler backspace. i = ; while (i < 1) tmp = getche(); if (tmp == '.') break; if (int(tmp)!= 8) texto[i] = tmp; i++; else i--; // Guardar tamanho da msg. n = i; Corresponde ao caractere backspace na Tabela ASCII. Mr ensagem Secreta. Mensagem Secreta M texto[] e texto[1] a texto[16] 74

38 7.1 Vetor - Problemas Problema 14 Criptografia #include <stdio.h> #include <conio.h> main() int i, n; char tmp, texto[1]; // Armazenando a mensagem. printf( Entre com a mensagem: ); i=; while (i < 1) tmp = getche(); // Termina o laço. if (tmp ==. ) break; // Se não for backspace, guarde. if (int(tmp)!= 8) texto[i] = tmp; i = i + 1; else i--; //Backspace: elimina ant. Problema14 Criptografia n = i; // Tamanho do vetor em n. // Codificando a mensagem. for(i=; i < n; i++) texto[i] = (texto[i]+1)%26; // Mostrando a mensagem //codificada. printf( \n Mensagem Codificada:\n ); for (i=; i < n; i++) printf( %c,texto[i]); printf( \n ); // fim programa Vetor - Problemas 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

39 7.1 Vetor - Problemas Problema 1: 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[1], tmp; char senha[1] = Secreta ; // Ler até encontrar o enter ( ). i = ; while( i < 1 ) tmp = getch(); // Se digitou, pare leitura. if (int(tmp) == 13) 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! 78

40 7.1 Vetor - Problemas // Ler até encontrar. i = ; while( i < 1 ) tmp = getch(); // Se digitou, pare leitura. if (int(tmp) == 13) 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 Vetor - Problemas verif = 1; // 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 1: texto S e c r e t a senha S e c r e t a i Caso 2: texto senha S S e e g c r r e e d t texto[2]!= senha[2] o a 8

41 7.1 Vetor - Problemas Problema 1 Senha #include <stdio.h> #include <conio.h> main() int i, verif, nt, ns = 7; char tmp, texto[1]; char senha[1]="secreta"; // Armazenando a senha digitada. printf("digite a senha "); i=; while (i < 1) tmp = getch(); // Termina o laço se for?. if (int(tmp) == 13) break; else if (int(tmp)!= 8) //??. printf("*"); texto[i] = tmp; i++; else putchar('*'); putchar(' '); putchar(char(8)); i--; //? //fim laço Problema 1 Senha nt = i; // Tamanho digitada em nt. verif = 1; // 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 Vetor - Problemas 82

42 7.2 Dados Estruturados: Matrizes 7.2 Matrizes Dados Estruturados: Matrizes Matrizes - Definição " 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 2 dimensões; 84

43 7.2 Dados Estruturados: Matrizes Matrizes - Definição " Ex.: Uma matriz chamada MAT que tenha m elementos (horizontal) e n elementos (vertical) m n-1... * Mat[2][3] Dados Estruturados: Matrizes Matrizes ou Array bidimesionais são estruturas de dados que organizam informações; de mesmo tipo e mesmo nome; em tabelas. 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. 86

44 7.2 Dados Estruturados: Matrizes Declaração e Atribuição de Matrizes Declaração int a[ 3 ][ 2 ]; " 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 1 ][dim 2 ][dim 3 ]... [dim n ] Dados Estruturados: Matrizes Ex: Declaração de uma matriz de inteiro de dimensão 3x2. main() int mat[3][2]; //3 linhas, cada uma delas com 2 posições Linha Linha 1 Linha 2 Coluna mat[][] mat[1][] mat[2][] Coluna 1 mat[][1] mat[1][1] mat[2][1] 88

45 7.2 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 ][ 2 ] = 1, 1, 2, 2, 3, 3; Neste exemplo, o vetor tem 3 linha e duas colunas, logo está sendo feita a seguinte atribuição: a[][]=1 a[1][]=2 a[2][]=3 a[][1]]=1 a[1][1]=2 a[2][1]=3 Observe que os dois primeiros números da chave estão sendo atribuídos a 1ª. 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 ][ 2 ] = 1, 1, 2, 2, 3, 3 ; Vetor de tamanho 2x1 Observe que agora existe uma separação por linhas, sendo: 1,1 relativa a 1ª. linha; 2,2 relativa a 2ª. 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 2 inteiros) a[i] É um vetor de 2 inteiro a[i][j] É um inteiro que está colocado na posição i, j do vetor a 9

46 7.2 Dados Estruturados: Matrizes Acesso e Modificação de valores de uma Matriz Matriz Inicial Operações Matriz Final 1 1 a[][1]=a[][1] a[1][]=a[][1]+1 a[2][]=a[2][]*a[1][] Dados Estruturados: Matrizes Problema 1: Criar programa com uma matriz 3 x 3 de inteiros cujos elementos são da forma a[i][j] = i + j + 1. Imprimir a matriz. # include <stdio.h> # include <stdio.h> main() 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 + 1; // 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 + 1; a[][] a[][1] a[][2] a[1][] a[1][1] a[1][2] 3 4 a[2][] a[2][1] a[2][2] 92

47 7.2 Matrizes - Problemas Problema 2: 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-1 ][ j-1 ]+a[ i-1 ][ j ] a[1][1] a[][] a[][1] Matrizes - Problemas Para gerar o triângulo basta seguir os seguintes passos: Passo 1: 1 2 Passo 2: 1 2 Construir uma matriz nxn de zeros 1 2 Preencher a primeira coluna com Passo 3: 1 2 Obter os demais elementos utilizando: a[i][j] = a[ i-1 ][ j-1 ]+a[ i-1 ][ j ]

48 7.2 Matrizes Problemas : Problema 2 Pascal Problema 2 Pascal #include <stdio.h> const int n = 1; main() int i, j, a[n][n]; // Inicializando os elementos de a. // Passos 1 e 2. for (i=; i < n; i++) for (j=; j < n; j++) if (j == ) a[i][j] = 1; else a[i][j] = ; // Demais elementos de a. Passo 3. for (i=1; i < n; i++) for (j=1; j <= i; j++) a[i][j] = a[i-1][j-1]+a[i-1][j]; Problema 2 Continuação // Mostrando os elementos de a. for (i=; i < n; i++) for (j=; j < n; j++) printf( %4d,a[i][j]); printf( \n ); // fim programa 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 4 notas bimestrais de um aluno. Supondo que o 1, 2, 3 e 4 bimestre possuem pesos 1, 2, 1 e 2, respectivamente, calcular e mostrar a média de cada aluno. Idéia do Programa Matriz alunos x notas Vetor pesos B1 B2 B3 B4 P1 1 Vetor médias Aluno P2 2 * = P3 1 M1.8 Aluno m P4 2 Mm 6. 96

49 7.2 Matrizes - Problemas Como multiplicar uma matriz por um vetor? a 11 a 12 a 1n v 11 = r 11 a 21 a 22 a 2n v 21 r 21 a m1 a m2 a mn v n1 r m1 Matriz m x n Vetor m x 1 Vetor n x Matrizes - Problemas Como é calculado o i-ésimo elemento do vetor r? r i1 = a i1 a i2 a in v 11 v 21 Primeiro laço Segundo laço v n1 n i1 = ikvk1 i = 1,..., m k = 1 r a 98

50 7.2 Matrizes - Problemas Problema 3 Notas #include <stdio.h> // Supondo uma classe com 1 alunos. const int m = 1; main() int i, j, k; float soma; float a[m][4], r[m], p[4] = 1,2,1,2; // Armazenando as notas. for (i=; i < m; i++) printf( Aluno %d:, i+1); for (j=; j < 4; j++) printf( \n Nota %d:,j+1); 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 < 4; 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( %4d %4.2f \n,i+1,r[i]); // fim programa Matrizes - Problemas Problema 4: 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 4 tipos de culturas: milho, soja, feijão e arroz. Os dados de 1 ano são registrados em uma matriz A. Construir um programa que realize as seguintes tarefas: (1) Ler os dados de produção de cada cultura em cada uma das regiões da fazenda. (2) Calcular a produção de grãos de cada região. (3) Calcular a produção de grãos de cada cultura. (4) Calcular o total de grãos produzidos pela fazenda. 1

51 7.2 Matrizes Problemas Resolvidos Idéia do Programa Milho Soja Feijão Arroz Uma matriz 3x4 para os dados Região 1 Região 2 Região Milho Soja Feijão Arroz Total região Região Região Região Total cultura Matrizes Problemas Resolvidos Problema 4 Fazenda #include <stdio.h> const int m = 3; const int n = 4; main() 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+1); for (j=; j < n; j++) printf( \n Cultura %d:,j+1); 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: %4f\n,i+1,r[i]); Problema 4 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: %4f\n,j+1,c[j]); // fim programa 12

52 7.2 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 1% Entre 6% e 8% Valor Entre 4% e 6% 3 Entre 2% e 4% 2 Entre % e 2% 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. 14

53 7.2 Matrizes Problemas Resolvidos Ano de 27 Ano de 26 Matriz de variação da cobertura vegetal = No caso acima pode-se dizer que o desmatamento entre 26 e 27 foi da ordem de 4 unidades. - 4 unidades 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: = Matriz A Matriz B - 4 unidades 16

54 7.2 Matrizes Problemas Problema Desmatamento #include <stdio.h> const int m = 4; const int n = 4; main() int i, j, soma, c[m][n]; int a[m][n] =,,,,,,4,4,,4,2,2, 4,3,2,1; int b[m][n] =,,,,,,4,,,4,3,3, 4,4,2,1; // 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( %4d,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 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: (1) A ganhou, (2) 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 18

55 7.2 Matrizes Problemas Resolvidos Requisito (i): Movimentos alternados de A e B. Requisito (iii): Identificar empate. Variável contadora de jogadas válidas: cont. 4 x x 6 o o o x 8 7 x x o if (cont%2 == ) // Movimento de A else // Movimento de B if (cont == 9) // Empate! Matrizes Problemas Resolvidos Requisito (iv): Representação das jogadas. Requisito (ii): Se a jogada pode ser realizada. Matriz de caracteres 1 Coordenadas: 1 Coluna Coordenadas: 1 Caractere. if (m[i][j] ==. ) Pode fazer jogada Linha Linha 1 Linha 2 1 Coluna 1 Coluna 2. x. o

56 7.2 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[1][] == X && m[2][] == X ) Matrizes Problemas Resolvidos Problema 6 Jogo da Velha Algoritmo Simples // Algoritmo Simples do Jogo da Velha. Passo 1: Criar matriz m de caracteres 3 x 3 cujos elementos são.. Passo 2: Mostrar estado atual da matriz. Passo 3: Enquanto (True) faça Passo 3.1: Verificar se jogador A fez jogada vencedora. Se sim, pare. O jogador A venceu. Passo 3.2: 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.4: 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.4.1: Se (jogada de A) preencher a casa com a marca de x. Senão preencher a casa com a marca o. Passo 3.4.2: Incrementar uma variável contadora de jogadas. 112

57 7.2 Matrizes Problemas Resolvidos Problema 6 Jogo da Velha #include <stdio.h> #include <stdlib.h> main() char m[3][3]; int i, j, cont =; const int TRUE = 1; const char O = 'o', X = 'x'; printf("digite lin col \n"); // Inicializando a matriz m com.. for (i=1; i <= 3; i++) for (j=1; j <=3; j++) m[i][j] = '.'; while (TRUE) // Laço infinito. // Mostrando a matriz m. for (i=1; i <= 3; i++) for (j=1; j <= 3; j++) printf(" %c ",m[i][j]); printf("\n"); Problema 6 Jogo da Velha // Verificando se o jogador A ganhou. if ((m[1][1]==x && m[1][2]==x && m[1][3]==x) (m[2][1]==x && m[2][2]==x && m[2][3]==x) (m[1][1]==x && m[2][1]==x && m[3][1]==x) (m[1][2]==x && m[2][2]==x && m[3][2]==x) (m[1][3]==x && m[2][3]==x && m[3][3]==x) (m[3][1]==x && m[2][2]==x && m[1][3]==x) (m[1][1]==x && m[2][2]==x && m[3][3]==x) ) printf("jogador A ganhou!!! \n"); break; // Verificando se o jogador B ganhou. if ((m[1][1]==o && m[1][2]==o && m[1][3]==o) (m[2][1]==o && m[2][2]==o && m[2][3]==o) (m[3][1]==o && m[3][2]==o && m[3][3]==o) (m[1][1]==o && m[2][1]==o && m[3][1]==o) (m[1][2]==o && m[2][2]==o && m[3][2]==o) (m[1][3]==o && m[2][3]==o && m[3][3]==o) (m[1][1]==o && m[2][2]==o && m[3][3]==o) (m[1][3]==o && m[2][2]==o && m[3][1]==o) ) printf("jogador B ganhou!!! \n\n"); break; 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",&i,&j); if (m[i][j] == '.') // Verifica se Casa está livre? if (cont % 2 == ) // O jogador A é quem jogou. m[i][j] = X; else // O jogador B é quem jogou. m[i][j] = O; // Contado o n. de jogadas. cont++; // Fim if que verifica casa livre. // Fim do while. 114

58 7.2 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 2 possíveis situações: (1) A ganhou, (2) B ganhou. (iv) Construir um tabuleiro que permita a representação das jogadas tal como dado abaixo. Barra de sabão Jogada de A Jogada de B Matrizes Problemas Resolvidos Requisito (iv): Representação das jogadas. Requisito (ii): Se a jogada pode ser realizada. Matriz de caracteres 1 Coordenadas: 1 Coluna Coordenadas: 1 Caractere. if (m[i][j] ==. ) Pode fazer jogada Linha Linha 1 Linha 2 1 Coluna 1 Coluna 2. x x. x x. x x 116

59 7.2 Matrizes Problemas Resolvidos Problema 7 Yucky Choccy #include <stdio.h> main() const int m = 4; 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 (1) // 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%2 == ) 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 % 2 == ) // 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++; 117 // Modificar elementos da matriz A para x. 7.2 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. 118

60 7.2 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 1. Cada sub área pode fornecer uma quantidade de insumos (Tabela 1), e cada insumo tem um valor (Tabela 2). Construir um programa que calcula o lucro que pode ser obtido em cada sub-área. Figura 1 Solo Tabela 1 G QAV Nafta Tabela 2 Insumo Valor G QAV Nafta Matrizes Problemas Resolvidos Passo 1: Passo 2: Se área = 1: Indíce da linha: *

61 7.2 Matrizes Problemas Resolvidos Problema 8 Petróleo #include <stdio.h> const int m = 3; const int n = 4; main() int i, j, k; float s, C[m][n], v[m] = 4.12, 8.74, 3.78; int A[m][n] = 1,1,2,2, 1,2,3,2, 1,3,3,3; float B[m][m] = 17.4, 4.3, 2.1, 6.1, 12.3, 8.2, 2.1,.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]-1][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.2f],C[i][j]); printf( \n ); Problema 8 Petróleo // fim programa Matrizes Problemas Resolvidos Resultado da Execução

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

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

17 - Funções e Procedimentos em C Programação Modular

17 - Funções e Procedimentos em C Programação Modular 17 - Funções e Procedimentos em C Programação Modular Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 17

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

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1: Inteligência É a faculdade de criar objetos artificiais, especialmente ferramentas para fazer ferramentas. Henri Bergson. WHILE Além dos comandos if-else e switch, o controle de fluxo de um programa pode

Leia mais

20 Caracteres - Tipo char

20 Caracteres - Tipo char 0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,

Leia mais

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes Sistemas Operacionais e Introdução à Programação Vetores e matrizes 1 Matrizes Cada elemento de uma matriz é referenciado indicando-se sua posição dentro da matriz. Na Matemática, matrizes são arranjos

Leia mais

Algoritmos de Busca em Tabelas

Algoritmos de Busca em Tabelas Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados

Leia mais

Curso de Programação Computadores

Curso de Programação Computadores 3 O Primeiro Programa em C Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 3 O Primeiro Programa em C 3.1 - Introdução Depois dos conceitos

Leia mais

MC-102 Aula 17 Strings e Matrizes

MC-102 Aula 17 Strings e Matrizes MC-102 Aula 17 Strings e Matrizes Instituto de Computação Unicamp 5 de Maio de 2015 Roteiro 1 Strings Strings: Exemplos 2 Matrizes Exemplos com Matrizes 3 Exercícios (Instituto de Computação Unicamp) MC-102

Leia mais

Lista de Exercícios. Vetores

Lista de Exercícios. Vetores Lista de Exercícios Vetores LINGUAGEM DE PROGRAMAÇÃO PROF. EDUARDO SILVESTRI. WWW.EDUARDOSILVESTRI.COM.BR ATUALIZADO EM: 13/03/2007 Página 1/1 1. Faça um programa que crie um vetor de inteiros de 50 posições

Leia mais

A4 Projeto Integrador e Lista de Jogos

A4 Projeto Integrador e Lista de Jogos A4 Projeto Integrador e Lista de Jogos 1ª ETAPA PROJETO INTEGRADOR (2 pontos na A4) Como discutido em sala de aula, a disciplina de algoritmos I também fará parte do projeto integrador, para cada grupo

Leia mais

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em

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á 7. Dados Estruturados: Array Array - Definição Vetor ou Array é a forma mais familiar de dados estruturados. Curso: Programação

Leia mais

Capítulo 2: Introdução à Linguagem C

Capítulo 2: Introdução à Linguagem C Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso

Leia mais

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos Vetores Nos capítulos anteriores estudamos as opções disponíveis na linguagem C para representar: Números inteiros em diversos intervalos. Números fracionários com várias alternativas de precisão e magnitude.

Leia mais

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05 IFTO LÓGICA DE PROGRAMAÇÃO AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos http://manoelcampos.com

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo da Matéria de Linguagem de Programação. Linguagem C Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis

Leia mais

INF 1005 Programação I

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

Leia mais

Exercícios de Fixação Pseudocódigo e Estruturas Básicas de Controle

Exercícios de Fixação Pseudocódigo e Estruturas Básicas de Controle Disciplina: TCC-00.7 Prog. de Computadores III Professor: Leandro Augusto Frata Fernandes Turma: A- Data: / / Exercícios de Fixação Pseudocódigo e Estruturas Básicas de Controle. Construa um algoritmo

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

9.1.2 Laços Controlados por Entrada: Contador

9.1.2 Laços Controlados por Entrada: Contador 9.1.2 Laços Controlados por Entrada: Contador Exemplo 2- Escreva um algoritmo e um programa em C que dado um Número qualquer, seja calculado e impresso a tabuada desse número. Algoritmo tabuada Variáveis:

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

ALGORITMO I VARIÁVEIS INDEXADAS

ALGORITMO I VARIÁVEIS INDEXADAS VARIÁVEIS INDEXADAS Array Auxiliadora Freire Slide 1 Array: Conjunto de informações do mesmo tipo, cada informação é representada na memória do computador por uma variável. O nome de qualquer variável

Leia mais

José Romildo Malaquias 2011-1

José Romildo Malaquias 2011-1 Programação de Computadores I Aula 08 Programação: Estruturas de Repetição José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/58 Motivação Como imprimir os três

Leia mais

428 Capítulo 7 Arrays. do { ExibeArrayInts(ar, n); /* Exibe a configuração */ /* corrente do array */ } while (ProximaPermutacao(ar, n));

428 Capítulo 7 Arrays. do { ExibeArrayInts(ar, n); /* Exibe a configuração */ /* corrente do array */ } while (ProximaPermutacao(ar, n)); 428 Capítulo 7 Arrays do { ExibeArrayInts(ar, n); / Exibe a configuração / / corrente do array / while (ProximaPermutacao(ar, n)); Análise: Inicialmente, a função GeraPermutacoes() chama a função BubbleSort(),

Leia mais

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Variáveis na linguagem C: tipo char O tipo char representa um caractere ASCII (ocupa só 1 byte) int main(int argc, char **

Leia mais

INF 1005 Programação I

INF 1005 Programação I INF 1005 Programação I Aula 12 Cadeia de Caracteres (Strings) Edirlei Soares de Lima Caracteres Até o momento nós somente utilizamos variáveis que armazenam números (int, float ou

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA

UNIVERSIDADE FEDERAL DE SANTA MARIA 1 UNIVERSIDADE FEDERAL DE SANTA MARIA Disciplina de Algoritmos e Programação Profa: Juliana Kaizer Vizzotto Lista de Exercícios Vetores Para a implementação de programas que solucionem os problemas a seguir

Leia mais

system("pause"); //Envia comando para o sistema operacional solicitando parada de execução do programa } //limitador do corpo do programa

system(pause); //Envia comando para o sistema operacional solicitando parada de execução do programa } //limitador do corpo do programa Atividade Prática no Ambiente Dev C++ Para as nossas atividades práticas vamos utilizar o ambiente de desenvolvimento da Linguagem C, Dev C++, ele é bastante fácil de utilizar e com muitos recursos. Segue

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 4: Tipos de Dados O objetivo desta aula é apresentar os tipos de dados manipulados pela linguagem C, tais como vetores e matrizes, bem como

Leia mais

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C Edwar Saliba Júnior Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C Belo Horizonte 2010 Sumário 1 Nota:... 2 2 Comandos e Palavras Reservadas:... 3 3 Dicas... 4 3.1 Strings

Leia mais

LINGUAGEM C: DESCOMPLICADA. Prof. André R. Backes

LINGUAGEM C: DESCOMPLICADA. Prof. André R. Backes LINGUAGEM C: DESCOMPLICADA Prof. André R. Backes 1 COMANDOS DE CONTROLE CONDICIONAL Os programas escritos até o momento são programas sequeciais: um comando é executado após o outro, do começo ao fim do

Leia mais

Algoritmos com VisuAlg

Algoritmos com VisuAlg Algoritmos com VisuAlg Prof Gerson Volney Lagemann Depto Eng de Produção e Sistemas UDESC - CCT Algoritmos com VisuAlg Introdução A linguagem VisuAlg é simples, seu objetivo é disponibilizar um ambiente

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão CURSO BÁSICO DE PROGRAMAÇÃO AULA 9 Introdução a linguagem C Estruturas de decisão Introdução à Linguagem C Linguagem compilada. Desenvolvida sobre os paradigmas de programação procedural. Uma das linguagens

Leia mais

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4 Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4 WHILE 1. Faça um comando while equivalente ao descrito abaixo (que realize o mesmo tipo de procedimento e obtenha o mesmo

Leia mais

INF 1620 P1-10/04/02 Questão 1 Nome:

INF 1620 P1-10/04/02 Questão 1 Nome: INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,

Leia mais

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Linguagem e Técnicas de Programação I Operadores, expressões e funções Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Operadores básicos Toda linguagem de programação, existem

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Revisão Aula Anterior Estruturas de Decisão (If e Switch)

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Revisão Aula Anterior Estruturas de Decisão (If e Switch) CURSO BÁSICO DE PROGRAMAÇÃO AULA 9 Revisão Aula Anterior Estruturas de Decisão (If e Switch) Revisão Comandos básicos no terminal: Para verificar os arquivos que estão em uma pasta usa-se ls: Para acessar

Leia mais

1 Resumo: Strings e vetores de caracteres. Departamento de Ciência da Computação IME/USP

1 Resumo: Strings e vetores de caracteres. Departamento de Ciência da Computação IME/USP Departamento de Ciência da Computação MAC2166 Introdução a Computação IME/USP Strings e vetores de caracteres 1 Resumo: O uso de strings facilita a manipulação de palavras e textos. Strings são basicamente

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

7. Estrutura de Decisão

7. Estrutura de Decisão 7. Estrutura de Decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições. Uma condição é uma expressão lógica. A classificação

Leia mais

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++ Edwar Saliba Júnior Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++ Belo Horizonte 2009 Sumário 1 Nota:... 2 2 Comandos e Palavras Reservadas:... 3 3 Dicas... 4

Leia mais

Componentes da linguagem C++

Componentes da linguagem C++ Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras

Leia mais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá. INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,

Leia mais

UFSM Introdução ao Dev-C++ Profa. Patrícia Pitthan. Introdução ao Dev-C++

UFSM Introdução ao Dev-C++ Profa. Patrícia Pitthan. Introdução ao Dev-C++ Introdução ao Dev-C++ O Dev-C++ oferece um ambiente que integra um editor de textos a um compilador para linguagem C. O compilador usado pelo Dev-C++ é o gcc (Gnu C Compiler). 1) Primeiro programa Para

Leia mais

ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++

ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++ ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++ #include { Este trecho é reservado para o corpo da função, com a declaração de suas variáveis locais, seus comandos e funções

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7 CURSO BÁSICO DE PROGRAMAÇÃO AULA 7 Revisão para prova: Comandos de Entrada e Saída Estruturas de Decisão (Se, caso (escolha)) Laços de Repetição (Enquanto, Repita, Para) Relembrando Trabalho 1 Prazo de

Leia mais

Programação de Computadores I. Linguagem C Vetores

Programação de Computadores I. Linguagem C Vetores Linguagem C Vetores Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 08 Vetores 1 Vetores Sintaxe: tipo_variável nome_vetor[tamanho]; Um vetor é uma variável que possui várias ocorrências de um mesmo

Leia mais

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;} 2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II Exercício : Construtores são métodos especiais sem tipo de retorno (nem mesmo void) e de mesmo nome que a classe que são invocados quando da criação

Leia mais

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu. Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração

Leia mais

LISTA DE EXERCÍCIOS: 3ª Unidade. Registros e Arquivos

LISTA DE EXERCÍCIOS: 3ª Unidade. Registros e Arquivos LISTA DE EXERCÍCIOS: 3ª Unidade Registros e Arquivos 1) Faça um programa que leia os dados de 10 funcionários de uma empresa usando um registro do tipo funcionário, e após a sua leitura, imprima na tela.

Leia mais

INTRODUÇÃO À LINGUAGEM C++

INTRODUÇÃO À LINGUAGEM C++ INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem

Leia mais

Introdução a Algoritmos Parte 04

Introdução a Algoritmos Parte 04 Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Programação Básica em Arduino Aula 2

Programação Básica em Arduino Aula 2 Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas

Leia mais

9 Comandos condicionais

9 Comandos condicionais 9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em

Leia mais

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros. Lista de exercícios: Grupo I - programa seqüênciais simples 1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros. 2. Fazer um programa

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Estruturas de Repetição

Estruturas de Repetição Estruturas de Repetição Lista de Exercícios - 04 Linguagem e Técnicas de Programação Professor: Edwar Saliba Júnior Estruturas de Repetição O que são e para que servem? São comandos que são utilizados

Leia mais

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO Pseudocódigo Pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve,

Leia mais

Programação de Computadores I. Ponteiros

Programação de Computadores I. Ponteiros Ponteiros Prof. Edwar Saliba Júnior Outubro de 2012 Unidade 13 Ponteiros 1 Identificadores e Endereços Na linguagem C, uma declaração de variável faz associação entre um identificador e endereços de memória;

Leia mais

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi Apostila de Fundamentos de Programação I Prof: André Luiz Montevecchi Introdução O mundo atual é dependente da tecnologia O uso intenso de diversos aparatos tecnológicos é parte integrante do nosso dia-a-dia

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais

Leia mais

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que

Leia mais

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Operações com Strings Introdução a Ponteiros e Funções Profa Rosana Braga 1 Strings Strings são seqüências de caracteres

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos

Leia mais

ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS

ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS Compilação dos erros mais comuns cometidos por estudantes de Introdução a Algoritmos Marcos Portnoi Edição 19.4.2007 Universidade Salvador UNIFACS

Leia mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2016 Linguagem de Programação C 2 1 Linguagem de Programação C Os programas em C consistem em

Leia mais

Algoritmos de pesquisa. Tabelas de dispersão/hash

Algoritmos de pesquisa. Tabelas de dispersão/hash Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor (array). Se o vetor não está ordenado, a pesquisa requer O(n) de

Leia mais

Capítulo 9. Vetores e Matrizes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 9. Vetores e Matrizes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 9 Vetores e Matrizes Objetivos do Capítulo Apresentar os dois tipos fundamentais de estruturas de dados estáticas disponíveis no Java: os vetores e as matrizes. Indicar como os vetores podem ser

Leia mais

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

MC102 Algoritmos e programação de computadores Aula 3: Variáveis MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,

Leia mais

Programação WEB I Estruturas de controle e repetição

Programação WEB I Estruturas de controle e repetição Programação WEB I Estruturas de controle e repetição Operadores de Incremento Operadores de incremento servem como expressões de atalho para realizar incrementos em variáveis Operadores de Incremento Vamos

Leia mais

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais. Linguagem C Matrizes Objetivos Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais. Definição de Matrizes em Linguagem C As matrizes em geral são

Leia mais

Figura 1 Busca Linear

Figura 1 Busca Linear ----- Evidentemente, possuir os dados não ajuda o programador ou o usuário se eles não souberem onde os dados estão. Imagine, por exemplo, uma festa de casamento com cem convidados na qual não se sabe

Leia mais

Tipos agregados. Tipos estruturados

Tipos agregados. Tipos estruturados Tipos agregados ou Tipos estruturados permitem a implementação de agrupamentos de dados. exemplos: lista de valores que representam as taxas mensais de inflação durante um ano; ficha de cadastro de um

Leia mais

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior vilson.junior@ifsc.edu.br Felipe Schneider Costa felipe.costa@ifsc.edu.

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior vilson.junior@ifsc.edu.br Felipe Schneider Costa felipe.costa@ifsc.edu. VisuALG Estruturas de Repetição Professores: Vilson Heck Junior vilson.junior@ifsc.edu.br Felipe Schneider Costa felipe.costa@ifsc.edu.br O Problema. Estruturas de Repetição: Introdução; Repita ate; Exemplo;

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

AULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme

AULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme AULA 2: INTRODUÇÃO A LINGUAGEM DE C Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme Agenda Introdução a linguagem C Compiladores Variáveis IDEs Exemplos Exercícios Introdução A Linguagem C

Leia mais

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores Introdução à Programação Armazenamento de Grande Quantidade de Informação Usando Vetores Armazenando Grande Quantidade de Informação Como armazenar tanta informação? Vetores! 2 Tópicos da Aula Hoje, aprenderemos

Leia mais

PROGRAMAÇÃO DE COMPUTADORES (Teoria)

PROGRAMAÇÃO DE COMPUTADORES (Teoria) PC PROGRAMAÇÃO DE COMPUTADORES (Teoria) Aula 01 Prof. Ricardo Veras (prof.rveras@gmail.com) ALGORITMOS "Seqüência ordenada de passos, que deve ser seguida para a realização de um tarefa" "Algoritmo é um

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1 Linguagem C: Estruturas de Controle Prof. Leonardo Barreto Campos 1 Sumário Estrutura de Controle e de Fluxo Comandos de Seleção: O comando if; Ifs Aninhados; A escada if-else-if; A expressão condicional;

Leia mais

MC-102 Aula 19 Registros

MC-102 Aula 19 Registros MC-102 Aula 19 Registros Instituto de Computação Unicamp 4 de Maio de 2015 Roteiro 1 Registros 2 Redefinição de tipos (Instituto de Computação Unicamp) MC-102 Aula 19 4 de Maio de 2015 2 / 17 Registros

Leia mais

13 Números Reais - Tipo float

13 Números Reais - Tipo float 13 Números Reais - Tipo float Ronaldo F. Hashimoto e Carlos H. Morimoto Até omomentonoslimitamosaouso do tipo inteiro para variáveis e expressões aritméticas. Vamos introduzir agora o tipo real. Ao final

Leia mais

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01 IFTO LÓGICA DE PROGRAMAÇÃO AULA 01 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://manoelcampos.com mcampos at ifto.edu.br Versão

Leia mais

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação FaculdadedeCiências UniversidadeAgostinhoNeto DepartamentodeMatemáticaeEngenhariaGeográfica CiênciasdaComputação ProgramaçãoII SegundaParte Adaptado de um original dos docentes de ISCTE Objectivos Os alunos

Leia mais

Curso de C para Engenharias

Curso de C para Engenharias Aula 4 Cristiano Dalbem Dennis Balreira Gabriel Moreira Miller Biazus Raphael Lupchinski Universidade Federal do Rio Grande do Sul Instituto de Informática Grupo PET Computação Sintaxe Funções Exemplos

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho O que é um Programa? Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais

Leia mais

Aluísio Eustáquio da Silva

Aluísio Eustáquio da Silva 1 Aluísio Eustáquio da Silva SciLab Programável Material didático usado em aulas de Programação de Computadores, Algoritmos e Lógica de Programação Betim Maio de 2012 2 PROGRAMAÇÃO O SciLab permite que

Leia mais

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição 1 Estrutura de seleção Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição - Necessário quando mais de uma ação deve ser tomada se uma condição for satisfeita

Leia mais

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma Roteiro: Conceitos básicos de algoritmo, linguagem, processador de linguagem e ambiente de programação; Aspectos fundamentais da organização e do funcionamento de um computador; Construções básicas de

Leia mais