• 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

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

É 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,

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

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..

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

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