MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS SÃO JOSÉ – SANTA CATARINA Lógica de Programação Módulo II Prof. Tiago Semprebom [email protected] www.sj.ifsc.edu.br/~tisemp Lógica de Programação Variáveis multidimensionais • • • Variáveis que representam vetores e matrizes Guardam múltiplos valores de um mesmo tipo – Qualquer tipo é possível O acesso a um valor se faz indexando a variável – Índices iniciam em 0 Inteiro v[10]; // vetor com 10 inteiros inteiro i; // usada como índice INICIO Para i ← 0 até 9 faça v[i] ← 0; Fim para FIM Lógica de Programação Variáveis multidimensionais • Uso de variáveis multidimensionais: – – – – Cálculos com matrizes Processamento de imagem Guardar registros em memória Representar sequências de caracteres alfanuméricos • Na verdade, variáveis alfanuméricas são implementadas como vetores de caracteres – Essas variáveis são conhecidas como strings Lógica de Programação Variáveis multidimensionais • Cada posição da variável funciona como uma variável independente – Pode ser acessada, modificada, e usada em expressões aritméticas e lógicas. Inteiro v[10]; // vetor com 10 inteiros inteiro i; // usada como índice real m; INICIO m ← 0; // inicializa v (omitido) Para i ← 0 até 9 faça m ← m + v[i]; Fim para; Escreva('média=', m/10); FIM Lógica de Programação Variáveis multidimensionais Exercício: faça um algoritmo para ler dez números do teclado e mostrar somente os que estiverem abaixo da média. Inteiro v[10]; // vetor com 10 inteiros inteiro i; // usada como índice real m; INICIO m ← 0; Para i ← 0 até 9 faça Leia(v[i]); m ← m + v[i]; Fim para; m ← m / 10; Para i ← 0 até 9 faça Se (v[i] < m) então Escreva(v[i]); Fim se Fim para; FIM Lógica de Programação Variáveis multidimensionais • Variável pode ter mais de duas ou mais dimensões • Exemplo de uma matriz de inteiros: Inteiro m[10][10]; // matriz de inteiros bidimensional 10x10 inteiro i, j; // usadas como índice INICIO Para i ← 0 até 9 faça Para j ← 0 até 9 faça m[i][j] ← 0; Fim para Fim para FIM Lógica de Programação Variáveis multidimensionais • Exercício: faça um algoritmo para multiplicar duas matrizes bidimensionais 3x3, cujos valores serão fornecidos por teclado. Inteiro A[3][3], B[3][3], C[3][3]; inteiro i,j,k; // usada como índice INICIO Para i ← 0 até 2 faça Para j ← 0 até 2 Faça Leia(A[i][j]); Leia(B[i][j]); Fim para; Fim Para Para i ← 0 até 2 faça Para j ← 0 até 2 faça C[i][j] ← 0; Para k ← 0 até 2 faça C[i][j] += A[i][k] * B[k][j]; Fim Para Fim Para Fim Para FIM Lógica de Programação Exercício: Modifique o algoritmo anterior para que as dimensões das matrizes sejam também lidas via teclado. Obs: as matrizes não são necessariamente quadradas, e cada linha ou coluna nunca tem mais que 10 elementos. Lógica de Programação Inteiro A[10][10], B[10][10], C[10][10]; inteiro i,j,k; // usadas como índice inteiro a1, a2, b1, b2; //dimensões INICIO Leia(a1); Leia(a2); Leia(b1); Leia(b2); Se ((a1 > 10) ou (a2 > 10) ou (b1 > 10) ou (b2 > 10) ou (a2 != b1)) então Escreva ('Erro !!!'); Termina; Fim Se Para i ← 0 até a1 faça Para j ← 0 até a2 Faça Leia(A[i][j]); Fim para; Fim Para Para i ← 0 até b1 faça Para j ← 0 até b2 Faça Leia(B[i][j]); Fim para; Fim Para Para i ← 0 até a1 faça Para j ← 0 até b2 faça C[i][j] ← 0; Para k ← 0 até a2 faça C[i][j] += A[i][k] * B[k][j]; Fim Para Fim Para Fim Para FIM Lógica de Programação Variáveis multidimensionais • O tamanho de uma variável multidimensional é predefinido – Não pode ser modificado • Os valores usados para indexar essas variáveis não são verificados – Pode-se tentar indexar uma posição fora da variável, o que gera um erro de acesso à memória. – Portanto, cuidado ao indexá-las! Lógica de Programação Variáveis multidimensionais • Variável do tipo string: – Vetores de caracteres – Cada posição da variável guarda um caractere – Caractere vazio representa o final da string Caractere s[10]; // variável string para guardar até 10 caracteres inteiro i; // usada como índice INICIO Leia(s); Para i ← 0 até 9 faça Escreva('Posição ', i, '=', s[i]); Fim para FIM Lógica de Programação Variáveis multidimensionais – Exercício: faça um algoritmo para comparar duas strings inteiro i; // usada como índice Booleano ok; INICIO Leia(s1); Leia(s2); ok ← Verdadeiro; i ← 0; Enquanto ((i < 10) and (s1[i] != 0) and (s2[i] != 0)) faça ok ← ok and (s1[i] == s2[i]); i ← i + 1; Fim para Escreva('Comparação: ', ok); FIM Lógica de Programação Exercícios: 1) Faça um algoritmo para inverter a ordem dos caracteres em uma string 2) Faça um algoritmo para procurar a primeira localização onde se encontra uma palavra dentro de uma variável string. 3) Escreva um algoritmo que preencha a diagonal principal de uma matriz 5 x 5 com zeros. E o restante com valores um. 4) Escreva um algoritmo que leio os elementos de uma matriz inteira 10 x 10 e imprima a soma dos elementos que estão acima da diagonal principal.