Pesquisar aqui

sábado, 16 de novembro de 2019

Informações sobre o futuro deste blog

Hoje não vou falar sobre mais nenhum dos iOS em geral pois até à data não foram lançados mais e consequentemente vai fazer com que eu comece a falar sobre cada uma das versões dos iOS (como o 1.1.1, 1.1.2, etc.)
Obrigado e espero que gostem.

sexta-feira, 15 de novembro de 2019

A História: Autoria do Criador

A História: Autoria do Criador

Existem vários tipos de vídeo que se podem fazer, mas um desses tipos, provavelmente o mais comum e invejado é um com história. 

Um filme cujo argumento foi feito pelo argumentista da equipa de produção (Original Screenplay) ao contrário da autoria externa podem ser feitas alterações à história o que dará jeito caso a concretização de algumas cenas seja um pouco mais complicada mas um bom realizador é aquele que faz todos os possíveis para fazer o que seria difícil de concretizar.
Alguns exemplos deste processo de criação de vídeo são: Cocktail, The Guardian, o meu tão adorado Top Gun, Dirty Dancing, Shawshank Redemption, Dead Poets Society (o filme que só não vejo todos os dias porque tenho de estudar), etc.
Um dia destes sou capaz de fazer uma lista de filmes que adoro ver.

https://cdn2.newsok.biz/cache/r960-db5c2a636d920abba228f99e1980d49c.jpg
No Sábado, estejam atentos porque vem a próxima história, a verídica.
Até Sábado!

4ºEdição do IoT Challenge

IoT challenge é um concurso promovido pela Altice Portugal no qual empresas e startups têm que produzir soluções prontas a serem comercializadas para a área de localização, retalho e saúde. O concurso tem o objetivo de estimular o desenvolvimento da IoT em Portugal. As empresas possuíram 2 meses para trabalhar nos seus projetos, tento tido acesso às instalações do programa ENTER e apoio de profissionais especializados da PT Empresas. Os vencedores receberam bilhetes para a Web Summit e a integração das suas soluções no portefólio de produtos da PT Empresas. É importante denotar que este concurso teve o seu encerramento em maio do presente ano, porém, decidi falar sobre ele na mesma pois não só o acho interessantíssimo, como também importantíssimo para a IoT em Portugal. Vou agora fazer um breve resumo das soluções que me pareceram mais interessantes:


A solução da Compta com o seu Bee2X consiste na colocação de sondas em contentores de lixo subterrâneos, em Lisboa, capazes de detetar o seu enchimento, de modo a ajustar de forma mais eficiente em tempo real as rotas dos camiões. Evitando deslocações desnecessárias. Estes beacons têm baixo consumo energético e utilizam o sistema GPS para comunicação.



A Juntos Mudamos, LDA mostrou os seus localizadores Getme2u que são porta-chaves, chapas para animais ou acessórios de moda. O propósito é encontrar o portador num mapa, caso este tenha desaparecido. Tudo isto através de uma aplicação gratuita e disponível para Android, IOS e computador. O dispositivo possui também um botão de emergência que pode ser ativado caso o portador se sinta ameaçado. O dispositivo tem como seu alvo prioritário os animais, mas também pode ser aplicado a doentes com Alzheimer. O dispositivo custa 30 euros.

A Vigie Solutions apresentou o sistema Vegie + com o objetivo de evitar perdas na temperatura no armazenamento e transporte de fármacos, vacinas, sangue e outros compostos sensíveis. A solução tem suporte em Cloud, uma app, alarmística inteligente...

O sistema Wall-i (um dos vencedores) pretende medir a quantidade de pessoas em determinados locais e identificar as "zonas quentes", seja em metropolitanos, eventos, hotéis ou até frentes de montras. O sistema é capaz ainda de medir o nível de "engagement" do contacto com o público, com o uso de webcams nas secretárias. Para além disso, a empresa está também a elaborar um projeto em parceria com a Prio, para identificar a audiência, introduzindo ecrãs dentro das lojas para oferecer publicidade. O seu modelo assenta em custo por view e não por tempo, em oposição ao que é mais comum no mercado. O sistema não faz registos e descarta qualquer dado utilizado em tempo real.

A Joaquim Peralta, por sua vez, mostrou o sistema Idicare, um smartwatch dedicado à monitorização de pacientes. Este é capaz de identificar situações de emergência, seja a queda de um idoso, um aceleramento cardíaco, e mais, enviando uma mensagem para o tratador ou responsável de saúde. O produto já se encontra no mercado com um custo de 120 euros e uma subscrição de 15. Existe até um projeto-piloto a decorrer na Madeira "com bastante sucesso". O sistema permite adicionar dados biométricos dos utilizadores, compromissos médicos, medicação e faz relatórios.


Termino este Blog post com os meus parabéns à Altice por esta nobre iniciativa, que continue por muitos anos. Precisamos de empresas com este tipo de práticas para evoluirmos como país e talvez até nos tornar-mos uma grande potencial mundial da tecnologia. Para quem quiser ver as restantes soluções (são 10 no total), o link estará nas fontes.

Blogue pessoal sobre tech:
Imagem:

  • URL
  • consultado no dia 10/11/2019

Fonte:
  1. https://tek.sapo.pt/noticias/negocios/artigos/conhecidos-os-vencedores-do-iot-challenge-2019
  2. consultado no dia 10/11/2019

C++ - Condições if(), else(), else if()

Uma das coisas mais úteis da programação são as condições.
Estas permitem ao programa realizar uma certa ação só quando certos requisitos são respeitados.

Assim:
Se algo, então isto.

O algo é um valor lógico, o isto é um bloco de código a executar.

Escrevendo:

  • um if ("se", em português);
  • um valor lógico entre dois parêntesis "( )"
  • código entre dois "{ }"
if(true){
//código
}
Neste caso, vai se sempre executar o código, pois o valor lógico é true.

Mas normalmente usam-se variáveis boolean ou combinações de variáveis através dos operadores lógicos e de igualdade.

bool variable = true;

if(variable == true){
//código
}
Como variable é true, o código é executado.

Nota:
Não é necessário escrever "if (variable == true)".
Podemos simplesmente escrever "if (variable)"
Da mesma forma, "if (!variable)" corresponde a "if (variable == false)" e "if (variable != true)".

Else (else)
Quando uma condição não é verdade, pode ainda haver o else, um código que apenas será executado se a condição for falsa.

Escreve-se com else.
E obviamente esta não precisa de um valor lógico, porque não estamos a testar nenhuma condição a mais.

bool variable = false;

if(variable){
//código
}
else{
//outro código
}

Else if (else if)
Quando uma condição não é verdade e ainda queremos testar outra condição, usamos o else if. Este faz o mesmo que o else, testando esta nova condição apenas se a primeira for falsa.

bool variable = false;
bool variable2 = true;

if(variable){
//código
}
else if(variable2){
//outro código
}
Ou seja, este novo código só é executado se variable é falso e variable2 é verdadeiro.

Pode também se seguir de múltiplos outros else if, e no fim um else.

Programa exemplo
#include <iostream>
using namespace std;

int main(){
    bool portuguese = true;
    bool american = false;

    if(american){
        cout << "Hi, how are you?" << endl;
    }
    else if(portuguese){
        cout << "Oi, tudo bem?" << endl;
    }
}

Neste programa, se american for verdadeira, a mensagem "Hi, how are you?" aparece na consola.
Caso contrário, e se portuguese for verdadeira, a mensagem "Oi, tudo bem?" aparece na consola.

Neste caso, vai aparecer na consola:
Oi, tudo bem?

Assim, já sabemos usar as condições, super úteis em todos os tipos de programas, essenciais.

Referências

Python - Ciclos (Loops)

Ciclo ou loop, é a maneira mais fácil em Python de repetir uma instrução n vezes. Existem os ciclos 'for' e os ciclos 'while', que são sendo que os ciclos while exigem uma sintaxe mais complexa.

Nota: deve consultar a publicação 'Python - Condições' antes desta, visto que fala de tipos de condições e de funções 'if', 'elif' e 'else'.

A seguinte imagem é um esquema de como cada um dos loops funciona: num for loop, 'dizemos ao computador' para repetir um pedaço de código n vezes que quisermos, enquanto que no while loop, é composto por uma condição e um bloco de código, que se repete enquanto a condição for verdadeira (True):

  • Ciclo for (For loop) - como referi acima, este tipo de loop é normalmente utilizado para repetir um bloco de código as vezes desejadas normalmente para interagir com membros de sequências, utilizamos comandos como 'for' , 'in' e 'range' como no exemplo a seguir:
for num in range(1, 10):
    print(num)

#que tambem pode ser escrito:

numb = range(1,10)
for count in numb:
    print(count)

No exemplo acima, resultaria em ambos os casos:

1
2
3
4
5
6
7
8
9

Na imagem seguinte podemos observar as diferentes maneiras de usar o comando range:
No exemplo que dei, utilizei da segunda maneira, também podendo utilizar "range(10)"

  • Ciclo while (While loop) - como referi acima, nos while loops, "dizemos ao computador" para fazer algo enquanto a condição for verdadeira:
a = 0
while a < 10:
    a = a + 1
    print(a)

e o output seria:


1
2
3
4
5
6
7
8
9
10

Loops são das coisas mais importantes de aprender para programar enúmeros tipos de programas, que devem ser utilizados em exercícios porque não há melhor maneira de aprender que experimentar!

Referências:

quinta-feira, 14 de novembro de 2019

iOS 13


IOS 13 logo.svg

IOS 13 Homescreen iPhone X.png  Hoje vou falar-vos de o último iOS que saiu que foi o 13. Este sistema operativo foi lançado no dia 19 de setembro de 2019 e por enquanto a sua última versão lançada foi a 13.2.2 e foi lançada no dia 7 de novembro de 2019. Este sistema operativo está disponível para as seguintes plataformas: iPhone 6S, 6S Plus, SE, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max, XR, 11, 11 Pro, 11 Pro Max, iPod Touch de 7ª geração e para o HomePod. Já não está disponível para os iPad pois estes receberam o seu próprio sistema operativo, o iPadOS.
  Foram feitas as seguintes modificações:

 - a interface do utilizador, agora tem umodo escuro em todo o sistema e todos as aplicações nativas e de terceiros compatíveis. Ele pode ser ativado ou configurado manualmente para alternar automaticamente entre os modos claro e escuro com base na hora do dia. Este sistema operativo apresenta também um indicador de volume atualizado que aparece no lado esquerdo da tela e permite que o utilizador ajuste o volume deslizando um dedo no indicador. As versões anteriores têm o indicador no centro da tela;

 - nas mensagens, podem ser criados perfis para os utilizadores e o Memoji pode ser usado como uma imagem de perfil do iMessageMemoji e Animoji podem ser usados ​​como adesivo no iMessage e em outras apps;


Por enquanto não existem mais modificações neste iOS.

História VideoJogos Parte 1


Hoje vou falar sobre a história dos videojogos e de alguns títulos que marcaram a indústria ao longo dos anos. Os primeiros ícones da indústria dos videojogos começaram a aparecer no início dos anos 70 continuando a ser conhecidos e adorados por muitas gerações. Em 1972 o jogo Pong apareceu, cinco anos depois a consola Atari 2600 foi lançada sendo adorada por pessoas em todo o mundo. Mais tarde nessa época mais dois clássicos foram lançados, Space Invaders e Asteroids.

Nos anos 80 a indústria começou a explodir e foram lançados mais jogos e consolas que agora são considerados clássicos. Em 1980 foi lançado o Pac-Man e a Mrs. Pac-Man. Um anos depois o famoso jogo Donkey Kong foi lançado apresentando pela primeira vez o Mário, uma das personagens mais icónicas dos videojogos. Em 1986 foi lançado um dos meus jogos preferidos e que iniciou um dos melhores títulos de sempre, The Legend of Zelda. Em 84 um dos jogos com uma das premissas mais simples mas um dos mais viciantes apareceu e ainda hoje adaptações aparecem, Tetris. Nessa década para além de outros jogos saíram duas grandes consolas, a Nintendo Entertainment System (ou NES como é mas conhecida) e a nintendo também libertou a primeira consola portátil, o Gameboy.

Na próxima publicação falarei da história dos videojogos entre os anos 90 e os 2000.

quarta-feira, 13 de novembro de 2019

A História: Autoria Externa

A História: Autoria Externa

Existem vários tipos de vídeo que se podem fazer, mas um desses tipos, provavelmente o mais comum e invejado é um com história. 

Agora, essa história pode ser da autoria do criador (Original Adapted Screenplay) sobre uma pessoa verídica ou de autoria externa (Adapted Screenplay) e depois passada para vídeo como é o caso da saga Harry Potter por exemplo, a história foi originalmente escrita em sete livros pela britânica J K Rowling e mais tarde posta em oito filmes produzidos por David Yates, Alfonso Cuarón, Chris Columbus e Mike Newell.
Sinceramente acho que um vídeo produzido a partir da história de outro é mais desafiante porque não depende só do que imaginámos ao ler o livro. Neste momento falo da saga que já referi, quando Chris Columbus decidiu fazer a versão filme do primeiro livro (Harry Potter and the Philosopher's Stone) em 2001 iria fazer os cenários (que já tive a oportunidade de ver) com base na sua imaginação e da equipa de produção mas para ser fiel à história tem também de ter contacto com o autor, neste caso com J K Rowling que se mostrou aberta a participar na construção da sua história numa versão visual. Resumidamente é um processo engraçado de se fazer quando corre bem do lado da produção e do autor da história mas é muito mais demorado do que uma história vinda da própria produção que é o que vou falar na próxima publicação. A rima não foi propositada...
Até segunda!
Quarto Harry Potter em Harry Potter and the Philosopher's Stone

Luz

Luz


Algo muito importante na criação de um vídeo é a Luz que temos. Luz Natural é a ideal mas nem sempre é possível, especialmente se for num interior com pouca luz.
Neste vídeo, um especialista nesta área corrige uma cena num bar de maneiras que ninguém se lembraria mas no final fica espetacular o efeito de mudanças de luz.

Mas muito por alto e vindo de um amador vou dar alguns exemplos de mudanças de luz que se podem fazer quando o resultado não é o que esperávamos.

https://img1.looper.com/img/gallery/why-we-never-got-to-see-how-i-met-your-dad/and-yet-theres-still-hope-1481813049.jpg


Nesta imagem da série How I met your mother uma das personagens, neste caso a que está no centro (Barney, interpretado por Neil Patrick Harris) tem muita luz a incidir na testa. Isto pode ser corrigido de várias maneiras: diminuindo a intensidade da luz em questão, não apontando a luz diretamente para o ator ou usando luzes diferentes que se adequem no cenário (chaadas luzes de cena ou seja que possam aparecer em cena).

Este é um tema muito extenso, que envolve muito estudo e muita experiência que eu não tenho. À medida que for publicando posso ir dando exemplos que podem ser corrigidos.
Até quarta feira!


Blockchain pode exponencialmente melhorar a IoT

Primeiramente, o que é uma Blockchain? Esta é uma técnica que foi inicialmente descrevida em 1991, porém, tem ganho extrema relevância recentemente devido principalmente às criptomoedas como a Bitcoin. Esta técnica consiste numa corrente de blocos que transporta informação de uma maneira muito particular e interessante. Cada bloco possui três informações: o conteúdo (data) que no exemplo das criptomoedas indica o montante transferido e as carteiras envolvidas (de quem para quem); a hash, que funciona como uma impressão digital, que sendo assim é um número único para cada bloco, gerado aleatoriamente, usado para o identificar e que se altera sempre que o conteúdo do bloco é alterado; a hash do bloco anterior. 





O facto de cada bloco ter a hash so anterior é o que cria a cadeia de blocos. Por sua vez o facto de a hash de cada bloco ser alterada sempre que o conteúdo do bloco também o é, torna esta cadeia extremamente segura. Por exemplo, se tivermos uma cadeia com 3 blocos e o conteúdo do 2º bloco for alterado, o seu hash não irá corresponder ao que está presente no 3º bloco, sendo assim detetada uma falha e inviabilizando a cadeia dali para a frente.


Mas talvez esteja a pensar porque não mudar todos os blocos. Assim não existiria maneira de provar que ouve uma manipulação, certo? Felizmente esta técnica possui algo que se chama prof of work, que é um mecanismo que atrasa a criação de novos blocos (no caso das bitcoins demora cerca de 10 minutos a ser aceite um novo bloco à cadeia).

Para além disto a Blockchain usa algo que se chama peer to peer network, consistindo numa rede aberta em que qualquer pessoa pode participar. Sempre que é criado um novo bloco, este é enviado para todos os integrantes da rede que verificam o bloco de modo a perceber se não foi adulterado. Caso esteja tudo correto, este é adicionado à cadeia. É importante referir que para que um bloco seja aceite, a maioria dos integrantes da rede têm que identificar o novo bloco como válido.




Como é possível entender, esta técnica é extremamente eficaz em impedir a alteração de informação. Ora, isto é algo de extrema importância para a IoT que sendo completamente baseada na partilha de informação entre dispositivos pela internet, precisa garantir que a informação que chega e que é enviada não é acedida e alterado pelo caminho por hackers. 

Para além disso, a IoT é na sua grande maioria centralizada numa Cloud, caso esta seja exposta, todos os dispositivos integrantes da mesma ficam extremamente vulneráveis. A Blockchain por sua vez é uma técnica que utiliza a descentralização, sendo cada dispositivo individualmente responsável pela aferição e gestão da informação da rede. Isto não é só uma vantagem de segurança, mas também uma vantagem monetária, visto que os custos de manter uma Cloud são elevados, caso esta não seja necessário, o custo dos dispositivos IoT poderá descer exponencialmente, ajudando na sua popularização.

Como é evidente isto não é apenas um conto de fadas, também existem obstáculos. Primeiramente, ainda há muito para descobrir sobre a Blockchain, sendo uma técnica ainda muito "tenra". O maior problema é mesmo falta de consenso em relação ou setor de pouca energia sem fios WLAN.

Para terminar, quero apenas deixar um bónus. O laboratório de IoT da Bosch está neste momento a trabalhar num protótipo de um sensor que regista a quilometragem de um veículo e a envia permanentemente para uma blockchain através da internet de modo a combater a recorrente diminuição dos valores de quilometragem de um carro, de modo a aumentar o seu valor comercial.

Blogue pessoal sobre tech:
Imagens:
  • Printscreens de um vídeo
  • consultado no dia 10/11/2019

Fontes:

C++ - Operadores de igualdade (==, !=)


Para termos um valor lógico, podemos simplesmente atribuir esse valor (true ou false).
bool valor = true;

Mas outra forma de gerar um valor lógico é a partir das igualdades.
Uma igualdade entre duas variáveis vai nos dizer se as variáveis (ou valores lógicos) têm o mesmo valor ou não.

Igualdade (==)
Se tiverem o mesmo valor, o resultado vai ser verdadeiro.
Caso contrário, será falso.
Escreve-se com "==" entre duas variáveis (ou valores lógicos).
bool variable = true == true;
bool variable2 = false == false;
bool variable3 = true == false;
variable vai ser verdadeira (verdadeiro é verdadeiro).
variable2 vai ser verdadeira (falso é falso).
variable3 vai ser falsa (verdadeiro é falso).

Desigualdade (!=)
Se tiverem o mesmo valor, o resultado vai ser falso.
Caso contrário, será verdadeiro.
Escreve-se com "!=" entre duas variáveis (ou valores lógicos).
bool variable = true != true;
bool variable2 = false != false;
bool variable3 = true != false;
variable vai ser falsa (verdadeiro não é verdadeiro).
variable2 vai ser falsa (falso não é falso).
variable3 vai ser verdadeira (verdadeiro não é falso).

Não se confundam:
  • O igual (=) serve para atribuir um novo valor à variável;
  • Enquanto a o operador de igualdade (==) serve para verificar igualdade de valor (entre variáveis ou valores lógicos).
Assim como os operadores lógicos, vão ser utilizados nas condições.

Referências

Python - Biblioteca 'Math' (Parte 2)

UMA DAS COISAS MAIS IMPORTANTES EM TODA A PROGRAMAÇÃO, SÃO CÁLCULOS ARITMÉTICOS, FUNÇÕES, NÚMEROS ENTRE OUTROS CONCEITOS MATEMÁTICOS, ESTA BIBLIOTECA VAI NOS AJUDAR COM ISSO!

Nota: Como esta biblioteca é bastante vasta, tive de publicar duas partes sobre a mesma, sendo esta a parte 2 de 2.

Comecemos por importar a biblioteca, como demonstrei nas publicações "Python - Bibliotecas" e "Python - Biblioteca 'Random'", para podermos utilizar os seus comandos:

import math

Esta é a segunda biblioteca de que estou a explorar em Python, sendo uma das mais importantes e úteis.

Para mais informações sobre esta biblioteca, consultar: docs.python.org/3/library/math.html

Seleccionei alguns comandos mais interessantes desta biblioteca para demonstrar nesta segunda parte:
  • Constante e - este comando não é uma função, mas sim um valor de uma constante; o Número de Euler ou Constante de Napier, que é uma constante matemática que em Python é igual a 2.718281828459045 e para a utilizarmos basta usar 'e':
import math

print(math.e)

e aparecerá:

2.718281828459045

  • Potenciação de e - na primeira parte falei de um comando para criar potências, este é semelhante mas só pode ser utilizado para o Número de Euler ou Constante de Napier, que falei acimapara adiciona expoentes basta utilizarmos o comando 'Exp':
import math

print(math.exp(2))

print(math.exp(5))

print(math.exp(10))

em que obteríamos:

7.38905609893065
148.4131591025766
22026.465794806718

  • Pi (π) - como a constante e, o valor pi também tem um comando para apresentar esse valor, através de 'pi':
import math

print(math.pi)

que em Python é:

3.141592653589793

  • Calcular seno, cosseno e tangente - para calcularmos o seno, cosseno e tangente de um ângulo qualquer, a biblioteca Math disponibiliza 3 comandos bastante simples, 'sin', 'cos' e 'tan' respectivamente:
import math

print(math.sin(60))

print(math.cos(30))

print(math.tan(87))

que neste exemplo resultará:


-0.3048106211022167
0.15425144988758405
-1.4424174716642324

  • Calcular a raiz quadrada - para calcularmos a raiz quadrada de qualquer valor, basta usarmos o comando 'Sqrt' :
import math

print(math.sqrt(25))

print(math.sqrt(36))

print(math.sqrt(64))

onde obteríamos...


5
6
8


A biblioteca Math ainda tem muitas outras funções que não demonstrei aqui, como cálculo de logaritmos, que poderei falar com algum detalhe se precisarmos das usar em programas futuros.


Referências:


terça-feira, 12 de novembro de 2019

Introdução



O design de jogos engloba muitos processos que eu pretendo discutir neste blogue.

Eu pretendo abordar tudo desde a música dos jogos, à criação das personagens e história, à programação e animação envolvida. Eu irei escrever sobre estes temas principalmente sozinhos mas, também pretendo falar da interligação dos mesmos temas e, se descobrir ou me lembrar de algo para dizer sobre um tema do qual já falei irei criar um novo post para acrescentar a informação. Eu irei começar com um pouco da história dos videojogos e da sua evolução nos últimos anos, depois pretendo falar sobre a influência da música nos jogos, depois a história e a criação da narração de um jogo e, depois disto logo se vê (posso nem por estes três primeiros se por alguma razão no dia em que for pôr um deles me apetecer falar de outra coisa.

O meu objetivo é ensinar vos sobre os processos da criação de um videojogo e aprender coisas novas pelo caminho.

segunda-feira, 11 de novembro de 2019

Carros autónomos serão uma realidade através da IoT!

Carros autónomos e inteligentes eram apenas ficção científica à poucos anos atrás. Porém, cada vez mais este conceito é uma realidade, sendo possível possuir veículos com capacidade de condução autónoma, um pouco limitada, como os Tesla. No futuro espera-se que estes veículos sejam capazes de até reabastecer sozinhos.

Mas vamos ao fundamental deste post, como a IoT torna tudo isto possível? Apesar de a tecnologia envolvida na fabricação destes automóveis depender de cada marca, a maioria usa uma série de radares detectores de laser e câmaras para mapear o ambiente envolvente ao automóvel. A informação é depois processada e analisada, sendo depois enviadas instruções para o carro tendo em conta os dados obtidos. 

No futuro (após a implementação do 5G) espera-se criar uma rede que conecte todos os carros que se encontrem próximos, e consequentemente os seus sensores, pois apenas quando todos os carros estiverem a funcionar em sincronia, partilhando informação com a qual todos acordam, será possível atingir a tão desejada, completa automação. Ora isto nada mais é do que conectar todos os sensores de diversos carros a uma só rede, através da internet, traduzindo, criar um sistema IoT!


blogue pessoal sobre tech:



fonte:



imagem:

  • URL
  • consultada 10/11/2019

C++ - Operadores lógicos


Assim como na matemática (e a vida real, no fundo), na programação existem os valores lógicos: verdadeiro e falso.

Como já devem saber, o tipo de dado boolean (bool) é o que guarda true ou false.
bool valor = false;

Então, também existem os operadores lógicos:

Negação (!)
A negação serve para "inverter" um valor lógico, assim como o til (~) da matemática:
Falso será verdadeiro, Verdadeiro será falso.

Escreve-se com um ponto de exclamação (!) antes da variável (ou valor lógico).
bool variable = true;
bool notvariable = !variable;

bool variable2 = false;
bool notvariable2 = !variable2;
notvariable vai ter o valor oposto a verdadeiro (falso).
notvariable2 vai ter valor oposto a falso (verdadeiro).

Conector E (&&)
O conector E, também chamado de AND, vai nos dar a combinação de dois valores lógicos, assim como o Λ da matemática (os dois têm de ser verdadeiros):

  • Verdadeiro e Verdadeiro - Verdadeiro
  • Verdadeiro e Falso - Falso
  • Falso e Falso - Falso
Escreve-se com "&&" entre duas variáveis (ou valores lógicos).
bool variable = true && true;
bool variable2 = true && false;
bool variable3 = false && false;
variable vai ser verdadeiro (verdadeiro e verdadeiro).
variable2 vai ser falso (verdadeiro e falso).
variable3 vai ser falso (falso e falso).

Conector Ou (||)
O conector OU, também chamado de OR, vai nos dizer se pelo menos um de dois valores lógicos é verdadeiro, assim como o da matemática:
  • Verdadeiro ou Verdadeiro - Verdadeiro
  • Verdadeiro ou Falso - Verdadeiro
  • Falso ou Falso - Falso

Escreve-se com "||" entre duas variáveis (ou valores lógicos).
bool variable = true || true;
bool variable2 = true || false;
bool variable3 = false || false;
variable vai ser verdadeiro (verdadeiro ou verdadeiro).
variable2 vai ser verdadeiro(verdadeiro ou falso).
variable3 vai ser falso (falso ou falso).


Se tentarmos fazer print da variável com valor lógico, vai ser 0 (falso) ou 1 (verdadeiro).
Em vez de false e true podemos usar 0 e 1 da mesma forma.

Estes operadores lógicos vão ser muito úteis nas condições, que falarei brevemente.

Referências

Python - Biblioteca "Math" (Parte 1)

UMA DAS COISAS MAIS IMPORTANTES EM TODA A PROGRAMAÇÃO, SÃO CÁLCULOS ARITMÉTICOS, FUNÇÕES, NÚMEROS ENTRE OUTROS CONCEITOS MATEMÁTICOS, ESTA BIBLIOTECA VAI NOS AJUDAR COM ISSO!

Nota: Como esta biblioteca é bastante vasta, terei de publicar duas partes sobre a mesma, sendo esta a parte 1 de 2.

Comecemos por importar a biblioteca, como demonstrei nas publicações "Python - Bibliotecas" e "Python - Biblioteca 'Random'", para podermos utilizar os seus comandos:

import math

Esta é a segunda biblioteca de que estou a explorar em Python, sendo uma das mais importantes e úteis.

Para mais informações sobre esta biblioteca, consultar: docs.python.org/3/library/math.html

Seleccionei alguns comandos mais interessantes desta biblioteca para demonstrar nesta primeira parte:
  • Arredondar para inteiro - para arredondarmos um valor real para o número inteiro mais próximo e acima, utilizamos o comando 'Ceil':
import math

print(math.ceil(6.012))

print(math.ceil(3.7))

print(math.ceil(0.0004))

Nestes exemplos, o que apareceria:

7
4
1

  • Remover o sinal - para removermos um sinal positivo ou negativo, aparecendo apenas o valor, usamos o comando 'Fabs':
import math

print(math.fabs(-6.333))

print(math.fabs(6.333))

em que o resultado seria:

6.333
6.333

  • Factorial - para calcular o factorial de um valor, usamos o comando 'Factorial':
import random

print(math.factorial(3))

print(math.factorial(5))

print(math.factorial(10))

e iria resultar:

6
120
3628800

  • Manter a 'parte inteira' - este comando permitenos remover todos os valores à direita da virgula, apresentando apenas o valor inteiro, através do comando 'Floor':
import math

print(math.floor(6.333))

print(math.floor(0.001))

print(math.floor(7.403))

e vamos obter:

6
0
7

  • Potenciação - para além do método que falei na publicação "Python - Operações Aritméticas", podemos criar potências com o comando 'Pow':
import math

print(int(math.pow(2, 3)))

print(int(math.pow(5, 1)))

print(int(math.pow(8, 0)))

assim sendo, apareceria:


8
5
1


Terminando assim a Parte 1 da biblioteca Math, com 5 comandos que nos irão ser úteis em diversos programas futuros. A Parte 2 será publicada dia 13 de Novembro (quarta-feira)!


Referências:




domingo, 10 de novembro de 2019

iOS 12


IOS 12 logo.svg


IOS 12 Homescreen iPhone X.png
  Este iOS foi lançado no dia 17 de setembro de 2018 e a sua ultima versão lançada foi a 12.4.3 no dia 28 de outubro de 2019, há menos de um mês e esteve disponível para as seguintes plataformas: iPhone 5S, 6, 6 Plus, 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max e XR, iPod Touch de 6ª e 7ª geração e iPad Air, Air 2, Air 3ª geração, iPad de 5ª e 6ª geração, Mini 2, 3, 4 e de 5ª geração e para todos os modelos do Pro lançados.

  As modificações efetuadas neste sistema operativo foram as seguintes:

 - As aplicações iniciam 40% mais rápido, o teclado do sistema ativa-se 50% mais rápido e a câmera ativa-se 70% mais rápido;

 - O Screen Time que é um novo recurso que regista a quantidade de tempo que o utilizador passou no dispositivo e em cada aplicação. Este novo recurso também fornece opções de bloqueio para limitar o uso de aplicativos com restrições de tempo;

 - o Teclado tem modo trackpad (que permite que o utilizador mova o cursor livremente) é ativado pressionando a barra de espaço em dispositivos sem o 3D Touch;

 - A app medidas serve para que o utilizador faça medições de objetos reais. Também funciona como um nível, um recurso que foi originalmente incorporado como parte da aplicação Compass;

 -A aplicação Mapas começou a ser reconstruída, contando com dados de mapas de terceiros em vez de usar dados de mapas fornecidos por terceiros. Isso permite instruções e previsões mais precisas nas rotas mais rápidas.