O documento descreve matrizes e vetores, definindo-os como variáveis indexadas que armazenam dados do mesmo tipo na memória de forma sequencial e acessíveis por índices. Detalha suas dimensões em linhas e colunas, características como tipo de dados e sintaxe de acesso, e exemplos de códigos em C que manipulam vetores e matrizes.
2. DEFINIÇÃO
• Série de elementos do mesmo tipo, alocadas consecutivamente na memória
RAM, que podem ser referenciados individualmente, adicionando-se um índice
a um nome único (variável).
• Única variável de um determinado tamanho(dimensão), que guarda várias
informações do mesmo tipo. Essas informações são gravadas
sequencialmente na memória RAM , sendo referenciadas através de índices.
• Outros nomes: variáveis indexadas, tabelas em memória,
arranjos ou “arrays”
3.
4. DIMENSÃO DE UMA MATRIZ
• LINHAS E COLUNAS (variáveis inteiras)
Exs.:
2 x 5 - Matriz de 2 Linhas e 5 colunas
2 x 2 – Matriz quadrada de ordem 2
1 x 4 – Matriz-Linha: 1 Linha por 4 Colunas – Vetor
4 x 1 – Matriz-Coluna: 4 Linhas por 1 Coluna – Vetor
5. CARACTERÍSTICAS
• VETOR => MATRIZ UNIDIMENSIONAL – Z[ I ]
• APLICAÇÃO DO COMANDO for( ) {...}
• VARIÁVEIS DO MESMO TIPO (real, inteira, char)
• ORGANIZAÇÃO OU DIMENSÃO:
• LINHAS
• COLUNAS
• ÍNDICE(S) => Identifica dado: linha(m_linhas)
e coluna(n_colunas) – NÚMEROS INTEIROS
• SINTAXE: A [ m_linhas ] [ n_colunas]
• OPERAÇÕES MATEMÁTICAS:
• O3 BÁSICAS (exceto divisão)
• INVERSÃO
• TRANSPOSIÇÃO
• MATRIZ QUADRADA ORDEM n => m_linhas = n_colunas = n
7. VETOR
• MATRIZ DE O1 DIMENSÃO ( linha ou coluna)
• DECLARAÇÃO EM LING. C: int A[5] ;
A [5] = { 16, 2, 77, 40, 12071 };
• ACESSO AOS CONTEÚDOS DO VETOR:
A[3] = 40 ; printf(“Segundo valor de A: %d”,
A[1]);
11. Exemplo 1 – Diagrama de Bloco
R1, R2, R3, R4, R5
SOMA <= R1+ R2 + R3 + R4 + R5
MEDIA <= SOMA / 5.
MEDIA
12. MATRIZ - Exemplo 1
CALCULE E APRESENTE A MÉDIA ARITMÉTICA DE O5 VALORES DE RESISTORES
// Calculo de Media de 05 valores de resistores em Ohm
#include <stdio.h>
int main(void) {
float R1, R2, R3, R4, R5 , SOMA, MEDIA; // declaração de variáveis
printf("nnttCALCULO DA MEDIA ARITMETICA DE RESISTORESn") ;
printf("tt+++++++++++++++++++++++++++++++++++++++++nn") ;
printf("nDigite 05 resistores(Ohm), separados por espaço ou via tecla
<Enter>:nttt") ;
scanf("%f %f %f %f %f", &R1, &R2, &R3, &R4, &R5);
SOMA = R1 + R2 + R3 + R4 + R5;
MEDIA = SOMA / 5.;
printf("nnttValor medio dos resistores = %.2f (Ohm).nn", MEDIA);
return 0; }
13. MATRIZ - Exemplo 1: SOLUÇÃO OTIMIZADA, DIAGRAMA DE BLOCO
INÍCIO
R[I]
SOMA <= INICIO
MEDIA
FIM
MAX <= 5
INICIO <= 0
I = INICIO; I<=MAX-1; I++
SOMA <= SOMA + R[I]
1
R[I] <= INICIO
V
F
1
2
2
3
3
MEDIA <= SOMA / MAX
14. // Calculo da Media de 05 valores de resistores em Ohm
#include <stdio.h>
#define MAX 5
#define INICIO 0 // declaração de constantes
int main(void) {
float R[MAX], MEDIA ; int I; // declaração de variáveis
float SOMA = INICIO;
printf("ntCalculo da media dos resistoressnn");
printf("nInsira alternadamente os 5 resistores (Ohm): nn");
for (I = INICIO ; I <= MAX-1; I++)
{ do{
printf("Informe o %do resistor: ", I+1); scanf("%f", &R[I]);
}while(R[I] <= INICIO) ;
SOMA += R[I]; // equivale a SOMA = SOMA + R[I]
}
MEDIA = SOMA/5.; //calculo da media fora do loop
printf("nA media das resistencias = %.2f (Ohm)nn", MEDIA); return 0;}
MATRIZ - EXEMPLO 1: SOLUÇÃO OTIMIZADA
15. Exemplo 2: DIAGRAMA DE BLOCO
INÍCIO
DIM
FPmin <= .5
SOMA
FIM
FPMAX <= .92
INICIO <= 0
I = INICIO; I <= DIM-1; I++
SOMA <= SOMA + FP[I]
1
DIM <= INICIO
V
F
1
2
2
3
3
FP[I]
SOMA <= 0.
FP[I] < FPmin ||
FP[I] > FPMAX
V
F
I % 2 == 1
V F
16. MATRIZ - Exemplo 2
#include <stdio.h>
#define INICIO 0
#define FPmin .5
#define FPMAX .92 // declaração de constantes
int main(void) {
printf("nttSomatorio de Fatores de Potencia de índices inteiros ímpares de um
Vetor");printf("ntt========================================================================nn");
int DIM ;
do{ printf("ntDigite dimensao positiva nao-nula do Vetor, definida pelo usuario: ");
scanf("%d" , &DIM) ; } while(DIM <= INICIO ) ;
float FP[DIM] , SOMA = INICIO ; int I;
for(I = INICIO ; I <= DIM-1 ; I++) {
do{
printf("nDigite um valor positivo entre 0,5 e 0,92 inclusive para o elemento nr.%2d: ", I); scanf("%f", &FP[I]);
}while(FP[I] < FPmin || FP[I] > FPMAX ); }
for(I = INICIO ; I <= DIM-1 ; I++)
{ if (I % 2 == 1) // verifica indice impar
{SOMA += FP[I]; } }
printf("nntttttttSoma dos elementos = %.3fn", SOMA); // Apresenta a soma dos FPs
return 0;}
17. Exemplo 3 - DIAGRAMA DE BLOCO
INÍCIO
VSOMA[X] <= V1[X] + V2[X]
FIM
DIM <= 5
INICIO <= 0
X = INICIO; X<= DIM-1;X++
V1[DIM] <= {1.,2.,3.,4.,5. }
V2[DIM] <= {6.8,1.4,3.2,2.5,6.9}
18. MATRIZ - Exemplo 3
#include<stdio.h>
#define DIM 5
#define INICIO 0 // declaração de constantes
int main(void) {
printf("ttEste programa soma os dois vetores-tensao abaixo:nn");
float V1[DIM]={1.,2.,3.,4.,5.}; //declaração e inicialização do vetor vetor 1
float V2[DIM]={6.8,1.4,3.2,2.5,6.9}; //declaração e inicialização do vetor vetor
2
float VSoma[DIM]; /*declaração do vetor-soma que vai guardar o resultado
da soma dos dois vetores(V1 e V2).*/
int X; printf("nttttVet1 = {1.,2.,3.,4.,5.}n");
printf("nttttVet2 = {6,1,2,2,5 6.8,1.4,3.2,2.5,6.9}nnn");
printf("tttVetor resultante da soma:n");
for(X= INICIO; X<=DIM-1; X++) {
printf("nttttVetSoma[%d]: %fn", X , VSoma[X] = V1[X]+ V2[X]);} return 0;}
19. FLUXOGRAMA DA LÓGICA DE SOLUÇÃO
1
INÍCIO
DECLARAÇÃO DE VARIÁVEL(EIS )
float X = 0. ; int A = 1 ;
DECLARAÇÃO DE CONSTANTE(S)
#define
LEITURA DE VALORES DAS VARIÁVEIS DE ENTRADA
scanf( );
20. FLUXOGRAMA DA LÓGICA DE SOLUÇÃO
1
FIM
Processamento:
Atribuição(ões), Cálculo(s),
Tomada(s) de Decisão,
Estrutura(s) de Repetição(“loop(s)”)
EXIBIÇÃO DE VALOR(ES) DA(S) VARIÁVEL(EIS) DE SAÍDA
printf( );
21. Para cada exercício abaixo, elabore o Diagrama de Blocos e a codificação em
Linguagem C.
Se a dupla tiver nos. de chamada ≠ , farão os exercícios b)
a) Exemplos 9 e 11 (chamada ímpar)
b) Exemplos 8 e 10 (chamada par)
5a SÉRIE DE EXERCÍCIOS
22. Exemplo 8
Considere o circuito de polarização do coletor por realimentação e suas
respectivas equações, mostrados abaixo:
A partir da inserção do número positivo não nulo de valores-NV, referentes aos
dados inseridos(vetores): tensão de alimentação-VCC (V), resistores- RB e RC
(KΩ) e Beta-BetaDC, calcule e mostre os respectivos valores quiescentes(IEQ
(mA) e VCEQ (V)). Lógica só aceitará valores positivos não nulos; caso contrário,
solicitará valor correto. Programa finalizará quando após todos os cálculos, seja
pressionada a tecla “F” ou “f”, do contrário, a lógica reiniciará.
23. Exemplo 8 – sugestão de solução
INÍCIO
VCC[I], RB[I], RC[I], BETADC[I]
FIM
m <= 10 -3
NULO <= 0
I = UM; I <= NV; I++
RB[I] <= RB[I] * m
RC[I] <= RC[I] * m
IEQ[I] <= VCC[I] - VBEQ / (RC[I]+(RB[I] / BETADC[I]))
VCEQ[I] <= VCC[I] - RCQ[I] * IEQ[I]
ZERO <= 0.
UM <= 1
VBEQ <= .7
NV
1
NV <= NULO
V
F
1
3
MSG
V
F
IEQ[I], VCEQ[I]
3
TECLA
TECLA
!= ‘F’ ||
TECLA
!= ‘f’
V
F
4
4
MSG: VCC[I]<= ZERO || RB[I]<= ZERO || RC[I]<= ZERO || BETADC[I]<= ZERO
24. Exemplo 9
Um gerador elétrico ligado em Δ balanceado pode ser
alimentado pelas seguintes tensões de linha-VL (V):
220,0, 380,0 ou 440,0 ( escolhida pelo usuário),
operando em sequência positiva de fases alimenta
dois motores trifásicos: potência ativa-P1 (KW), fator
de potência-FP1 e outro de potência aparente-S2
(KVA) com fator de potência-FP2, sendo todos estes
valores inseridos via teclado. Considere: PI = 3,1416
e a frequência- F = 50,0 ou 60,0 (Hz), escolhida pelo
usuário. continua
25. Exemplo 9
Elabore um código em linguagem C que calcule e mostre, usando vetores:
i) As potências ativa-PT(KW), reativa-QT(kVAr) e aparente-ST (KVA) totais da
instalação em função dos dados inseridos;
ii) Fator de potência total-FPT da instalação;
iii) Corrente de linha total-IT (A) da instalação;
iv) Caso FPT for menor que o fator de potência normalizado da ANEEL-FPTN =
0,92, será necessário mostrar uma mensagem advertindo a situação – “Correção
do FP”, caso contrário – “FP correto”.
A lógica deve rejeitar valor(es) inválido(s), solicitando nova digitação, sendo
repetida-NVEZES, cujo valor não-nulo positivo é escolhido pelo usuário.
O código só finalizará quando uma tecla, escolhida pelo programador e
avisado ao usuário for pressionada, do contrário, a rotina reinicia.
Formulário geral:
W =2xPIxF VL = VF IL = 1,73 x IF PT = P1+ P2 = 1,73xVLxILcos(FI)
FPT = PT ÷ ST 2 2
ST PT QT
26. Exemplo 9 – sugestão de solução
INÍCIO
PI <= 3.141592
K <= 1000.
ZERO <= 0.
FPTN <= .92
NVEZES
1
NVEZES <= ZERO
V
F
1
2
F != 50. || F != 60.
V
F
F
6
UM <= 1
VL
VL != 220. || VL != 380. != 440.
V
F
W <= 2*PI*F
VF <= VL
continua
27. Exemplo 9 – sugestão de solução
FIM
I = UM; I <= NVEZES; I++
P1[I] <= P1[I]*K
S2[I] <= S2[I]*K
P2[I] <= S2[I] * FP2[I]
S1[I] <= P1[I] / FP1[I]
PT[I] <= P1[I] + P2[I]
ST[I] <= S1[I] + S2[I]
QT[I] <= (ST[I]*ST[I] - PT[I]*PT[I] ) (1/2)
4
4
PT[I], QT[I],
ST[I]
5
TECLA
TECLA
!= ‘L’ ||
TECLA
!= ‘l’
V
F
3
MSG1: P1[I] <= ZERO || S2[I] <= ZERO FP1[I] <= ZERO && FP1[I] > 1. || FP2[I] <= ZERO && FP2[I]> 1.
P1[I], FP1[I], FP2[I], S2[I]
MSG1
V
F
3
IT[I] = ST[I] / VL
FPT[I] = ST[I] / PT[I]
IT[I], FPT[I]
FPT[I]
<
FPTN
MSG2
V F
MSG3
5
2
6
MSG3: Correção do FP
MSG2: FP correto
28. Exemplo 10
USANDO VETORES, ELABORE O D. B. E CÓDIGO EM LINGUAGEM C, QUE MOSTRE A TABELA-
VERDADE ABAIXO DA EXPRESSÃO BOOLEANA S=(A.B)+(‘C). APÓS A LÓGICA SER EXECUTADA,
CASO SEJA PRESSIONADA UMA TECLA(MAIÚSCULA OU NÃO), AVISADA AO USUÁRIO, É
ENCERRADO O CÓDIGO, DO CONTRÁRIO, O CÓDIGO É REINICIADO.
29. Exemplo 11
ELABORE O D. B. E CÓDIGO EM LINGUAGEM C DO PROBLEMA A SEGUIR:
Considere o circuito abaixo, adotando todos os A. O.s ideais:
circuito 1 circuito 2 circuito 3
continua
30. Exemplo 11
V1, V2, V3 (V) são sinais DC, inseridos pelo usuário (mínimo 03 valores
por tensão). O valor do resistor-RL (KΩ) usuário (mínimo 03 valores por
resistor => vetor) também são lidos via teclado, onde apenas são
admitidos pela lógica do programa valores positivos não-nulos, caso
contrário, outra inserção deverá ser solicitada.
Calcule e mostre(03 casas de precisão) as indicações dos voltímetros
DC: VA, VB e VS (V), bem como a corrente na carga-IRL (mA).
1º circuito – configuração amplificador inversor:
AV = -2 AV – ganho de tensão
2º circuito – configuração somador inversor:
VB = - (VA + V2)
3º circuito – configuração somador não-inversor:
VS = VB + V3