Logo Passei Direto
Buscar

Desenvolvimento Mobile

User badge image
Alvaro Penna

em

Ferramentas de estudo

Questões resolvidas

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Prévia do material em texto

Desenvolvimento Mobile
Aula 01 
01
Qual é o primeiro passo para configurar o ambiente de desenvolvimento Flutter?
1. Instalar o Dart​
2. Instalar o SDK do Flutter
3. Configurar o Android Studio
4. Configurar um emulador ou dispositivo físico
5. Executar o flutter doctor
02
No Windows, qual comando adiciona o caminho do SDK do Flutter ao PATH do sistema?
1. set PATH "C:\path\to\flutter\bin"
​
2. setx PATH "%PATH%;C:\path\to\flutter\bin"
​
3. export PATH="$PATH:/path/to/flutter/bin"
​
4. set PATH "C:\path\to\dart\bin"
​
5. setx PATH "%PATH%;C:\path\to\dart\bin"
03
Qual é a função do arquivo pubspec.yaml em um projeto Flutter?
​
1. Executar testes unitários
2. Especificar a estrutura dos widgets
3. Configurar dependências e outras configurações do projeto
4. Exibir o conteúdo do projeto
5. Compilar o código Dart
04
Qual widget é utilizado para organizar widgets em uma coluna vertical?
1. Row
​
2. Container
3. Column
4. Scaffold
5. GestureDetector
​
05
Qual widget permite capturar toques do usuário em uma área específica?
​
1. TextField
2. Container
3. Column
4. GestureDetector
5. RaisedButton
06
O desenvolvimento de aplicativos móveis envolve a configuração de um ambiente de desenvolvimento eficiente e o entendimento da estrutura de um projeto. No Flutter, além de configurar o ambiente, é necessário compreender a organização dos arquivos e diretórios, bem como a função de widgets e layouts para desenvolver interfaces interativas. Esse conhecimento é crucial para criar aplicativos funcionais e com boa experiência do usuário.
Dada a estrutura do projeto Flutter, qual diretório contém os arquivos específicos da plataforma Android e por que é essencial entender sua função dentro do projeto?
​
1. Diretório lib - Contém o código principal do aplicativo e permite a escrita de widgets e funções.
2. Diretório ios - Contém os arquivos de configuração necessários para executar o aplicativo em dispositivos iOS.
​
3. Diretório android - Contém arquivos específicos para a plataforma Android, como o AndroidManifest.xml e configurações do Gradle, necessários para personalizar o comportamento do app no Android.
4. Diretório test - Contém os arquivos de teste do aplicativo, essenciais para garantir a funcionalidade em diferentes dispositivos.
5. Diretório assets - Armazena imagens e fontes, fundamentais para criar uma interface de usuário atrativa.
​
Aula 02
01
​Qual característica torna o Dart adequado para o desenvolvimento de aplicativos móveis e web?
1. Suporte a mixins e interfaces.
2. Forte tipagem dinâmica.
3. Suporte à compilação Ahead-of-Time (AOT) e Just-in-Time (JIT).
4. Exclusividade para o desenvolvimento de aplicativos iOS.
5. ​Orientação baseada exclusivamente em scripts
02
​Para configurar o ambiente de desenvolvimento do Dart no VS Code, qual passo é necessário?
1. ​Instalar o Android Studio
2. ​Adicionar o Dart ao PATH do sistema
3. ​Instalar a extensão Dart no VS Code
4. ​Configurar o Flutter Plugin
5. ​Configurar um emulador Android
03
​Qual das opções a seguir representa a estrutura básica de um programa Dart?
1. ​main() e class
2. ​main() e print()
3. ​print() e class
4. ​forEach() e set()
5. ​int e bool
04
​Em Dart, o que o operador => representa em uma função?
1. ​Declarar uma função sem retorno
2. ​Realizar uma operação condicional
3. ​Definir uma função de linha única
4. ​Criar uma variável
5. ​Instanciar um objeto
05
​Qual dos seguintes tipos de coleção em Dart não permite elementos duplicados?
1. ​List
2. ​Set
3. ​Map
4. ​Queue
5. ​Array
06
​Em uma linguagem de programação, como o Dart, a manipulação de coleções é essencial para organizar e processar conjuntos de dados. No Dart, há diferentes tipos de coleções, como List, Set e Map, cada um com suas características e aplicabilidades. Entender essas estruturas é fundamental para desenvolver aplicações eficientes, pois permite escolher a melhor coleção para cada tipo de operação.
Suponha que você está desenvolvendo um aplicativo Flutter que armazena os nomes de cidades visitadas pelo usuário e deseja evitar repetições. Qual tipo de coleção seria mais adequado para essa situação, e qual é a razão técnica para essa escolha?​​
1. ​List, pois permite acesso sequencial aos elementos e duplicatas são permitidas.
2. ​Set, pois garante que cada cidade seja armazenada apenas uma vez, evitando duplicatas.
3. ​Map, pois permite associar cada cidade a um índice único.
4. ​Array, pois ocupa menos memória em dispositivos móveis.
5. ​Queue, pois permite armazenar cidades em uma ordem de acesso específico.
Aula 03
01
​Qual widget no Flutter é utilizado para exibir texto na interface?
1. ​Container
2. ​Text
3. ​Row
4. ​Column
5. ​Scaffold
02
​O widget AnimatedContainer permite:
1. ​Exibir texto na tela
2. ​Reproduzir vídeos
3. ​Alterar a opacidade de widgets
4. ​Animar mudanças de propriedades, como tamanho e cor
5. ​Criar uma estrutura básica de layout para o aplicativo
03
​Em uma aplicação Flutter, o widget Scaffold é usado para:
1. ​Exibir uma imagem de uma URL
2. ​Exibir texto com tema personalizado
3. ​Criar uma estrutura básica de layout com AppBar, body e FloatingActionButton
4. ​Organizar widgets em linhas e colunas
5. ​Definir um tema global
04
​O widget Row é utilizado para:
1. ​Organizar widgets em uma estrutura vertical
2. ​Organizar widgets em uma estrutura horizontal
3. ​Definir um tema global para o aplicativo
4. ​Exibir uma caixa com padding e cor
5. ​Exibir um vídeo na aplicação
05
​O que o widget Theme permite fazer em uma aplicação Flutter?
1. ​Organizar widgets em linhas
2. ​Reproduzir vídeos
3. ​Definir temas globais para toda a aplicação
4. ​Criar temas específicos para widgets específicos
5. ​Adicionar animações aos widgets
06
​O Flutter é uma estrutura para desenvolvimento de interfaces multiplataforma, e widgets são os componentes essenciais para a construção de suas interfaces. Conhecer e aplicar corretamente os diferentes tipos de widgets disponíveis é fundamental para que o desenvolvedor crie aplicações bem estruturadas, dinâmicas e de fácil manutenção. Neste contexto, analise a seguinte situação:
Um desenvolvedor Flutter deseja construir uma tela onde ele possa:
- Apresentar uma mensagem centralizada na tela.
- Fornecer uma barra de título com o nome do aplicativo.
- Adicionar um botão flutuante que permita alterar o conteúdo exibido na tela.
Qual dos widgets a seguir oferece a estrutura básica ideal para esse cenário?
1. ​Container​
2. ​Row
3. ​Column
4. Scaffold
5. ​Stack
Aula 04
01
​Qual é o principal objetivo do uso de shared_preferences em um aplicativo Flutter?
1. ​Implementar operações CRUD em um banco de dados relacional
2. ​Permitir a persistência de grandes quantidades de dados complexos
3. ​Realizar persistência de dados simples em pares chave-valor
4. ​Compartilhar dados entre múltiplos aplicativos no dispositivo
5. ​Fornecer uma interface gráfica personalizada para o usuário
02
​Em relação ao uso de SQLite no Flutter, qual das afirmações a seguir é verdadeira?
1. ​O SQLite só pode armazenar dados em formato JSON
2. ​O SQLite é ideal para armazenamento de grandes quantidades de dados em nuvem
3. ​O SQLite permite a criação de tabelas e operações CRUD locais no dispositivo
4. ​O SQLite é limitado apenas ao armazenamento de dados temporários
5. ​O SQLite requer uma conexão com a internet para funcionar
03
​Para qual propósito o comando VACUUM é utilizado no contexto de um banco de dados SQLite?
1. ​Compactar o banco de dados e otimizar o espaço
2. ​Limpar todos os dados do banco de dados
3. ​Alterar as permissões de acesso ao banco de dados
4. ​Iniciar uma nova transação no banco de dados
5. ​Aumentar o desempenho de busca nas consultas
04
​Ao implementar uma classe de serviço para persistência de dados, qual é o principal benefício dessa abordagem em Flutter?
1. ​Facilitar a integração de múltiplas interfaces gráficas
2. ​Centralizar e isolar a lógica de persistência, mantendo o código mais organizado
3. ​Permitir a duplicação de código para persistência de dados
4. ​Aumentar o desempenhodo Flutter ao carregar imagens
5. ​Simplificar o design da interface de usuário
05
​Qual das alternativas representa uma vantagem do uso de Models ao realizar persistência de dados em Flutter?
1. ​Simplificar o código, eliminando a necessidade de mapear dados
2. ​Garantir que os dados persistidos sejam sempre armazenados na nuvem
3. ​Estruturar os dados de forma organizada, facilitando o uso e a manipulação
4. ​Permitir o uso de dados não-estruturados diretamente nas views
5. ​Assegurar que o banco de dados seja criptografado automaticamente
06
​O desenvolvimento de aplicativos móveis exige a persistência de dados para fornecer uma experiência contínua ao usuário. Em Flutter, uma das práticas recomendadas para persistir dados locais é o uso do SQLite e do shared_preferences. Considerando o exemplo de um aplicativo que armazena informações de login, é fundamental que o desenvolvedor entenda a melhor forma de implementar persistência segura, escolhendo entre esses dois métodos.
Com base no conhecimento sobre shared_preferences e SQLite, identifique a alternativa que apresenta a prática mais adequada para armazenar dados de login em um aplicativo Flutter e justifique sua escolha.​​
1. ​Usar o shared_preferences para armazenar os dados de login em formato de texto simples
2. ​Utilizar o SQLite para armazenar os dados de login e aplicar criptografia nos dados sensíveis
3. ​Usar uma variável global para manter o estado de login enquanto o aplicativo estiver aberto
4. ​Armazenar os dados de login em um arquivo de texto local dentro do dispositivo
5. ​Enviar os dados de login para um servidor remoto e não realizar qualquer armazenamento local
Aula 05
01
​Qual é a principal função do Google Cloud Messaging (GCM)?
1. ​Oferecer um ambiente de hospedagem para aplicativos web.
2. ​Gerenciar a atualização de dados de dispositivos móveis automaticamente.
3. Enviar mensagens de até 4 KB para dispositivos clientes.
4. ​Gerenciar e armazenar dados de aplicativos Flutter.
5. Realizar backups de dados de dispositivos Android e iOS.
​
02
​Qual dos seguintes é um dos benefícios do GCM mencionado na aula?
1. ​Maior utilização de bateria.
2. ​Facilidade no desenvolvimento de aplicativos iOS.
3. ​Eficiência de recursos e economia de bateria.
4. ​Criação automática de bancos de dados locais.
5. ​Transferência rápida de dados de até 10 KB.
03
​No processo de configuração do GCM no aplicativo Flutter, qual é o primeiro passo?
1. ​Adicionar dependências ao arquivo pubspec.yaml.
2. ​Registrar o projeto no Firebase Console.
3. ​Configurar o arquivo AndroidManifest.xml.
4. ​Atualizar o build.gradle com dependências do GCM.
5. ​Inicializar o Firebase diretamente no código Flutter.
04
​O código que exibe notificações personalizadas no Flutter, enquanto o aplicativo está em primeiro plano, utiliza:
1. flutter_local_notifications.
2. ​firebase_core.
3. ​firebase_messaging.
4. ​Firebase Console.
5. flutter_custom_notifications.
05
​Para enviar mensagens push programaticamente, o exemplo da aula utiliza uma biblioteca específica. Qual é essa biblioteca?
1. flutter_local_notifications.
2. ​firebase_core.
3. ​firebase-admin.
4. firebase_token_manager.
5. ​node_firebase.
06
​O Google Cloud Messaging (GCM) é um serviço que facilita o envio de mensagens e notificações push para dispositivos móveis. No desenvolvimento de um aplicativo Flutter, a configuração do GCM envolve diversas etapas, incluindo o registro no Firebase e a integração do SDK. Além disso, são utilizados recursos de manipulação de mensagens para que o aplicativo responda a notificações em diferentes estados, como em primeiro plano, segundo plano ou fechado.
Com base no funcionamento e na configuração do Google Cloud Messaging, assinale a alternativa que explica corretamente o fluxo de envio e recebimento de mensagens push:​​
1. ​O servidor do aplicativo envia mensagens diretamente para o dispositivo cliente sem intermediação de outros serviços.
2. ​O aplicativo cliente no dispositivo gerencia a entrega de mensagens para o servidor GCM, que as transmite ao Firebase Console.
3. ​O servidor do aplicativo envia mensagens para o servidor GCM, que as entrega aos dispositivos clientes, garantindo escalabilidade e eficiência de recursos.
4. ​O aplicativo cliente registra seu token no servidor do aplicativo, que recebe mensagens diretamente do Firebase Console.
5. ​A comunicação entre o servidor e o dispositivo cliente ocorre apenas quando o aplicativo está em primeiro plano.
Aula 06
01
​Qual é a principal característica da tecnologia NFC?
1. ​Comunica-se a uma distância de até 10 cm entre dispositivos.
2. ​Permite a troca de dados entre dispositivos próximos por meio de indução eletromagnética.
3. ​É uma tecnologia exclusiva para dispositivos Android.
4. ​Exige o uso de um servidor intermediário para o funcionamento.
5. ​Opera apenas em modo passivo para troca de dados.
02
​No modo passivo de funcionamento do NFC:
1. ​Ambos os dispositivos geram seus próprios campos eletromagnéticos.
2. ​Apenas o dispositivo receptor gera o campo eletromagnético.
3. ​Somente o dispositivo emissor gera o campo eletromagnético.
4. ​A comunicação ocorre sem a geração de qualquer campo eletromagnético.
5. ​O campo é gerado por um dispositivo independente que media a comunicação.
03
​Qual das seguintes é uma aplicação comum da tecnologia NFC?
1. ​Processamento de gráficos em 3D.
2. ​Pagamentos móveis, como Google Pay e Apple Pay.
3. ​Configuração de redes Wi-Fi de longa distância.
4. ​Criação de backups de dados móveis automaticamente.
5. ​Controle remoto de dispositivos eletrônicos.
04
​Para habilitar o uso de NFC em um aplicativo Flutter, qual é um dos primeiros passos na configuração?
1. ​Adicionar uma conta de pagamento no Google Pay.
2. ​Configurar o filtro de intenções no arquivo AndroidManifest.xml.
3. ​Iniciar o listener NFC diretamente no main.dart.
4. ​Adicionar o arquivo google-services.json ao projeto.
5. ​Configurar o Firebase Console para NFC.
05
​Qual é a finalidade do pacote nfc_manager ao configurar o NFC em um aplicativo Flutter?
1. ​Ele permite o armazenamento de dados em tags NFC remotamente.
2. ​Ele fornece uma interface para detectar e manipular tags NFC no aplicativo.
3. ​Ele autentica automaticamente o usuário durante a leitura de uma tag.
4. ​Ele é responsável por enviar notificações push quando uma tag NFC é detectada.
5. ​Ele configura o Firebase para gerenciar as permissões de NFC no dispositivo.
06
​A tecnologia Near Field Communication (NFC) permite que dispositivos troquem informações a curta distância e é amplamente utilizada em pagamentos móveis, autenticação de acesso e compartilhamento de dados. Ao integrar NFC em um aplicativo, é necessário configurar permissões, definir filtros de intenção e verificar a compatibilidade da tag. O processo de configuração e uso dessa tecnologia, incluindo leitura e escrita de tags, envolve diversas etapas de configuração e programação, como visto no exemplo de código.
Com base nas informações sobre NFC e sua configuração no Flutter, assinale a alternativa que melhor descreve o fluxo correto para a leitura de dados de uma tag NFC no aplicativo:​​
1. ​A tag NFC envia dados diretamente para o Firebase, que então os transmite para o aplicativo.
2. ​A leitura de dados só é possível se ambos os dispositivos operarem em modo ativo.
3. ​Ao detectar a tag, o aplicativo inicia uma sessão e utiliza o pacote nfc_manager para acessar e exibir os dados da tag.
4. ​A configuração do NFC no AndroidManifest.xml permite que o aplicativo leia e escreva automaticamente os dados da tag sem código adicional.
5. ​A sessão de leitura só pode ser iniciada manualmente pelo usuário, sem o uso de listeners automáticos.
Pensar & Responder
​A tecnologia Near Field Communication (NFC) facilita a troca de dados entre dispositivos próximos, geralmente a uma distância de até 4 cm. O NFC opera em dois modos principais: ativo e passivo. No modo passivo, um dos dispositivos gera o campo eletromagnético, enquanto o outro o utiliza para se comunicar. A integraçãodo pacote nfc_manager no Flutter permite que o aplicativo realize a leitura e escrita de tags NFC, com o gerenciamento de sessão para tags compatíveis.
Assinale a alternativa que descreve corretamente o funcionamento do modo passivo do NFC e como o pacote nfc_manager no Flutter lida com tags incompatíveis.​​​
1. ​No modo passivo, ambos os dispositivos geram campos eletromagnéticos; o nfc_manager continua a sessão para tags incompatíveis com NDEF.
2. ​No modo passivo, um dispositivo gera o campo eletromagnético e o outro utiliza esse campo; o nfc_manager encerra a sessão com uma mensagem de erro para tags incompatíveis com NDEF.
​​
3. ​No modo passivo, o dispositivo receptor gera o campo eletromagnético; o nfc_manager armazena automaticamente dados de tags incompatíveis.
4. ​No modo passivo, ambos os dispositivos dependem de uma fonte de energia externa; o nfc_manager exibe um aviso, mas mantém a sessão aberta para tags incompatíveis com NDEF.
5. ​No modo passivo, um dispositivo armazena os dados enquanto o outro envia comandos; o nfc_manager permite escrita em qualquer tipo de tag NFC.
Aula 07
01
​Qual é o método HTTP utilizado para criar um novo recurso em uma API RESTful?
1. ​GET
2. ​POST
3. ​PUT
4. ​DELETE
5. ​PATCH
02
​Em uma API RESTful, qual código de status indica que uma requisição foi bem-sucedida e um recurso foi criado?
1. ​200 OK
2. ​201 Created
3. ​400 Bad Request
4. ​404 Not Found
5. ​500 Internal Server Error
03
​O que é considerado um recurso em uma arquitetura REST?
1. Um serviço externo utilizado para otimizar a API.
​
2. ​Uma função JavaScript que manipula dados em JSON.
3. ​Um item identificável dentro da API, acessado através de um URI.
4. ​O servidor de banco de dados que armazena as informações.
5. ​Um sistema de segurança utilizado para autenticação.
04
​Ao implementar paginação em uma API RESTful, qual exemplo de URL é adequado?
1. ​/api/v1/users?limit=10&page=1
2. ​/api/v1/users;10&1
3. /api/v1/users(limit:10,page:1)
4. ​/api/v1/users+10-1
5. ​/api/v1/users?page-limit=10
05
​Em uma API RESTful, qual método HTTP é utilizado para excluir um recurso específico?
1. ​GET
2. ​POST
3. ​PUT
4. ​DELETE
5. ​PATCH
06
​Em uma arquitetura RESTful, a comunicação entre cliente e servidor é realizada por meio de métodos HTTP, cada um com uma finalidade específica. Além disso, os status codes retornados pelo servidor indicam o sucesso ou falha das operações. No desenvolvimento de uma API segura e eficiente, também é necessário implementar práticas como autenticação e validação de dados. Considere que você está desenvolvendo uma API RESTful para uma aplicação de e-commerce, onde os produtos precisam ser criados, atualizados, visualizados e excluídos.
Com base nos princípios de uma API RESTful, assinale a alternativa que apresenta a estrutura correta para atualizar as informações de um produto existente, garantindo a comunicação segura e informando o status apropriado.​​​
1. ​Enviar uma requisição GET para /api/v1/products com as novas informações, retornando 201 Created.
2. ​Enviar uma requisição POST para /api/v1/products/{id} e configurar o CORS para garantir a segurança, retornando 200 OK.
3. ​Enviar uma requisição PUT para /api/v1/products/{id} com o token de autenticação no cabeçalho, retornando 200 OK se bem-sucedida.
4. ​Enviar uma requisição PATCH para /api/v1/products e verificar o status 500 Internal Server Error para confirmar a atualização.
5. ​Enviar uma requisição DELETE para /api/v1/products/{id}, retornando 404 Not Found se o produto não for atualizado.
Vamo que vamo, vale nota até 2 de junho!
Aula 08
01
​Qual é a função da API Google Maps em aplicativos?
1. ​Armazenar dados em planilhas na nuvem.
2. ​Gerenciar eventos de calendário.
3. ​Incorporar mapas interativos, rotas e locais.
4. ​Realizar autenticação de usuários.
5. ​Criar e gerenciar arquivos no Google Drive.
02
​Qual método de autenticação seguro é comumente usado para acessar as APIs do Google?
1. ​Basic Auth
2. ​OAuth 2.0
3. ​JWT (JSON Web Token)
4. ​API Key com IP Binding
5. ​HMAC (Hash-based Message Authentication Code)
03
​Para habilitar a API do Google Drive em um projeto Flutter, qual é uma das primeiras etapas?
1. ​Configurar o arquivo AndroidManifest.xml com permissões de acesso.
2. ​Habilitar a API do Google Drive no Google Cloud Console.
3. ​Adicionar o arquivo google-services.json ao projeto Flutter.
4. ​Importar o pacote firebase_auth para o projeto.
5. ​Criar uma conta de desenvolvedor no Firebase.
04
​Em uma integração com Google Drive no Flutter, qual comando permite ao usuário autenticar-se e dar permissão ao aplicativo?​
1. ​clientViaOAuthToken
2. ​clientViaUserAuth
3. ​clientViaOAuthConsent
4. ​clientViaUserConsent
5. ​clientViaTokenAuth
05
​Qual das alternativas a seguir representa um benefício das APIs do Google em aplicativos?
1. ​Limitação de uso em função do tráfego alto.
2. ​Escalabilidade para gerenciar grandes volumes de dados e usuários.
3. ​Restrição de acesso apenas a dispositivos Android.
4. ​Acesso irrestrito a dados privados do usuário.
5. ​Dificuldade na configuração inicial de autenticação.
06
​A integração com as APIs do Google pode adicionar funcionalidades avançadas a aplicativos, como armazenamento em nuvem, gerenciamento de eventos e manipulação de dados em planilhas. Utilizar autenticação segura, como OAuth 2.0, e configurar adequadamente o Google Cloud Console são passos essenciais para implementar essas APIs. Um desenvolvedor de um aplicativo de produtividade deseja permitir que os usuários façam upload de documentos para o Google Drive diretamente do aplicativo, com segurança e eficiência.
Com base na estrutura e nos requisitos de segurança das APIs do Google, assinale a alternativa que descreve corretamente o fluxo de autenticação e configuração necessário para o upload de arquivos para o Google Drive.​​​
1. Criar uma conta Firebase, habilitar a API Google Maps e usar autenticação Basic Auth para conectar ao Google Drive.​
2. ​Adicionar o arquivo google-services.json ao projeto e autenticar o usuário com um API Key vinculado ao IP do dispositivo.
3. ​Habilitar a API Google Drive no Google Cloud Console, configurar OAuth 2.0 com o clientViaUserConsent e, então, realizar o upload com um token de autorização.
4. ​Configurar a API Google Sheets no Google Cloud Console, autenticar com um token JWT e enviar o arquivo para o Google Drive.
5. Habilitar a API Google Drive no Firebase Console e realizar a autenticação por meio do Google Auth ID.
Aula 09
01
​Qual é uma das funcionalidades principais do Google Maps integrada em aplicativos?
1. ​Exibição de realidade aumentada.
2. ​Criação de modelos 3D.
3. ​Exibição de rotas e navegação.
4. ​Análise de dados financeiros.
5. ​Exibição de estatísticas de uso.
02
​Em uma integração do Google Maps no Flutter, qual é o papel da chave de API?
1. ​Conectar o aplicativo diretamente ao Google Play.
2. ​Ativar a interface de usuário do aplicativo.
3. ​Autorizar o acesso à API do Google Maps para o aplicativo.
4. ​Gerar tokens de autenticação para usuários.
5. ​Exibir mensagens de erro personalizadas.
03
​Em que local a chave de API do Google Maps deve ser adicionada no Android para uso no Flutter?
1. ​Em um arquivo YAML separado.
2. ​Na seção de bibliotecas do pubspec.yaml.
3. ​No arquivo AndroidManifest.xml.
4. ​Em um banco de dados do Firebase.
5. ​No arquivo settings.gradle.
04
​Qual é o principal benefício de usar a funcionalidade de pontos de interesse no Google Maps em um aplicativo?
1. Aumentar o tempo de carregamento do aplicativo.
2. ​Acessar locais com base em características geográficas únicas.
3. ​Exibir recomendações de locais de interesse próximos, como restaurantes e hospitais.
4. ​Permitir a personalização de ícones no mapa.
5. ​Habilitar a função de compartilhamento de tela do dispositivo.
05
​Para adicionar um marcador ao mapa no Google Maps Flutter, qual elemento é necessário?
1. ​Um Location com a posição geográfica do usuário.
2. ​Um Marker com informações de localização e uma janela de informaçõesopcional.
3. ​Um Route para definir o trajeto até o marcador.
4. ​Um MapStyle para personalizar o visual do marcador.
5. ​Um MapController sem posição inicial.
06
​A integração do Google Maps com o Flutter permite que desenvolvedores incluam mapas interativos em seus aplicativos, enriquecendo a experiência do usuário. Além de exibir mapas, é possível adicionar recursos como rotas e marcadores personalizados. Uma das funcionalidades centrais de muitos aplicativos modernos é a habilidade de atualizar a localização do usuário em tempo real e exibir locais de interesse próximos, como restaurantes e hospitais.
Com base nos conceitos e configurações de integração do Google Maps no Flutter, assinale a alternativa que apresenta a sequência correta para obter e exibir a localização atual do usuário no mapa, mantendo os requisitos de permissão de localização.​​
1. ​Solicitar a localização com permissão temporária, definir um marcador e usar getLocation() para atualização.
2. ​Configurar as permissões no arquivo pubspec.yaml, obter a localização com o método location.getCurrent() e definir um Marker.
3. ​Configurar o AndroidManifest.xml e pubspec.yaml, solicitar as permissões de localização com checkLocationPermissions() e adicionar a posição ao GoogleMapController.d) Solicitar a localização ao usuário com showLocation(), definir um Marker no centro do mapa e configurar permissão no settings.gradle.
4. Solicitar a localização ao usuário com showLocation(), definir um Marker no centro do mapa e configurar permissão no settings.gradle.
5. Definir permissões de localização no AndroidManifest.xml e Info.plist, usar Geolocator.getCurrentPosition() e adicionar um Marker no mapa na posição do usuário.
​
Aula 10
01
​Qual é a principal função de um acelerômetro em dispositivos móveis?
1. ​Medir temperatura.
2. ​Detectar movimento e orientação.
3. ​Emitir sinais sonoros.
4. ​Armazenar dados.
5. ​Realizar processamento de imagem.
02
​Como os acelerômetros geralmente medem a aceleração?
1. ​Através de microcâmeras.
2. ​Medindo a variação de corrente elétrica.​
3. ​Por meio de pequenos componentes móveis que respondem ao movimento.
4. ​Através de variações de temperatura.
5. ​Medindo a frequência de ondas de rádio.
03
​Em qual das opções abaixo o acelerômetro é comumente utilizado?
1. ​Processamento de dados em nuvem.
2. ​Monitoramento de nível de bateria.
3. ​Detecção de passos em dispositivos de fitness.
4. ​Cálculo de rotações de motor.
​​
5. ​Controle de volume de áudio.
04
​Para que serve o pacote sensors_plus no Flutter?
1. ​Para fazer chamadas de API.
2. ​Para acessar sensores como acelerômetro e giroscópio.
3. ​Para gerenciar animações de interface.
4. ​Para realizar cálculos complexos de física.
5. ​Para monitorar a memória do dispositivo.
05
​Em qual situação o acelerômetro pode ser usado para melhorar a segurança automotiva?
1. ​No monitoramento de velocidade.
2. ​Na calibragem automática dos pneus.
3. ​Na gestão de combustível.
4. ​Na estabilização de espelhos retrovisores.
5. ​No acionamento de airbags.
06
Acelerômetros são sensores amplamente utilizados em dispositivos móveis para captar movimentos, detectar a orientação do dispositivo e até mesmo monitorar atividades físicas. Em aplicações no Flutter, dados do acelerômetro podem ser coletados em tempo real, ajudando a criar funcionalidades interativas e reativas, como jogos e aplicativos de saúde. Em uma aplicação de controle de movimento, dados do acelerômetro são essenciais para rastrear inclinação e movimento.
Considerando as funcionalidades do acelerômetro, assinale a alternativa que descreve corretamente uma configuração de uso do acelerômetro em Flutter, incluindo o fluxo básico de dados para detectar movimento e alterar a interface.
​
1. ​Coletar dados com accelerometerStream(), ativar permissões de API e usar updateSensorData() para atualizar o estado.
2. ​Adicionar o pacote sensors_plus, iniciar um listener com accelerometerEvents, e configurar a interface para responder aos dados em tempo real.
​​
3. ​Adicionar o pacote flutter_sensors, armazenar dados em cache e fazer uma sincronização manual com a interface de usuário.
4. ​Ativar o sensor no arquivo pubspec.yaml, escutar eventos com streamEvents() e processar manualmente os dados.
5. ​Coletar dados com sensorReader(), aplicar um filtro de precisão e ativar sensorUpdates() para responder ao movimento.
Pensar & Responder
​Acelerômetros em dispositivos móveis captam dados sobre o movimento e a inclinação, convertendo essas informações em sinais elétricos que podem ser usados para diversas funcionalidades interativas. Em uma aplicação Flutter que visa monitorar atividades físicas, o uso eficiente dos dados de acelerômetro é essencial para medir corretamente movimentos específicos, como passos e inclinações.
Explique como um aplicativo de monitoramento de atividades físicas poderia usar dados do acelerômetro para contar passos e diferenciar movimentos do usuário. Em seguida, discuta brevemente como o filtro de média móvel poderia ser aplicado para aumentar a precisão na contagem de passos.​​​
Aula 11
01
​Qual é uma das principais limitações no desenvolvimento de aplicativos para dispositivos wearables?
1. ​Grande capacidade de armazenamento
2. Interfaces de usuário simplificadas
3. Processamento ilimitado
4. Tela de alta resolução
5. Funcionalidades completas de smartphone​​
02
​Qual das opções a seguir representa um exemplo de wearable voltado para monitoramento de atividades físicas?
1. Smartphone
2. Tablet
3. Óculos inteligentes
4. Fitness tracker
5. Notebook
03
Em relação ao desenvolvimento de interfaces para wearables, qual é um dos princípios mais importantes?
1. Complexidade
2. Abundância de informações na tela
3. Simplicidade
4. Prioridade em controles por mouse
5. Alta resolução de vídeo
04
Qual é o principal benefício de integrar o Google Maps em um dispositivo wearable?
1. Exibir imagens em alta resolução
2. Receber e enviar mensagens de texto
3. Monitorar o consumo de dados
4. Fornecer rotas e localização em tempo real
5. Aumentar o tempo de bateria
05
Para otimizar o consumo de energia em um aplicativo para wearable, uma boa prática é:
1. Aumentar a frequência de atualização dos dados
2. Manter os sensores sempre ativos 
3. Minimizar o uso de dados e sensores quando não necessários
4. Priorizar animações complexas na interface
5. Utilizar mais dados móveis para sincronização contínua
06
Com o avanço dos wearables, como smartwatches e fitness trackers, o desenvolvimento de interfaces para esses dispositivos impõe desafios devido a limitações de hardware e ao tamanho reduzido da tela. Para otimizar a experiência de usuário nesses dispositivos, é crucial adotar práticas de design que priorizem simplicidade, legibilidade e eficiência no uso de recursos.
Assinale a alternativa que apresenta uma prática recomendada para o design de interfaces em dispositivos wearables, considerando suas limitações específicas.​
1. Exibir o maior número possível de dados em uma única tela para evitar navegação entre telas
2. Utilizar ícones grandes e textos de fácil leitura, minimizando a complexidade da interface
3. Priorizar animações complexas para enriquecer a experiência visual do usuário
4. Implementar layouts detalhados que ocupem todo o espaço disponível na tela
5. Manter a interface sempre ativa para garantir que o usuário acesse informações sem atraso
Aula 12
01
​Qual é o principal objetivo dos testes de software em um projeto?
1. Corrigir todos os bugs encontrados no software
2. Verificar a conformidade do software com os requisitos e identificar problemas
3. Melhorar o design visual do aplicativo
4. Substituir os processos de desenvolvimento de software
5. Remover a necessidade de manutenções futuras​​
02
Qual tipo de teste é responsável por avaliar a interação entre diferentes componentes do sistema?
1. Teste Unitário
2. Teste de Sistema
3. Teste Integrado
4. Teste de Interface
5. Teste de Aceitação​​
03
​Em um ambiente Flutter, qual arquivo precisa ser configurado para adicionardependências de testes?
1. main.dart
2. config.dart
3. dependencies.yaml
4. pubspec.yaml
5. app_test.dart​​
04
​Qual é a vantagem principal de configurar pipelines de CI/CD para testes?
1. Facilitar o design do software
2. Automatizar e padronizar a execução de testes a cada mudança de código
3. Eliminar a necessidade de testes manuais
4. Melhorar a interface gráfica do aplicativo
5. Garantir que todos os bugs sejam automaticamente corrigidos​​
05
​Ao configurar um teste integrado simples em Flutter, qual é o propósito do comando flutter drive --target=test_driver/app_test.dart?
1. Executar apenas testes unitários no aplicativo
2. Iniciar o aplicativo em um modo de desenvolvimento
3. Executar testes integrados definidos em app_test.dart
4. Compilar o código principal do aplicativo
5. Executar testes de interface gráfica​
06
​Em projetos de desenvolvimento de software, os testes são fundamentais para garantir que o aplicativo atenda aos requisitos e seja confiável, manutenível e seguro. Para isso, diferentes tipos de testes, como unitários, integrados e de sistema, são aplicados em várias fases do desenvolvimento. Em um projeto desenvolvido com Flutter, a implementação de um pipeline de CI/CD facilita a execução automática de testes, permitindo que erros sejam identificados rapidamente.
Considerando um cenário onde um novo módulo foi adicionado ao sistema, selecione a alternativa que melhor descreve a estratégia de testes a ser adotada para garantir a integração do novo módulo sem comprometer o funcionamento dos componentes existentes.​
1. Realizar apenas testes unitários para verificar funcionalidades internas do novo módulo
2. Executar testes de sistema para avaliar o comportamento de todo o sistema com o novo módulo
3. Confiar nos testes anteriores, sem a necessidade de novas verificações, pois os componentes antigos já foram testados
4. Configurar testes integrados para avaliar a interação entre o novo módulo e os componentes existentes, seguidos de testes de sistema
5. Executar testes de interface gráfica para verificar a integração visual do novo módulo com os demais componentes​
Aula 13
01
Qual a principal função dos padrões de projeto no desenvolvimento de software?
1. Proporcionar uma solução única e específica para cada problema.
2. Resolver problemas triviais e irrelevantes.
3. Fornecer uma solução reutilizável para problemas recorrentes de design.
4. Substituir completamente a necessidade de programação.
5. Eliminar todos os erros no código.
02
O que caracteriza os padrões criacionais?
1. Eles lidam com a interação e responsabilidade entre objetos.
2. Eles são focados na criação e controle de objetos.
​
3. Eles formam uma estrutura de classes e objetos para composições complexas.
4. Eles eliminam a necessidade de herança no código.
5. Eles visam apenas a comunicação entre desenvolvedores.
03
Sobre o padrão Singleton, é correto afirmar que ele:
1. Garante múltiplas instâncias de uma classe.
2. Permite que subclasses alterem o tipo de objetos criados.
3. Assegura uma única instância e fornece um ponto de acesso global.
4. Facilita a criação de estruturas compostas de objetos.
5. Define uma família de algoritmos intercambiáveis.
04
O padrão Composite é utilizado para:
1. Tratar objetos e composições de objetos de maneira uniforme.
2. Garantir uma única instância de uma classe.
3. Implementar uma interface para a criação de objetos.
4. Separar a construção de um objeto complexo da sua representação.
5. Encapsular uma solicitação como um objeto.
05
O padrão Observer é útil em qual das seguintes situações?
1. Quando se quer garantir uma única instância de uma classe.
2. Quando se deseja tratar algoritmos de forma intercambiável.
3. Quando há uma dependência um-para-muitos entre objetos e notificações de mudanças são necessárias.
4. Quando é necessário criar uma interface de adaptação entre duas classes.
5. Quando é preciso encapsular uma solicitação para executar operações distintas.
06
Os padrões de projeto foram desenvolvidos para oferecer soluções práticas e comprovadas para problemas comuns no desenvolvimento de software, melhorando a comunicação entre desenvolvedores e facilitando a manutenção e evolução de sistemas. Em um cenário onde uma equipe de desenvolvimento está enfrentando problemas com a criação e gerenciamento de diferentes tipos de objetos, um desenvolvedor sugere o uso do padrão Factory Method para facilitar o controle de instância dos objetos criados.
Com base no cenário descrito, escolha a alternativa que melhor descreve a aplicação do padrão Factory Method, considerando sua implementação e benefícios no contexto da criação e controle de instância de objetos.
1. O padrão Factory Method é ideal para criar uma única instância de uma classe e fornecer um ponto de acesso global a essa instância.
2. O padrão Factory Method permite que subclasses definam o tipo de objetos que serão instanciados, encapsulando a criação dos objetos e promovendo flexibilidade.
3. O padrão Factory Method é usado para adicionar comportamento extra a um objeto sem alterar sua estrutura original.
4. O padrão Factory Method facilita a conversão de interfaces de classes incompatíveis, possibilitando que trabalhem juntas.
5. O padrão Factory Method é uma boa prática para tratar algoritmos como intercambiáveis, permitindo a escolha dinâmica do algoritmo em tempo de execução.
Aula 14
01
​Qual das seguintes opções NÃO é uma característica da Cloud Computing?
1. Escalabilidade
2. Elasticidade
3. Economia de Escala
4. Dependência de Hardware Local
5. Disponibilidade​​
02
​Qual dos tipos de serviço em nuvem é mais adequado para fornecer software pronto para uso pela internet?
1. IaaS
2. PaaS
3. SaaS
4. FaaS
5. CaaS
03
​Ao integrar o Firebase em um projeto Flutter, qual arquivo deve ser configurado para inicializar o Firebase na aplicação?
1. main.dart
2. pubspec.yaml
3. config.xml
4.  index.js
5.  flutter.yaml​​
04
​Entre os provedores de Cloud Computing, qual é mais comumente utilizado por empresas que já utilizam produtos da Microsoft?
1. Amazon Web Services (AWS)
2. Google Cloud Platform (GCP)
3. Microsoft Azure
4. IBM Cloud
5. Oracle Cloud​​
05
​Para garantir a segurança de dados em Cloud Computing, qual prática é recomendada para a proteção de dados armazenados (em repouso)?
1. Utilizar tokens JWT
2. Utilizar encriptação AES
3. Configurar OAuth2
4. Utilizar RBAC
5. Configurar HTTPS​​
06
​O uso de serviços em nuvem tem se expandido rapidamente devido às suas vantagens em termos de escalabilidade e economia. Ao desenvolver aplicativos móveis ou web, como no caso do Flutter com Firebase, a escolha dos serviços de cloud computing pode influenciar significativamente o desempenho e a experiência do usuário. Com base nas características e nos tipos de serviços em nuvem discutidos, analise a situação abaixo.
Imagine que uma startup deseja desenvolver um aplicativo móvel com recursos de autenticação, armazenamento de dados em tempo real e flexibilidade para integração futura com outras plataformas. Com base nas características dos serviços de cloud computing apresentados, qual combinação de serviço e provedor seria a mais indicada?​​
1. ​IaaS com Amazon Web Services (AWS)
2. PaaS com Google App Engine
3. SaaS com Google Workspace
4. PaaS com Microsoft Azure
5. SaaS com Microsoft Office 365​​
Pensar & Responder
​A tecnologia Near Field Communication (NFC) facilita a troca de dados entre dispositivos próximos, geralmente a uma distância de até 4 cm. O NFC opera em dois modos principais: ativo e passivo. No modo passivo, um dos dispositivos gera o campo eletromagnético, enquanto o outro o utiliza para se comunicar. A integração do pacote nfc_manager no Flutter permite que o aplicativo realize a leitura e escrita de tags NFC, com o gerenciamento de sessão para tags compatíveis.
Assinale a alternativa que descreve corretamente o funcionamento do modo passivo do NFC e como o pacote nfc_manager no Flutter lida com tags incompatíveis.​​​
1. ​No modo passivo, ambos os dispositivos geram campos eletromagnéticos;o nfc_manager continua a sessão para tags incompatíveis com NDEF.
2. ​No modo passivo, um dispositivo gera o campo eletromagnético e o outro utiliza esse campo; o nfc_manager encerra a sessão com uma mensagem de erro para tags incompatíveis com NDEF.
​​
3. ​No modo passivo, o dispositivo receptor gera o campo eletromagnético; o nfc_manager armazena automaticamente dados de tags incompatíveis.
4. ​No modo passivo, ambos os dispositivos dependem de uma fonte de energia externa; o nfc_manager exibe um aviso, mas mantém a sessão aberta para tags incompatíveis com NDEF.
5. ​No modo passivo, um dispositivo armazena os dados enquanto o outro envia comandos; o nfc_manager permite escrita em qualquer tipo de tag NFC.
Pensar & Responder
​A computação em nuvem transformou o desenvolvimento de aplicativos móveis e web, especialmente com o uso de ferramentas como o Firebase em Flutter, que possibilitam a implementação de funcionalidades seguras e escaláveis, como autenticação e armazenamento de dados em tempo real. Para garantir a segurança dos dados dos usuários em um aplicativo, práticas específicas de segurança em cloud computing são essenciais.
Uma equipe de desenvolvimento está criando um aplicativo móvel em Flutter e precisa implementar funcionalidades que garantam a segurança dos dados do usuário durante a autenticação e o armazenamento em nuvem. Considere que a equipe optou por utilizar o Firebase para essa integração. Qual das alternativas a seguir descreve corretamente as práticas de segurança recomendadas para proteger os dados do usuário?
1. Configurar o Firebase Authentication para autenticação de usuários, implementar regras de segurança no Firestore e utilizar encriptação em repouso e em trânsito.
2. Habilitar apenas a autenticação de e-mail/senha no Firebase Authentication e permitir acesso irrestrito ao Firestore para todos os usuários.
3. Configurar o Firebase Authentication com autenticação via redes sociais e desativar a encriptação de dados para melhorar o desempenho.
4. Implementar regras de segurança no Firestore, mas sem usar autenticação, para evitar complexidade no sistema.
5. Configurar autenticação com Firebase Authentication e usar encriptação apenas em trânsito, deixando os dados em repouso sem proteção adicional.​​
LISTA DE REVISÃO 01
01
Qual das seguintes pastas ou arquivos deve ser incluído no controle de versão de um projeto Angular?
1. .angular
2. node_modules
3. src
4. package-lock.json
5. .vscode
02
Qual é a principal função do arquivo package-lock.json em um projeto Angular?
1. Gerenciar o comportamento do TypeScript em diferentes ambientes, atualizando o arquivo diariamente.
2. Assegurar que versões exatas das dependências sejam utilizadas, evitando atualizações inesperadas.
3. Fornecer instruções de inicialização para cada versão do projeto, em diferentes ambientes.
4. Configurar o estilo do código nos editores compatíveis, com base nas especificações do projeto.
5. Configurar como o projeto será construído para diferentes ambientes.
03
Qual arquivo em um projeto Angular define como o TypeScript se comportará, incluindo configurações como versão de JavaScript a ser compilada e restrições de linguagem?
1. tsconfig.json
2. tsconfig.app.json
3. angular.json
4. package.json
5. tsconfig.spec.json
04
Qual das seguintes opções descreve corretamente a função do arquivo README.md em um projeto Angular?
1. Configurar o estilo do código nos editores compatíveis.
2. Armazenar as dependências baixadas pelo comando npm install.
3. Gerenciar as versões das dependências instaladas.
4. Fornecer instruções sobre como iniciar o projeto.
5. Configurar os ambientes de build do projeto.
05
O arquivo README.md é amplamente utilizado para documentar informaçõQual das opções a seguir está corretamente associada ao gerenciamento de dependências em um projeto Angular?
1. angular.json
2. .vscode
3. sconfig.app.json
4. README.md
5. package.json
LISTA DE REVISÃO 02
01
Qual das opções a seguir descreve corretamente a diferença entre um formulário template-driven e um formulário reativo no Angular?
1. Formulários template-driven exigem validações personalizadas, enquanto formulários reativos não suportam validações.
2. Formulários template-driven dependem exclusivamente do TypeScript, enquanto formulários reativos dependem exclusivamente do template HTML.
3. Formulários template-driven utilizam [(ngModel)] para binding, enquanto formulários reativos utilizam formControlName.
4. Formulários template-driven permitem a criação de formulários dinâmicos complexos, enquanto formulários reativos são limitados a estruturas estáticas.
5. Formulários template-driven são recomendados para validações avançadas, enquanto formulários reativos são recomendados para validações simples.
02
Qual biblioteca pode ser usada para implementar validações específicas como CPF e CNPJ em um formulário Angular?
1. js-brasil
2. ngx-mask
3. text-mask-core
4. primeng
5. ng-brazil
03
Qual das alternativas abaixo é verdadeira sobre a utilização de regex no Angular?
1. Regex só pode ser usado para validação de emails no Angular.
2. O Angular não suporta a utilização de regex diretamente nos formulários.
3. Regex é obrigatório para qualquer validação personalizada no Angular.
4. Regex pode ser usado em formulários reativos por meio do Validators.pattern.
5. O Angular só suporta regex em bibliotecas externas como ng-brazil.
04
Ao implementar máscaras para campos como CPF ou data em um formulário Angular, qual biblioteca pode ser utilizada?
1. ngx-mask
2. js-brasil
3. primeng
4. ng-brazil
5. text-mask-core
05
Considere o seguinte trecho de código estudado nas aulas:
ngOnInit(): void {
const id = this.activedRouter.snapshot.params["id"];
if(id) {
this.service.getById(id)
.subscribe(value => {
this.formGroup.setValue(value);
})
}
this.listar();
}
Qual é o objetivo principal do código acima no contexto do componente Angular?
1. Criar um novo formulário reativo com base no ID fornecido pela URL.
2. Verificar se o ID existe e removê-lo do localStorage antes de carregar o formulário.
3. Salvar um novo item no localStorage se o ID fornecido na URL for inválido.
4. Inicializar a lista de itens e redefinir o formulário para valores padrão.
5. Atualizar o formulário reativo com os dados do item localizado pelo ID na URL.

Mais conteúdos dessa disciplina