SlideShare uma empresa Scribd logo
1 de 30
DADOS HOMOGÊNEOS - MATRIZES
Prof. Luciano Machado Cavalca
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”
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
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
EXEMPLOS
m_linhas = 2 n_colunas = 3 => dimensão 2 x 3
m_linhas = 3 n_colunas = 1 => dimensão 3 x 1
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]);
D. B. - LEITURA DE VETOR
D. B. - IMPRESSÃO DE VETOR
10
LEITURA / EXIBIÇÃO DE ELEMENTOS DO VETOR
LEITURA
scanf( );
EXIBIÇÃO
printf( );
Exemplo 1 – Diagrama de Bloco
R1, R2, R3, R4, R5
SOMA <= R1+ R2 + R3 + R4 + R5
MEDIA <= SOMA / 5.
MEDIA
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; }
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
// 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
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
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;}
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}
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;}
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( );
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( );
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
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á.
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
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
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
 
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
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
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.
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
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

Mais conteúdo relacionado

Semelhante a AulaProgramacao6LingC_MatrizesExemplosERE.pptx

2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
Ricardo Bolanho
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em C
Caique Silva
 
Programação em Python_6.pptx
Programação em Python_6.pptxProgramação em Python_6.pptx
Programação em Python_6.pptx
zarusca
 

Semelhante a AulaProgramacao6LingC_MatrizesExemplosERE.pptx (20)

Pascal
PascalPascal
Pascal
 
Sobrecarga operadores
Sobrecarga operadoresSobrecarga operadores
Sobrecarga operadores
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexados
 
Exercícios PL/SQL
Exercícios PL/SQLExercícios PL/SQL
Exercícios PL/SQL
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Algoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em CAlgoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em C
 
Pilhas e filas
Pilhas e filasPilhas e filas
Pilhas e filas
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Gabarito funcoes
Gabarito funcoesGabarito funcoes
Gabarito funcoes
 
Calculo numérico
Calculo numéricoCalculo numérico
Calculo numérico
 
Programacao vt100
Programacao vt100Programacao vt100
Programacao vt100
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
Fundamentos de C#
Fundamentos de C#Fundamentos de C#
Fundamentos de C#
 
Pro2 15p
Pro2 15pPro2 15p
Pro2 15p
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Pro2 03p
Pro2 03pPro2 03p
Pro2 03p
 
Pro2 03p
Pro2 03pPro2 03p
Pro2 03p
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em C
 
Programação em Python_6.pptx
Programação em Python_6.pptxProgramação em Python_6.pptx
Programação em Python_6.pptx
 

AulaProgramacao6LingC_MatrizesExemplosERE.pptx

  • 1. DADOS HOMOGÊNEOS - MATRIZES Prof. Luciano Machado Cavalca
  • 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
  • 6. EXEMPLOS m_linhas = 2 n_colunas = 3 => dimensão 2 x 3 m_linhas = 3 n_colunas = 1 => dimensão 3 x 1
  • 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]);
  • 8. D. B. - LEITURA DE VETOR
  • 9. D. B. - IMPRESSÃO DE VETOR
  • 10. 10 LEITURA / EXIBIÇÃO DE ELEMENTOS DO VETOR LEITURA scanf( ); EXIBIÇÃO printf( );
  • 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