Senhores Alunos.
No link abaixo, é possível baixar uma lista com exercícios sobre vetores e matrizes.
- Vetores & Matrizes.
Até amanhão
quarta-feira, 29 de abril de 2015
Programação de Computadores - Solução exercício sobre estruturas
Senhores alunos:
Segue no final do post, o código fonte de uma solução para o exercício:
Criar uma estrutura para armazenar informação sobre alunos de uma disciplina:
- Nome do aluno
- Número de matrícula
- Notas de três alunos
- Média das notas
Você usará um vetor (matriz) de estruturas, em que o número de elementos é o número alunos.
Por enquanto, fazer a entrada de dados pelo teclado (veremos, mais à frente, como importá-los de um arquivo):
- A média deve ser calculada
- O programa deve informar os alunos aprovados (média final > = 6).
- Mostrar na tela, também, os alunos em ordem de melhor média.
Keywords - struct, sort, C programming.
-------------------------------------------------------------------------
#include <stdio.h>
struct turma {
char nome[20];
char mat[7];
unsigned short int n1, n2, n3;
float media;
};
int main()
{
struct turma alunos[5],temp; // turma de apenas 5 alunos
char controle;
int j=0,k,i;
do {
fflush(stdin);
printf("Entre com o nome do aluno\n");
scanf("%[^\n]s",alunos[j].nome);
printf("Entre com o numero de matric. com 6 caracteres\n");
scanf("%s",alunos[j].mat);
printf("Entre com as 3 notas do aluno separadas por espaco\n");
scanf("%hu %hu %hu", &alunos[j].n1, &alunos[j].n2, &alunos[j].n3);
alunos[j].media = (alunos[j].n1 + alunos[j].n2 + alunos[j].n3)/3.0;
j++;
if(j==5)
{
printf("TURMA COMPLETA\n");
break;
}
printf("Digite <q> + <ENTER> para sair ou qquer tecla + <ENTER> para novo aluno\n");
fflush(stdin);
controle=getchar();
} while(controle!='q'&&controle!='Q');
//Imprime alunos com a media
printf("Alunos Aprovados\t Media\n");
for(k=0;k<j;k++)
{
if(alunos[k].media>=6)
printf("%s\t\t\t %.2f\n",alunos[k].nome,alunos[k].media);
}
//Ordenação
for(k=0;k<j;k++)
for(i=0;i<j-k-1;i++) // A cada elemento ordenado, ao executar o for interno
{ // necessito uma iteração a menos por isso "j-k"
// o menos "1" se deve ao fato de compararmos [i] com [i+1]
if(alunos[i].media<alunos[i+1].media)
{
temp = alunos[i];
alunos[i] = alunos[i+1];
alunos[i+1]=temp;
}
}
printf("\n\nAlunos\t\t\t Media\n");
for(k=0;k<j;k++)
{
printf("%s\t\t\t %.2f\n",alunos[k].nome,alunos[k].media);
}
return 0;
}
segunda-feira, 27 de abril de 2015
Errata - Introdução a Programação C
Senhores alunos:
Há pequenos erros, destacados em negrito, na página 13 do material da aula passada:
A classe static extern
Boa semana!
Há pequenos erros, destacados em negrito, na página 13 do material da aula passada:
A classe static extern
- Outro uso da classe static é associado a declarações externas, criando um mecanismo de privacidade
- Para declarar uma variável estática externa, acrescentamos a palavra static à declaração extern
- Uma variável estática externa tem as mesmas propriedades de uma variável externa
- exceto pelo fato de que variáveis externas podem ser usadas em qualquer parte do programa
- enquanto que as variáveis estáticas externas somente podem ser acessadas pelas funções do mesmo programa-fonte e definidas abaixo de suas declarações. (Faltou a palavra "estáticas")
Boa semana!
quarta-feira, 22 de abril de 2015
Programação de Computadores I - Aula de 23/04
Senhores alunos:
Nos link abaixo, disponibiliza-se o material da aula de amanhã.
Estruturas.
Até amanhã.
quarta-feira, 15 de abril de 2015
Programação de Computadores I - aula de 16/04
Senhores alunos:
As notas relativas a nossa próxima aula podem ser lidas no link abaixo.
Até amanhã!
Keywords: arrays, matrices , composite data types, C programming language, Scilab
Keywords: arrays, matrices , composite data types, C programming language, Scilab
segunda-feira, 13 de abril de 2015
Introdução a Programação C - Aula de 13/04
Senhores alunos:
Segue o link para acessar o material da nossa aula de hoje:
Segue o link para acessar o material da nossa aula de hoje:
- Classes de Armazenamento;
- O Pré-processador C e as macros.
Até Breve!
quinta-feira, 9 de abril de 2015
Transitórios RLC de segunda ordem - Script com Scilab
Senhores Alunos:
Segue, abaixo, o script Scilab completo para o cálculo das constantes da solução das equações diferenciais e o traçado dos gráfico da corrente e da tensão dos transitórios RLC série e paralelo de segunda ordem.
Bom uso!
Keywords: transient response, second-order, parallel RLC circuit, series RLC circuit, Scilab.
-----------------------------------------------
clc;
clear ;
xdel(winsid());
disp('Avaliação da Corrente no transitorio RLC de 2a ordem');
Tipo = input('Informe <1> para circuito serie <2> para paralelo: ')
disp('Entrada de Dados');
R = input('Valor de R =');
L = input('Valor de L =');
C = input('Valor de C =');
I0 = input('Valor de I0 =');
V0 = input('Valor de V0 =');
w0 = 1/(sqrt(L*C));
if Tipo==1
Vs = input('Valor de Vs =');
dI0 = -(-Vs+R*I0+V0)/L;
dV0 = I0/C
alpha = R/(2*L);
else
Is = input('Valor de Is =');
dV0 = -(-Is+I0+V0/R)/C;
dI0 = V0/L;
alpha = 1/(2*R*C);
end
printf('di(0)/dt = %.2f, alpha = %.2f, w0 = %.2f\n',dI0,alpha,w0);
printf('dv(0)/dt = %.2f\n',dV0);
if Tipo==1
if alpha<w0
disp('Caso subamortecido');
wd = sqrt(w0^2-alpha^2);
A1 = I0;
A2 = (dI0 + alpha*A1)/wd;
A3 = V0 - Vs;
A4 = (dV0 + alpha*A3)/wd;
printf('s1 = %.2f + j%.2f, s2 = %.2f - j%.2f\n',-alpha,wd,-alpha,wd);
printf('wd = %.2f\n',wd);
t = 0:0.001:5/alpha;
i = exp(-alpha*t).*(A1*cos(wd*t) + A2*sin(wd*t));
v = exp(-alpha*t).*(A3*cos(wd*t) + A4*sin(wd*t)) + Vs;
elseif alpha>w0
disp('Caso superamortecido');
delta = sqrt(alpha^2-w0^2);
s1 = -alpha + delta;
s2 = -alpha - delta;
A2 = (s1*I0 -dI0)/(2*delta);
A1 = I0 - A2;
A4 = (s1*(V0-Vs)-dV0)/(2*delta);
A3 = V0 - Vs - A4;
printf('s1 = %.2f, s2 = %.2f\n',s1,s2);
tau = (1/s1)*(A1/A2); // pondera em relação as constantes
t = 0:0.001:6*abs(tau);
i = A1*exp(s1*t) + A2*exp(s2*t);
v = A3*exp(s1*t) + A4*exp(s2*t) + Vs;
else
disp('Caso de amortecimento crítico');
s = -alpha;
A1 = I0;
A2 = dI0 + alpha*A1;
A3 = V0 - Vs;
A4 = dV0 + alpha*A3;
printf('s = %.2f\n',s);
t = 0:0.001:5/alpha;
i = (A1 + A2*t).*exp(s*t);
v = (A3 + A4*t).*exp(s*t) + Vs;
end
else
if alpha<w0
disp('Caso subamortecido');
wd = sqrt(w0^2-alpha^2);
A3 = V0;
A4 = (dV0 + alpha*A3)/wd;
A1 = I0 - Is;
A2 = (dI0 + alpha*A1)/wd;
printf('s1 = %.2f + j%.2f, s2 = %.2f - j%.2f\n',-alpha,wd,-alpha,wd);
printf('wd = %.2f\n',wd);
t = 0:0.001:5/alpha;
v = exp(-alpha*t).*(A3*cos(wd*t) + A4*sin(wd*t));
i = exp(-alpha*t).*(A1*cos(wd*t) + A2*sin(wd*t)) + Is;
elseif alpha>w0
disp('Caso superamortecido');
delta = sqrt(alpha^2-w0^2);
s1 = -alpha + delta;
s2 = -alpha - delta;
A4 = (s1*V0 -dV0)/(2*delta);
A3 = V0 - A4;
A2 = (s1*(I0-Is)-dI0)/(2*delta);
A1 = I0 - Is - A2;
printf('s1 = %.2f, s2 = %.2f\n',s1,s2);
tau = (1/s1)*(A1/A2);// pondera em relação as constantes
t = 0:0.001:6*abs(tau);
v = A3*exp(s1*t) + A4*exp(s2*t);
i = A1*exp(s1*t) + A2*exp(s2*t) + Is;
else
disp('Caso de amortecimento crítico');
s = -alpha;
A3 = V0;
A4 = dV0 + alpha*A3;
A1 = I0 - Is;
A2 = dI0 + alpha*A1;
printf('s = %.2f\n',s);
t = 0:0.001:5/alpha;
v = (A3 + A4*t).*exp(s*t);
i = (A1 + A2*t).*exp(s*t) + Is;
end
end
printf('Constantes ED corrente, A1 = %.2f, A2 = %.2f\n',A1,A2);
printf('Constantes ED tensao, A1 = %.2f, A2 = %.2f\n',A3,A4);
subplot(211);
plot(t,i)
xlabel('Tempo (s)');
ylabel('Corrente (A)');
xgrid;
subplot(212);
plot(t,v)
xlabel('Tempo (s)');
ylabel('Tensão (A)');
xgrid;
Lista de exercícios sobre transitórios de segunda ordem
Senhores Alunos:
Disponibilizo, a lista de exercícios para preparação para a avaliação dos transitórios de segunda ordem. Apenas o primeiro exercício não foi selecionado do livro texto.
A propósito, no primeiro exercício, o primeiro gráfico representa a corrente no indutor em um circuito RL série, medida em ampères. O segundo gráfico representa a tensão no capacitor de um circuito RLC série, medida em volts.
Keywords: transient response, second-order, parallel RLC circuit, series RLC circuits, exercises.
Respostas:
1. R = 5 Ohms
L = 0,32 H
C = 3,7 mF
Valores aproximados.
8.12 a) C > 6 mF b) C = 6 mF c) C < 6 mF
8.13 R > 120 Ohms
8.14 v = -1,33 (e^-0,5t - e^-0,2t)
8.15 L = 25H, C= 0,2 mF e R = 750 Ohms
8.22 C = 0,05 uF
8.23 C = 40 mF
8.24 i = e^-10t ( 4 cos 19,36 t + 1,05 sen 19,36 t)
8.30 C = 150 nF
8.31 VL(0+) = 80
8.36 v = 35 e^-0,8t (15 sen 0,6t + 20 sen 0,6 t)
i = 5 e^-0,8t sen 0,6t
8.43 R = 8 ohms e C= 2,075 mF
8.47 v = 200 t e^-10t
8.53 i'' + (5/4) i' + 100 i = 600
Assinar:
Postagens (Atom)