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



Documentos relacionados
IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

Estrutura de Dados Básica

Conversão de Tipos e Arrays

5 Apresentando a linguagem C

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

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

Programação 1. Rafael Vargas Mesquita. ftp://ftp.ci.ifes.edu.br/informatica/rafael/

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Implementando uma Classe e Criando Objetos a partir dela

ALGORITMO I VARIÁVEIS INDEXADAS

Linguagem de Programação I

Definição de Matrizes em Linguagem C. Matrizes unidimensionais

Registros. Técnicas de Programação. Rafael Silva Guimarães

MC-102 Aula 17 Strings e Matrizes

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Conceitos básicos da linguagem C

Estruturas de entrada e saída

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Introdução a Computação

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Variáveis e Comandos de Atribuição

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

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

Técnicas de Programação I

Introdução à Engenharia ENG1000

compreender a importância de cada estrutura de controle disponível na Linguagem C;

Linguagem C Funções definidas pelo usuário. Lógica de Programação

Curso de C para Engenharias

ALGORITMOS E PROGRAMAÇÃO PARA COMPUTADORES II

Trabalho 3: Agenda de Tarefas

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

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

9 Comandos condicionais

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Linguagem de Programação

Computação II Orientação a Objetos

LINGUAGEM C UMA INTRODUÇÃO

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

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

Aula de JavaScript 05/03/10

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

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

Algoritmos e Programação

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

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

1 Funções básicas de implementação de arquivos

INTRODUÇÃO À LINGUAGEM C++

Tipos de Dados Avançados Vetores e Matrizes

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Introdução à Ciência da Computação. Registros em C. Sumário. Registros. Agradecimentos. Parte dos slides a seguir são adaptações dos originais:

Programação de Computadores I. Linguagem C Vetores

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Linguagens de Programação

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

14.1 Vetor - Problemas

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

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

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Convertendo Algoritmos para a Linguagem C

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

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

Estruturas (registros)

Orientação a Objetos

Estruturas II UFOP 1/1

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

Curso de Programação Computadores

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

INF 1007 Programação II

Chaves. Chaves. O modelo relacional implementa dois conhecidos conceitos de chaves, como veremos a seguir:

Programação: Tipos, Variáveis e Expressões

Linguagem de Programação C

Tipo Abstrato de Dados

Fundamentos de Programação

MC-102 Aula 19 Registros

Programação Orientada a Objeto

AULA 1 AULA 2. Estudo dirigido para as três primeiras AULAS de LPI Professora ANITA MACIEL 1º ESTUDO DIRIGIDO

Algoritmos e Programação II. Sobrecarga

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Criando uma Agenda de Reuniões

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Algumas notas sobre PASCAL

20 Caracteres - Tipo char

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

GFM015 Introdução à Computação Linguagem C / Introdução à Modularização de Programas (uso de subprogramas)

Lista 1 para a P2. Operações com subespaços

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

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

Processo: Produtos. Motivação. Acesso. Parâmetros. Entradas. Nome do Processo: Ajuste na Estrutura de Produtos

LINGUAGEM C UMA INTRODUÇÃO

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

Bem vindo Joe Ramone!

INF 1005 Programação I

Transcrição:

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 caracterizadas por se tratarem de uma única variável de um determinado tamanho que guarda varias informações do mesmo tipo. Essas informações são gravadas na memória seqüencialmente e são referenciadas através de índices. As matrizes podem ser tanto unidimensionais (vetores) como multidimensionais. Matrizes unidimensionais São matrizes de uma única dimensão. Essas matrizes também são chamadas de vetores. A declaração de vetores em C deve obedecer a seguinte sintaxe: Tipo nome_vetor [tamanho]; O tipo deve ser especificado conforme a tabela 2 do primeiro artigo. E o tamanho representa a quantidade de elementos que esta matriz irá conter. É importante dizer que na linguagem c as matrizes começam pelo índice 0 que guarda o primeiro elemento da matriz. Para entender melhor, considere que seja necessário declarar um vetor do tipo inteiro que contenha 10 elementos. Isto é feito da seguinte forma: int vetor_exemplo [9]; Isso por que a matriz vetor_exemplo vai de 0 a 9, ou seja, contém 10 elementos. Também é possível inicializar o vetor no momento de sua declaração. Para isso veja a sintaxe abaixo: Tipo nome_vetor [tamanho]=lista_de_valores}; 1

Sendo que todos os elementos da lista de valores devem ser separados por virgula e serem todas do mesmo tipo de dados especificado. A seguir temos a declaração do vetor_exemplo com os valores atribuídos. int vetor_exemplo [9]=0,1,2,3,4,5,6,7,8,9}; Exemplo de um programa completo utilizando vetores e outros conceitos estudados até o momento. 1º Programa int vet1[5]=1,2,3,4,5}; /*declaração e inicialização do vetor vet1*/ int vet2[5]=6,1,2,2,5}; /*declaração e inicialização do vetor vet2*/ int vetsoma[5]; /*declaração do vetor vetsoma que vai guardar o resultado da soma dos dois vetores(vet1 e vet2).*/ int x; printf ("Este programa soma os dois vetores abaixo:\n"); printf ("vet1=1,2,3,4,5}\n"); printf ("vet2=6,1,2,2,5}\n"); printf ("vetor resultante da soma:\n"); for (x=0; x<5; x++) vetsoma [x]=vet1[x]+vet2[x]; /*soma os valores*/ printf ("vetsoma [%d]:%d\n, x, vetsoma [x]); /*exibe na tela*/ } /*fim do programa*/ 2

O programa acima soma dois vetores (vet1 e vet2) e exibe sua resposta na tela. O objetivo deste exemplo é mostrar como declarar e inicializar um vetor. Veja a seguir a saída do programa: Este programa soma os dois vetores abaixo: vet1=1,2,3,4,5} vet2=6,1,2,2,5} vetor resultante da soma: vetsoma [0]: 7 vetsoma [1]: 3 vetsoma [2]: 5 vetsoma [3]: 6 vetsoma [4]: 10 Os vetores são muito usados para criar uma string de caracteres, pois em C não existe nenhum tipo de dados para definir uma string. A declaração de um vetor contendo uma string sempre deve ser maior que o número de caracteres, pois o compilador acrescenta automaticamente no final da string um espaço nulo que indica o seu término. Este segundo exemplo é muito simples, mostra apenas como podem ser feitas a declaração e inicialização de um vetor de string. 2º Programa char c1 = 'a'; char vet1[30]="aprendendo a mexer com string\n"; /*Imprimindo os dados na tela*/ printf ("O tipo de dado char guarda apenas um caractere\n"); printf ("A variavel c1 do tipo char contem o caractere: %c\n, c1); printf ("Para trabalhar com uma string deve ser declarado um vetor do tipo char"); printf ("\no vetor do tipo char contem a string: %s, vet1); } /*fim do programa*/ 3

Saída do programa: O tipo de dado char guarda apenas um caractere A variavel c1 do tipo char contem o caractere: a Para trabalhar com uma string deve ser declarado um vetor do tipo char O vetor do tipo char contem a string: Aprendendo a mexer com string Matrizes Bidimensionais São matrizes linha-coluna, onde o primeiro índice indica a linha e o segundo a coluna. Esse tipo de matriz é considerado o caso mais simples de matrizes multidimensionais. Veja o programa abaixo: 3º Programa int mat [2][2]; float det; int x, y; printf ("Este programa calcula a determinante de uma matriz quadrada de ordem 2"); printf ("\n\n Entre com os valores a da matriz:\n"); for(x=0; x<2; x++) for(y=0; y<2; y++) printf ("mat [%d][%d]=",x+1,y+1); scanf("%d",&mat[x][y]); det=mat.[0] [0]*mat.[1][1]-mat.[1][0]*mat[0][1]; /*formula para calcular a determinante */ printf ("Determinante da matriz = %f\n, det); } /*fim do programa*/ 4

Esse exemplo calcula a determinante de uma matriz de ordem 2 e através dele podemos ver como deve ser feita a declaração de uma matriz bidimensional. int mat [2] [2]; Que a forma geral é: tipo nome_matriz [numero_linhas] [numero_colunas]; Observe na formula que calcula a determinante que os valores são acessados através de seus índices (linhas e colunas). A seguir são apresentadas as saídas do programa, lembrando que os valores das matrizes são definidos pelo usuário através da função scanf que será explicada mais adiante. Este programa calcula a determinante de uma matriz quadrada de ordem 2 Entre com os valores a da matriz: Mat [1] [1] =4 Mat [1] [2]=-3 Mat [2] [1] =6 Mat [2] [2] =-1 Determinante da matriz = 14.0000 Matrizes multidimensionais A linguagem c permite também utilizar matriz de três ou mais dimensões, porém não é freqüentemente usada, pois requer uma quantidade grande de memória e os acessos aos seus elementos são mais lentos. Por esses motivos este tipo de matrizes não serão abordados com detalhes Declaração de matrizes multidimensionais: Tipo nome [tamanho1] [tamanho2] [tamanho3]... [tamanho n] 5

Matrizes não-dimensionadas As matrizes não-dimensionais são aquelas cujo tamanho não é especificado. Nesse caso o compilador cria uma matriz grande para conter todos os seus elementos. As declarações de matrizes unidimensionais com essa característica podem ser vista no programa abaixo: 4º Programa char vet1[37]="estou aprendendo a programar em C!!!"; char vet2[]="estou aprendendo a programar em C!!!"; /*vetor não-dimensionado*/ printf ("O vetor abaixo foi declarado com o seu tamanho especificado\n"); printf ("%s\n, vet1); printf ("E este outro foi declarado com o seu tamanho nao especificado\n"); printf ("%s\n, vet2); } Observe na saída abaixo que os vetores (vet1 e vet2) declarados de forma diferentes obtiveram os mesmo efeitos. A diferença é que no vetor vet2 não foi especificado a quantidades de caracteres (vetor não-dimensionado). O vetor abaixo foi declarado com o seu tamanho especificado Estou aprendendo a programar em C!!! E este outro foi declarado com o seu tamanho nao especificado Estou aprendendo a programar em C!!! As matrizes multidimensionais não-dimensionadas devem ter apenas seu primeiro índice não especificado, os outros devem ser indicados para que o compilador possa indexar de forma correta as matrizes. Desta forma pode-se criar tabelas com diversos tamanhos, sem a necessidade de mudar as dimensões da matriz. 6

5º Programa int mat1[2] [2]=4,5,-2,1}; int mat2[] [2]=4,5,-2,1}; /*Matriz não-dimensionada*/ int x, y; printf ("Imprimindo a matriz mat1 cujo tamanho foi especificado:\n"); for(x=0;x<2;x++) for(y=0;y<2;y++) printf ("mat1[%d][%d]=%d",x,y,mat1[x][y]); printf ("Imprimindo a matriz mat2 cujo tamanho nao foi especificado:\n"); for(x=0;x<2;x++) for(y=0;y<2;y++) printf("mat2[%d][%d]=%d",x,y,mat2[x][y]); } *fim do for*/ / } /*fim do programa*/ 7

Do mesmo modo verifica-se através da saída abaixo que tanto a matriz mat1 como a matriz mat2, obtiveram os mesmos resultados embora tenham sido declaradas de maneira diferente. Imprimindo a matriz mat1 cujo tamanho foi especificado: mat1[0] [0] =4 mat1[0] [1] =5 mat1[1] [0] =-2 mat1[1] [1] =1 Imprimindo a matriz mat2 cujo tamanho nao foi especificado: mat2[0] [0] =4 mat2[0] [1] =5 mat2[1] [0] =-2 mat2[1] [1] =1 8

Conclusão Conclui-se que as matrizes podem ser desde unidimensionais até multidimensionais e que seus tamanhos não necessitam serem obrigatoriamente especificados 9