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