Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

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

Prévia do material em texto

Introdução a Dart e Flutter
Apresentação
Dart é uma linguagem orientada a objetos lançada pela Google em 2013. É um projeto de código 
aberto que visa a permitir que os desenvolvedores construam aplicativos mais complexos e 
altamente performáticos para a web moderna. 
Usando a linguagem Dart, você pode escrever protótipos que evoluem rapidamente, além de ter 
acesso a ferramentas avançadas, bibliotecas confiáveis e boas técnicas de engenharia de software. 
A linguagem Dart é usada pelo framework Flutter.
O Flutter também foi desenvolvido pela Google e consiste em um conjunto de ferramentas que 
auxiliam o desenvolvimento de aplicações móveis.
Nesta Unidade de Aprendizagem, você vai conhecer melhor a linguagem Dart, estudando suas 
estruturas básicas, indentificando os tipos de dados básicos de Dart e vendo exemplos de 
aplicações dos comandos da linguagem Dart na prática.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Descrever o framework Flutter e a linguagem Dart.•
Identificar os tipos de dados em Dart.•
Exemplificar comandos básicos em Dart.•
Desafio
Dart é uma linguagem de programação de propósito geral. É uma linguagem na tradição C, 
projetada para ser familiar para a maioria dos programadores. Dart é puramente orientado para 
objetos e baseado em classes.
Seu design foi influenciado por linguagens anteriores, em particular Smalltalk, Java e Javascript. A 
sintaxe de Dart segue a tradição de sintaxe C-like, como Java e Javascript; no entanto, há 
diferenças cruciais. O Dart introduz seu próprio modelo de encapsulamento baseado em biblioteca. 
Isso difere das três linguagens mencionadas anteriormente.
Acompanhe a seguinte situação:
Escreva o código para essa classe e um pequeno programa (main()) para testá-la.
Infográfico
O kit de desenvolvimento de software Dart (ou Dart SDK) é fornecido com uma VM de Dart 
autônoma, permitindo que o código Dart seja executado em um ambiente de interface de linha de 
comando.
Como as ferramentas incluídas no Dart SDK são escritas principalmente em Dart, a Dart VM 
autônoma é uma parte crítica do SDK. Essas ferramentas incluem o compilador dart2js e um 
gerenciador de pacotes chamado pub. Dart vem com uma biblioteca-padrão completa, permitindo 
que os usuários escrevam aplicativos de sistema totalmente funcionais, como servidores web 
personalizados.
Confira no Infográfico como usar algumas das principais instruções do Dart SDK para executar e 
compilar seus programas Dart.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/07d5d811-b6d9-457b-a22a-836dbf40f984/eeb04f69-6ab9-47d8-b218-bbca0c47c10d.jpg
Conteúdo do Livro
A linguagem Dart foi desenvolvida pela Google e é uma linguagem orientada a objetos, baseada em 
classes, com garbage collection de sintaxe estilo C (C-like).
Dart é uma linguagem de programação fortemente tipada, inicialmente criada pela Google em 
2011. A missão inicial do Dart era substituir o JavaScript para desenvolver scripts em páginas web. 
Porém, com a evolução da linguagem e com o passar dos anos, hoje ela pode ser considerada uma 
linguagem multiparadigma, embora apresente fortes estruturas típicas de linguagens orientadas a 
objeto.
É usada pelo framework Flutter: um importante framework para desenvolver aplicativos móveis, 
para a web e inclusive desktop.
No capítulo Introdução a Dart e Flutter, base teórica desta Unidade de Aprendizagem, veja mais 
sobre a linguagem Dart, entenda seus fundamentos e veja alguns exemplos de programas escritos 
nessa linguagem.
Boa leitura.
FUNDAMENTOS DE 
DESENVOLVIMENTO 
MOBILE
OBJETIVOS DE APRENDIZAGEM
 > Descrever o framework Flutter e a linguagem Dart.
 > Identificar os tipos de dados em Dart.
 > Exemplificar comandos básicos em Dart.
Introdução
Um framework para desenvolvimento móvel é projetado para dar suporte 
ao desenvolvimento de aplicativos móveis. Consiste em uma biblioteca de 
software que fornece uma estrutura básica para dar apoio ao desenvolvimento 
de aplicações para um ambiente específico. 
Flutter é um exemplo de framework, que permite, entre outras coisas, 
desenvolver aplicativos móveis nativos para as plataformas Android e iOS 
(as mais utilizadas atualmente) por meio da linguagem de programação Dart. 
A linguagem de programação Dart é projetada para o desenvolvimento web e 
de aplicativos móveis. Desenvolvida pela Google, Dart é uma linguagem orien-
tada a objetos, baseada em classes, com garbage collection com sintaxe estilo C 
(C-like). Portanto, aprender Dart é essencial para quem deseja trabalhar com o 
framework Flutter. 
Neste capítulo, você vai estudar a linguagem Dart para trabalhar com o 
framework Flutter, além de ver conceitos fundamentais, tipos de dados e co-
mandos a partir de exemplos práticos.
Introdução a 
Dart e Flutter
Rafael Leal Martins
Linguagem Dart e sua relação com Flutter
Dart é uma linguagem de programação orientada a objetos com tipagem de 
dados segura (type safe). Essa linguagem usa o conceito de verificação de 
tipo estático para garantir que o valor de uma variável sempre corresponda 
adequadamente. Embora os tipos sejam obrigatórios, as anotações do tipo 
são opcionais devido a um processo chamado “inferência de tipo” — em que 
o compilador/interpretador consegue definir o tipo de uma variável com base 
no valor atribuído a ela. Ainda, o sistema de tipos de Dart é flexível, permitindo 
usar tipos dinâmicos combinados com verificações em tempo de execução. 
A documentação oficial da linguagem Dart define essa linguagem como: 
uma linguagem otimizada para o cliente para o desenvolvimento de aplicativos 
rápidos em qualquer plataforma. Seu objetivo é oferecer a linguagem de progra-
mação mais produtiva para o desenvolvimento de várias plataformas, emparelhada 
com uma plataforma de execução flexível para frameworks de aplicativos (DART, 
2021a, documento on-line, tradução nossa).
É comum que desenvolvedores prefiram linguagens estaticamente 
tipadas como Dart, porque elas permitem encontrar erros no código 
no momento da compilação, geralmente no próprio ambiente de desenvolvimento 
(IDE, do inglês integrated development environment). A ideia é que quanto mais 
cedo encontrar o bug, mais cedo ele poderá ser corrigido.
Além disso, a linguagem Dart oferece um recurso chamado null-safety, 
que faz com que valores não possam ter valores nulos (null), a menos que 
você declare explicitamente que isso é permitido. O null-safety serve para 
proteger a execução de um programa de possíveis exceções causadas pelo 
uso de objetos nulos (null exceptions). O recurso de null-safety em Dart 
pode ser usado em versões mais recentes de Dart (o chamado sound null-
-safety, disponível a partir da versão 2.12 da linguagem Dart), a partir do seu 
ambiente de desenvolvimento. 
Você pode tornar uma variável “anulável” (nullable) colocando um ponto 
de interrogação (?) após o seu tipo. Por exemplo, uma variável de tipo int? 
pode conter um valor inteiro ou pode conter o valor null. Você também pode 
usar um ponto de exclamação (!) para indicar que uma expressão nunca será 
nula (caso a linguagem Dart discorde). 
Introdução a Dart e Flutter2
Se o null-safety estiver desabilitado, uma variável não inicializada recebe 
o valor null (mesmo variáveis numéricas). Se o null-safety estiver habilitado, 
é obrigatório atribuir um valor a uma variável antes de seu valor ser usado. 
O suporte a null-safety de Dart (2021b) se baseia em três princípios de 
design, conforme a seguir:
1. Non-nullable by default (não anulável por padrão) — a menos que 
se declare explicitamente em Dart que uma variável pode ser nula 
(nullable), ela é considerada non-nullable (que não pode receber 
o valor null). 
2. Incrementally adoptable (incrementavelmente adotável) — você escolhe 
o que e quando migrar para null-safety, podendo migrar gradualmente 
do código null-safe paranão null-safe em um projeto. 
3. Fully sound (solidamente null-safe) — a null-safety é “sólida”, o que 
permite otimizações do compilador. Se o sistema de tipo determina 
que algo é não nulo, então isso nunca poderá ser nulo. 
Dart e Flutter
O framework Flutter é um conjunto de ferramentas desenvolvido pelo Goo-
gle para melhorar o desenvolvimento e a experiência do usuário. O Flutter 
tem como objetivo principal renderizar aplicativos com alto desempenho 
e construir aplicativos móveis nativos para Android e iOS a partir de uma 
única base de código. Os aplicativos Flutter também podem ser executados 
como aplicações web e até mesmo como aplicações desktop (FLUTTER, 2021). 
A linguagem Dart forma a fundação de Flutter. É Dart que fornece a lin-
guagem e as ferramentas de runtime que alimentam os aplicativos Flutter. 
Observe o Exemplo 1 a seguir.
Exemplo 1
Arquivo: main.dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
Introdução a Dart e Flutter 3
class MyApp extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return MaterialApp(
 title: 'Olá Flutter',
 home: Scaffold(
 appBar: AppBar(
 title: const Text('Olá Flutter'),
 ),
 body: const Center(
 child: Text('Olá Dart, digo, Flutter!'),
 ),
 ),
 );
 }
}
Esse código, quando executado em um dispositivo móvel, exibiria a saída 
conforme a imagem a seguir.
Introdução a Dart e Flutter4
Apesar de fazer uso de componentes específicos do Flutter, o código que 
compõe esse aplicativo é escrito na linguagem Dart, assim como o código de 
todas as demais bibliotecas de Flutter, que, na sua nomenclatura, se chamam 
“pacotes” (packages). Flutter contém várias classes de Dart que, basicamente, 
criam os componentes chamados widgets. Além de suas próprias classes e 
pacotes, Flutter pode utilizar qualquer pacote disponível da linguagem Dart 
nas suas aplicações.
Noções básicas de Dart
Uma ótima maneira de começar a se familiarizar com a sintaxe de um programa 
básico escrito em Dart é por meio de exemplos. Dessa forma, iniciaremos esta 
seção observando o Exemplo 2 a seguir.
Exemplo 2
// Definindo uma função para calcular a média aritmética 
de duas notas
double calcularMedia(double nota1, double nota2) {
 return (nota1 + nota2) / 2.0;
}
// A função main inicia a execução da aplicação.
void main() {
 var n1 = 10.0; // Declarando e atribuindo valor a uma 
variável (n1).
 var n2 = 7.0; // Declarando e atribuindo valor a uma 
variável (n2).
 var media = calcularMedia(n1, n2);
 print('Média: $media');
}
No código exibido no Exemplo 2, os comentários de linha em Dart são 
iniciados por duas barras (//). O programa é composto de uma função cha-
mada calcularMedia, que tem dois parâmetros (nota1 e nota2) do tipo 
double e que calcula e retorna a média aritmética desses valores (também 
do tipo double). 
Introdução a Dart e Flutter 5
A execução de um programa Dart começa a partir da função void main(), 
que, nesse exemplo, cria duas variáveis: n1 e n2. O uso da palavra var na 
declaração significa que o tipo de dados dessas variáveis não é explicitado. 
O tipo de cada variável é definido pelo valor atribuído a cada uma (no caso, 
literais numéricos do tipo double). Embora Dart seja uma linguagem for-
temente tipada, ela consegue realizar inferência de tipos. As anotações do 
tipo são opcionais.
Uma terceira variável, chamada media, é declarada e recebe o valor re-
tornado pela chamada da função calcularMedia. Seu valor é impresso em 
console por meio do comando print. O comando print faz uso do recurso 
de interpolação de strings — incluindo uma variável ou expressão dentro de 
uma string.
Características de Dart
A linguagem de programação Dart tem algumas particularidades que valem 
a pena ser explicitadas mesmo para quem já conhece a programação estru-
turada e orientada a objetos (DART, 2021c). Veja, a seguir, as características 
mais particulares de Dart:
As variáveis em Dart armazenam objetos, e um objeto é uma instância de uma 
classe. Mesmo números, funções e null são objetos. Todos os objetos herdam 
da classe Object. Os identificadores em Dart podem começar com uma letra ou 
sublinhado ( _ ), seguido por qualquer combinação desses caracteres além de 
dígitos (DART, 2021c, documento on-line, tradução nossa).
A partir da versão 2.12, foi inserido na linguagem Dart o modificador late, 
que permite declarar uma variável não anulável, inicializada após a sua de-
claração. Por exemplo:
late String texto;
void main() {
 texto = 'Dart';
 print(texto);
}
Introdução a Dart e Flutter6
Nesse código, foi criada uma variável global chamada “texto”, que só é 
inicializada dentro da função main. Dart também tem um recurso chamado 
“lazy initialization” (inicialização preguiçosa, em livre tradução), que consiste 
em executar a inicialização apenas na primeira vez em que a variável for 
usada. Isso pode ser útil quando o custo de inicialização for alto. Por exemplo:
late String temperatura = _ lerSensor(); // Lazy Initialization.
Dessa forma, atente-se para os seguintes detalhes:
 � se essa for a única chamada à função _ lerSensor e se a variável 
temperatura não for usada em outra parte do programa, a chamada 
da função não será realizada;
 � quando for indicar que qualquer tipo é permitido para ser atribuído 
a uma variável ou que uma função pode retornar a um valor de qual-
quer tipo, pode-se declarar a variável ou a função como Object?, se 
o null-safety estiver habilitado, ou apenas Object, caso null-safety 
esteja desabilitado;
 � Dart suporta funções globais (como main), bem como funções encap-
suladas em uma classe ou em um objeto (incluindo funções estáticas);
 � pode-se criar funções dentro de funções (funções aninhadas ou locais);
 � o Dart permite declarar variáveis globais, bem como variáveis de classe 
(estáticas e de instância);
 � variáveis de instância podem ser chamadas de “campos” (fields) ou 
“propriedades” (properties);
 � ao contrário de Java e de outras linguagens orientadas a objetos, Dart 
não tem as palavras-chave public, protected e private;
 � se um identificador começar com um caractere de sublinhado ( _ ), 
ele é privado. 
Veja, na seção a seguir, alguns exemplos de programas em Dart, para 
entender um pouco mais sobre a linguagem.
Sintaxe de Dart: exemplos práticos
O objetivo desta seção é mostrar algumas construções essenciais da lingua-
gem. O Exemplo 3, a seguir, mostra o código de um programa que lê um valor 
inteiro da entrada-padrão (console), calcula o valor do fatorial do número 
fornecido e exibe seu resultado na saída-padrão (também console).
Introdução a Dart e Flutter 7
Exemplo 3
import 'dart:io';
int fatorial(int n) {
 if (ncomando print para escrever uma 
mensagem na saída-padrão (console), informando ao usuário que ele deve 
digitar um valor inteiro não negativo. Em seguida, lê-se um valor fornecido no 
console por meio do comando stdin.readLineSync(). Esse comando lê o 
valor como string. Para convertê-lo em inteiro, usa-se a função int.parse. 
O resultado dessas operações é armazenado em uma variável chamada n. 
Introdução a Dart e Flutter8
Observe que Dart mantém regras de escopo de variáveis comuns a várias 
outras linguagens: o parâmetro n declarado na função fatorial não impede 
que seja criada outra variável chamada n dentro da função main. O valor 
de fatorial(n) é então impresso em uma string usando o comando print. 
Em Dart podemos interpolar valores de variáveis (usando $) e expressões 
(usando ${ }) dentro de uma string.
O Exemplo 4 demonstra um programa criado em Dart que gera uma lista 
de valores numéricos aleatórios, percorre essa lista e imprime o valor do 
maior número gerado. 
Exemplo 4
import 'dart:math';
List geradorDeLista(int n) {
 var rng = Random();
 List lista = [];
 for (var i = 0; i minhaLista = geradorDeLista(tamanhoLista);
 var maiorValor = minhaLista[0];
 var posicao = 1;
 while (posicao maiorValor) {
 maiorValor = minhaLista[posicao];
 }
 posicao++;
 }
 print('Conteúdo da lista: $minhaLista');
 print('Maior valor da lista: $maiorValor'); 
}
Introdução a Dart e Flutter 9
No Exemplo 4, foi importada a biblioteca dart:math, a biblioteca de 
operações matemáticas de Dart. Precisa-se dela para utilizar a classe Random, 
que é usada para gerar os valores aleatórios. Também foi criada a função 
geradorDeLista, que retorna uma lista de n valores aleatórios do tipo 
double. Para isso, foi criado um objeto da classe Random chamado rng. 
Ainda, pode-se criar objetos em Dart com ou sem a palavra-chave new, 
ou seja, tanto faz usar var rng = new Random(); como var rng = Ran-
dom();, e uma lista vazia usando a classe List (anotada para receber apenas 
valores do tipo double). Os valores são gerados com o método nextDouble 
do objeto rng. Esse método retorna um valor aleatório do tipo double entre 
0.0 e 1.0 (não incluído). Esse valor é multiplicado por 50 para gerar outros 
valores (0.0 até 50.0, não incluído). A função usa um loop for para gerar n 
valores e inseri-los na lista por meio do método add.
A função main define o tamanho da lista, cria um objeto List chamado 
minhaLista e acessa os elementos com o método elementAt em um loop 
while para determinar o maior valor da lista. O conteúdo da lista e o maior 
valor encontrado são impressos ao final. 
Neste capítulo, estudamos algumas das principais características da 
linguagem Dart. Mesmo sendo uma linguagem de programação recente, 
a linguagem Dart mantém muito da sintaxe de linguagens mais “tradicionais”, 
como Java, C# e C++. Apesar de permitir a criação de códigos mais seguros, 
essa funcionalidade também traz consigo uma maior complexidade para o 
desenvolvedor. O conceito de null-safety é uma das funcionalidades mais 
enfatizadas pelos desenvolvedores de Dart.
Assim, entender o funcionamento de Dart é essencial para quem deseja 
utilizar Flutter, um dos frameworks mais poderosos atualmente, que permite 
a criação de aplicativos para múltiplas plataformas de maneira simples e 
rápida, uma vez que Dart é a linguagem usada nesse framework.
Referências 
DART: documentation. [S. l.]: Google, 2021a. Disponível em: https://dart.dev. Acesso 
em: 16 set. 2021.
DART: language tour. [S. l.]: Google, 2021c. Disponível em: https://dart.dev/guides/
language/language-tour. Acesso em: 16 set. 2021.
DART: null safety. [S. l.]: Google, 2021b. Disponível em: https://dart.dev/null-safety. 
Acesso em: 16 set. 2021.
FLUTTER: documentation. [S. l.]: Google, 2021. Disponível em: https://flutter.dev/docs. 
Acesso em: 16 set. 2021.
Introdução a Dart e Flutter10
Leituras recomendadas
MARINHO, L. H. Iniciando com Flutter framework. São Paulo: Casa do Código, 2020.
ZAMMETTI, F. Flutter na prática. São Paulo: Novatec, 2020.
Os links para sites da web fornecidos neste capítulo foram todos 
testados, e seu funcionamento foi comprovado no momento da 
publicação do material. No entanto, a rede é extremamente dinâmica; suas 
páginas estão constantemente mudando de local e conteúdo. Assim, os edito-
res declaram não ter qualquer responsabilidade sobre qualidade, precisão ou 
integralidade das informações referidas em tais links.
Introdução a Dart e Flutter 11
Dica do Professor
Dart tem vários pacotes que fornecem muitas funcionalidades às suas aplicações, como elementos 
HTML e outros recursos para aplicativos baseados na web que precisam interagir com o navegador 
e o document object model (DOM).
A biblioteca dart:html inclui tipos de elementos DOM, estilo CSS, armazenamento local, mídia, fala, 
eventos e muito mais.
Na Dica do Professor, usando o DartPad (https://dartpad.dev), confira a construção de uma 
aplicação para calcular o valor da média aritmética de duas notas (N1 e N2) e exiba isso em uma 
página HTML usando o Dart e o pacote dart:html, que permite criar aplicações web básicas.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/b4ca9d9c48ac4880bd4532992481ed28
Exercícios
1) Dart tem inúmeros pacotes com classes e funções úteis para várias aplicações. O pacote 
dart:math contém várias constantes matemáticas, funções e um gerador de números 
aleatórios.
Humberto quer criar um programa em Dart para implementar um jogo do tipo "Adivinhe o 
número". Ele quer que o programa sorteie um número entre 0 e 100 usando um objeto da 
classe Random, pertencente ao pacote dart:math, sem informar esse valor para o usuário.
Em seguida, o usuário digita um valor de palpite, e o programa verifica se o número digitado 
está abaixo ou acima do valor sorteado, informando o usuário. O jogo termina quando o 
usuário acertar o valor exato.
Qual das opções a seguir tem uma versão de código Dart que atenda a esses requisitos?
A) Alternativa A: 
Clique aqui
B) Alternativa B: 
Clique aqui
C) Alternativa C: 
Clique aqui
D) Alternativa D: 
Clique aqui
E) Alternativa E: 
Clique aqui
Dart é uma linguagem que permite realizar várias expressões aritméticas, como ocorre com 
qualquer linguagem de programação.
Confira:
2) 
https://statics-marketplace.plataforma.grupoa.education/sagah/9d38be48-c235-4623-9872-53bbb1768468/99b1736a-379a-4df2-b96c-6825c2c630b3.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/b426dc66-bafb-4dd3-b88a-9e5250d29588/0cf6b472-e0e1-48ea-b146-71b3e82cbe9f.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/7c29b439-25a0-4051-b5c3-fbff32c37499/40fc3978-3960-4d96-92a6-61232426d9e3.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/668dea13-5176-4b81-ba0d-a4d7657f876b/7e78ad9e-8204-4de3-ae8e-941f72b16424.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/73689cc4-9843-4c12-9e9b-27756f2e06d3/d431718e-2929-41eb-8200-c31d31145e3d.pdf
Fahrenheit e Celsius são duas escalas para medir temperatura. Há uma fórmula simples para 
converter temperaturas de Fahrenheit para Celsius e vice-versa.
Se F representa o valor a converter em graus Fahrenheit, e C representa o mesmo valor para 
Celsius, então:
• F = 1,8C + 32
• C = (F − 32) / 1,8
É necessário criar um programa em Dart para processar essas fórmulas para um usuário. Deve-se 
saber tanto em qual direção o usuário quer converter alguma temperatura (F para C ou C para F) 
quanto o número de graus que precisam ser convertidos.
O programa deve receber a entrada do teclado do usuário para obter esses valores. Ele deve 
utilizar o pacote dart:io para teracesso à função readLineSync() para leitura de entrada de teclado. 
O tipo de expressão deve ser escolhido utilizando-se uma instrução switch.
A instrução switch avalia uma expressão que corresponde ao valor da expressão a uma cláusula 
case e executa as declarações associadas a esse case.
A seguir, temos sua sintaxe:
A) Alternativa A: 
Clique aqui
B) Alternativa B: 
Clique aqui
C) Alternativa C: 
Clique aqui
D) Alternativa D: 
Clique aqui
E) Alternativa E: 
Clique aqui
Na década de 1990 havia um programa de TV do apresentador Sérgio Mallandro que tinha um 
quadro chamado “A porta dos desesperados”, em que um participante tinha uma escolha entre três 
portas. Atrás de uma das portas havia um prêmio fantástico, enquanto as outras duas tinham 
atores fantasiados de monstros escondidos.
O competidor tinha que escolher uma porta. Então vinha uma reviravolta! Depois que o 
participante escolhia uma porta, o apresentador revelava o que estava atrás de uma das duas 
portas restantes que não escondiam o prêmio. Ao competidor era oferecido mudar sua seleção em 
favor da porta restante ou manter a escolha original.
O dilema de probabilidade consiste em: o participante deve trocar de porta ou manter a escolha 
original? Por exemplo, se o participante escolheu a porta número 1, e o apresentador revelou que a 
porta número 2 não contém o prêmio, o participante deve mudar seu palpite para a porta número 
3?
Você pode pensar que não faz diferença se o competidor troca de porta ou mantém a que ele 
originalmente escolheu, já que restam duas portas e, portanto, cada uma tem 50% de chance de 
conter o prêmio (uma chance em duas). Você estaria certo se a porta eliminada nunca tivesse 
existido. No entanto, ela existiu, e sua própria existência e eliminação mudam a probabilidade de 
uma das portas restantes. A resposta correta, em termos de probabilidade, é trocar de porta.
Quando o problema começa, há três portas possíveis, cada uma representando uma chance de um 
terço (33,3%) de ocultar o prêmio. O concorrente escolhe a porta 1, tendo uma chance de estar 
certo. Em nosso cenário particular, portanto, é útil pensar em ambas as portas 2 e 3 acumulando 
dois terços da chance de levar ao prêmio.
3) 
https://statics-marketplace.plataforma.grupoa.education/sagah/751b7b7c-fcf3-43ce-8bd3-659a81d244c8/93345b8a-2de1-4a05-b59a-0706886c8297.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/d3943c51-e74e-4a51-b7dd-0d5425918db7/53917435-fd9e-4ffb-aa1d-1c8d474776f2.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/d7dddd28-d5f8-4653-b324-eac82f1a224b/248d23ed-b966-448b-91d9-85746e6c91d1.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/79bf9f89-f02b-4518-9edf-73ba558dd438/725d339b-9236-4855-9ae9-bce98d6d6c8d.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/d8f85889-0cae-4f36-8ca4-82b5a88dac92/f7f61dac-94c7-4e13-8e14-dfc34717b135.pdf
Depois que a porta 2 é eliminada, e sabendo que as portas 2 e 3 juntas representam dois terços (ou 
seja, 66%, aproximadamente) da chance de render o prêmio, a porta 3 sozinha representa essa 
chance de dois terços. Portanto, se o competidor mudar para a porta 3, ele tem uma chance de dois 
terços de ganhar o prêmio, mas, ficando com a porta 1, mantém sua chance de um terço. Seria do 
interesse do competidor trocar de porta.
Pode-se usar Dart para provar que trocar de portas é realmente a solução certa para o problema da 
"Porta dos desesperados". Deseja-se executar uma simulação do problema um milhão de vezes, 
calculando a porcentagem de vezes que a troca leva a adivinhar a resposta certa.
Na simulação, sempre se escolhe a porta 1 inicialmente. A porta 2 ou a 3 é eliminada, e sempre 
muda-se o palpite para a porta restante. Então observa-se a porcentagem de vezes em que é 
possível adivinhar corretamente.
Como as portas são trocadas todas as vezes, espera-se que essa porcentagem seja de 
aproximadamente 66% se a troca realmente for melhor do que ficar com a escolha inicial de porta 
1, como implica a solução teórica proposta.
A simulação é feita no programa Dart a seguir:
Sobre esse programa, é correto afirmar que:
A) a instrução rand.nextInt(3) é responsável por fazer a escolha inicial da porta 3.
B) Alternativa B: 
Clique aqui
C) a instrução for (int i = 0; ihttps://statics-marketplace.plataforma.grupoa.education/sagah/4279d7bb-c313-45be-91e2-581054860381/e013650d-61f4-4cb6-b06a-805ad28d65a7.pdf
https://statics-marketplace.plataforma.grupoa.education/sagah/b53b30c1-e8f9-4cd0-a8f7-b368b21ff515/787479c5-b9f5-43ee-b3ea-c4553d9dc4b4.pdf
Na prática
A linguagem Dart serve de base para o framework Flutter: um conjunto de ferramentas que permite 
criar aplicações para diversas plataformas como Android, iOS, web e até desktop, com uma única 
base de código.
Flutter tem a vantagem de permitir a criação de aplicativos de código nativo para plataformas 
móveis, o que permite criar software de melhor desempenho, melhor aspecto visual e mais 
funcionalidades, pois o código nativo tem a possibilidade de usar vários dispositivos presentes nos 
smartphones atuais (GPS, giroscópio, sensor de velocidade, etc.).
Na Prática, acompanhe Mateus, um desenvolvedor Android acostumado a utilizar Java e Kotlin para 
desenvolver seus aplicativos. Ele está pensando em utilizar Flutter, mas está um pouco hesitante, 
pois teme que a curva de aprendizado para aprender a linguagem Dart (a linguagem-base de 
Flutter) atrapalhe seu trabalho.
Confira:
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/433ea3a4-71d0-4f5d-a207-32cd628e330c/558563db-b486-419c-aa00-51ea20dd28e3.jpg
Saiba mais
Para ampliar seu conhecimento no assunto, veja a seguir as sugestões do professor:
Introdução ao Dart para desenvolvedores Java
Veja esse codelab que apresenta a linguagem Dart com foco em recursos comuns a linguagens 
orientadas a objetos como Java.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Dart em menos de 50 minutos
Confira neste vídeo o caminho das pedras para quem quer começar a criar aplicativos em Flutter, 
mas tem medo por não conhecer o Dart.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Orientação a objetos e null safety no Dart
Nesta videoaula do professor Diego Antunes, confira uma introdução sobre o uso da orientação a 
objetos e a funcionalidade de null safety na linguagem Dart.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://codelabs.developers.google.com/codelabs/from-java-to-dart/#0
https://www.youtube.com/embed/NZNO6xW5icQ
https://www.youtube.com/embed/g9d9xTgap7c

Mais conteúdos dessa disciplina