Apol 2 Flashcards
(16 cards)
[Aula 5] O SQLite é um sistema de gerenciamento de banco de dados relacional que é conhecido por sua leveza, facilidade de uso e eficiência.
Relacione alguns pontos importantes sobre o SQLite 3:
Suporte ao SQL padrão
Ampla disponibilidade
Zero configuração
Embarcado
Transações ACID
( ) Oferece suporte a transações de Atomicidade, Consistência, Isolamento, Durabilidade, o que garante que as operações de banco de dados sejam confiáveis, mesmo em face de falhas do sistema
( ) É amplamente suportado e está disponível em praticamente todas as plataformas, incluindo Windows, macOS, Linux e sistemas embarcados. Ele é usado em uma variedade de aplicativos, desde navegadores da web até aplicativos móveis e até mesmo em sistemas embarcados
( ) É uma biblioteca C que é embutida diretamente em aplicativos, o que significa que todo o banco de dados é armazenado em um único arquivo. Isso torna o SQLite perfeito para aplicativos que precisam de um banco de dados leve e não querem a sobrecarga de um servidor de banco de dados separado
( ) Uma de suas principais vantagens do SQLite é não requerer configuração ou administração de servidor. Você simplesmente inclui uma biblioteca em seu projeto e está pronto para começar a usar o banco de dados
( ) Suporta a maioria do SQL padrão, incluindo consultas complexas, junções, transações, gatilhos e subconsultas. Isso o torna muito poderoso e flexível para uma ampla gama de aplicativos
Agora, selecione a alternativa que apresenta a sequência correta:
D- 5 – 2 – 4 – 3 – 1
[Aula 5] O padrão Proxy é um padrão de projeto estrutural que fornece um objeto que atua como um substituto para um objeto de serviço real usado por um cliente para controlar o acesso a ele. O comando a seguir mostra um exemplo da utilização do Proxy:
all_clients = proxy.get_all_clients()
for d in all_clients:
print( f”Nome: {d.nome}, “
f”DataNcto: {d.datancto}, “
f”CPF: {d.cpf}, “
f”EMail: {d.email}, “
f”Telefone:{d.telefone}”)
Esse recorte de comando Proxy tem o objetivo de:
D- Selecionar todos os clientes no banco de dados
[Aula 6] Testes unitários, ou unit tests, são uma prática de desenvolvimento de software em que partes individuais (ou unidades) do código são testadas isoladamente para garantir que funcionem como esperado. Uma unidade pode ser uma função, um método de uma classe ou até mesmo uma pequena parte de código que executa uma determinada funcionalidade.
Em termos simples, os testes unitários verificam se cada parte do código faz o que é suposto fazer. Eles são escritos pelo desenvolvedor e têm como objetivo:
A- Validar as unidades separadamente
[Aula 5] O SQLite é um sistema de gerenciamento de banco de dados relacional que é conhecido por sua leveza, facilidade de uso e eficiência. Devido à sua natureza leve e incorporada, o SQLite é amplamente utilizado em aplicativos móveis, tanto para iOS quanto para Android. Ele é usado para armazenar dados localmente no dispositivo, como configurações do aplicativo, dados do usuário, cache e até mesmo para aplicativos que exigem armazenamento de dados offline.
O comando “CREATE TABLE IF NOT EXISTS <nome>” é utilizado para:</nome>
D- Criar uma tabela em um banco de dados
[Aula 5] Para a utilização do SQLite são necessários alguns comandos no Python para que os registros sejam recuperados de uma tabela, analise as afirmativas a seguir que mostram os comandos de recuperação e exibição de registros de uma tabela do SQLite:
I. conn = sqlite3.connect(‘meu_banco.db’): essa linha cria uma conexão com o banco de dados SQLitechamado ‘projeto.db’
II. cursor = conn.cursor(): um cursor é criado para executar comandos SQL na conexão com o bancode dados
III. conn.close(): a conexão com o banco de dados é aberta para liberar recursos
IV. for row in rows: print(f”*:{row[n]}”: um loop for é usado para iterar sobre os resultados (rows) e cadastrar os valores de cada registro
V. cursor.execute(“SELECT * FROM minha_tabela”): o método execute() é usado para executar a consulta SQL “SELECT * FROM minha_tabela”, que seleciona todos os registros da tabela ‘minha_tabela’
São corretas apenas as afirmativas:
B- II, e V
[Aula 4] Em Python temos duas situações quando precisamos trabalhar com objetos. Uma situação é quando você tem um conjunto de objetos que precisam se comunicar entre si, mas quer evitar que eles se comuniquem diretamente, promovendo um acoplamento fraco entre eles. A outra situação é quando você tem um objeto que precisa notificar outros objetos sobre mudanças em seu estado.
Essas duas situações referentes a objetos são conhecidas respectivamente como:
C- Design pattern mediator e design pattern observer
[Aula 4] Em Python, você pode lidar com ações usando bibliotecas. Uma das maneiras mais comuns de lidar com essas ações é usando a biblioteca sched. Como pode ser observado no comando a seguir:
import sched
import time
def print_message(mensagem):
print(mensagem)
def schedule_next_event(scheduler, intervalo, mensagem):
scheduler.enter(1, 1, schedule_next_event, (scheduler, intervalo, mensagem)) print_message(mensagem)
scheduler = sched.scheduler(time.time, time.sleep)
schedule_next_event(scheduler, 1, “Esta é a mensagem agendada a cada 1 segundo!”)
scheduler.run()
Esse código utilizado em Python nos traz um exemplo de:
E- Eventos de tempo
[Aula 4] Em Python existe uma maneira de criar listas de forma rápida e fácil. É como se estivéssemos criando uma lista usando uma espécie de atalho. Como pode ser observado no comando a seguir:
lista_pares_quadrado = [num * num if num % 2 == 0 else ‘impar’ for num in range(10) ]
Esse código utilizado em Python nos traz um exemplo de:
A- List comprehensions
[Aula 6] Uma IDE (Integrated Development Environment), como o PyCharm, desempenha um papel crucial no desenvolvimento de software, especialmente para linguagens de programação como Python. IDEs oferecem vários recursos aos desenvolvedores que permitem alterar o código, salvá-lo automaticamente e ainda reestruturarem o código de forma segura e eficiente, ajudando a melhorar sua qualidade e manutenção.
O recurso que permite reestruturação de código é conhecido como:
C- Refatoração de código
[Aula 4] O design pattern mediator é utilizado quando você tem um conjunto de objetos que precisam se comunicar entre si, mas quer evitar que eles se comuniquem diretamente, promovendo um acoplamento fraco entre eles. O Mediator facilita a modificação, extensão e reutilização de componentes individuais porque eles não dependem mais de dezenas de outras classes.
Relacione os benefícios e os elementos do design pattern mediator:
Redução de dependências
Interface do Mediador
Gerenciamento de comunicação
Mediadores Concretos
Componentes
( ) São classes contendo lógica de negócio, vinculadas a um mediador para reutilização sem conhecer sua classe específica
( ) Declara métodos de comunicação, permitindo que os componentes interajam sem acoplamento direto
( ) Gerenciam as relações entre os componentes, mantendo referências e coordenando suas ações sem sua consciência explícita
( ) É utilizado quando muitos objetos conversam entre si, mas deseja-se manter a comunicação organizada por meio de um intermediário
( ) Empregado para evitar que as coisas fiquem muito dependentes umas das outras, facilitando as mudanças
Agora, selecione a alternativa que apresenta a sequência correta:
D- 5 – 2 – 4 – 3 – 1
[Aula 5] O SQLite é um SGBD relacional que é conhecido por sua leveza, facilidade de uso e eficiência. Ele é utilizado diretamente nos dispositivos dos usuários.
Relacione alguns comandos utilizados no SQLite 3:
close()
conn = sqlite3.connect(‘nome.db’)
commit()
print(“mensagem”)
cursor = conn.cursor()
( ) Essa linha cria uma conexão com o banco de dados SQLite. Se o banco de dados não existir, ele será criado nesse momento
( ) As alterações feitas no banco de dados são confirmadas com esse comando. Isso garante que as alterações sejam permanentemente gravadas no banco de dados
( ) Criação de um cursor para executar comandos SQL na conexão com o banco de dados
( ) Uma conexão com o banco de dados sempre deve ser fechada para liberar recursos, para isso esse comando deve ser utilizado
( ) É importante que uma mensagem seja impressa para indicar que os registros foram inseridos com sucesso
Agora, selecione a alternativa que apresenta a sequência correta:
B- 2 – 3 – 5 – 1 – 4
[Aula 6] Gerar um executável a partir de um código em Python pode simplificar a distribuição, melhorar a experiência do usuário e, em certos casos, proteger o código-fonte. Isso torna a prática valiosa em uma variedade de contextos, incluindo desenvolvimento de software comercial, distribuição de aplicativos e criação de ferramentas de linha de comando.
Vimos no material duas maneiras de gerar executável de um código Python, que são PyInstaller e cx_Freeze, que possuem como características:
D- PyInstaller permite empacotar código Python junto com o interpretador e cx_Freeze é uma ferramenta que permite congelar códigos .py criando um executável
[Aula 4] Eventos de tempo em programação, especialmente em Python, referem-se à capacidade de executar determinadas ações em intervalos regulares de tempo ou em momentos específicos no futuro. Isso é útil em uma variedade de cenários, como agendar tarefas periódicas, atualizar dados de forma regular, processar eventos em tempo real e muito mais. Em Python, você pode lidar com eventos de tempo usando a biblioteca time para operações básicas de tempo e a biblioteca datetime para manipulação de datas e horas mais complexas. No entanto, uma das maneiras mais comuns de lidar com eventos de tempo é usando a biblioteca sched, analise as afirmativas a seguir que trazem algumas funções de tempo e suas aplicações:
I. schedule_next_event: Agendar evento próximo à data atual
II. scheduler.enter: Agendar um evento para execução em espera
III. scheduler.enterabs: Agenda um evento de valores absolutos
IV. scheduler.run: Executa todos os eventos agendados
V. scheduler.cancel: Remove todas as variáveis do sistema
São corretas apenas as afirmativas:
C- II, III e IV
[Aula 4] Em programação, temos ações ou ocorrências que podem ser detectadas e manipuladas pelo programa. Por exemplo, em uma aplicação de interface gráfica de usuário (GUI), essa ação pode ser um clique no mouse ou uma interrupção de teclado, conforme pode ser visto a seguir:
Imagem
Essa ação em programação é conhecida como:
B- Evento
[Aula 5] Quando trabalhamos com dados é necessário recuperar e exibir registros de uma tabela armazenadas em um banco de dados.
Para extrair todos os dados de uma tabela no SQLite chamada cliente, devemos utilizar o comando:
B- cursor.execute(“SELECT * FROM cliente”)
[Aula 3] O padrão de projetos conhecido como Builder faz parte do grupo de padrões titulado como padrões criacionais definidos pelo GoF. O padrão builder é utilizado para construção de objetos complexos fazendo-se uso de uma abordagem de desenvolvimento passo a passo. O padrão Builder é um padrão de projetos de software comum que é usado para encapsular a lógica de construção de um objeto. Este padrão é frequentemente utilizado quando o processo de construção de um objeto é considerado complexo e também é adequado quando se trata da construção de representações múltiplas de uma mesma classe.
Relacione os benefícios da abordagem com Padrão Builder:
Director
Classe Builder
Concrete Builder
Product
( ) Esta classe especifica uma interface ou uma classe abstrata para a criação das partes de um objeto a fim de criar corretamente o produto
( ) É a classe responsável pela construção e pela montagem das partes do produto por meio da implementação da classe builder. Ela define e
mantém o controle da representação que a classe cria, além de fornecer uma interface para recuperação do produto
( ) Classe que controla o algoritmo responsável por gerar o objeto do produto. Um objeto Director é instanciado e seus métodos construtores são
chamados. O método inclui um parâmetro para capturar objetos específicos do tipo Concrete Builder que serão então utilizados para gerar o
produto
( ) É a representação do objeto complexo que está sendo construído. O concrete builder então constrói a representação interna do produto e
define o processo pelo qual essa classe será montada
Agora, selecione a alternativa que apresenta a sequência correta:
C- 2 – 3 – 1 – 4