• Nenhum resultado encontrado

U TILIZANDO LAÇOS PARA ESCREVER E LER

N/A
N/A
Protected

Academic year: 2019

Share "U TILIZANDO LAÇOS PARA ESCREVER E LER"

Copied!
5
0
0

Texto

(1)

MATRIZES 01

Na linguagem C, uma matriz é um conjunto de variáveis do mesmo tipo referenciadas por um nome em comum. Essas variáveis são armazenadas de forma contígua na memória, e cada elemento da matriz é acessado através de um índice entre colchetes [].

As matrizes possuem utilidade subestimada pela maioria dos iniciantes em programação, mas vale lembrar que elas proporcionam a solução de inúmeros problemas na engenharia relacionados a sistemas lineares. Afora isso, muitos dados são tratados como matrizes. Um exemplo simples é um arquivo de áudio, no qual as amostras de áudio são armazenadas de forma sucessiva na memória. Outro exemplo é um arquivo de imagem, que pode ser processado como uma matriz com duas dimensões.

O tipo mais comum de matriz é a matriz unidimensional, chamada muitas vezes de vetor (ou array).

V

ETORES

Como mencionado acima, uma matriz que possui apenas uma dimensão é chamada de vetor (ou array). Para criar um vetor na linguagem C, basta utilizar uma construção como a apresentada abaixo:

tipo_de_dado nome[tamanho];

tipo_de_dado é o tipo dos dados armazenados no vetor. O nome é o identificador do

vetor. tamanho é a quantidade de variáveis que o vetor consegue armazenar. Por exemplo,

int vet[10];

Declara um vetor com o nome vet capaz de armazenar 10 variáveis do tipo int. Observe o exemplo abaixo onde um vetor com cinco variáveis int é declarado e utilizado.

#include <stdio.h> #include <stdlib.h>

int main(void) {

int vet[5];

vet[0] = 234; vet[1] = -145; vet[2] = 120; vet[3] = -456; vet[4] = 453;

printf("%d, %d, %d, %d, %d\n", vet[0], vet[1], vet[2], vet[3], vet[4]); system("PAUSE");

return 0; }

Programa 1 Vetor.

(2)

INICIALIZANDO VETORES

É possível facilmente inicializar vetores. Observe o exemplo abaixo:

#include <stdio.h> #include <stdlib.h>

int main(void) {

int vet[5] = { 234, -145, 120, -456, 453 };

printf("%d, %d, %d, %d, %d\n", vet[0], vet[1], vet[2], vet[3], vet[4]); system("PAUSE");

return 0; }

Programa 2 Inicializando um Vetor.

UTILIZANDO LAÇOS PARA ESCREVER E LER VETORES

É possível facilmente utilizar um laço para escrever a quantidade desejada de elementos de um determinado vetor na tela. Observe o exemplo abaixo, onde o comando for é utilizado para

imprimir na tela um vetor.

#include <stdio.h> #include <stdlib.h>

int main(void) {

float vet[10] = { 10.6, 34.0, -34, 9.8, 0, 34, 2, 0.12, -43, 93.2 }; int i;

for(i = 0; i < 10; i++) printf("%f\n", vet[i]); system("PAUSE");

return 0; }

Programa 3 Imprimindo Vetor utilizando o comando for.

Note que agora a indexação fica a cargo de uma variável (a variável i). Essa construção é

muito comum para ler ou escrever vetores. Compile o Programa 4 e estude seu código.

#include <stdio.h> #include <stdlib.h>

int main(void) {

int vet[10]; int i;

printf("Digite 10 numeros inteiros...\n"); for(i = 0; i < 10; i++) //loop para leitura...

{

printf("indice %d: ", i); scanf("%d",&vet[i]); }

printf("Os numeros digitados foram: \n");

for(i = 0; i < 10; i++) printf("%d ", vet[i]); //loop para escrita

putchar('\n'); system("PAUSE"); return 0;

}

(3)

VERIFICAÇÃO DE LIMITES

É muito importante ressaltar que o compilador não realiza verificação de limites. Isso torna o processamento do programa mais rápido, porém pode acarretar problemas graves. Compile e execute o programa abaixo.

#include <stdio.h> #include <stdlib.h>

int main(void) {

int vet[10]; int i;

for(i = 0; i < 1000; i++) //loop para leitura...

{ //observe que o loop ultrapassa e muito

printf("%d\n",i); //a declaração do vetor...

vet[i] = 10; }

system("PAUSE"); return 0;

}

Programa 5 Verificação de limites.

Perceba como o compilador compila e executa o programa (mesmo com o loop for

ultrapassando o limite da declaração do vetor). Lembre-se que o compilador reserva memória apenas para o tamanho do vetor especificado quando da declaração do vetor. No caso do Programa 5, apenas memória para 10 variáveis int é reservada. É provável que o programa tenha

tentado acessar uma área da memória utilizada para carregar o próprio programa, o que causou que o mesmo parasse de funcionar.

Assim, como a linguagem C não verifica limites, cabe ao programador evitar que os limites definidos para as variáveis não sejam ultrapassados.

S

TRINGS

Na linguagem C, uma string é um vetor de caracteres terminado em um caractere nulo. Essa abordagem faz com que algumas rotinas com strings sejam otimizadas em relação a outras linguagens. Compile o programa abaixo.

#include <stdio.h> #include <stdlib.h>

int main(void) {

char c[5] = { 'O', 'L', 'A', '!', '\0' }; //’\0’ é o caractere nulo...

char str[5] = "OLA!";

printf("%s\n", c); //%s imprime uma string...

printf("%s\n", str); //%s imprime uma string...

system("PAUSE"); return 0;

}

(4)

Perceba como as strings são impressas utilizando printf.

É possível realizar a leitura de uma string com a função scanf utilizando o caractere de controle %s. Porém a função scanf utiliza como delimitador, além do caractere de nova linha, o

caractere espaço e tabulação. Isso faz com que, em muitos casos, caracteres permaneçam no buffer de entrada, causando alguns problemas. Para tentar contornar esses problemas, pode-se utilizar a função gets. Observe os dois programas que seguem. Tente utilizar strings com e sem espaços.

#include <stdio.h> #include <stdlib.h>

#define TAM 100

int main(void) {

char str[TAM];

printf("Digite uma string com no maximo %d caracteres...\n", TAM); scanf("%s", &str);

printf("A string digitada foi: %s\n", str);

printf("Digite uma string com no maximo %d caracteres...\n", TAM); scanf("%s", &str);

printf("A string digitada foi: %s\n", str); system("PAUSE");

return 0; }

Programa 7 Lendo uma string com scanf.

Pode-se utilizar a função gets para ler uma string com espaços. Observe o uso de gets no programa abaixo.

#include <stdio.h> #include <stdlib.h>

#include <string.h> //biblioteca com funções de strings...

#define TAM 100

int main(void) {

char str[TAM]; while (1) {

printf("Digite uma string com no maximo %d caracteres...\n", TAM); printf("Digite (exit) para sair...\n");

gets(str);

if( strcmp( str , "exit" ) == 0 ) return 0; }

}

Programa 8 Lendo uma string com a função gets.

Perceba que uma nova biblioteca é adicionada: #include <string.h> Essa biblioteca contém várias funções para manipulação e teste de strings.

(5)

Exercício 1 Escreva um programa que realiza a leitura de um vetor de 6 números inteiros do

teclado. Após isso, o programa deverá imprimir o vetor na tela. Além disso, o programa deverá calcular a média dos valores armazenados no vetor, imprimindo o resultado na tela.

Exercício 2 Suponha uma string declarada como segue:

char str[7] = "V?L?BS";

Escreva um programa que copia a string para uma outra string somando duas unidades em cada elemento do vetor. Após, o programa deverá imprimir a string modificada. Não esqueça que a string de destino deve terminar com um caractere nulo.

Exercício 3 Escreva um programa que realiza a leitura de um vetor de 10 números inteiros do

teclado. Após isso, o programa deverá obter o índice do maior elemento do vetor. DICA: Utilize uma variável para armazenar sempre o maior valor, e percorra o vetor comparando o maior valor até o momento com o elemento do vetor.

Exercício 4 Escreva um programa que realiza a leitura de duas strings do teclado e as compara

utilizando a função strcmp. O programa deverá escrever um aviso na tela caso as duas strings sejam iguais.

Exercício 5 Escreva um programa que realiza a leitura de um vetor do teclado. Após o programa

Referências

Documentos relacionados

O score de Framingham que estima o risco absoluto de um indivíduo desenvolver em dez anos DAC primária, clinicamente manifesta, utiliza variáveis clínicas e laboratoriais

Figura 36 – Variação das temperaturas internas da Edificação E em relação aos níveis de classificação do desempenho térmico para o inverno, segundo a NBR 15575-1

Anormalidades renais consistindo de redução do tamanho dos rins, azotemia progressiva (elevação dos níveis de compostos como a ureia e a creatinina no sangue) e falência renal

Mesmo nas variadas provas da vida podemos nos alegrar efusivamente, porque Deus é quem está no controle da nossa vida e ele trabalha em todas as circunstâncias

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

O Bill e o Harry estavam nos campos com os ancinhos e as forquilhas, empilhando os feixes na parte de trás da carroça para serem levados até ao pátio da quinta, onde os

O destaque é dado às palavras que abrem signi- ficados e assim são chaves para conceitos que fluem entre prática poética na obra de arte e sua reflexão em texto científico..