Blog tecnológico mantido pelos alunos da disciplina de Aplicações Informáticas (12º Ano) da Escola Secundaria José Gomes Ferreira em Lisboa.
sábado, 14 de dezembro de 2019
sexta-feira, 13 de dezembro de 2019
iOS 5 - v.5.0.1
iOS 5.0.1
As atualizações do iOS 4 já chegaram ao fim por isso agora vou mudar para as do iOS 5.
Esta atualização de software foi lançada no dia 10 de novembro de 2011, estando disponível para as seguintes plataformas: iPhone 3GS, iPhone 4, iPhone 4s, iPad, iPad 2, e iPod Touch de 3ª geração e posterior. As melhorias e correções de erros desta atualização foram a correção de erros que afetavam a duração da bateria, a inclusão de gestos multi tarefa para o iPad original, a correção de erros que afetavam os documento existentes no iCloud e o recurso de voz melhorado para os utilizadores australianos que utilizavam o recurso ditado.
IoT e VR são uma junção natural
Tanto VR (ou realidade virtual em português) como IoT são duas tecnologias com enorme potencial, tendo a IoT já possuído um maior impacto na transformação da sociedade e economia atual. Ambas partilham uma filosofia e um propósito muito semelhantes, que é unir o mundo digital com o mundo físico, sendo que o fazem de maneiras opostas. Enquanto que a realidade virtual tenta fazer com que o mundo digital parece o mais real possível, a IoT tenta tornar objetos reais manipuláveis no mundo digital.
Uma das aplicações que podem ter juntas é na comunicação. Permitindo por exemplo que uma pessoa utiliza diversas câmaras e sensores para conseguir movimentar um robô, que transmite tudo o que vê para uns óculos de realidade virtual permitindo uma imersão incrível e até conversas à distância quase reais. Isto não é ficção, a empresa OdenVR já se encontra a produzir este tipo de tecnologia ao qual chama de "telepresence robot".
Outra aplicação interessantíssima e que a mim me parece ser a mais útil é a criação de simulações em VR de cidades inteiras ou parte delas em que é possível através do uso de óculos de realidade virtual e de comandos navegar pelos diferentes ambientes visualizando a informação que os diversos sensores espalhados pela área estão a recolher em tempo real. Como por exemplo, imagens de video vigilância, temperatura, humidade do solo, localização de comboios ou veículos específicos, etc... Tudo isto permite não só uma monitorização a uma grande escala mas também uma otimização do sistema de transportes públicos, por exemplo. Esta tecnologia está também em desenvolvimento, neste caso pela empresa Eye Create Worlds.
Para além disso, podemos também usar a IoT para captação de dados durante cirurgias a zonas muito pequenas, permitindo que o cirurgião realize todo o processo controlando uma máquina com maior precisão que ele a uma escala menor, utilizando a realidade virtual e os dados recolhidos. O "da Vinci Surgical System" é um sistema de cirurgia que já utiliza a assistência de robôs.
Para concluir, a IoT e a realidade virtual são duas tecnologias que se complementam muito bem e que poderão ser usadas em conjunto para melhoria de procedimentos em diversas áreas.
fonte:
- https://appreal-vr.com/blog/vr-and-internet-of-things/
- consultada no dia 07/12/2019
imagens:
C++ - Switch
A alternativa a usar as condições if(), else() e else if() é usar o switch.
Programa exemplo~
Este programa pede-nos um número de um mês e usa o switch para verificar as 12 possibilidades, fazendo print do nome do mês.
Se o número não for de 1 a 12, é ativado o caso default que faz print da mensagem "Invalid month number!".
Referências - 3/12/2019
O switch verifica se um valor é igual a outro, ou mais especificamente, qual dos casos é igual ao valor.
Escrevendo:
Um "switch" seguido de uma expressão entre ( ).
Diferentes casos "case" seguidos de com um valor, e um código a executar.
Um "break" no fim de cada caso (opcional, será explicado).
Um "switch" seguido de uma expressão entre ( ).
Diferentes casos "case" seguidos de com um valor, e um código a executar.
Um "break" no fim de cada caso (opcional, será explicado).
switch(x){ case 3: cout << "It's a 3!" << endl; break; case 4: cout << "It's a 4!" << endl; break; }
Neste caso, queremos verificar o valor da variável x (inteiro).
Temos os casos 3 e 4.
Se o valor da variável for 3, é feito o print de "It's a 3!".
Se o valor da variável for 4, é feito o print de "It's a 4!".
Se não for nenhum dos dois, nada acontece.
Apenas valores integrais (int)
No switch, apenas podemos verificar valores integrais.
Estes são int e char (porque char também é inteiro, devido aos ASCII, vou falar disto muito brevemente).
Então, por exemplo, não podemos verificar uma string.
Isto não é possível e dá erro.
E mesmo podendo verificar um carácter, temos de ter em atenção para não usarmos aspas duplas (""), mas sim estas (''). Porque "" são para strings.
Isto não é possível e dá erro.
Default
Para que aconteça algo se nenhum dos casos corresponde à expressão, usamos o default.
O default é um caso especial opcional cujo código é executado só se nenhum dos outros casos for válido.
Em vez de "case" escrevemos "default", sem nenhum valor a seguir.
Estamos a avaliar uma variável x novamente no switch.
Se for 1 ou 2, é feito o print de "1" ou "2", respetivamente.
Se não for nenhum dos dois, é executado o código do caso default, onde é feito o print de "Default".
Temos os casos 3 e 4.
Se o valor da variável for 3, é feito o print de "It's a 3!".
Se o valor da variável for 4, é feito o print de "It's a 4!".
Se não for nenhum dos dois, nada acontece.
Apenas valores integrais (int)
No switch, apenas podemos verificar valores integrais.
Estes são int e char (porque char também é inteiro, devido aos ASCII, vou falar disto muito brevemente).
Então, por exemplo, não podemos verificar uma string.
string s; switch(s){ case "42": cout << "Answer to everything" << endl; break; }
E mesmo podendo verificar um carácter, temos de ter em atenção para não usarmos aspas duplas (""), mas sim estas (''). Porque "" são para strings.
char c; switch(c){ case "1": cout << "Not valid!" << endl; break; }
Default
Para que aconteça algo se nenhum dos casos corresponde à expressão, usamos o default.
O default é um caso especial opcional cujo código é executado só se nenhum dos outros casos for válido.
Em vez de "case" escrevemos "default", sem nenhum valor a seguir.
switch(x){ case 1: cout << "1" << endl; break; case 2: cout << "2" << endl; break; default: cout << "Default" << endl; break; }
Se for 1 ou 2, é feito o print de "1" ou "2", respetivamente.
Se não for nenhum dos dois, é executado o código do caso default, onde é feito o print de "Default".
Break
Certo, então devemos colocar "break" no fim de cada caso. Mas porquê?
É opcional mas se não o utilizarmos vai acontecer algo que não queremos de forma alguma.
Ao não termos o break, quando um caso é válido e o seu código é executado, o código de todos os outros casos abaixo dele também vai ser executado, até que se encontre um break.
Certo, então devemos colocar "break" no fim de cada caso. Mas porquê?
É opcional mas se não o utilizarmos vai acontecer algo que não queremos de forma alguma.
Ao não termos o break, quando um caso é válido e o seu código é executado, o código de todos os outros casos abaixo dele também vai ser executado, até que se encontre um break.
switch(x){ case 1: cout << "1" << endl; case 2: cout << "2" << endl; case 3: cout << "3" << endl; break; case 4: cout << "4" << endl; break; case 5: cout << "5" << endl; break; }
- Ou seja, se x for 1, é feito o print de "1";
- Como não existe break no final do caso, também se executa o caso 2, print de "2";
- Novamente como não há break, executa-se o caso abaixo, print de "3";
- Encontra-se um break então acaba aqui.
Programa exemplo~
#include <iostream> using namespace std; int main() { int month; cout << "Enter this month's number: "; cin >> month; switch(month){ case 1: cout << "January" << endl; break; case 2: cout << "February" << endl; break; case 3: cout << "March" << endl; break; case 4: cout << "April" << endl; break; case 5: cout << "May" << endl; break; case 6: cout << "June" << endl; break; case 7: cout << "July" << endl; break; case 8: cout << "August" << endl; break; case 9: cout << "September" << endl; break; case 10: cout << "October" << endl; break; case 11: cout << "November" << endl; break; case 12: cout << "December" << endl; break; default: cout << "Invalid month number!" << endl; break; } }
Se o número não for de 1 a 12, é ativado o caso default que faz print da mensagem "Invalid month number!".
Referências - 3/12/2019
Python - Tuplas
NAS PUBLICAÇÕES 'PYTHON - LISTAS' FALEI DO TIPO MAIS COMUM DE VARIÁVEL COMPOSTA, MAS EM PYTHON AINDA EXISTEM MAIS DOIS, TUPLAS E DICTIONARY; ESTA PUBLICAÇÃO DESTINA-SE ÀS TUPLAS.
Do inglês 'tuple', é uma lista imutável, ou seja, nas listas podem ser adicionados ou removidos elementos a qualquer momento, enquanto que nas tuplas não pode ocorrer esses processo, ou seja, não permite adição, remoção ou qualquer alteração da ordem dos elementos.
As listas geralmente têm elementos do mesmo tipo, como por exemplo uma lista de e-mails, já as tuplas têm elementos distintos como por exemplo o dia, o dia da semana, o mês e o ano, ou seja uma data:
tuple1 = (13, 'sexta-feira', 'dezembro', 2019)
Outra diferença entre listas e tuplas, é que as listas são delimitadas por parêntesis retos '[ ]' enquanto que as tuplas são delimitadas por parêntesis curvos '( )'.
Alguns comandos que estudamos nas listas podem ser utilizados nas tuplas, tirando aqueles que alteram elementos:
O output deste programa seria:
Nota: uma virgula é o que define uma tupla, e não os parêntesis que são opcionais como podemos verificar a seguir:
Assim aprendemos mais um tipo de variável composta em Python! Vai nos ser bastante útil em alguns exercícios específicos no futuro.
Referências:
Alguns comandos que estudamos nas listas podem ser utilizados nas tuplas, tirando aqueles que alteram elementos:
t = ("x", "y", 10, 20, "c") print(t) print(t[0]) print(t[-1]) print(t[1:3])
O output deste programa seria:
("x", "y", 10, 20, "c") 'x' 'c' ('y', 10, 20)
Nota: uma virgula é o que define uma tupla, e não os parêntesis que são opcionais como podemos verificar a seguir:
t1 = 1, 2, 3 #tupla sem o uso de parentesis t2 = (1, 2, 3) #tupla com o uso de parentesis t3 = 1, #tupla com um único elemento t4 = () #tupla vazia
Assim aprendemos mais um tipo de variável composta em Python! Vai nos ser bastante útil em alguns exercícios específicos no futuro.
Referências:
- hilite.me (10-12-2019)
- excript.com/python/tuplas-python.html (10-12-2019)
- codedestine.com/python-tuple-example (imagem: 10-12-2019)
quinta-feira, 12 de dezembro de 2019
iOS 4 - v 4.3.5
iOS 4.3.5
Esta versão do iOS 4 foi lançada no dia 25 de julho de 2011, estando disponível para as seguintes plataformas: iPhone 3GS, iPhone 4 modelo GSM, iPad, iPad 2 e iPod Touch de 3ª e 4ª geração. Esta versão veio com uma atualização de segurança para corrigir a validação de certificados.
O que é o Uncanny Valley?
O Uncanny Valley (ou vale da estranheza, traduzido para português) é um conceito introduzido pela primeira vez na década de 1970 por Masahiro Mori, professor do Instituto de Tecnologia de Tóquio. Mori cunhou o termo "Uncanny valley" para descrever a sua observação de que, à medida que os robôs parecem mais humanos, eles se tornam mais atraentes - mas apenas até a um certo ponto. Ao chegar ao Uncanny Valley, a nossa afinidade transforma-se em um sentimento de estranheza, de desconforto e uma tendência a estar assustado. Portanto, o Uncanny Valley pode ser definido como a reação negativa das pessoas a certos robôs realistas.
Um exemplo disto que leva o lugar número 1 na lista de robôs mais arrepiantes é Telenoid (a imagem que se pode ver a cima) . Com a sua cabeça careca, uma cara sem vida e a sua falta de membros faz com que este robô pareça mais um alien que um humano. Outro exemplo mais famoso que o Telenoid é a Sophia (a imagem que se pode ver a baixo). Este robô já mais humano que o anterior também encontra-se no Uncanny Valley. Isto acontece pela falta de emoções e características humanas que ainda não se consegui evitar nestes robôs realistas.
quarta-feira, 11 de dezembro de 2019
IoT está a transformar o mundo dos videojogos
Os videojogos ou games evoluíram muito desde o "pong", tornando-se uma das formas mais populares de entretenimento, gerando receitas anuais superiores a Hollywood, por exemplo. Com o crescimento do número de jogadores também cresceu a variedade dos mesmos. O mercado pediu por coisas cada vez mais diferentes que enquadrassem melhor as pessoas que cada apenas queriam se divertir por uns minutos, sem ter que comprar uma consola ou um computador potente que lhes permitisse jogar campanhas de dezenas de horas ou treinar para ser a próxima estrela dos e-sports. De forma a atender a esta demanda, as produtoras começaram a investir cada vez mais nos jogos mobile. É aqui que entra a IoT.
Esta tecnologia é capaz de utilizar as funcionalidades do telemóvel ou tablet ao máximo, proporcionando experiências mais imersivas. Um grande exemplo é o recente sucesso mundial Pókemon GO!, que utilizava o GPS do telemóvel para situar o mesmo e acompanhar a sua deslocação pelo mundo, à medida que este se cruzava com outros jogadores era possível lutar ou apanhar Pokémons que apareciam na câmara do mesmo, dando a impressão que eram reais. Este é um exemplo claro do uso de IoT para transmitir as informações que cada aparelho recolhia para Cloud, cruzá-las e criar um mundo virtual que se diferenciava do real por uma linha muito ténue. O sucesso deste formato foi gigantesco, sendo o jogo mobile com mais downloads no seu primeiro mês de sempre.
A mesma empresa que desenvolveu o Pokemon GO! (Niantic Games), lançou recentemente outro sucesso (desta vez, não tão grande), o jogo "Harry Potter: Wizards Unite" que se baseia nos mesmos princípios, mas com ainda uma maior ênfase na realidade mista e com diferentes possibilidades dependendo do tipo de lua, ou da meteorologia do dia em questão.
Outro exemplo é também o "Zombies, Run! 2" que utiliza os dados do acelerómetro e pedómetro do telemóvel para monitorar as corridas do usuário que serão utilizadas para cumprir missões dentro do jogo como: "corra 5Km em 29 minutos para chegar a tempo de salvar os sobreviventes que se encontram no centro comercial", etc...
Como é possível perceber a IoT tem sido uma tecnologia muito promotora do sucesso dos "games", que possui muito mais aplicações que aquelas que aqui mencionei como realidade virtual, mas isso fica para outro post.
fontes:
- https://www.headstuff.org/entertainment/gaming/how-the-internet-of-things-is-changing-the-gaming-industry/
- https://www.forbes.com/sites/jvchamary/2018/02/10/pokemon-go-science-health-benefits/#afa64873ab0b
- https://www.youtube.com/watch?v=O8O5RDQeR2g
- consultadas no dia 07/12/2019
imagens:
Criador do C++ lamenta Bitcoin ter usado a linguagem
A Bitcoin foi inventada por Takoshi Nakamoto em 2008 e tem vindo a tornar-se cada vez mais popular. Por ser uma moeda digital, uma linguagem de programação teve de ser escolhida para este projeto, e esta foi C++.
Bjarne Stroustrup, criador do C++, recentemente expressou a sua opinião relativamente à criptomoeda Bitcoin e a sua relação com a linguagem C++, por esta ter sido a principal no desenvolvimento da criptomoeda.
“Quando criamos uma ferramenta, não sabemos como ela será usada. Tentamos melhorar a ferramenta observando como está a ser usada (...) mas realmente não temos controle sobre como é usada. Estou muito feliz e orgulhoso de certas coisas em que o C++ está a ser usado, mas há coisas que eu gostaria que as pessoas não fizessem. Sendo a mineração de bitcoin o meu exemplo favorito, dado que ela usa tanta energia quanto a Suíça e serve criminosos a maior parte do tempo.”Bjarne está feliz com muitas coisas que utilizaram C++, mas lamenta o seu uso na Bitcoin, referindo que esta beneficia criminosos (transações ilegais) e que utiliza muita energia através da sua mineração.
Mesmo assim, tenho a certeza que Bjarne Stroustrup não se arrepende de ter desenvolvido o C++, sendo esta uma das principais linguagens de programação no mundo (foi utilizada na Bitcoin, e esta tornou-se mundialmente conhecida).
Não será a Bitcoin que pintará uma imagem negativa sobre C++, especialmente porque a própria Bitcoin não tem uma imagem tão má de todo.
Obrigado, Bjarne!
Referências - 11/12/2019
Python - News 2
ESTA PUBLICAÇÃO É UM POUCO FORA DO COMUM EM QUE NÃO VOU EXPLICAR NENHUM TIPO DE COMANDO DIFERENTE EM PYTHON, MAS APRESENTAR-VOS UMA NOTÍCIA E UM AVISO PARA TODOS OS NAVEGANTES DA INTERNET!
A equipa de segurança do Python removeu duas bibliotecas mal-intencionadas do PyPI(índice de Pacotes Python, falado anteriormente onde se podem encontrar vários documentos partilhados pela comunidade, entre eles bibliotecas). Ambas as bibliotecas foram criadas pelo mesmo desenvolvedor, que utilizou uma técnica chamada typosquatting que serve para registar nomes com aparência semelhante, assim as bibliotecas criadas por ele tinham nomes parecidos com bibliotecas populares.
A primeira chamava-se jeilyfish (publicada a 11 de dezembro de 2018, QUASE 1 ANO!), que imitava a biblioteca jellyfish (que trabalha com strings); como a fonte do site é diferente desta, esta biblioteca era quase indistinguível visto que o 'i' inicial era quase idêntico a um 'l', como podemos ver na imagem abaixo.
A segunda chamava-se python3-dateutil (adicionada em 29 de novembro de 2019), que imitava a biblioteca dateutil (que falarei em publicações futuras que contem várias ferramentas úteis de controlo de tempo e datas).
As duas bibliotecas foram descobertas no dia 1 de dezembro, pelo desenvolvedor Lukas Martini e foram removidas no mesmo dia após notificar os desenvolvedores da dateutil e da equipa de segurança do PyPI.
pytho3-dateutil não continha código malicioso, mas importava a biblioteca jeilyfish que extraía as chaves SSH e GPG do computador de um utilizador e enviava as mesmas para este endereço IP: http://68.183.212.246:32258
Essas chaves serviriam para descobrir quais projetos as credenciais funcionavam para comprometer os mesmos.
Esta é a quarta vez que a equipa do PyPI tem de remover bibliotecas mal-intencionadas, ocorreu em setembro de 2017 (10 bibliotecas), outubro de 2018 (12 bibliotecas) e julho de 2019 (3 bibliotecas).
Referências:
- sempreupdate.com.br/duas-bibliotecas-python-mal-intencionadas-foram-capturadas-roubando-chaves-ssh-e-gpg ( imagem e informação: 10-12-2019)
- pypi.org/project/python-dateutil(10-12-2019)
- pypi.org/project/jellyfish(10-12-2019)
- pypi.org(10-12-2019)
- github.com(10-12-2019)
terça-feira, 10 de dezembro de 2019
Robôs de Aumento
Robôs de Aumento
Como proteger os seus dispositivos Smart home de Hackers.
O número de casas equipadas com dispositivos para torná-las "inteligentes" tem vindo a aumentar exponencialmente, tornando-se cada vez mais um mercado apetitoso para os Hackers. Estes podem realizar diversos tipos de distúrbios, dependendo do dispositivo ao qual tiveram acesso, como, desabilitar sistemas de segurança, aceder às câmaras da casa ou até obter dados pessoais. Por isso, é imprescindível tomar-mos medidas para proteger os nossos equipamentos.
Possuir uma rede segura:
Como é sabido, a internet é o elemento mais importante de uma casa "inteligente", sem ela não seria possível conectar os dispositivos entre si e obter a sua informação, por esta razão esta é o principal alvo dos hackers, que conseguindo aceder à mesma, tem consequentemente a porta aberta para todos os dispositivos a ela conectados. Uma das formas de combater esta situação é criar uma rede diferente para os dispositivos IoT daquela que usamos para o computador ou telemóvel. Desta maneira caso os Hackers acessem à rede de casa casa através do computador, por exemplo, não conseguirão ter acesso aos dispositivos IoT.
Possuir dispositivos de marcas confiáveis, recorrendo sempre que necessário a instalação profissional:
É de extrema importância que antes de comprarmos qualquer dispositivo vejamos a suas reviews, de forma a compreender se os outros utilizadores tiveram algum problema com este dispositivo, porque apesar da segurança ser uma prioridade para o utilizador nem sempre é para a marca que procura por vezes cortar custos neste requisito por não ser visível instantaneamente. Para além disso, é também muito relevante consultar a ajuda de profissionais para montagem de dispositivos mais complexos de modo a garantir que ficam bem instalados, reduzindo as falhas de segurança.
Não utilizar a password padrão:
Isso mesmo que acabou de ler, não deve, repito, não deve manter a password padrão no seu dispositivo. A maioria das pessoas nunca muda as passwords que vêm com os dispositivos, subestimando a importância de uma password forte e a facilidade com que um hacker consegue penetrar por uma password padrão.
Antes de comprar e instalar qualquer dispositivo para tornar a sua casa "inteligente" lembre-se das preocupações com a segurança e de que maneira poderá proteger a sua casa de "invasores".
fonte:
- https://www.iot-now.com/2019/11/25/100102-smart-security-protect-smart-home-devices-hackers/
- consultada no dia 07/12/2019
Imagem:
- URL
- consultada no dia 07/12/2019
segunda-feira, 9 de dezembro de 2019
Edição do Som
Edição do Som
Na edição do som de um vídeo temos ter um especial cuidado porque não queremos: que a pessoa que irá estar a assistir aumente o volume para o máximo para conseguir ouvir minimamente ou que essa mesma pessoa fique com os tímpanos em mão estado por termos definido o volume do áudio alto demais.
Os intervalos de decibéis que são recomendados como limite são entre -6 e -24 dB sendo que normalmente utilizo -10 dB.
Esta é uma das partes mais fáceis na edição de um vídeo, o mais complicado é a sincronização do áudio de um microfone externo com o microfone embutido na máquina. Para isso é que existem as tão conhecidas...
...claquetes. Não, não servem só para decorar, esta ferramenta permite-nos várias coisas: ter a noção do take em que vamos, a câmara com que estamos a gravar e a cena. Mas o mais útil é a sincronização do áudio. No inicio da gravação abrimos e fechamos a parte móvel da claquete com alguma força o que irá resultar na criação de um risco vertical na timeline do som da máquina e do microfone externo o que facilita imenso a sincronização destes dois.
Robôs Tele-operados
Robôs Tele-operados
Os Robôs tele-operados são robôs controlados remotamente por um ser humano. Estes podem ser aquáticos, como os submarinos que consertaram o vazamento de petróleo no Golfo do México. Ou aeroespaciais, como drones, ou até mesmo brinquedos, como um carro tele comandado. Existem muitos exemplos para robôs tele-operados pois o seu crescimento nas diferentes industrias tem aumentado com cada ano que passa. Uma área que estes robôs estão agora a ser introduzidos é no campo da medicina. Agora é possível que o teu medico esteja presente a operar-te em Portugal enquanto ele esta a fazer uma viagem à China (como se pode visualizar na imagem a cima).
Wearables: o pináculo da IoT
O mundo da tecnologia tem presenciado a gigantesca ascenção dos wearables, em especial os smartwatches e samrtbands. Estes são dispositivos com o formato de relógios e pulseiras, respetivamente. Porém, são capazes de executar muito mais funções que os seus gémeos tradicionais, mostrando e recolhendo mais informação.
Dependendo do dispositivo, é possível saber o número de batimentos cardíacos por minuto do utilizador, saber se este está a dormir e em que tipo de sono se encontra (profundo ou não), saber se está em movimento e a que velocidade...
Para além disto, é possível receber e realizar chamadas, ver e responder a mensagens, consultar o tempo, definir lembretes ou alarmes, monitorar uma sessão de treino, receber indicações de navegação e muito mais.
Mas existe algo transversal a todos os equipamentos, a conexão com a internet, diretamente, ou indiretamente (caso seja o telemóvel que está conectado à internet e transmite as informações por bluetooth para o wearable). É aqui que entra a IoT que é utilizada para conectar todos estes dispositivos à rede, de modo a que seja possível cruzar dados, avaliando por exemplo a qualidade do sono de uma pessoas em relação a todos os outros utilizadores do mesmo dispositivo, podendo ver a "big picture".
Mas voltando ao título do post, porque digo que são o pináculo da IoT? Porque estes dispositivos são uma das iterações mais eficazes e populares da IoT, ganhando cada vez mais importância à medida que ganham mais funcionalidades e que cresce o número de outros dispositivos conectados à internet que poderão ser controlados por estes wearables.
Fontes:
- https://www.worten.pt/dicas-para-escolher-smartwatch
- https://www.tecmundo.com.br/wearables/117937-samsung-wearables-dispositivos-vestiveis-realidade-virtual-camera-360.htm
- consultadas no dia 07/12/2019
Imagens:
C++ - Operadores de igualdade (>, <, >=, <=)
Assim como os operadores == e !=, podemos comparar dois valores, gerando um valor lógico (true, false). Agora, relativamente a um ser maior que o outro (maior, menor, maior ou igual, menor ou igual), assim como na matemática.
Maior (>)
Se o valor da esquerda for maior que o da direita, é verdadeiro.
Caso contrário, falso.
bool value = 5 > 3;
Maior ou igual (>=)
Se o valor da esquerda for maior ou igual ao da direita, é verdadeiro.
Caso contrário, falso.
bool value = 4 >= 4;
Menor (<)
Se o valor da esquerda for menor que o da direita, é verdadeiro.
Caso contrário, falso.
bool value = 8 < 6;
Menor ou igual (<=)
Se o valor da esquerda for menor ou igual ao da direita, é verdadeiro.
Caso contrário, falso.
bool value = 5 <= 5;
Referências - 3/12/2019
Python - Operadores lógicos e relacionais
NO RAMO DA MATEMÁTICA DA LÓGICA, EXISTEM OPERADORES COMO 'E', 'OU', 'MAS', ENTRE OUTROS E OUTROS OPERADORES DE COMPARAÇÃO DE PROPOSIÇÕES COMO MAIOR, MENOR OU IGUAL, TAMBÉM EXISTEM EM PYTHON!
Assim como expressões aritméticas como por exemplo 2*4-9 são formadas por operadores aritméticos, já falados na publicação 'Python - Operadores Aritméticos', expressões lógicas ou booleanas são formadas por operadores lógicos e relacionais.
Como falei na publicação 'Python - Tipos de Dados', os valores booleanos True (verdadeiro) e False (falso)são bastante úteis para, por exemplo, comparações. Para realizar comparações entre variáveis, usamos os operadores relacionais que são os seguintes:
Assim o resultado de uma comparação entre um valor booleano com outro é um valor booleano.
Demonstrando exemplos de cada um deles:
1 2 3 4 5 6 7 8 9 | a = 1 b = 3 print(a == b) #a é igual a b print(a < b) #a é menor que b print(a > b) #a é maior que b print(a <= b) #a é menor ou igual a b print(a >= b) #a é maior ou igual a b print(a != b) #a é diferente de b |
O output deste programa seria:
1 2 3 4 5 6 | False True False True False True |
Nota: quando usamos o operador 'menor ou igual' (<=), se 'a' for igual a 'b' o valor é True, se 'a' for menor que 'b', o valor também é True, apenas se 'a' for maior que 'b' é que o valor é False, o mesmo acontece com o operador 'maior ou igual'(>=).
Ainda existem mais operadores de comparação e lógicos, mas por agora vou apenas falar do 'and', 'or' e 'not':
- Operador And: traduzido para português para 'e', só é True quando os dois ou mais valores que estão a ser comparados são todos True:
- Operador Or: traduzido para português como 'ou', só é False quando os dois ou mais valores que estão a ser comparados são todos True:
- Operador Not: traduzido para português para 'não', muda o valor da variável, not True é False e not False é True.
Agora já aprendemos mais operadores de comparação de variáveis que nos poderão ser bastante úteis no futuro!
Referências:
- hilite.me (8-12-2019)
- panda.ime.usp.br/cc110/static/cc110/02-booleanos (imagem e informação: 8-12-2019)
Subscrever:
Mensagens (Atom)