sexta-feira, 29 de novembro de 2019

C++ - Funções (Parte 2)


Esta é a parte 2 das funções de C++.

Diferença entre argumento e parâmetro
Até agora tenho me referido aos parâmetros como argumentos, mas existe uma diferença entre eles.
O parâmetro é a própria "variável" da função, isto é, o que está entre parêntesis quando a declaramos.
O argumento é o valor/variável que passamos para a função ao chamá-la.

Declaração e definição
A função é declarada e definida.
A declaração é o nome da função, o seu tipo e os seus parâmetros, e a definição é o código a executar.

Até agora declaramos e definimos a função de seguida. Ao fazer isto, temos de escrever a função sempre em cima da função main porque o compiler lê de cima para baixo.
Se apenas declararmos a função primeiro, podemos colocá-la abaixo de main.
Como declarar e depois definir:
int function();

int main(){
    function();
}

int function(){
    cout << "Hello" << endl;
}

Múltiplos parâmetros
As funções podem ter mais de um parâmetro.

void print_coordinates(int x, int y){
    cout << "X: " << x << endl;
    cout << "Y: " << y << endl;
}
Dois parâmetros, x e y.

Parâmetros padrão (default)
Quando uma função tem um parâmetro, esse pode já ser definido de uma forma padrão. Isto é, quando a função for chamada, não é necessário colocar nada como argumento porque a própria função já tem um parâmetro padrão.

void printX(int x = 3){
    cout << x << endl;
}

int main(){
    printX();
}
O parâmetro padrão é x = 3. Então quando a função for chamada e não lhe dermos um argumento, a função vai funcionar com x = 3.

Ou seja, terá output
3

Se não forem todos padrão, apenas alguns, apenas os últimos parâmetros (a partir direita) podem ser padrão, porque não há forma de o compiler saber qual é qual.

Isto é, esta função é válida:
int function(int x, int y, int z = 0){
    //código
}
Porque é possível chamá-la com dois argumentos, assim, por exemplo:
function(2, 3);
Onde z = 0.

Mas esta função não é válida:
int function(int x = 0, int y, int z){
    //código
}
Porque se fôssemos chamá-la da mesma forma, estaríamos a atribuir um valor a x, a y, mas não a z.

Então só é válido se só os parâmetros mais à direita forem padrões. Ou seja, à esquerda de um normal não pode haver um padrão. Todos padrões também é válido.

Manipulação da variável da função
Talvez não tenham percebido, mas a variável "parâmetro" da função é temporária e apenas válida dentro da função.
Se passarmos uma variável existente como argumento para uma função, e nessa função houver manipulação da variável de alguma forma, não é essa variável que muda. Na verdade, a variável da função é uma cópia da variável que passamos.

void function(int variable){
    variable += 6;
}

int main(){
    int variable = 5;
    function(variable);
    cout << variable << endl;
}

  • O inteiro variable de function é uma cópia do inteiro variable de main.
  • Têm o mesmo nome só mesmo para vos mostrar que são variáveis diferentes, terem o mesmo nome ou não é indiferente.
  • A variable de function torna-se 5 + 6, que é 11.
  • A variable de main continua igual.
Então o output será
5

Para fazer isto temos de usar pointers, mais especificamente endereços da variável (passar por referência), mas isso já é o seu próprio tema, que falarei no futuro.


Overloading
Funções diferentes podem ter o mesmo nome mas diferentes parâmetros
.
int printNum(int num){
    cout << num << endl;
}

float printNum(float num){
    cout << num << endl;
}

int printNum(int num, int num2){
    cout << num << endl;
    cout << num2 << endl;
}

Então quando for chamada, o compiler tem em atenção o tipo de dado do argumento e o número de argumentos.

Temos de ter atenção para que não haja discrepâncias quando formos chamar a variável, isto é, não podemos ter duas funções iguais mas uma delas tem mais um parâmetro que é padrão. O compiler não vai saber qual utilizar.

Programa exemplo
#include <iostream>
using namespace std;

int sum(int x, int y = 3){
    return x + y;
}

int sum(int x, int y, int z){
    return x + y + z;
}

int main()
{
    int x, y, z;
    cout << "Enter x:" << endl;
    cin >> x;
    cout << "Enter y:" << endl;
    cin >> y;
    cout << "Enter z:" << endl;
    cin >> z; 
    
    cout << "The sum of x and y is:" << sum(x, y) << endl;
    cout << "The sum of x, y and z is:" << sum(x, y, z) << endl;
}
  • Existem duas funções sum (que fazem overloading).
  • O programa pede três inteiros x, y e z.
  • É feito o print da soma de x e y, e de xy e z.

Se escrevermos, 3, 7, e 20, na consola vai estar:
Enter x:
3
Enter y:
7
Enter z:
20
The sum of x and y is:10
The sum of x, y and z is:30

Referências - 29/11/2019

Python - Exercícios

EM QUALQUER CIÊNCIA, DISCIPLINA, ESTUDO OU CADEIRA, PARA ALÉM DE PERCEBER O TEÓRICO, TAMBÉM É NECESSÁRIO COLOCAR EM PRÁTICA OS NOSSOS CONHECIMENTOS!

Nesta publicação irei recomendar alguns sites de exercícios básicos para resolver em Python e irei indicar alguns eu mesmo e explicar em qual publicação anterior podem encontrar informação necessária para a resolução dos mesmos.

Sites recomendados:
Todos os sites que indiquei acima estão em inglês, exceto o primeiro, visto que existe uma grande variedade em sites estrangeiros do que em comparação com portugueses, mas a maioria do inglês utilizado nos enunciados é básico.


Exercícios:

     1.Escreva o seu primeiro programa (Python - Primeiro Programa) - o output esperado deverá ser:

1
Hello World!

     2. Escreva um programa que pergunte o nome ao utilizador e que diga 'olá' (Python - Interação com o Usuário; Python - Variáveis) - output de exemplo:

1
2
Como se chama? André
Olá André!

    3. Escreva um programa que pede para introduzir dois números inteiros para realizar a sua adição (Python - Operadores Aritméticos; Python - Tipos de Dados; Python - Interação com o Usuário; Python - Variáveis); exemplo de output:

1
2
3
Primeiro número:2
Segundo número:3
O resultado da soma é:5

    4. Escreva um programa que peça para inserir o comprimento de 2 catetos de um triângulo rectângulo e calcular o tamanho da hipotenusa (Operadores Aritméticos; Python - Tipos de Dados; Python - Interação com o Usuário; Python - Variáveis; Python - Biblioteca Math (Parte 1 e 2)) - exemplo de output:

1
2
3
4
Comprimento do cateto 1: 3.5
Comprimento do cateto 2: 4.75

O comprimento da hipotenusa será: 5.90

    5. Escreva um programa que peça para inserir 3 números inteiros e dizer se são todos iguais, 2 iguais e um diferente ou todos diferentes (Python - Variáveis; Python - Biblioteca Math (Parte 1 e 2); Python - Tipos de Dados; Python - Interação com o Usuário) - exemplo de output:


1
2
3
4
5
Número inteiro 1: 4
Número inteiro 2: 10 
Número inteiro 3: 2

Os 3 números que introduziste são diferentes!

Nas próximas aulas irei resolvendo um a um no final de cada, se fizerem outros exercicios e tiverem alguma dúvida basta escrever comentário! Boa programação!


Referências:



quinta-feira, 28 de novembro de 2019

iOS 4 - v 4.3


iOS 4.3




   Hoje vou falar da versão 4.3 do iOS que foi lançada no dia 9 de março de 2011. As alterações efetuadas nesta nova versão foram no acesso aos pontos de Wi-Fi pessoais, o partilhamento do iTunes, também melhoria no AirPlay e mais outras pequenas. Esta versão deixou de ser suportada no iPad 1.

quarta-feira, 27 de novembro de 2019

C++ - Funções (Parte 1)



As funções são uma grande parte do C++.
Podemos escrever um código uma só vez dentro dela, e depois chamá-la, executando o código, como se o tivessemos copiado e colado.
Mais ou menos da mesma forma que as funções da matemática, podem receber argumentos, como um número, e fazer alguma coisa com ele, além de retornar um valor.

Escrevendo:
int function(){
    //código
}

Chamando a função
Para chamar a função, escrevemos o identifier (nome) dela, seguido dos argumentos necessários dentro de ( ).

function();

Isto essencialmente copia e cola o código dentro da função no local onde foi chamada.

Return
Como vêm, a função, assim como uma variável, tem um tipo de dado, neste caso int. Este tipo de dado diz-nos o que é que a função vai retornar. Sim, também pode retornar um valor. Depois de executar o código, pode retornar um valor, como se fosse uma variável temporária.

Pode também ter o tipo de dado void, este diz-nos que a função não vai retornar nenhum valor. Se a função tiver outro tipo de dado que não o void, é obrigatório que retorne um valor.
void function(){
    //código
}

Para retornar um valor, temos que escrever "return" seguido do valor a retornar.
Por isso se a função for do tipo int, pode ser:
int function(){
    return 6;
}

Ou seja, a própria função quando chamada, vai ter um valor, como uma variável:

cout << function() << endl;
O output será 6.


Argumento
A função, dentro daqueles seus parêntesis, pode ter o que chamamos de argumentos. Estes são dados extra que damos para a função trabalhar.
Por exemplo, um argumento pode ser o nome de uma pessoa (uma string) e a função faz print de uma mensagem de boas-vindas para esse nome.

void welcome(string nome){
    cout << "Bem-vindo, " << nome << endl;
}

Se eu chamar a função com o nome "Nyck":
welcome("Nyck");

O output será:
Bem-vindo, Nyck


Programa exemplo
#include <iostream>
using namespace std;

int plus5(int num){
    return num + 5;
}

int main()
{
    int number;
    cin >> number;
    
    cout << plus5(number) << endl;
}

Esta tem como objetivo receber um número inteiro como argumento e retornar esse número mais 5.
O programa pede o input do número e faz o output do valor que a função retorna (o número é o argumento).

Se o número que escrevermos for 415, na consola estará:
415
420

Mas atenção: o fato de o valor que a função retorna ser a variável number + 5, não significa que eu adicionei 5 à variável number. Também é possível fazer isso através da função através dos pointers, que falarei só mais à frente. E na parte 2 vou falar de algo que parece que irá fazer isto, mas afinal faz outra coisa.

Referências

Python - Comentários

COMENTÁRIOS SÃO BASTANTE IMPORTANTES EM QUALQUER CÓDIGO DE QUALQUER LINGUAGEM DE PROGRAMAÇÃO, VISTO QUE AJUDAM A ORGANIZAÇÃO DE IDEIAS DO PROGRAMADOR!

Comentários são como post its que o programador coloca no seu código, assim como os estudantes colam post its com informação ou notas que complementam o estudo, os programadores fazem o mesmo. O Python ignora tudo o que está escrito no comentário, complementando apenas o código.


Porque é que comentários são importantes:
  • Quando está a ler o seu código, os comentários ajudam a organizar as ideias ou a explicar alguma linha de código ou opção;
  • Quando alguém está a ler o código de outra pessoa, para perceber o que é que a outra pessoa escreveu e porque fez daquela maneira;
Em Python, existem dois tipos de comentários:
  • Comentário Simples - apenas uma linha de comentário; para escrever um comentário simples basta digitar cardinal '#' e depois escrever o comentário à sua frente, como no exemplo:
1
#isto é um comentário
  • Comentário múltiplo - múltiplas linhas de comentário, como por exemplo:
1
2
3
4
5
"""
isto é um 
comentário 
composto
"""

ou assim:


1
2
3
#isto é um 
#comentário 
#composto


Shortcuts de comentários múltiplos:

  • Pressione a tecla "Ctrl" e clique com o lado esquerdo do rato nas linhas em que deseja escrever, e basta digitar! Isto é útil quando quer escrever o mesmo comentário em linhas diferentes do seu código:


  • Selecione as linhas que deseja transformar em comentário e clique a tecla "Ctrl"+"/":


Tente nunca escrever comentários de uma forma insultuosa ou errada, e pronto, agora já sabe escrever comentários em Python, já consegue organizar o seu código!



Referências:


segunda-feira, 25 de novembro de 2019

Diferentes Lentes

Diferentes Lentes

Há lentes para tudo e mais alguma coisa, para close up, para cenários de paisagem, para uma iteração mais próxima com o objeto do vídeo estando perto ou mais longe o que normalmente ajuda o ator a falar mais baixo ou mais alto respetivamente.
 Para perceberem do assunto vindo de uma fonte com mais experiência do que eu aconselho vivamente a verem o seguinte vídeo: https://www.youtube.com/watch?v=DGujsKb2e10 .

Vou agora mostrar vos vários exemplos de diferentes tipos de lente.
Todas as fotografias foram tiradas com uma Canon EOS 1200D.

70-300 mm


ƒ/51/5073 mmISO 3200


Esta lente é ideal para exterior quando o objeto está por exemplo do outro lado da rua.

15-55 mm

ƒ/21/6050 mmISO 640

Com esta lente temos a tal situação em que nos aproximamos do objeto parecendo que estamos um pouco longe.

10-18 mm


ƒ/5.61/4018 mmISO 2500

Esta é provavelmente a lente que menos gosto, é ideal para termos todo o cenário. É uma lente que simula perfeitamente o olho humano. Podemos usá-la por exemplo num cenário de serra, penso no filme 007 Skyfall em que temos James Bond ao pé do seu Aston Martin e o foco dele mas também do fundo é muito bem feito.

18-200 mm


ƒ/41/8070 mmISO 3200

Com esta lente temos muito para explorar, é um bom intermédio entre uma 10-18 mm e uma 15-55 mm.

50 mm
ƒ/5.61/5055 mmISO 3200

Uma lente exelente para vídeo com um desfoque de fundo muito bom.



C++ - For loop

O for é um loop assim como o while. Porém muito diferente na forma de representar.

Escrevendo:
No for temos 3 "declarações", statements:
  • Um que é executado uma vez no começo (normalmente a criação de uma variável temporária);
  • O segundo é a condição a verificar no começo de cada ciclo, apresenta-se uma condição;
  • O terceiro que é executado sempre no fim de cada ciclo (normalmente uma operação, tipo incremento à variável que criamos). Escrito sem um ";"

for(int i = 0; i < 10; i++){
    //código
}
A nossa variável temporária é i e começa com o valor 0.
A condição é "i < 10", por isso no começo de cada ciclo verifica-se se i é menor que 10.
Após o ciclo, é feita a operação "i++", ou seja aumenta-se o valor de i por 1.
Então, este trata-se de um loop de 10 ciclos, segue-se o valor de i em cada: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}


Um loop infinito obtém-se assim:
for(;;){
    //código
}


Programa exemplo
#include <iostream>
using namespace std;

int main()
{
    int max;
    
    cout << "Escreva quantos ciclos quer: ";
    cin >> max;
    
    for(int i = 0; i < max; i++){
        cout << i << endl;
    }
}
O programa pede-nos input para a variável max, que irá determinar quantos ciclos vamos ter.
Em cada ciclo vai haver output da variável i, que é incrementada no fim de cada ciclo.

Com o input de 10, o output vai ser:
Escreva quantos ciclos quer: 10
0
1
2
3
4
5
6
7
8
9

O for loop é útil quando sabemos a quantidade de ciclos que queremos. E normalmente, o valor da variável (se criarmos) é utilizada para obter os elementos de uma array (ou outro tipo de lista) por índice, "index". Mais sobre isto no futuro.

Existem outras formas de usar o for loop, porém são mais avançadas e só falarei no futuro.

Referências - 21/11/2019

Python - Interação com o Usuário

NO PYTHON, COMO EM QUALQUER LINGUAGEM DE PROGRAMAÇÃO, CRIAMOS PROGRAMAS QUE REALIZAM DIVERSAS FUNÇÕES, ALGUNS DELES INTERAGEM COM O UTILIZADOR - INPUT!

Input (traduzido para português "entrada") é um valor de um sistema ou de um usuário, por exemplo, numa calculadora temos de introduzir os valores (números) que queremos utilizar nos nossos cálculos, ou seja, estamos a "dar input" dos valores no programa da calculadora.


Existem duas maneiras de input:
  • Via teclado, ou seja, o usuário insere algum valor através do seu teclado;
  • Via rato(mouse), como o nome diz, o utilizador faz algum clique ou deslize com o rato;

No Python, utilizamos o comando 'input', como no exemplo a seguir:

1
2
name = input('Digite o seu nome:')
print('Olá ' + name + '!')

Assim o output seria:

1
Digite o seu nome:

e depois de introduzir o nome ou qualquer outro caracter e clicar na tecla 'Enter':

1
2
Digite o seu nome:André
Olá André!

Aviso - Sempre que se coloca input em qualquer código, a função converte esse valor numa string (str), por isso, se quisermos que o valor que introduzirmos tenha outro tipo de dado, teremos de indicar, como no exemplo a seguir:

1
2
age = int(input('Digite a sua idade: '))
print('Idade: ' + age)

seguindo o exemplo, o resultado seria algo como:


1
2
Digite a sua idade: 18
Idade: 18

Input é o oposto de Output (traduzindo para português, "resultado" ou "saída"); input é um valor que é introduzido pelo utilizador e é "lido" pelo programa, enquanto que output é um valor que o programa "dá ao utilizador", ou seja, é como um 'print'.

Para mais informações sobre input e output no Python 3: docs.python.org/3/tutorial/inputoutput.html


Referências:

domingo, 24 de novembro de 2019

iOS 4 - v. 4.2


iOS 4.2



 Esta atualização foi lançada no dia 22 de novembro de 2010, e esteve disponível para os iPhones 3G e posteriores, iPod Touch de 2ª geração e posteriores e para o iPad. Foi a primeira atualização que trouxe todos os principais recursos deste sistema operativo introduzidos no iPhone para o iPad. É também a última versão a rodar no iPhone 3G e iPod Touch 2ª geração devido às limitações de hardware e problemas de desempenho.

Edição Sonora

Edição Sonora


Na última publicação falei das várias categorias dos Óscares sendo uma delas a Edição Sonora.
Esta Edição Sonora passa até pela criação do próprio som. Heis um vídeo que mostra os vários processos de criação de som: https://www.youtube.com/watch?v=UO3N_PRIgX0

Sinceramente, não sou grande fã de sons falsos para usar num filme, na minha opinião todos os sons que vemos num filme deviam ser os sons do que estamos a ver por exemplo, indo buscar um dos exemplos do vídeo, o som do barco não devia ser som de água a cair de um balde para o chão mas sim o som do próprio barco nem que para isso tenha de por vários microfones em sítios específicos do barco. No entanto nem sempre é possível ter os sons reais das situações por não serem reais de todo como nos filmes Jurassic Park, não podemos usar sons de dinossauros porque...bom...os dinossauros estão extintos.
No que toca à edição do som não há melhor exemplo do que o filme que ganhou o Óscar nesta categoria, Bohemian Rhapsody. 
Na última cena do filme (que foi a primeira a ser gravada curiosamente) é nos mostrada uma recriação do concerto Live Aid a 13 de Julho de 1985, mais precisamente os 22 minutos a que os Queen tiveram direito.

https://www.indiewire.com/wp-content/uploads/2018/04/bohemian-rhapsody-2.jpg?w=780
Nesta cena, para além de uma grande montagem a nível de cenário e de figurantes está presente algo que poucas vezes foi feito em cinema. Por pouco tempo esteve online um programa para as pessoas cantarem as músicas que os Queen tocaram nesse dia. Posteriormente todas essas gravações foram enviadas para os editores do filme e sincronizadas com os sons do Live Aid original e com os atores na cena em questão.

Na próxima publicação irei falar sobre diferenças de lentes de diferentes aberturas e como manter o foco em vídeo.

Mensagem em destaque

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 recei...