Pesquisar neste blog
31/03/2020
LCD com PIC 16F877A CCS C
Objetivo: Exibir em um LCD o incremento e decremento de 2 variáveis, o contador deverá ser reiniciado por um imput.
30/03/2020
Comandos no software MySQL
TRUNCATE
truncate table cursos; // limpa toda tabela de cursos
SELECT
select ano, count(*) from cursos where ano >2015 group by carga having carga > (select avg(carga) from cursos);/*
seleciona a carga e o total de horas dos cursos onde o onde o ano seja acima de 2015 agrupa por carga, mas não exibe quem tem
carga baixa */
select ano, count(*) from cursos where totalaulas >30 group by ano > 2015 order by count(*) desc;
select carga, count(nome) from cursos group by carga having count(nome) > 1;/*exibe carga e agrupa onde somente tem contador maior que 1*/
select carga, count(nome) from cursos where totalaulas >= 1000 group by totalaulas order by totalaulas;
select carga, totalaulas from cursos where totalaulas >=1000 group by carga;
select carga, totalaulas from cursos where totalaulas >=1000 group by carga;/*exibe carga e totalaulas agrupados por carga*/
select totalaulas, count(*) from cursos group by totalaulas order by totalaulas;/*agrupa e ordena e faz a contagem dos registros cursos*/
select totalaulas from cursos group by totalaulas order by totalaulas;/*agrupa e ordena por totalaulas*/
select avg(totalaulas) from cursos where ano = '2020';/*faz a media onde o ano = 2020*/
select sum(totalaulas) from cursos where ano = '2020';/*faz a soma onde o ano = 2020*/
select min(totalaulas) from cursos;/*seleciona o minimo de totalaulas na tab cursos*/
select max(totalaulas) from cursos where ano = '2020';
select *from cursos where ano = '2019';
select max(carga) from cursos order by carga;/*seleciona onde tem a maior carga*/
select count(*) from cursos where carga > 250;/*conta quantas linhas tem de cursos onde seja >250*/
select count(*) from cursos;/*conta quantas linhas tem de cursos*/
select carga from cursos order by carga;/*seleciona tudo de carga na tabela cursos e ordena*/
select distinct ano from cursos;/*pegar todos os que são diferentes*/
select carga from cursos;/*seleciona somente as cargas de cursos*/
select *from cursos where nome like 'Ph__%';/*seleciona todos os campos
da tabela cursos onde o nome tenha PH ou nada e tenha qualquer coisa no final*/
select *from cursos where nome like 'PH%p%';/*seleciona todos os campos
da tabela cursos onde o nome tenha PH ou nada e termine com p*/
select *from cursos where nome not like '%A%';/*seleciona todos os campos
da tabela cursos onde o nome não tenha A em qualquer lugar*/
select *from cursos where nome like '%A%';/*seleciona todos os campos
da tabela cursos onde o nome tenha A em qualquer lugar*/
select *from cursos where nome like '%a';/*seleciona todos os campos
da tabela cursos onde o nome se pareça e termina com P seguida de qualquer*/
select *from cursos where nome like 'p%';/*seleciona todos os campos
da tabela cursos onde o nome se pareça e começa com P seguida de qualquer*/
select *from cursos where carga > 35 and totalaulas < 2000;
select nome, descricao, ano from cursos where ano <> 2020 order by ano, nome;/*seleciona tudo que seja diferente de 2020 e ordena por ano e nome*/
select nome, descricao, ano from cursos where ano in (2013, 2020) order by ano;/*seleciona tudo onde o ano seja de 2013 e 2020*/
select nome, ano from cursos where ano between 2013 and 2020 order by ano desc, nome asc;/*seleciona tudo onde o ano seja entre 2013 e 2020*/
select nome, ano from cursos where ano between 2013 and 2020;/*seleciona tudo onde o ano seja entre 2013 e 2020*/
select ano, nome, carga from cursos order by descricao;/*seleciona tudo de ano, nome, carga e ordena por descricao*/
select nome, descricao, ano from cursos where ano <= 2015 order by ano;/*seleciona tudo da tabela cursos
onde o ano seja menor que 2015 em ordem crescente*/
select *from cursos;
insert into cursos(nome, descricao, carga, totalaulas, ano)values
('HTML','Linguagem HTML5','2250','1040','2021'),
('Pyton','Linguagem Pyton','1440','1070','2013');
insert into cursos(nome, descricao, carga, totalaulas, ano)values
('JAVA','Linguagem em Java','250','100','2021'),
('Portugol','Linguagem português','1120','450','2013'),
('JavaSript','Linguagem JavaSript','1440','900','2021'),
('JAVADoc','Linguagem Java','2570','1040','2021'),
('C/C++','Linguagem em C','2250','1070','2020'),
('SQL','Linguagem em SQL','5000','2500','2019');
insert into cursos(nome, descricao, carga, totalaulas, ano)values
('PHP','Linguagem PHP','160','40','2020');
select nome, carga, ano from cursos order by ano;/*seleciona somente nome, carga, ano e ordena por ano*/
select *from cursos;
alter table cursos add primary key (idcurso);/*adiciona chave primaria em idcurso*/
alter table cursos add column idcurso int first; /*adiciona idcurso na primeria coluna*/
alter table pessoas modify column nome varchar(30) not null default '';/*modifica a coluna nome para 30 caracter*/
alter table gafanhotos rename to pessoas;/*renomeia o nome da tabela*/
create table if not exists cursos (/*constroi uma nova tabela se nao existir o nome cursos*/
nome varchar(30) not null unique, /*não pode ser nulo e valor único*/
descricao text,/*textos longos*/
carga int unsigned,/*sem sinal, nao negativo*/
totalaulas int,
ano year default '2020'/*se nao definir será 2020*/
) DEFAULT CHARSET = utf8;/*padrão Brasil*/
desc gafanhotos;
alter table pessoas rename to gafanhotos;/*renomeia o nome da tabela*/
alter table pessoas change column profissao prof varchar(20);/*renomeia para prof*/
alter table pessoas add codigo int first;/*adc na primeira posição*/
alter table pessoas add column profissao varchar(10) after nome;/*apos o nome adiciona profissao*/
alter table pessoas drop column profissao; /*exclui coluna profissão*/
alter table pessoas add column profissao varchar(20); /*adiciona coluna profissão do tipo varchar na ultima coluna*/
select *from pessoas; /*seleciona tudo de pessoas*/
describe pessoas;
/*alimentando a tabela*/
insert into pessoas
(id, nome, nascimento, sexo, peso, altura, nacionalidade)values
(default,'CARLOS','1900-01-02','M','78.00','1.83','Brasil'),
(default,'JULIA','1910-01-12','F','78.00','1.83','EUA');
create table pessoas (
id int not null auto_increment,
nome varchar(30),
nascimento date,
sexo enum('M','F'),
peso decimal(5,2),
altura decimal(5,2),
nacionalidade varchar(20) default 'Brasil',
PRIMARY KEY (id)
)default charset = utf8; /*padrão Brasil caso não seja especificado */
drop table pessoas; /*exclui tabela pessoas*/
use cadastro;
drop database meubanco;
CREATE
create database meubanco;
create database cadastro
default character set utf8
default collate utf8_general_ci;/*padrão Brasil*/
drop database cadastro; /*exclui banco de dados cadastro*/
describe pessoas; /*descreve tabela pessoas*/
create table pessoas (
nome varchar(20),/*String 20 caracter*/
idade tinyint(3), /*inteiro*/
sexo char(1), /*caracter*/
peso float,
altura float,
nacionalidade varchar(20)
);
use cadastro;
create database cadastro;
Software para modelo entidade relacional: brModelo
29/03/2020
28/03/2020
Eletricidade aplicada EA08
Elementos
armazenadores de energia - circuitos de primeira ordem
1.Um capacitor de 0,2uF tem uma carga de 10uC. Calcule a tensão e a energia. Reposta 50V, 250uJ
Resolução:
q = C.V
V = q / C = 10 / 0,2 = 50V
q = C.V
V = q / C = 10 / 0,2 = 50V
P = dw /dt
V .i = dw /dt
V .C . dV /dt = dw /dt
W = (C . V2 ) / 2 = W = ( 0,2 x 10-6 . 502 ) / 2
W = 250 uJ
V .i = dw /dt
V .C . dV /dt = dw /dt
W = (C . V2 ) / 2 = W = ( 0,2 x 10-6 . 502 ) / 2
W = 250 uJ
2. Se a energia armazenada em um capacitor de 0,5F e 25J, calcule a tensão e a carga. Resposta 10V, 5C
Resolução:
C = 0,5F W = 25J
V = ? q = ?
W = (C . V2 ) / 2 25 = (0,25 . V2 ) / 2 V = 10V
q = c . V = 0,5 . 10 = 5C
C = 0,5F W = 25J
V = ? q = ?
W = (C . V2 ) / 2 25 = (0,25 . V2 ) / 2 V = 10V
q = c . V = 0,5 . 10 = 5C
3. Dado o circuito ao lado, com C=1/4F, R1=R2=8Ω e V=40V. Se a corrente em R2 em t= 0- é 2A no sentido para baixo, calcule em t= 0- e em t= 0+:
(a) a carga no capacitor,
(b) a corrente em R1 que flui para a direita, (c) a corrente no capacitor que flui para baixo e (d) dvc / dt em [V/s]. Resposta: (a) 4C, 4C (b) 3A, 0A (c) 1A, -2A, (d) 4V/s, -8V/s
(a) a carga no capacitor,
(b) a corrente em R1 que flui para a direita, (c) a corrente no capacitor que flui para baixo e (d) dvc / dt em [V/s]. Resposta: (a) 4C, 4C (b) 3A, 0A (c) 1A, -2A, (d) 4V/s, -8V/s
Resolução:
a)
Vc(t0- )= Vc(t0+ ) ____ Capacitor não permite uma variação brusca de tensão
Vc = VR2 = 8.2 = 16V
q= C.Vc = 0,25.16 = 4C
q(t0- ) = (t0+ ) = 4C
b)
LKT: - 40 + 8i + 8.2 = 0
i = 3A
t(t0- ) _______ i1 = 3A
Vc = VR2 = 8.2 = 16V
q= C.Vc = 0,25.16 = 4C
q(t0- ) = (t0+ ) = 4C
b)
LKT: - 40 + 8i + 8.2 = 0
i = 3A
t(t0- ) _______ i1 = 3A
t0+
Simulador usando www.systemvision.com |
t0+____ i1 = 0A
t (0+) i = 0 A
c)
i1 = ic + iR2
ic = 3 - 2 = 1A
t (0+)
ic = -2A a corrente entra no polo negativo
t (0+) => ic = - 2A
Resolução:
Cmax = C1 + C2 + ... + C10 = 10 uF
10 capacitores de 1 uF associadas em paralelo
1/Cmin = 1/C1 + 1/C2 + ... + 1/C10
Cmin = 0,1 uF # 10 capacitores de 1 uF associados em série
5.Calcule a capacitância equivalente do circuito abaixo. Resposta: 10uF
6. Deduza uma equação para a divisão da corrente entre dois capacitores em paralelo, calculando os valores de i1 e i2.
Resolução:
C1 // C2 q1 = C1 . V i = C1. dv/dt
dv/dt = i / Cp ( 1 )
LKC i = i1 + i2 ( 2 )
i1 = C1/ dv/dt ( 3 )
q2 = C2 . V
i2 = C2 . dv/dt ( 4 )
(1) em ( 3) i1 = C1 . i / Cp
i1 = C1 . i / (C1 + C2)
(1) em (4)
i2 = C2 . i / Cp i2 = C2 . i / (C1 + C2)
C1 // C2 q1 = C1 . V i = C1. dv/dt
dv/dt = i / Cp ( 1 )
LKC i = i1 + i2 ( 2 )
i1 = C1/ dv/dt ( 3 )
q2 = C2 . V
i2 = C2 . dv/dt ( 4 )
(1) em ( 3) i1 = C1 . i / Cp
i1 = C1 . i / (C1 + C2)
(1) em (4)
i2 = C2 . i / Cp i2 = C2 . i / (C1 + C2)
7. Deduza uma equação para a divisão da tensão entre dois capacitores em serie, calculando os valores de v1 e v2.
V = V1 + V2 ( 1 )
q1 = C1 . V1 i = C1 . dV1 / dt
dV1 = 1 . i.dt / C1
V1 = 1/C1 ∫ t0t i . dt ( 1 )
de forma análoga para v2 e v1 temos :
8. Um indutor de 40[mH] tem uma corrente i(t) = 100 cos 10πt(t) [mA]. Calcule o enlace de fluxo e a energia em t=1/30s. Resposta: 2mWb, 50uJ.
Resolução:
L = 40 x 10-3 [ H ]
t = 1/30 [s]
i(H) = 100 . cos(10π.t) 10-3 [A]
λ = L . i = 40 x 10-3 . 100 . cos(10π.t) 10-3
λ = 40 x 10-3 . cos( 10π . 1/30) --> radiano
λ = 2 mWb
P= dw / dt
V . i = dw / dt => L . di / dt . i = dw / dt => W= L ∫ i . di
W= L . i . i / 2 = > V= L . di / dt => W= L . i . i / 2
W= 40 . 10-3[ 100. cos(10π . 1/ 30 ) 10-3] 2
W = 20 . 10-3 . 0,12 . 0,25
W = 50 uW
t = 1/30 [s]
i(H) = 100 . cos(10π.t) 10-3 [A]
λ = L . i = 40 x 10-3 . 100 . cos(10π.t) 10-3
λ = 40 x 10-3 . cos( 10π . 1/30) --> radiano
λ = 2 mWb
P= dw / dt
V . i = dw / dt => L . di / dt . i = dw / dt => W= L ∫ i . di
W= L . i . i / 2 = > V= L . di / dt => W= L . i . i / 2
W= 40 . 10-3[ 100. cos(10π . 1/ 30 ) 10-3] 2
W = 20 . 10-3 . 0,12 . 0,25
W = 50 uW
9. Um indutor de 2[mH] tem uma tensão v(t) = 2 cos 1000t(t) [V] com i(0) = 1,5A. Calcule a energia armazenada no indutor em t = π/6 ms. Resposta: 4mJ.
Resolução:
L = 2 x 10-3 H
V(t) = 2.cos(1000t) i(0) = 1,5A W = ? t = π /6
V = L. di/ dt => di = V.dt / L => i(t) - i(to) = 1/L .∫ (to, t) V .dt
i(t) = 1,5 + 1/ 10-3 ∫ (0, π /6) 2.cos(1000.t) dt => radiano
i(t) = 2A
P = dw/dt => V.i = dw/dt => L .di . i /dt = dw/dt
W = L. i 2 /2
W = 2.10-3 . 22 / 2
W = 4 mS
L = 2 x 10-3 H
V(t) = 2.cos(1000t) i(0) = 1,5A W = ? t = π /6
V = L. di/ dt => di = V.dt / L => i(t) - i(to) = 1/L .∫ (to, t) V .dt
i(t) = 1,5 + 1/ 10-3 ∫ (0, π /6) 2.cos(1000.t) dt => radiano
i(t) = 2A
P = dw/dt => V.i = dw/dt => L .di . i /dt = dw/dt
W = L. i 2 /2
W = 2.10-3 . 22 / 2
W = 4 mS
10. Dado o circuito ao lado, com I=10A, R1=12Ω, R2=8 Ω, L=1H e i1 em t =0- = 4A. Se a chave está aberta em t=0- , calcule:
(a) IL em t=0- e em t=0+,
(b) i1 em t=0+ e (c) diL / dt em [A/s].
Resposta: (a) 6A, 6A, (b) 0A, (c) -48A/s.
(a) IL em t=0- e em t=0+,
(b) i1 em t=0+ e (c) diL / dt em [A/s].
Resposta: (a) 6A, 6A, (b) 0A, (c) -48A/s.
LKC em X: 4 + iL = 10
iL = 6A
Para (t0+) . O indutor não permite variação brusca de corrente
iL(0+) = iL(0+) = 6A
b)
iR1 = 0A
c)
i1 = 0 V2 = 6 . 8 = 48V
LKT em I VL + V2 + V1 = 0
VL = - 48V
V = L . di/dt di/dt = v/L = - 48/1
di/dt = - 48 A/s
11.Calcule os valores máximo e mínimo da indutância que pode ser obtida de 10 indutores de 10mH. Resposta: 100mH, 1mH
Resolução:
Lmax = l1 + l2 + ...+l10 Lmax = 10 . 10 mw
Lmáx = 100 mH 10 indutores associados em série
1/Lmin = 1/L1 + 1/L2+ ... +1/L10 1/Lmin = 10 . 1/10
Lmin = 1mH com 10 indutores associados em paralelo
12.Calcule a indutância equivalente do circuito abaixo (considerar os valores dos indutores em mH).
Resposta: 10mH
Leq = 10mH
13.Deduza uma equação para a divisão da tensão entre dois indutores em serie, calculando os valores de v1 e v2.
V= L .di/dt V= Ls . di/dt di/dt = V/Ls (1)
V1 = L1 . di/dt (2)
V1 = L1 . di/dt (2)
São percorridos pelo mesmo valor da corrente
V2 = L2 . di/dt (3)
V2 = L2 . di/dt (3)
(1) em (2) V1 = L1 . V/Ls V1= L1 . V / (L1+L2)
(1) em (3) V2= L2 . V/Ls V2= L2 . V / (L1+L2)
14.Deduza uma equação para a divisão da corrente entre dois indutores em paralelo, calculando os valores de i1 e i2.
Resolução:
Lp= L1 . L2 / (L1+L2)
V1 // V2 => V1= V2= V
V= L1 . di1/dt => i1= 1/L2 ∫ V.dt (1)
V= L2. di2/dt => i2= 1/L2 ∫ V.dt (2)
V= L2. di/dt => i= 1/Lp ∫ V.dt ∫ V.dt = i . Lp (3)
(3) em (1) i1= 1/L1 . i . Lp
i1 = i . L1 . L2 / [L1 . (L1+L2)]
i1 = L2 . i / L1+L2
(3) em (2) i2= i . Lp / L2= i . (L1 . L2) / [L2 . (L1+L2)]
i2 = L1 . i / (L1 + L2)
15.O circuito abaixo esta em regime permanente em t = 0-. Calcule v, i1, i2, di1 / dt e di2 / dt em t=0+. Resposta: 12V, 6A, 2A, -6A/s, 0A/s
Resolução:
t(0- )
Req = 3 . 6 / (3+ 6)= 2 [Ω].
ia = 24 / (2 + 4)= 6 [A]
Divisor de corrente:
i2 = 3 . 6 / (3 + 6) = 2 [A]
*O indutor não permite a variação brusca de corrente, logo;
iL(0- )= iL(0+)
i1 = ia = 6 [A]
i2 = 2 [A]
Simulador: EveryCircuit |
Para: t(0+)
LKC : 6 = 2 + i , i = 4 [A]
V = 3 . 4 = 12 [V]
LKT em i1
V1 + V = 0 , V1 = -12 [V]
V1 = L1 . di1/dt
di1/dt = -12 / 12 = - 6 [A/s]
LKT em 2
V2 + 6 . 2 - 12 = 0
V2 = 0 [V]
V2 = L2 . di2/dt = di2/dt = 0 [A/s]
16. O circuito abaixo esta em regime permanente em t = 0-. Calcule v1 e v2 em t = 0- e em t=0+.
Resposta: 5V, -20V; 25V, 20V
Resolução:
Req = ( 24 + 6).6 / ( 24 + 6 + 6) = 5Ω
(24 + 6)Ω // = 6Ω
ia = 50 / (3 + 5 +2) = 5A
V2 = 5 . 5 = 25V
i2 = 25/6 A
LCD em x
ia = i1 + i2
i1 = 5 - 25/6 = 5/6A
V1 = 6 . 5/6 = 5V
Para t(0+ )
* O indutor não permite variação brusca de corrente. Logo, iL(0- )= iL(0+ )
Req = 24(6+6) / (24 + 6 + 6) = 8Ω
V = 8 . 5 = 40V
ia = 40/24 = 5/3A
LKC em x
ia + ib = 5
ib = 5 - 5/3 = 10/3 A
V2 = 6 .ib = 6 . 10/3 = 20V
V1 = 6 (-10/3) = - 20V a corrente entra pelo lado negativo de V1
17.O circuito abaixo esta em regime permanente em t = 0-. Calcule dv1 / dt e dv2 / dt em t=0+.
Req = 8(12 + 6) / (8+12+6)
Req = 72/13 Ω
V = 72 . 8 /13 = 576/13 [V]
* O capacitor não permite uma variação brusca de tensão, logo:
Vc(0- ) = Vc(0+)
8Ω // V1 V1 = 576 / 13 [V]
LKT em ABCD - V1 + 12ia + 6ia = 0
18ia = 576 / 13
ia = 32 / 13 [A]
6Ω // V2
V2 = 6 . ia = 6 . 32 / 13 = 192/13 [V]
t(0+)
LKT em ix
V2 + 6(- ix) + 6( -ix) = 0
12ix = 192/13
ix = 16/13 [A]
LKT em iy
V1 - V2 + 12iy = 0
IY = 1/12 (192/13 - 576/13) = - 32/13 [A]
LKT em iz
8iz + V1 = 0
iz = (- 576 /13 ) . 1/8 = - 72 /13 [A]
Req = 72/13 Ω
V = 72 . 8 /13 = 576/13 [V]
* O capacitor não permite uma variação brusca de tensão, logo:
Vc(0- ) = Vc(0+)
8Ω // V1 V1 = 576 / 13 [V]
LKT em ABCD - V1 + 12ia + 6ia = 0
18ia = 576 / 13
ia = 32 / 13 [A]
6Ω // V2
V2 = 6 . ia = 6 . 32 / 13 = 192/13 [V]
t(0+)
LKT em ix
V2 + 6(- ix) + 6( -ix) = 0
12ix = 192/13
ix = 16/13 [A]
LKT em iy
V1 - V2 + 12iy = 0
IY = 1/12 (192/13 - 576/13) = - 32/13 [A]
LKT em iz
8iz + V1 = 0
iz = (- 576 /13 ) . 1/8 = - 72 /13 [A]
27/03/2020
Contador crescente e decrescente CCS C
Objetivo: Fazer um contador crescente usando função, PIC e um decodificador 4511
Código feito em CCS C Compiler
#include <7seg for.h>
void Contador(){
int vetor[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9};//escrito em decimal
while(TRUE){
for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
output_b(vetor[i]);
delay_ms(800);
}
delay_ms(1000);//espera 1 segundo para iniciar outra contagem
for(i = (sizeof(vetor)/sizeof(int)); i >= 1; i--){
output_b(vetor[i-1]);
delay_ms(800);
}
}
}
void main(){
Contador();
}
Código feito em CCS C Compiler
#include <7seg for.h>
void Contador(){
int vetor[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9};//escrito em decimal
while(TRUE){
for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
output_b(vetor[i]);
delay_ms(800);
}
delay_ms(1000);//espera 1 segundo para iniciar outra contagem
for(i = (sizeof(vetor)/sizeof(int)); i >= 1; i--){
output_b(vetor[i-1]);
delay_ms(800);
}
}
}
void main(){
Contador();
}
26/03/2020
Contador com PIC e decodificador 4511 CCS C Compiler
Objetivo: Fazer um contador de 0 até 9 usando uma função e um decodificador 4511 com PIC
Código feito em CCS C Compiler
Método 1
#include <16F877A.h>
#use delay(crystal = 20MHz)
//Função para o contador
void Contador(){
int vetor[] = {0b0000, 0b0001, 0b0010, 0b0011, 0b0100, 0b0101, 0b0110, 0b0111, 0b1000, 0b1001};// Código de entrada em binário
while(TRUE){
for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
output_b(vetor[i]);
delay_ms(500);
}
}
}
void main(){
Contador();//chamando a função
}
Método 2
#include <16F877A.h>
#use delay(crystal = 20MHz)
void Contador(){
int vetor[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9};//forma em decimal
while(TRUE){
for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
output_b(vetor[i]);
delay_ms(500);
}
}
}
void main(){
Contador(); //chamando a função
}
24/03/2020
Algoritmo de todas as tabuada desejada em C
#include <stdio.h>
#include <stdlib.h>
int tabuada (int num){
printf("\nTabuada de %d\n",num);
for(int i = 0; i <= 10; i++){
printf("%d x %d = %d\n",num, i, (num * i));
}
return num;
}
int valor, cont = 0;
int main(){
printf("Digite o valor: ");
scanf("%d",&valor);
if(valor <= 0){
while(valor <= 0){
printf("Número inválido ! Digite um número maior que 0");
printf("\nDigite novamente: ");
scanf("%d",&valor);
}
}
while(cont != valor +1){
tabuada(cont);
cont++;
}
return 0;
}
#include <stdlib.h>
int tabuada (int num){
printf("\nTabuada de %d\n",num);
for(int i = 0; i <= 10; i++){
printf("%d x %d = %d\n",num, i, (num * i));
}
return num;
}
int valor, cont = 0;
int main(){
printf("Digite o valor: ");
scanf("%d",&valor);
if(valor <= 0){
while(valor <= 0){
printf("Número inválido ! Digite um número maior que 0");
printf("\nDigite novamente: ");
scanf("%d",&valor);
}
}
while(cont != valor +1){
tabuada(cont);
cont++;
}
return 0;
}
Saída gerada |
20/03/2020
Prova LP 2 - 2019/2
Prova aplicada em 24/10/2019
1) Dado uma hierarquia de classes mapeadas em uma modelagem de um software, com vistas ao reuso de código, o que deve ser levado em consideração para a decisão do uso de herança de implementação (extends) ou de agregação/composição para promover o reuso ? ( 0,5 )
RESP:
Deve ser levado em consideração o uso em tempo de compilação e o uso em tempo de execução.
Para o uso em tempo de compilação a herança (extends) resolve o problema, para a agregação/composição que é herança de tipo ou uso em tempo de execução resolve o problema.
2) Tipos genéricos podem ser definidos por meio de classes abstratas ou interfaces. Estabeleça as diferenças entre o uso de classes abstratas ou interfaces na implementação de tipos genéricos ? ( 1,0 )
RESP:
Classes abstratas:
+ As classes abstratas força a hierarquia para as subclasses.
+ Seu contrato faz com que as subclasses contemplem as mesmas hierarquias e/ou padrões.
- Classes abstratas não podem ser instanciadas
- Deve conter pelo menos um método abstrato
- Classes abstratas serve apenas para ser herdado
Interface
+ Uma classe pode implementar diversas interfaces
+ Interface não possui implementação, apenas assinatura
- Interface não pode ser instanciada e nem como criar um construtor
3) Como é possível um tipo ser implementado por mais de uma classe ? ( 1,0 )
RESP:
É possível através de interfaces, se uma classe A é do tipo I1, se a classe B é do tipo I2 e se a classe A fazer uma herança (extends) de classe B, logo; podemos dizer que a classe A é do tipo I1 e do tipo I2.
4) Por que é conveniente que um cliente de um objeto não conheça a(s) classe(s) que pode(m) produzir os objetos para ele ? Como isso é possível ? ( 0,7 )
RESP:
Porque é necessário que as classes sejam implementadas por interfaces para adicionar todos os métodos da classe, ou que essa classe se transforme em uma herança.
- É possível através de interfaces que esconde os métodos da classe.
5) Qual a finalidade da API JDBC do java ? ( 0,7 )
RESP:
Porque é necessário que as classes sejam implementadas por interfaces para adicionar todos os métodos da classe ou que essa classe se transforme em uma herança
- É possível através de interfaces que esconde os métodos da classe
6) Como é possível uma aplicação Java acessar mais de um tipo de SGDB de forma flexível (com pouca alteração) por meio da API JDBC ? ( 1,0 )
RESP:
É possível usando um driver JDBC para se comunicar diretamente com uma fonte de dados específica, caso não tenha um driver JDBC é necessário que tenha pelo menos um driver ODBC.
7) Existem quatro tipo de driver JDBC, qual é o mais recomendado ? Porque ? ( 1,0 )
RESP:
Pure Java, tipo 4
- Porque os drivers se comunicam diretamente com o Banco de Dados usando soquetes de rede
- Porque não requer código adicional do Java
8 - Considere o trecho de código a seguir e responda as questões ? ( 0,7 )
package apps;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conexao1{
public static void main(String args[]){
Connection conexao;
String url = "jdbc:postgresql://localhost:5432/produto";
String usr = "postgresql";
String pass = "postgresql";
try{
Class.forName("org.postgresql.Driver");
conexao = DriverManager.getConnection(url, usr, pass);
System.out.println("Conexão estabelecida");
conexao.close();
System.out.println("Conexão encerrada");
}catch (ClassNotFoundException cnf){
System.out.println("Classe do driver não encontrado - "+cnf.getMessage());
}catch (SQLException sqle){
System.out.println("Conexao não estabelecida - "+sqle.getMessage());
}
}
}
a) Descreva quais são as informações presentes na URL de conexão JDBC ?
RESP:
b) Qual o papel da classe DriverManager ?
RESP:
Realizar a conexão com o banco de dados da fonte específica PostgreSQL usando a URL, USR(usuário) e o pass(senha)
c) Qual a finalidade da Interface / objeto Connection na manipulação de banco de dados por meio da JDBC ?
RESP:
Ser como uma forma de ponte para estabelecer a conexão com o Banco de Dados.
d) O que é realizado no trecho de código, caso ão ocorra exceções ?
RESP:
É feita uma conexão de curto tempo com a fonte específica PostgreSQL e em seguida é finalizado a conexão
9) Considere os trechos de código a seguir e responda as questões. ( 1,0 )
Código 01
Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;
String nome = "Refrigerantes";
float promocao = 0;
float margem = 50;
try{
comando = conexao.preparedStatement("INSERT INTO GRUPOPRODUTO (NOME, PROMOCAO, MARGEMLUCRO) VALUES (?, ?, ?)");
comando.setString(1, nome);
comando.setFloat(2, promocao);
comando.setFloat(3, margem);
comando.executeUpdate();
System.out.println("Inclusão realizada com sucesso");
}catch (SQLException ex){
System.out.println("Erro ao incluir grupo de produto"+ex.toString());
} finally {
try{
comando.close();
conexao.close();
}catch (SQLException ex){
System.out.println("Erro ao desconectar"+ex.toString);
}
}
Código 02
Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;
String sql = "Refrigerantes";
String nome = "Bebidas destiladas";
float promocao = 10;
float margem = 50;
sql += "('"+ nome +"', "+promocao+", "+margem+")";
try{
comando = conexao.reateStatment();
comando.executeUpdate(sql);
System.out.println("Inclusão realizada com sucesso");
}catch (SQLException ex){
System.out.println("Erro ao incluir grupo de produto"+ex.toString());
} finally {
try{
comando.close();
conexao.close();
}catch (SQLException ex){
System.out.println("Erro ao desconectar"+ex.toString);
}
}
a) Existe diferença funcional entre os dois trechos de código ? Justifique.
RESP:
Não existe diferença funcionais entre o código 1 e o código 2, porém o código 1 é mais recomendado.
b) Existe diferença de implementação entre os trechos de código ? Justifique.
RESP:
Existe diferença de implementação entre os 2 códigos, o código 01 utiliza o PreparedStatmente para realizar a inserção, já o código 02 utiliza uma String SQL que é menos recomentada.
10) Analise o trecho de código a seguir e responda as questões. Considere que a FábricaConexao é uma classe utilitária que devolve um objeto Connection instanciado. (0,8 )
Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;
try{
comando = conexao.preparedStatement("SELECT *FROM grupoproduto ORDER BY nome");
ResultSet resultado = comando.executeQuery();
while (resultado.next()){
System.out.println("Codigo: "+resultado.getInt("codigo"));
System.out.println("Nome: "+resultado.getString("nome"));
System.out.println("% Promocao: "+resultado.getFloat("promocao"));
System.out.println("% Margem lucro: "+resultado.getFloat("margemlucro"));
System.out.println("---------------------------------------------------");
}
resultado.close();
}catch (SQLException ex){
System.out.println("Erro ao recuperar os grupos de produtos"+ex.toString());
} finally {
try{
comando.close();
conexao.close();
}catch (SQLException ex){
System.out.println("Erro ao desconectar"+ex.toString);
}
}
a) O que o código realiza (linhas gerais) ?
RESP:
- Realiza a conexão com o banco de dados
- Faz uma seleção de tudo do grupoproduto ordenado em forma crescente por nome
- É processado e executado o resultado
- Enquanto haver dados em ResultSet
- Exibe o código
- Exibe o nome
- Exibe a promoção
- Exibe a margem de lucro
- É finalizada e fechada o resultado
- Caso ocorra erro de comando, irá exibir ERRO e os dados do grupo
- Finalizar a conexão com o Banco de Dados
- Caso ocorra um erro de conexão com Banco de Dados, irá exibir a mensagem de erro SQL
b) O que é o objeto ResultSet ? Qual a sua finalidade ?
RESP:
Coletar informação de linhas de comandos SQL e processa -lá.
- Sua finalidade é ser como um objeto de referência para realizar os comandos SQL
19/03/2020
Tela LCD + teclado com PIC 16F877A
Código feito em CCS C Compiler
#include <LCD + teclado.h>
#include <KBD.C>//driver do teclado
#define LCD_DATA_PORT getenv("SFR:PORTB")//porta padrão
#include <lcd.c>
char c;
void main(){
kbd_init();
lcd_init();
printf(lcd_putc,"\fDigite: ");
delay_ms(50);
while(TRUE){
c = kbd_getc();//retorna qual tecla foi precionada
delay_ms(2);//dando uma pausa de 2 ms para processar informação
if(c != 0){// se a tecla foi precionada
printf(lcd_putc,"%c",c);//imprindo a tecla digitada
delay_ms(300);
}
}
}
Clique aqui para fazer o download dos arquivos
Assinar:
Postagens (Atom)