Você está na página 1de 29

Algoritmos e Lógica

de Programação
Aula Prática 8

Profa Ms. Adriane Ap. Loper


Matrizes e
recursividade em Dev
C++
Matrizes
(Manzano (2015) utiliza apenas uma nomenclatura para
definir variáveis compostas: matrizes, e as divide em matrizes
unidimensionais e bidimensionais.)

Fonte: Artero (2018, p.189)


Características de matrizes
 A capacidade da matriz, ou seja, a quantidade de linhas e
colunas tem que ser determinada no momento em que se
declara essa variável. A quantidade de elementos é a
multiplicação da quantidade de linhas por colunas (M x N).
 A matriz é uma variável composta bidimensional, ou seja, o
acesso a seus dados tanto para leitura como para escrita
precisa de dois índices.
 Dentro de cada espaço está o número da linha seguido do
número da coluna.
 A matriz tem que ter o tipo
de dado que irá armazenar no
momento da declaração.
Fonte: Artero (2018, p.189)
Atribuição de valores em uma matriz
Para armazenarmos um valor dentro de uma matriz usamos o
índice da linha e da coluna, portanto, basta informar a variável
e entre o primeiro colchete o índice da linha e entre o segundo
colchete o índice da coluna e usando a atribuição escolher o
valor.
Sintaxe: variavel[M][N] = valor;
Exemplo:
numeros[0][1] = -100;
Temperatura[50][0] = 37.5;
Iteração sobre os elementos de matrizes
 Com matrizes utilizamos estruturas de repetição para que
seus valores sejam acessados de forma mais eficiente.
 Precisamos de estruturas de repetições aninhadas.
 A quantidade de estruturas que precisamos está
diretamente associada à quantidade de índices da variável
composta, portanto se temos dois índices, usaremos duas
estruturas de repetição.
 A primeira estrutura de repetição controla o índice das
linhas, e a segunda controla o índice das colunas, portanto
sua sintaxe será
for (i = 0; i<= 9; i++) {
for (j = 0; j<= 9; j++){
numeros[i] [j]; } }
Utilização de funções com matrizes
 Matrizes são amplamente utilizadas para armazenar
valores temporariamente a fim de efetuar diversos
cálculos.
 Grandes aplicações de matrizes é na computação gráfica,
pois cada pixel de uma imagem é representada com um
valor na matriz.
 Segundo Colares (2011), o mecanismo de busca do Google
utiliza esse recurso para ranquear as páginas de resultado.
Exemplo de
Implementação de
Matrizes
1)Matriz 2 x 2
#include <stdio.h>
#define LIM 2
int main(){
int mat[LIM][LIM];
int i=0,j=0;
printf("Faremos uma matriz 2x2\n");
for (i=0; i<LIM; i++) {
for (j=0; j<LIM; j++) {
printf("Digite o valor da posicao (%d,%d): ",i,j);
scanf("%d",&mat[i][j]);
}
}
1)Matriz 2 x 2
for (i=0; i<LIM; i++){
for (j=0; j<LIM; j++)
printf("%d ",mat[i][j]);
printf("\n");
}
return 0;
}
2) Matriz 3 x 3 multiplica 5
#include <stdio.h>
#include <stdlib.h>
int main(){
int i, j, m[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++){
printf("Elemento[%d][%d]= ",i,j);
scanf("%d",&m[i][j]);
}
printf("\n::: Valores Originais :::\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n"); }
2) Matriz 3 x 3 multiplica 5
for(i=0;i<3;i++)
for(j=0;j<3;j++)
m[i][j]=m[i][j]*5;
printf("\n::: Valores Multiplicados por 5:::\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}
return 0;
}
3) Soma 3 notas de 4 alunos
#include <stdio.h>
#include <stdlib.h>
int main() {
float matNotas[4][4];
int i, j;
for (i=0; i<4; i++) {
for (j=0; j<3; j++) {
printf("Para o aluno %d informe a nota %d: \n", i+1, j+1);
scanf("%f", &matNotas[i][j]);
}
matNotas[i][3] = matNotas[i][0] + matNotas[i][1] +
matNotas[i][2];
}
3) Soma 3 notas de 4 alunos
for (i=0; i<4; i++) {
printf("Notas do Aluno %d\n", i);
for (j=0; j<3; j++) {
if (j != 2)
printf("%f \t", matNotas[i][j]);
else
printf("%f \n", matNotas[i][j]);
}
printf("Nota final......: %f \n", matNotas[i][3]);
}
}
4) Média da temperatura dos braços mecânicos
Algoritmo para calcular a media da temperatura dos braços
mecânicos:
Siga os seguintes passos:
• Crie uma matriz com 10 linhas e 5 colunas.
As colunas vão armazenar: código, temp1, temp2, temp3,
média.
• Guarde os 10 códigos na coluna 0 da matriz.
• Preencha as outras 3 colunas com a temperatura de cada
máquina.
• Calcule a média e guarda na coluna 4 da matriz.
• Exiba na tela a média de cada um dos 10 braços mecânicos.
4) Média da temperatura dos braços mecânicos
#include<stdio.h>
#include<locale.h>
float braco[10][5];
int i, j;
void ArmazenarCodigo(){ //função para guardar o código dos
braços
int codigo = 1000; //variável local
for(i=0;i<10;i++){
codigo = codigo + 10;
braco[i][0] = codigo;
}
}
4) Média da temperatura dos braços mecânicos
void ArmazenarTemperaturas(){ //função para guardar os
demais dados
ArmazenarCodigo(); //chamando a função para atribuir os
códigos.
for(i=0;i<10;i++){
printf("Digite as 3 temperaturas do braço %.0f: \n",braco[i][0]);
scanf("%f %f %f",&braco[i][1],&braco[i][2],&braco[i][3]);
braco[i][4] = (braco[i][1] + braco[i][2] + braco[i][3])/3;
}
}
4) Média da temperatura dos braços mecânicos
void ExibirDados(){ //função para exibir os médias calculadas
ArmazenarTemperaturas(); //chamando a função para atribuir
valores
for(i=0;i<10;i++){
printf("\n Média do braço %.0f: %.2f",braco[i][0],braco[i][4]);
}
}
int main(){
setlocale(LC_ALL,"Portuguese");
ExibirDados(); //chamando a função para exibir os dados
}
Recursividade
Definições
 Utilizar funções melhora a organização do código, permite
a reutilização de trechos de código e evita a repetição de
comandos.
 Para criar uma função temos que seguir uma determinada
estrutura com os seguintes passos:
 (i) determinar o tipo de retorno da função (lembrando que
quando a função não retorna nada usamos void);
 (ii) escolher o nome da função (lembrando que a condição
para o nome é o mesmo da nomenclatura para variáveis);
Definições
 (iii) entre parênteses especificar quantos e quais tipos de
parâmetros a função receberá;
 (iv)especificar os comandos da função, incluindo as
variáveis locais (variáveis que pertencem somente a essa
função);
 (v) se o tipo de retorno for diferente de void, então a
função deverá ter o comando return valor.
 Os itens (iv) e (v) sempre estarão entre chaves que marcam
o início e o final da função.
Sintaxe da criação de uma função
Exemplo clássico de uma função com retorno!
Definição e caracterização de recursividade
 Recursividade significa recorrer a uma determinada
situação (AULETE, 2017).
 Em programação uma função recursiva é uma função que
chama a ela própria ou ainda nas palavras de Soffener
(2017): “Recursividade é a possibilidade de uma função
chamar a si mesma.” (SOFFENER, 2017, p. 107).
 Para criar uma função recursiva basta fazermos uma
chamada da função dentro da própria função.
 Sintaxe de função recursiva:
Exemplos
5) Juros
main(){
float conta, resultado;
printf("Digite o valor da conta: ");
scanf("%f",&conta);
resultado = AdicionarJuros(conta);
printf("\n Valor final da conta = %.2f",resultado);
getchar();
}
6) Expoente 2 elevado a 4
#include <stdio.h>
int potencia(int base, int expoente){
if(expoente == 0)
return 1;
else
return (base * potencia(base, expoente-1));
}
int main(){
int base = 2, expoente = 4, resultado;
resultado = potencia(base,expoente);
printf("%d elevado a %d = %d", base, expoente,resultado);
return 0;
}
7)Fatorial Recursivo
main(){
setlocale(LC_ALL,"Portuguese");
int n, resultado;
printf("\n Digite um número inteiro: ");
scanf("%d",&n);
resultado = CalcularFatorial(n);
printf("\n Resultado do fatorial = %d",resultado);
getchar();
}
Relatório
Registre suas observações em um relatório a ser entregue no
fim da prática.
Boa atividade a todos!
Obrigada!

Você também pode gostar