Buscar

CIENCIA DA COMPUTACAO INTEGRADA

Prévia do material em texto

CIENCIA DA COMPUTACAO INTEGRADA 
 
 
 
 
Diogo Alexandro Silva Oliveira – 
RA: T2826E4 
 
• (A) A linha 04 deve ser corrigida da seguinte forma: for(i = 1; i < n 
- 1; i++) e a linha 13, do seguinte modo: v[j - 1] = chave;. 
• (B) A linha 04 deve ser corrigida da seguinte forma: for(i = 1; i < n 
- 1; i++) e a linha 07, do seguinte modo: j = i + 1;. 
• (C) A linha 07 deve ser corrigida da seguinte forma: j = i + 1 e a linha 
08, do seguinte modo: while(j >= 0 && v[j] > chave). 
• (D) A linha 08 deve ser corrigida da seguinte forma: while(j >= 0 && 
v[j] > chave) e a linha 10, do seguinte modo: v[j + 1] = v[j]; 
• (E) A linha 10 deve ser corrigida da seguinte forma: v[j + 1] = v[j]; e 
a linha 13, do seguinte modo: v[j - 1] = chave;. 
Correto – (Letra D) = linha 10, que faz os deslocamentos para a esquerda 
e não para a direita. O correto, nesse caso, seria v[j + 1] = v[j]. 
Os valores maiores que chave são deslocados para a direita. A 
condição v[j] < chave na linha 08 está errada, pois está verificando 
se o valor é menor que a chave e não se é maior. Logo, o correto 
seria v[j] > chave. 
#include <stdio.h> 
#include <math.h> 
 
 
void ordena(int *v, int n) //metodo para ordernar o vetor 
 { 
 int i, j, chave; 
 for(i = 1; i < n; i++) 
 { 
 chave = v[i]; 
 j = i - 1; 
 
 /* Move os elementos do v[0..i-1], que são maiores que a chave, 
 para uma posição afrente da posição atual */ 
 while(j >= 0 && v[j] > chave) 
 { 
 v[j + 1] = v[j]; //faz os deslocamentos para a direita. 
 j = j - 1; 
 } 
 v[j+1] = chave; 
 } 
 } 
 void printArray(int *v, int n) //Uma função utilitária para imprimir uma matriz de tamanho n 
{ 
 int i; 
 for (i = 0; i < n; i++) 
 printf("%d ", v[i]); 
 printf("\n"); 
} 
 
int main() //função principal 
{ 
 int v[] = { 12, 11, 13, 5, 6 }; //valores inseridos no vetor 
 int n = sizeof(v) / sizeof(v[0]); 
 
 ordena(v, n); 
 printArray(v, n); 
 
 return 0; 
} 
 
 
 
• (A) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM 
Deputado, Participacao, Secao WHERE 
Deputado.idDeputado=Participacao.idDeputado; 
• (B) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM 
Deputado, Participacao, Secao WHERE Deputado.idDeputado 
= Participacao. idDeputado OR Secao.idSecao = 
Participacao.idSecao; 
• (C) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM 
Deputado LEFT OUTER JOIN Participacao ON 
Deputado.idDeputado = Participacao.idDeputado LEFT OUTER 
JOIN Secao ON Secao.idSecao = Participacao.idSecao; 
• (D) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM 
Deputado RIGHT OUTER JOIN Participacao ON 
Deputado.idDeputado = Participacao.idDeputado RIGHT 
OUTER JOIN Secao ON Secao.idSecao = 
Participacao.idSecao; 
• (E) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM 
Deputado INNER JOIN Participacao ON Deputado.idDeputado 
= Participacao.idDeputado INNER JOIN Secao ON 
Participacao.idSecao=Secao.idSecao; 
Resposta correta = Letra E 
Para exibir os nomes dos deputados e as datas das seções que eles participaram, 
precisamos utilizar o INNER JOIN, pois os dados estão em tabelas distintas. 
Nas letras C e D não iria dar certo pois com o outer join exibiríamos mais dados do 
que precisamos. 
 
-- MySQL Workbench Forward Engineering 
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ; 
USE `mydb` ; 
-- ----------------------------------------------------- 
-- Table `mydb`.`Partido` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Partido` ( 
 `idPartido` INT NOT NULL, 
 `siglaPartido` VARCHAR(45) NOT NULL, 
 `descricaoPartido` VARCHAR(45) NOT NULL, 
 PRIMARY KEY (`idPartido`)) 
ENGINE = InnoDB; 
-- ----------------------------------------------------- 
-- Table `mydb`.`Deputado` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Deputado` ( 
 `idDeputado` INT NOT NULL, 
 `nomeDeputado` VARCHAR(60) NOT NULL, 
 `idPartido` INT NOT NULL, 
 PRIMARY KEY (`idDeputado`)) 
ENGINE = InnoDB; 
-- ----------------------------------------------------- 
-- Table `mydb`.`Secao` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Secao` ( 
 `idSecao` INT NOT NULL, 
 `dataSecao` DATE NOT NULL, 
 `horaSecao` TIME NOT NULL, 
 `decisao` VARCHAR(2000) NOT NULL, 
 PRIMARY KEY (`idSecao`)) 
ENGINE = InnoDB; 
-- ----------------------------------------------------- 
-- Table `mydb`.`Participacao` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Participacao` ( 
 `idSecao` INT NOT NULL, 
 `idDeputado` INT NOT NULL, 
 PRIMARY KEY (`idSecao`, `idDeputado`), 
 INDEX `idDeputado_idx` (`idDeputado` ASC) VISIBLE, 
 CONSTRAINT `idSecao` 
 FOREIGN KEY (`idSecao`) 
 REFERENCES `mydb`.`Secao` (`idSecao`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION, 
 CONSTRAINT `idDeputado` 
 FOREIGN KEY (`idDeputado`) 
 REFERENCES `mydb`.`Deputado` (`idDeputado`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
SET SQL_MODE=@OLD_SQL_MODE; 
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 
INSERT INTO Partido VALUES (3,'Novo','Partido Novo'); 
INSERT INTO Deputado VALUES (13,'Diogo',15); 
INSERT INTO Secao VALUES (32,'12-06-2020','02:00:00','SL'); 
SELECT Deputado.nomeDeputado, Secao.dataSecao FROM Deputado INNER JOIN Participacao 
ON 
Deputado.idDeputado = Participacao.idDeputado INNER JOIN Secao ON 
Participacao.idSecao=Secao.idSecao;

Continue navegando