23
Linguagem C – vetores IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná

Linguagem C vetores - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/linguagemC... · •Em C são vetores de caracteres •Toda string é terminada

  • Upload
    hacong

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Linguagem C – vetores

IF61A/IF71A - Computação 1

Prof. Leonelo Almeida

Universidade Tecnológica Federal do Paraná

Até agora ...

• Introdução à linguagem C

▫ Estrutura de um programa

▫ Escrita e execução do primeiro programa em C

▫ Declaração de variáveis

▫ Tipos de dados

▫ Operadores aritméticos, de comparação e lógicos

▫ Entrada e saída de dados

▫ Estruturas condicionais

• Estruturas de repetição

Aula de hoje

• Um programa que ordena 3 números inteiros

Aula de hoje

• Um programa que ordena 3 números inteiros

• E se eu quisesse um programa que ...

ordena 100 números inteiros

• Ou, ainda, um programa que ...

armazena o nome de uma pessoa

Aula de hoje

Vetores

Vetores

• Coleção de variáveis do mesmo tipo referenciada por um nome comum (Herbert Schildt):

• Características:

▫ Acesso por meio de um índice inteiro

▫ Posições contíguas na memoria

▫ Tamanho pré-definido

▫ Índices fora dos limites podem causar comportamento anômalo do programa

Declaração de vetores

<tipo> identificador [<tamanho do vetor>];

• Exemplo: float notas [100];

int medias [50];

0 1 2 ... tamanho-1

Declaração de vetores

<tipo> identificador [<tamanho do vetor>];

• Exemplo:

float notas [100];

int medias [50];

0 1 2 ... tamanho-1

0 1 2 ... 49

medias

Usando vetores

• Para acessar o valor de uma certa posição do vetor

▫ identificador [<posição>];

• Exemplo int nota[10];

int a;

nota[5] = 95;

a = nota[5];

Usando vetores - Exemplo

int cont, vet[10];

for (cont = 0; cont<10; cont++) {

vet[cont] = 5*cont;

printf(“%d”, vet[cont]);

}

O que esse programa imprimirá quando for executado?

Tamanho pré-definido

float nota[100];

int n, i;

printf("Número de alunos: ");

scanf("%d", &n);

for (i = 0; i < n; i++) {

printf("Nota do aluno %d: ", i+1);

scanf("%f", &nota[i]);

}

Este programa está correto?

Tamanho pré-definido

float nota[100];

int n, i;

printf("Número de alunos: ");

scanf("%d", &n);

if(n>100){

n=100;

printf("\n Número máximo alterado para 100");

}

for (i = 0; i < n; i++) {

printf("Nota do aluno %d: ", i+1);

scanf("%f", &nota[i]);

}

Precisamos testar o valor

informado pelo usuário

Inicialização de um vetor

• Para quando é desejado atribuir um valor inicial a um vetor

<tipo> identificador [] =

{elem. separados por vírgula};

• Exemplos: ▫ double vet1[] = {2.3, 5.6, 9.10};

▫ int vet 2[] = {5, 4, 6, -1}

Strings

• Em algoritmos utilizamos variáveis do tipo caractere para armazenar conjuntos de caracteres como, por exemplo, “tigre dente de sabre”

• Na linguagem C o tipo char armazena somente um caractere

• Logo, precisamos de cadeias de caracteres, chamadas de strings.

Strings • Em C são vetores de caracteres

• Toda string é terminada pelo caractere especial ‘\0’

• Portanto, declare strings com um caractere a mais do que é necessário

• Exemplo:

• Uma sigla de quatro caracteres: ▫ char sigla[5];

▫ sigla[0] = ‘I’;

▫ sigla[1] = ‘B’;

▫ sigla[2] = ‘G’;

▫ sigla[3] = ‘E’;

▫ sigla[4] = ‘\0’;

Para imprimir strings

...

printf(“informe a sigla:”);

scanf(“%s”, sigla);

printf(“Sigla %s”, sigla);

...

Para ler strings

• Para ler strings que contenham espaços

...

char nome[80];

scanf(“%[^\n]”, nome);

printf(“%s”, nome);

...

Atividades

• Ler dois vetores de tamanho 5 e calcular o produto interno deles.

▫ Obs.: o produto interno entre dois vetores a e b de tamanho n é dado por: a[0]*b[0]+a[1]*b[1]...a[n]*b[n]

• Ler dois vetores de 5 inteiros cada e informar quais elementos do segundo vetor são iguais a algum elemento do primeiro.

Atividades

• Ler o nome de uma pessoa de, no máximo 80 caracteres, salvar o nome invertido em outro vetor e imprimir o nome invertido.

• Exemplo:

▫ Ler: João Silva

▫ Imprimir: avliS oãoJ

• Agora leia um nome. Inverta-o no mesmo vetor (e sem usar um vetor adicional) e imprima o nome invertido.

Exercícios complementares

• Dado um vetor VET declarado como:

▫ int VET[5];

a) preenchê-lo (todas as posições) com o valor 30;

b) preenchê-lo com os inteiros 1,2,3 ...;

c) preenchê-lo com 1 se a posição é par e com 0 se a posição é impar

d) refazer a declaração e o os itens a), b) e c) considerando-se agora um vetor de 100 elementos

Exercícios complementares

• Escreva um programa que calcule e escreva o somatório dos valores armazenados num vetor V de 100 elementos informados pelo usuário

• Fazer um programa que leia dois vetores contendo, cada um, 25 elementos numéricos.

▫ Intercale os elementos destes dois conjuntos formando um novo vetor de 50 elementos

▫ Imprima o novo vetor obtido

Exercícios complementares

• Faça um algoritmo que receba um vetor X de 10 elementos e calcule a média dos valores de X.

• Agora, em seguida o programa deve receber um outro vetor Y de 10 elementos e calcular quais os valores de Y, estão acima da média calculada sobre os elementos de X.

Exercícios complementares

• Faça um programa que recebe dois vetores de inteiros ordenados A e B informados pelo usuário e de tamanho 5 cada.

▫ O programa deve retornar um vetor C de 10 posições com os valores de A e B intercalados.

▫ O vetor C também deve estar ordenado.