Ciências da computação dia 179

procedures não precisam retornar algo (diferente das funções) trigger reage a uma ação sem a necessidade de chama-lo diretamente cada SGBD tem sua linguagem para criar esses objetos (PL/SQL é o da ORACLE) PL/SQL bloco que utiliza SQL para executar coisas 3 partes → declaração (opcional), execução, tratamento de erros (opcional) adiciona mais coisas ao SQL (como loops, if, etc.) oracle por padrão, se você nãos tratar os erros, ele exibe o erro e para a execução dentro da declaração você pode declarar → constantes, variáveis, cursores(objetos que definem um DQL dentro) DECLARE -- declara os elementos -- variavel -- nome tipo [NOT NULL] := valor exemplo_1 NUMBER(4) NOT NULL := 4; exemplo_2 CHAR(1); -- ROWTYPE pega o tipo de uma linha de uma tabela (deixa mais rapido, usando cursors) -- TYPE pega o mesmo tipo de uma coluna de uma tabela exemplo_3 Tabela.coluna%Type; BEGIN -- execucao --exemplo SELECT idade, sexo INTO exemplo_1, exemplo_2 FROM Tabela WHERE id=1; -- aqui a Tabela precisa retornar exatemente 1 elemento -- uso do if IF ... THEN ... ELSE IF ... THEN ... ELSE ... END IF; EXCEPTION -- excecoes END; -- coloca algo no console -- || concatena elementos dbms_output.put_line('test' || a || ' test');

April 28, 2025 · 1 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 18

Áreas área do circulo = pi * r² área do triângulo = b * h / 2 potências de 10 vs notação científica potencia de 10 não importa o numero que vem antes do *10^n (tbm chamado de mantissa) já em notação científica esse número deve ser ≥ 1 e < 10 então 90 * 10⁵ em potência de 10 está correto 90 * 10⁵ em notação científica está errado (o certo seria 9*10⁶) ...

April 28, 2025 · 1 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 180

pontos de função com base no tamanho da entrada e saída de uma função, qual a pontuação dela estimativa esforço quantidade de pessoas para fazer o software

April 28, 2025 · 1 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 181

Hierarquia de Chomsky Descreve os tipos de autômatos e o que eles conseguem fazer

April 28, 2025 · 1 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 182

Exceptions NO_DATA_FOUND -- exceção que informa que nenhum dado foi encontrado CASE_NOT_FOUND -- variavel do case não existe TOO_MANY_ROWS -- quando um SELECT INTO retorna varias linhas OTHERS -- error generico DECLARE ... BEGIN -- se voce tiver varios inserts, e você quer que a alteração já seja salva -- use o commit depois dele, lembrando que se for apenas um comando, não -- há necessidade de fazer isso INSERT .... COMMIT; INSERT ... EXCEPTION WHEN <error> THEN ... WHEN NO_DATA_FOUND THEN ... WHEN CASE_NOT_FOUND THEN ... WHEN TOO_MANY_ROWS THEN ... WHEN OTHERS THEN --erro generico ... END; -- para levantar um erro use o seguinte comando raise application_error(<number>, <message>, [TRUE|FALSE]); -- o numero vai de -20000 ate -20999 -- e o TRUE/FALSE diz se é pegar pegar todos os erros (TRUE) ou só -- o primeiro (FALSE) Cursor cursor implícito → consultas em PL/SQL que retorna 1 linha cursor explicito → usado quando for retornar várias rows CURSOR <cursor_name> [parametro1, parametro2, ...] IS SELECT ...; OPEN cursor_name; -- executa a query do cursor e faz com que os valores -- virem um array FETCH cursor_name INTO variavel1, variavel2; -- pega uma linha do cursor CLOSE cursor_name; -- finaliza o cursor cursor_name%FOUND -- TRUE quando o fetch retorna sucesso cursor_name%NOTFOUND -- TRUE quando não foi possivel pegar mais nada (ultimo fetch) cursor_name%ISOPEN -- TRUE quando o cursor esta em uso cursor_name%ROWCOUNT -- total de fetchs com sucesso cursor_name%status -- status/eventos do cursor RAPD(value, total, pad); -- padding de texto %ROWTYPE -- deixa mais pesad a execucao

April 28, 2025 · 2 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 183

Qualidade de software modelos de qualidade (semelhante ao ISO) → CMMI, MPS.BR trabalho com qualidade = produto de qualidade implica: um software confiável, sem defeitos, acessível, seguro, portável, interoperável(sistema capaz de se comunicar com outros) pode ser algo subjetivo ao cliente, sendo necessário estipular as expectativas e tentar quebra-las gerenciamento total da qualidade → atender as expectativas do cliente; desenvolver processos para melhoria constante para garantir a qualidade → usar métodos, técnicas, ferramentas, versionamento, padrões, métricas, registros, etc. controle de qualidade → evitar que produtos defeituosos sejam entregues garantia de qualidade → fazer o software com o minimo de defeitos avaliação → classificação dos processos/produtos auditoria → verificar se o produto segue os padrões/normas através de evidências de testes, observações, medições, etc. Teste de software objetivo é encontrar erros, e não fazer os testes passarem Falha → software não consegue executar sua função (aparente ao usuário) Falta → causa de uma falha Erro → instabilidade que vem de uma falta e pode se tornar uma falha Dados de teste → amostra do que seria uma entrada real Casos de teste → cenários de execução usando os dados de teste e sua saída esperada Eficácia dos testes → quanto mais erros você consegue descobrir com o menor esforço Teste funcional(caixa preta, black box) → coloca o software para funcionar e vê como ele age com as entradas (analisa partes pequenas do software, como funções, requisitos) Teste Estrutural(caixa branca, white box) → Baseado no código, analisá o funcionamento interno (complexidade ciclomática, big O, etc) Técnicas Para testes black box partição por equivalência → quando os possíveis dados de entrada estão em blocos de válidos e inválidos, então pega-se alguns dados validos e inválidos para avaliar análise de valor limite → quando seus dados também estão divididos em blocos de válidos e inválidos, mas dessa vez você pega aqueles que estão no limite entre um bloco e outro Tabela de decisão → tabela criada a partir das regras de negócio, visando testar todos os casos possíveis (diferentes combinações de entradas) Técnicas para testes White box complexidade ciclomática → vê a quantida de desvios do fluxo principal do programa (quantidade de ifs,for, while, etc). Nesses casos é necessário criar testes para cada caminho possível. Para isso podemos usar uma espécie de autômato, e o numero de caminhos é = numero de transições (E) — número de estados (N) + 2 V = E — N + 2 ...

April 28, 2025 · 2 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 184

No exemplo acima, temos uma memoria genérica em série. Nesse exemplo, temos 4 bancos de memória (B0-B3), 3 barramentos (dados (D), endereços(A) e saída de dados(O)), além de elementos como DE (decodificador de endereços), e os componentes (parecidos com uma porta not) ligados ao bus de saída, representando buffers com um trigger. Nesse circuito, podemos setar o valor que queremos no barramento de dados, podemos configurar o endereço que o dado vai ser guardado no barramento de endereços. Ao darmos pulsos no clock(do qual foi omitido aqui), os dados passarão para os componentes, e quando ativarmos o E(enable, para escrita), o decodificador de endereços usará uma logica interna para determinar quais bancos serão necessários para guardar os dados, fazendo com que dados diferentes fiquem em endereços diferentes, fazendo então com que tenhamos mais endereços para guardar dados do que em circuitos paralelo). ...

April 28, 2025 · 2 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 185

April 28, 2025 · 0 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 186

Estratégias de teste teste de unidade → testa a menor unidade do software (classes, funções, etc) de forma independente teste de integração → testa a comunicação entre as partes (entre classes, por exemplo) teste de validação → testa os requisitos teste de sistema → coloca o projeto em um sistema próximo do real e testa-se , por exemplo, requisitos não funcionais

April 28, 2025 · 1 min · map[email:dpbm136@gmail.com name:Dpbm]

Ciências da computação dia 187

Procedures procedimentos armazenados (como uma função sem retorno) pode ser escrito em PL/SQL, C, JAVA, etc. podem ser chamadas por softwares externos são compilados podem ser agendados não é permitido COMMIT, ROLLBACK, SAVEPOINT dentro deles CREATE OR REPLACE procedure_name [parametros] AS [variaveis] <bloco PL/SQL>; -- parâmetros podem ser de entrada(IN) ou de saida(OUT) -- por padrao ele é IN <name> IN <type>; <name> OUT <type>; Triggers gatilho atrelado à uma tabela pode ser atrelado ao evento de INSERT, UPDATE e/ou DELETE não necessita de privilégios não é permitido COMMIT, ROLLBACK, SAVEPOINT dentro deles BEFORE, AFTER, statement, row -- trigger type INSERT, UPDATE, DELETE -- trigger event BEFORE INSERT OR UPDATE OF salario, funcao ON empregado -- type colunas tabela -- WHEN pode ser usado para dar uma restrição de quando o trigger vai ser -- rodado, exemplo: BEFORE INSERT OR UPDATE OF salario, funcao ON empregado WHEN salario > 10000 -- ao usar o BEFORE, você pode pegar os novos dados passados pela query usando -- o :NEW. essa clausula dara para você acesso à todos os novos dados -- para a clausula WHEN no inicio, não é necessário usar :NEW basta usar NEW BEFORE INSERT OR UPDATE OF salario, funcao ON empregado WHEN NEW.salario > 10000 ... IF(:NEW.salario == 2000) THEN .... .... -- como certas queries podem modificar varias linhas -- pode ser necessário utilizar a clausula FOR EACH ROW, aplicando o trigger -- para cada row modificada CREATE OR REPLACE TRIGGER trigger_name BEFORE INSERT OR UPDATE OF salario, funcao ON empregado FOR EACH ROW WHEN NEW.salario > 1000 ....; -- alem do NEW, há também o OLD, quando você vai deletar ou modificar algo -- sendo assim: -- INSERT: NEW -- UPDATE: NEW OLD -- DELETE: OLD -- obs: apenas os dados adicionados/editados são acessíveis por essas clausulas CREATE OR REPLACE TRIGGER trigger_name BEFORE INSERT OR UPDATE OF salario, funcao ON empregado FOR EACH ROW WHEN NEW.salario > 1000 AND OLD.funcao = 'RH' ....; -- se um trigger possui mais de um evento atrelado a ele, você possui três -- variaveis para verificar qual foi o evento: INSERTING, UPDATING e DELETING CREATE OR REPLACE TRIGGER trigger_name BEFORE INSERT OR UPDATE OF salario, funcao ON empregado FOR EACH ROW WHEN NEW.salario > 1000 AND OLD.funcao = 'RH' BEGIN IF INSERTING THEN ... ELSE ... END IF; ....;

April 28, 2025 · 2 min · map[email:dpbm136@gmail.com name:Dpbm]