Matrizes. Introdução à Ciência da Computação

Documentos relacionados
Matrizes. Introdução à Programação para Biologia Molecular

Vetores. Introdução à Ciência da Computação

Vetores. Introdução à Programação para Biologia Molecular

Introdução à Ciência da Computação

Cadeias de Caracteres

Rosane Minghim e Guilherme P. Telles

Estruturas de Controle em Linguagem C

ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Matrizes. Para começar... Matrizes. Matrizes

Matrizes (Vetores Bidimensionais)

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

ponteiros INF Programação I Prof. Roberto Azevedo

Linguagem C vetores multidimensionais

Matrizes. DCC 119 Algoritmos

Algoritmos: Estruturas de Controle

Programação: Vetores

Algoritmos e Programação

Aula 9 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

ESTRUTURAS COMPOSTAS

INF 1005 Programação I - Prof. Hélio Lopes 24/04/2012

ESTRUTURAS COMPOSTAS VETOR

Algoritmos: Estruturas de Controle em Python

Aula 06 Introdução à Programação Matrizes

Registros, Vetores e Matrizes

Computação Informática

Estruturas Compostas Matriz

Vetores. e o programa deverá ler os valores separadamente:

Aula 10 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

Lógica de Programação e Algoritmos

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

INF 1007 Programação II

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Prova 2 - Computação

Estruturas Homogêneas II (Matrizes)

Disciplina de Algoritmos e Programação

Programação científica C++

Fundamentos de Programação

Vetores Unimensionais

Algoritmos Estruturas de Controle

1 Resumo: Matrizes. 2.1 Como declarar uma matriz IME/USP. Departamento de Ciência da Computação

Linguagens de Programação I

Alocação Dinâmica em C

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo

Algoritmos Estruturas de Controle

Algoritmos e Estruturas de Dados. Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras PURO

Introdução a Programação de Jogos

CURSO BÁSICO DE PROGRAMAÇÃO AULA 19. Netbeans - Linguagem JAVA - Vetores - Matrizes - Métodos

INF 1007 Programação II

Capítulo 08: Matrizes

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

3. Linguagem de Programação C

Estruturas de Controle em Python

Algoritmos II Aula 2 Vetores

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

Introdução à Ciência da Computação. Sumário. Estruturas de Dados. Agradecimentos. Arranjos: Vetores, Strings & Matrizes em C

SSC304 Introdução à Programação Para Engenharias. Ponteiros. GE4 Bio

INF1005: Programação 1. Matrizes. 06/06/10 (c) Paula Rodrigues 1

Funções em Linguagem C Parte II

Introdução à Programação Estruturada Parte 2. Material da Prof. Ana Eliza

Vetores(Arrays) Olimpíadas de Informática. Aulas preparatórias Introdução a Programação em C.

Quantas variáveis para armazenar as notas e as médias são necessárias para resolver este problema?

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

CCO 016 / COM 110 Fundamentos de Programação

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Módulo 5 Vetores e Alocação Dinâmica

Variáveis Compostas Homogêneas Vetores

12 - Dados Estruturados Vetores, Matrizes e Strings

Vetores(Arrays) Olimpíadas de Informática. Aulas preparatórias Introdução a Programação em C.

Apontadores/ponteiros

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Q1 Q2 Q3 Nota. Departamento de Informática - PUC-Rio INF 1005 Programação I P4 28/06/2011. Aluno: Matrícula: Turma: _

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

CI208 - Programação de Computadores. Aula 24: Arrays. Prof. MSc. Diego Roberto Antunes

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Disciplina de Algoritmos e Programação. Vetor e Matriz

Conhecendo a Linguagem de Programação C

3. Linguagem de Programação C

1ª Lista de Exercícios

Vetores e Matrizes. Vetores

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

LINGUAGEM C Estrutura / Funções

Introdução à Programação

Variáveis, Tipos de Dados e Operadores

Algoritmos e Programação

Modularidade - Funções e Procedimentos

Computação I (MAB120) DCC/UFRJ

INF1005: Programação 1. Vetores. 02/05/10 (c) Paula Rodrigues 1

Introdução a Linguagem C (Parte I) UFPA Sistemas de Informação. Roberto Araujo 2013

ESTRUTURAS COMPOSTAS VETOR

Explicação do programa:

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Dados Estruturados Vetores e Matrizes. SCC120 - Introdução à Ciência de Computação

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Linguagem C Vetores, Matrizes e Strings

Transcrição:

Matrizes Introdução à Ciência da Computação Rosane Minghim Apoio na confecção: Carlos Elias A. Zampieri Danilo Medeiros Eler Rogério Eduardo Garcia Renato Rodrigues Baseado na Apostila: Curso Introdutório de Computação por R. Minghim e G. P. Telles

Recordando: Vetores Tipos Compostos Conjunto de vários elementos de mesmo tipo Um único nome. Ex: V Um tipo. Ex: V:inteiro Armazenamento em sequência. V:inteiro[1..7] Um índice. Acesso direto: V[i]

Matrizes Tipos Compostos Conjunto de vários elementos de mesmo tipo Um único nome. Ex: M Um tipo. Ex: M:inteiro M = 10 8 5 1 5 7 7 7 8 0 0 10

Matrizes A indexação é similar à dos vetores Armazenamento em sequência para cada dimensão. M:inteiro[1..3][1..4] M = 10 8 5 1 5 7 7 7 8 0 0 10 Genericamente, para n dimensões: M:inteiro[l i1,l s1 ] [l i2,l s2 ]... [l in,l sn ]

Matrizes Um índice. Acesso direto: M[i][j] M[1][1] linha M[2][3] coluna M = 10 8 5 1 5 7 7 7 8 0 0 10

Exemplos tipo matriz = real[1..10][1..5] variável notas: matriz notas[1][3] 7,5 No exemplo a matriz possui duas dimensões, uma variando de 1 a 10 e a segunda de 1 a 5

Exemplo: média aritmética Faça um algoritmo para ler as 5 notas dos alunos de uma turma, armazená-las numa matriz, e calcular suas médias finais. Algoritmo média_provas tipo matriz = real[1..50][1..5] variável soma, media: real notas: matriz lin, col, nro_alunos: inteiro leia(nro_alunos) para lin de 1 até nro_alunos faça para col de 1 até 5 faça leia(notas[lin][col]) para lin de 1 até nro_alunos faça soma 0 para col de 1 até 5 faça soma notas[lin][col] +soma media soma / 5 escreva( aluno, lin, =,media) fim

Exemplo: média aritmética Algoritmo média_provas tipo matriz = real[1..50][1..5] variável soma, media: real notas: matriz lin, col, nro_alunos: inteiro leia(nro_alunos) para lin de 1 até nro_alunos faça para col de 1 até 5 faça leia(notas[lin][col]) Alunos Notas Lin Col 1 1 leia notas[1][1] 2 leia notas[1][2] 3 leia notas[1][3] 4 leia notas[1][4] 5 leia notas[1][5] 2 1 leia notas[2][1] 2 leia notas[2][2] 3 leia notas[2][3] 4 leia notas[2][4] 5 leia notas[2][5] etc.

Exemplo: média aritmética Lin Col 1 1 leia notas[1][1] 2 leia notas[1][2] 3 leia notas[1][3] 4 leia notas[1][4] 5 leia notas[1][5] 2 1 leia notas[2][1] 2 leia notas[2][2] 3 leia notas[2][3] 4 leia notas[2][4] 5 leia notas[2][5] etc. Notas Alunos

Matrizes em Subprogramas Similar ao uso de vetores É importante para o uso de matrizes em subprogramas que o seu tipo seja definido previamente, por uma questão de consistência, compatibilidade de tipos e organização do código

Declaração de Tipos mat_notas = real[1..50][1..5] objeto_logico = lógico[-10..10][-10..10][-10..10] Desta forma, subprogramas e algoritmos principais podem trabalhar sobre matrizes de mesmo tipo prédefinido Utilizando as definições acima, as declarações ficariam: Variável nota: mat_notas objeto: objeto_logico

Matrizes em subprogramas - Exemplo O subprograma recebe a matriz e armazena os valores digitados. Subprograma leia_matriz(mat, linhas,colunas) e: linhas, colunas: inteiro {dimensões da matriz} s: mat: matriz {valores lidos} variável lin, col: inteiro inicio para lin de 1 até linhas faça para col de 1 até colunas faça leia(mat[lin][col]) fim

Matrizes em subprogramas - Exemplo O subprograma recebe a matriz e apresenta o conteúdo. Subprograma escreva_matriz(mat, linhas,colunas) e: linhas, colunas: inteiro {dimensões da matriz} mat: matriz {notas} variável lin, col: inteiro inicio para lin de 1 até linhas faça para col de 1 até colunas faça escreva(mat[lin][col]) fim

Matrizes em subprogramas - Exemplo O subprograma recebe a matriz e calcula as médias das linhas, armazenando o resultado num vetor. Subprograma calcule_médias (mat, linhas,colunas, vet) e: linhas, colunas: inteiro {dimensões da matriz} e: mat: matriz {notas} s: vet: vetor {medias} variável lin, col: inteiro inicio para lin de 1 até linhas faça vet[lin] 0 para col de 1 até colunas faça vet[lin] vet[lin] +mat[lin][col] vet[lin] vet[lin] / colunas fim

Matrizes em subprogramas - Exemplo Algoritmo Principal: Algoritmo média_provas tipo matriz = real[1..50][1..5] vetor = real[1..50] variável notas: matriz medias: vetor nro_alunos: inteiro leia(nro_alunos) leia_matriz(notas,nro_alunos,5) calcule_media(notas,nro_alunos,5, medias) escreva_notas(notas,nro_alunos,5, medias) Exercício: desenvolver o subprograma escreva_notas

Matrizes em subprogramas - Exemplo O subprograma recebe a matriz apresenta o conteúdo. Subprograma escreva_notas(mat, linhas,colunas,vet) e: linhas, colunas: inteiro {dimensões da matriz} mat: matriz {notas} vet: vetor {medias} variável lin, col: inteiro inicio para lin de 1 até linhas faça para col de 1 até colunas faça escreva(mat[lin][col]) escreva (vet[lin]) fim

Matrizes em C

Matrizes em C Linguagem C admite conjuntos de dados homogêneos com indexação em várias dimensões. A quantidade de posições em memória reservadas para a matriz é definida na declaração das dimensões pelo número de linhas N e o colunas M, ambos devem possuir valores inteiros. Ex: int matriz[ N ][ M ]; Os formatos para declaração de variável e para definição de tipo com indexação multi-dimensional são apresentados a seguir: int matriz[ 5 ][ 2 ]; float matriz[ 10 ][ 30 ]; ou int matriz[ 3 ][ 3 ] = { 1,2,3, 4,5,6, 7,8,9 }; ou int matriz[ ][ 3 ] = { 1,2,3, 4,5,6, 7,8,9 }; //somente a 1ª dimensão pode ser omitida

Matrizes em C Linguagem C admite conjuntos de dados homogêneos com indexação em várias dimensões. A quantidade de posições em memória reservadas para a matriz é definida na declaração das dimensões pelo número de linhas Tipo dos elementos N e o colunas Nome da M, Variável ambos devem possuir valores inteiros. Ex: int do conjunto matriz[ N ][ M ]; Número máximo Os formatos para declaração de de variável elementos e para definição de tipo com indexação multi-dimensional são nas linhas apresentados a seguir: ou int matriz[ 5 ][ 2 ]; float matriz[ 10 ][ 30 ]; int matriz[ 3 ][ 3 ] = { 1,2,3, 4,5,6, 7,8,9 }; ou int matriz[ Número máximo de elementos nas colunas ][ 3 ] = { 1,2,3, 4,5,6, 7,8,9 }; //somente a 1ª dimensão pode ser omitida

Exemplo Média Aritmética #include <stdio.h> #define NRO_NOTAS 5 #define NRO_ALUNOS 10 int main(void) { float notas[nro_alunos][nro_notas]; int lin, col; float valor,soma,media; for (lin=0;lin<nro_alunos;lin++) { for (col=0;col<nro_notas;col++) { printf("nota %d do aluno %d: ",col+1,lin+1); scanf("%f",&valor); notas[lin][col] = valor; } } for (lin=0;lin<nro_alunos;lin++) { soma = 0; for (col=0;col<nro_notas;col++) { soma = soma + notas[lin][col]; } media = soma / NRO_NOTAS; printf("aluno %d = %.2f\n",lin+1,media); } }

Linguagem C Matriz em Subprogramas Em linguagem C a passagem de uma matriz para um subprograma pode ser por referência ou parâmetro. A matriz dever ser passada informando-se pelo menos o número máximo de colunas. Exemplo: #include <stdio.h> void alt_value(int mat[][10],int linha,int coluna,int valor) { mat[linha][coluna] = valor; } int main(void) { int mat[5][10]; alt_value(mat,1,1,10); return 0; }

Linguagem C Matriz em Subprogramas Em linguagem C a passagem de uma matriz para um subprograma pode ser por referência ou parâmetro. A matriz dever ser passada informando-se pelo menos o número máximo de colunas. Exemplo: #include <stdio.h> void alt_value(int mat[5][10],int linha,int coluna,int valor) { mat[linha][coluna] = valor; } int main(void) { int mat[5][10]; alt_value(mat,1,1,10); return 0; } Ou informar também o número máximo de linhas

Linguagem C Matriz em Subprogramas Uma outra abordagem é transformar a matriz multidimensional em uma unidimensional(um vetor) e acessar cada posição deslocando-se um número N de colunas por vez. A posição no vetor é obtida com a combinação da posição da linha e coluna. Ex: pos = coluna + linha * MaxColunas Exemplo: #include <stdio.h> #define LIN 5 #define COL 10 void alt_value(int mat[],int linha,int coluna,int valor) { int pos = coluna + linha * COL; mat[pos] = valor; } int main(void) { int mat[lin*col]; alt_value(mat,1,1,10); return 0; }

MATRIZ - Exercício Escrever um algoritmo que leia duas matrizes e calcule a soma delas armazenando em uma terceira matriz. Apresente a matriz resultante.

MATRIZ - Exercício Escrever um algoritmo para o seguinte problema: Ler uma matriz A de dimensão N x N (N 50) e verificar se a matriz é simétrica. Escrever a matriz e a mensagem de resposta

Matrizes Introdução à Ciência da Computação Rosane Minghim Apoio na confecção: Carlos Elias A. Zampieri Danilo Medeiros Eler Rogério Eduardo Garcia Renato Rodrigues Baseado na Apostila: Curso Introdutório de Computação por R. Minghim e G. P. Telles