21
Linguagem de Programação Aula 09 – Vetores

Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Embed Size (px)

Citation preview

Page 1: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Linguagem de Programação

Aula 09 – Vetores

Page 2: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Exercícios de recursão Função recursiva que calcule o produto de dois

naturais usando soma.

a * b = a + a + a + ...+ a (b vezes)

ou a * b = a + a * (b-1)

Ou seja: prod(a, b) = a + prod (a, b-1)

Soluções triviais:

b = 1 => a

b = 0 => 0

Page 3: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Ativ. 22 - Produtounsigned prod (unsigned a, unsigned b){

if (b==0) return 0;if (b==1) return a;return (a + prod(a, b-1));

}main(){

unsigned a, b;printf("Digite a e b:");scanf("%u %u", &a, &b);printf("\n%u X %u = %u", a, b, prod(a, b));

}

Page 4: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Ativ. 23 - Imprime invertido Função recursiva que recebe um natural n e imprime

seus dígitos invertidos (da direita para a esquerda).

5643 => 3465

231 => 132

12 => 12

7 => 7 Solução trivial: n <10 => imprime n Solução geral: n>10

Imprime (n%10) Inverte (n/10)

Page 5: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Inverte

void inverte(unsigned n)

{

if (n<10) printf(“%u”, n)

else

{

printf(“%u”, n%10);

inverte(n/10);

}

}

Page 6: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

O são Vetores?

Vetores são variáveis que armazenam elementos do mesmo tipo;

Cada elemento pode ser acessado individualmente por um índice numérico;

Esse valor inteiro representa a posição do elemento dentro do vetor;

Elementos podem ser de tipos básicos ou de outros vetores

Page 7: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Vetor com 12 elementos Se um vetor tem

n posições, seus índices vão de 0 a n-1;

Seus elementos: v[0] a v[n-1];

Page 8: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Vetores ou arrays

Declaração de Variáveistipo_elem nome_vet [ tam ]

Ex.: int c[5]; float n[10];

Page 9: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Exemplos

Criação de vetores para: as letras vogais do alfabeto.

char vogais[ 5 ]; as temperaturas diárias de uma semana.

float temp[ 7 ]; o número de dias em cada um dos

meses do ano. int diasAno [ 12 ];

Page 10: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Vetores ou arrays Acesso aos elementos

Número da posição entre colchetes. Deve ser inteiro positivo ou expressão de

inteiro.c[0] = 10; c[1] = 25; c[4] = 12;

a = 3; b = 1;c[ a + b ] += 2;

Page 11: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Declarando e inicializando vetores

Como ficam os seguintes vetores?

float moeda[5] = {1.0, 0.50, 0.25, 0.10, 0.05};

int A[5] = {9, 3, 2, 7};

char ds[] = {'D', 'S', 'T', 'Q', 'Q', 'S', 'S'};

Page 12: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Mais exemplos

Represente graficamente (desenhe) os vetores abaixo (com suas posições indexadas e elementos armazenados).

a) int X[4];

b) char Y[7] = {'x', 'y', 'z', 'w'};

c) float Z[] = {1.6, 1.72, 1.83, 1.67, 1.8};

Page 13: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Exercício 24 (entregar) Dado um vetor w com 9 elementos inteiros e um

inteiro i=5, represente os valores em w após as seguintes atribuições:

w[0] 17;

w[i/2] 9;

w[2*i-2] 95;

w[i-1] w[8]/2;

w[i] w[2];

w[i 1] w[i]+ w[i-1];

w[w[2]-2] 78;

w[1] = w[w[i]-1];

Page 14: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Programa usando vetor

Codifique um programa para solicitar 5 números, via teclado, e exibi-los na ordem inversa àquela em que foram fornecidos, usando vetor.

Page 15: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Solução

void main( ) { float t[5]; int i; for (i=0; i<5; i++) { printf("\nDigite %do valor:", i+1); scanf("%f", &t[i]); } printf("\nImprimindo invertido"); for (i=4; i>=0; i--) printf("\n%.2f", t[i]);}

Page 16: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Atividade 25 (entregar)

Codifique um programa que leia e armazene as notas de uma turma de 10 alunos. Em seguida, exiba os valores armazenados.

Page 17: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Vetores como parâmetro de função

Vetores são sempre passados por referência, ou seja, o vetor original é passado para a função, e não sua cópia.

Sintaxe:

tipo_funcao nome_Funcao (tipo_vetor nome_vetor[])

Ex.:

int maior (int v[]) => recebe um vetor de inteiros e devolve o maior valor armazenado

void ordena (int v[]) => recebe um vetor de inteiros e ordena os valores nele armazenados

float media (float v[]) => recebe um vetor de reais e devolve a média dos valores armazenados

Page 18: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Funções com vetoresDado o seguinte programa, codifique as rotinas:

- leNotas (t[]) -> solicita a digitação das notas da turma e armazena em t[]

- imprime (t[]) -> exibe as notas armazenadas em t[]

#include <stdio.h>

#define max 10

void main( ) {

float t[max], m;

leNotas ( t );

imprime ( t );

}

Page 19: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Soluçãovoid leNotas (float n[]) {

int i;printf("Informe as notas: ");for(i=0; i<max; i++) {

printf("%d o aluno: ", i+1);scanf("%f", &n[i] );

}} void imprime (float n[]) { int i;

printf(“\nAs notas: ");for(i=0; i<max; i++)

printf(“\n%d o aluno: %.2f", i+1, n[i]);}

Page 20: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Exercício 26 (entregar)

Dado o seguinte programa, codifique as rotinas obtem() -> obtem as temperaturas de cada dia da semana media() -> calcula a média da temperatura da semana conta() -> quantos dias estao acima da média

#include <stdio.h>#define max 7void main(void) {

float temp[max], m;obtem(temp);m = media(temp);printf("Estatística: %d", conta(temp, m) );

}

Page 21: Linguagem de Programação Aula 09 – Vetores. Exercícios de recursão  Função recursiva que calcule o produto de dois naturais usando soma. a * b = a +

Solução da função obtem

void obtem(float t[]) { int i; printf(“\nInforme as temperaturas: "); for(i=0; i<max; i++) { printf("%do valor? ", i+1); scanf("%f", &t[i] ); }}