Para iniciar a viagem pelo C++, vamos começar com variáveis, chamadas de funções e comentários.
Há dois tipos de comentários: de uma linha e de várias linhas.
Tudo o que vem depois de // na mesma linha é ignorado pelo compilador.
Os comentários de várias linhas também são conhecidos como comentários ao estilo C.
São delimitados por /* e */.
Tudo o que fica entre eles também é ignorado.
O C++ é uma linguagem com tipos.
Todos os tipos têm de ser conhecidos em tempo de compilação e, regra geral, tens de os indicar explicitamente.
O tipo de uma variável não pode mudar.
Uma variável inteira com o nome years pode ser declarada assim:
int years;
É boa prática inicializar as variáveis na declaração. O C++ oferece diferentes mecanismos para o fazer. A versão com chavetas está mais alinhada com o C++ moderno, mas a versão com o sinal de igual também é muito comum.
int tomatoes{80};
int potatoes = 40;
O C++ permite, de facto, usar variáveis não inicializadas. Enquanto não atribuíres um valor à variável de forma deliberada, esta fica indefinida e pode conter qualquer coisa. Para evitares erros de utilização antes da atribuição e comportamentos indefinidos, é aconselhável inicializar sempre. Um comportamento indefinido pode fazer o teu programa rebentar no pior momento possível, mesmo quando antes estava a correr bem. Nunca é demais repetir: evita comportamentos indefinidos a todo o custo.
Os operadores aritméticos como *, + ou - podem fazer parte de uma expressão como 3 * 2 ou tomatoes + potatoes.
Podes reatribuir variáveis, desde que mantenham o tipo:
tomatoes = tomatoes - 5; // tomatoes is now 75
potatoes = (32 * 2) + 11; // potatoes is now 75 as well
As funções têm um nome, um tipo de retorno e uma lista de parâmetros (possivelmente vazia).
Um exemplo de uma função chamada always_fortyseven, que devolveria sempre 47, seria assim:
int always_fortyseven() {
return 47;
}
Eis a vip_fee, que tem um parâmetro:
int vip_fee(int standard_fee) {
/*
vip_fee calculates the vip fee based on the standard_fee.
*/
int vip_multi{3};
return standard_fee * vip_multi;
}
Ou a total_fee, uma função com três parâmetros e uma chamada a outra função.
int total_fee(int vips, int adults, int kids) {
/*
total_fee calculates the total price for a group of VIP and adult guests with kids.
Kids get a flat discount on the standard fee.
VIP guest fees are calculated by calling vip_fee.
*/
int standard_fee{30};
int kids_discount{15};
int kids_total_fee = kids * (standard_fee - kids_discount);
int vips_total_fee = vips * vip_fee(standard_fee);
int adult_total_fee = adults * standard_fee;
return vips_total_fee + adult_total_fee + kids_total_fee;
}
Em C++, as funções não devolvem o valor da última instrução, ao contrário do que acontece noutras linguagens.
A palavra-chave return é obrigatória para o código compilar.
Os espaços em branco são usados para formatar o código-fonte e incluem espaços, tabulações e mudanças de linha. Como o compilador ignora os espaços em branco desnecessários, podes usá-los para estruturar o teu código. Um uso inteligente dos espaços em branco pode melhorar a legibilidade do teu código. Existem diferentes normas de formatação, mas são todas convencionais e não são impostas pelo compilador.
// Formatting makes it easier to find bugs
int eggs_yolks = 3;
int yeast = 15;
int flour=500;int sugar=200;// compact, but difficult to read
A namorada do Lucian está a caminho de casa e ele ainda não preparou o jantar de aniversário deles!
Neste exercício, vais escrever algum código para ajudar o Lucian a cozinhar uma lasanha requintada, seguindo o livro de receitas preferido dele.
Tens quatro tarefas, todas relacionadas com o tempo gasto a cozinhar a lasanha.
Define a função ovenTime(), que não recebe argumentos e devolve quantos minutos a lasanha deve estar no forno.
Segundo o livro de receitas, o tempo de forno esperado é de 40 minutos:
ovenTime();
// => 40
Define a função remainingOvenTime(int actualMinutesInOven), que recebe como argumento os minutos que a lasanha já esteve no forno e devolve quantos minutos a lasanha ainda tem de permanecer no forno, com base no tempo de forno esperado em minutos da tarefa anterior.
remainingOvenTime(30);
// => 10
Define a função preparationTime(int numberOfLayers), que recebe como argumento o número de camadas que adicionaste à lasanha e devolve quantos minutos gastaste a preparar a lasanha, partindo do princípio de que cada camada demora 2 minutos a preparar.
preparationTime(2);
// => 4
Define a função elapsedTime(int numberOfLayers, int actualMinutesInOven), que recebe dois argumentos: o primeiro é o número de camadas que adicionaste à lasanha e o segundo é o número de minutos que a lasanha já esteve no forno. A função deve devolver quantos minutos trabalhaste a cozinhar a lasanha. Esse valor é a soma do tempo de preparação em minutos com o tempo, em minutos, que a lasanha já passou no forno até ao momento.
elapsedTime(3, 20);
// => 26
Inscreve-te no Exercism para aprenderes e dominares C++ com 19 conceitos100 exercícios, e mentoria humana real, tudo grátis.