Aprenda pelo exemplo
Uma das melhores maneiras de aprender a programar em uma nova linguagem é analisando em muitos programas de exemplo. A melhor coisa a fazer é copiar e colar cada programa abaixo em um arquivo de texto e compile-o. Depois, faça os experimentos. Ao ampliar esses programas de exemplo, você vai conhecer diferentes aspectos de C++ e você se sentirá mais confiante na hora de escrever programas de zero.
Exemplo 1: faça seu compilador funcionar.
Se você ainda não tiver feito isso, copie e cole o seguinte programa clássico em um arquivo de texto e compilá-lo. Instruções sobre compilação estão disponíveis aqui.
É provável que você tenha abordado os detalhes desse programa no tutorial, Por isso, não forneceremos uma descrição linha por linha aqui. Há algumas coisas observar, no entanto, sobre a facilidade de leitura. Isso se refere aos comentários e formatação que ajudam a deixar os programas fáceis de ler, entender e manter.
- Todo programa que escrevemos começa com um comentário no cabeçalho, que indica o nome do autor, as informações de contato, uma breve descrição e o uso (se relevante). Toda função começa com um comentário sobre a operação e o uso.
- Adicionamos comentários explicativos usando frases completas sempre que o código não se documente, por exemplo, se o processamento for complicado, não óbvio, interessantes ou importantes.
- Sempre use nomes descritivos: as variáveis são palavras em letras minúsculas separadas por _, como em my_variable. Os nomes de funções usam letras maiúsculas para marcar palavras, como em MyExcitingFunction(). Constantes começam com um "k" e usar letras maiúsculas para marcar palavras, como em kDaysInWeek.
- O recuo está em múltiplos de dois. O primeiro nível tem dois espaços. se mais recuo é necessário, usamos quatro espaços, seis espaços etc.
// hello.cpp: Maggie Johnson // Description: a program that prints the immortal saying "hello world" #include <iostream> using namespace std; int main() { cout << "Hello World!" << endl; return 0; }
Alguns experimentos para testar:
- O mais importante é se certificar de que você pode compilar e executar esse programa.
- Modifique o programa acima para exibir "Hello World!" quatro vezes em um de 6 linhas, cada uma sendo impressa em um campo de 17 espaços. Usar repetições for para fazer isso. Clique aqui para aprender a formatar a saída com cout. Clique aqui para ver a solução.
- Usando o programa que você acabou de concluir, descubra como exibir "Hello Mundo!" alinhado à esquerda nos campos de 17 espaços (o padrão é geralmente alinhada à direita). Clique aqui para ver a solução.
Exemplo 2: receber entradas
É fácil receber a entrada do teclado em C++ usando cin. Exemplo:
// get_input.cpp: Maggie Johnson // Description: Illustrate the use of cin to get input. #include <iostream> using namespace std; int main() { int input_var = 0; // Enter the do while loop and stay there until either // a non-numeric is entered, or -1 is entered. Note that // cin will accept any integer, 4, 40, 400, etc. do { cout << "Enter a number (-1 = quit): "; // The following line accepts input from the keyboard into // variable input_var. // cin returns false if an input operation fails, that is, if // something other than an int (the type of input_var) is entered. if (!(cin >> input_var)) { cout << "You entered a non-numeric. Exiting..." << endl; break; // exit the do while loop } if (input_var != -1) { cout << "You entered " << input_var << endl; } } while (input_var != -1); cout << "All done." << endl; return 0; }
Um experimento:
- Quando ocorre um erro de entrada, o stream "falha", devoluções cin
false, e o programa será interrompido. É muito importante se proteger contra esses erros
como fizemos no programa acima. E se quisermos nos recuperar do erro,
em vez de interromper o programa? Há duas etapas para a recuperação
um erro:
- Limpe o erro usando cin.clear().
- Remova os caracteres incorretos do stream. Uma maneira de fazer isso é com cin.ignore().
Escreva um programa que se recupere de entradas ruins usando estas duas etapas. Usar Google para pesquisar como esses métodos funcionam. Confira nossa solução aqui.
Exemplo 3: o que esse programa gera?
#include <iostream> using namespace std; int main() { cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl; for (int c = 1; c < 10; c++) { cout << c << "| "; for (int i = 1; i < 10; i++) { cout << i * c << '\t'; } cout << endl; } return 0; }
Exemplo 4: a decomposição torna tudo mais fácil...
É hora de começarmos a criar jogos de computador! Este primeiro será um pouco simples, mas é um começo. Nossa tarefa é escrever um programa que implemente um palpite jogo. Nosso programa gera um número aleatório entre 0 e 100. O jogador precisa adivinhar o número secreto. O programa dá dicas como "muito alto" ou “essa é muito baixo" até que o jogador finalmente adivinhe o número secreto.
Vamos trabalhar neste jogo em três etapas.
- Saiba como gerar um número aleatório dentro de um determinado intervalo de valores.
- Criar uma função principal que processe um palpite do jogador e forneça dicas.
- Adicionar o que é necessário para permitir vários palpites até o jogador adivinhar o número.
Esse processo de desenvolvimento é chamado de decomposição, o que significa quebrar uma tarefa em subtarefas, e cada uma delas é fácil de realizar.
Começando pela etapa 1, faça uma pesquisa no Google para saber como gerar um número aleatório usando C++. Tente pesquisar em "rand C++". Aqui está nossa solução.
Para a etapa 2, precisamos receber um número inteiro do player (com as informações verificação de erros no cin) e compare-a com o número secreto. Tente escrever essa parte do jogo antes de conferir nossa solução.
Por fim, precisamos adicionar um loop que continua coletando palpites do jogador. até que finalmente adivinham o número secreto. Depois de concluir esta parte do consulte nossa solução.
A decomposição é uma das habilidades mais importantes para um programador aprender. Ser capaz de dividir uma tarefa em partes gerenciáveis e, em seguida, concluir uma por vez é fundamental, não importa quão grande ou pequeno o projeto. Confira alguns outras oportunidades para praticar a decomposição.
- Muitas tarefas diárias oferecem oportunidades para desenvolver habilidades em decomposição.
Você pode se surpreender ao descobrir que sua mente funciona assim!
Por exemplo, se eu tiver que limpar uma cozinha muito bagunçada (talvez alguns meninas que acabaram de fazer um bolo), separo as tarefas para criar um plano, e para não ter que refazer o trabalho mais tarde. Não quero lavar o andar primeiro, se tiver todo tipo de coisa nos balcões para limpar. provavelmente teria que fazer a tarefa novamente mais tarde. Então, talvez eu tenha colocado todos os ingredientes embora primeiro; mover todos os pratos para a pia; limpar os contadores, lavar os pratos; e, por fim, limpe o chão. Há outras maneiras de realizar esta tarefa, mas, ao pensar nisso primeiro, me ajuda a definir um plano que não vai exigir retrabalho.
Use tarefas cotidianas como exemplos para desenvolver suas habilidades de decomposição. Quem sabe, isso pode até tornar você mais eficiente em casa!
- O maior divisor comum de dois números inteiros é o maior número que
divide os dois uniformemente. Por exemplo, gcd(12, 18) = 6, gcd(-4, 14) = 2.
A maneira mais eficiente de calcular o gcd é com o algoritmo euclidiano. Gravação
Um programa com uma função para calcular o gcd de dois números inteiros. Tente fazer o
sem recursão primeiro, isso ajuda a entender como o algoritmo
funciona.
Defina explicitamente suas subtarefas, por exemplo, encontre o código para a função euclidiana algoritmo criar uma função não recursiva para o algoritmo; etc. Confira aqui nossa solução.
Exemplo 5: quebra-cabeças de matemática
Um dos poderes da computação é a capacidade de fazer uma pesquisa de força bruta por uma solução para um problema. Tentativas e erros funcionam bem para alguns problemas. Na verdade, os computadores são especialmente bons para resolver esses problemas. Considere o seguinte:
Cavalos custam US $10, porcos custam US $3 e coelhos, apenas US $0,50. Um agricultor compra 100 animais por US $100, quantos de cada animal ele comprou?
Há uma solução incrivelmente simples para esse problema. Veja se consegue encontrar antes de ver os nossos.
Tente novamente:
De quantas maneiras é possível organizar seis livros diferentes, da esquerda para a direita, em uma estante?
Desta vez, forneceremos a solução e deixaremos você criar o programa: 720.
Exemplo 6: strings para consideração
O que o programa abaixo gera?
#include <iostream> using namespace std; int main() { string str1 = "To be or not to be, that is the question"; string str2 = "only "; string str3 = str1.substr(6, 12); str1.insert(32, str2); str1.replace(str1.find("to be", 0), 5, "to jump"); str1.erase(9, 4); cout << str1 << endl; for (int i = 0; i < str3.length(); i++) cout << str3[i]; cout << endl; }
Clique em aqui para receber ajuda.
Exemplo 7: próximos passos com decomposição: seu primeiro dia no trabalho
Você acabou de conseguir um cargo como vendedor na empresa ExerShoe, especializado em tênis de alta qualidade para exercícios que custam cerca de US $225 por par. Seu chefe deu a você três opções de compensação, que você deve escolher antes de começar sua primeira dia:
- Salário direto de US $600 por semana
- Um salário de US $7,00 por hora mais uma comissão de 10% sobre vendas;
- Sem salário, mas 20% de comissões e US $20 por cada par de sapatos vendido
Você, sendo um programador especialista em C++, descobre que pode criar um programa para ajudar decidir a melhor opção de remuneração.
Uma abordagem comum ao fazer a decomposição para um programa maior é criar uma função principal que parece um esboço para resolver o problema. Depois, escrevemos as funções para realizar cada tarefa.
Aqui está a primeira etapa do programa principal:
GetInput(WeeklySales); CalcMethod1(WeeklySales); CalcMethod2(WeeklySales); CalcMethod3(WeeklySales);
Veja se você pode implementar cada uma dessas funções, antes de olhar para nossos solução.
Exemplo 8: o que está disponível onde?
Qual é o resultado do programa a seguir?
// scope.cpp, Maggie Johnson // Description: A program to illustrate different scopes #include <iostream> using namespace std; int a = 18; int b = 6; int function1(int a, int b) { return a - b; } int function2() { int c; c = a + b; return c; } int main() { int b = 12; int c = 0; a = function1(b, a); c = function2(); cout << "a: " << a << " b: " << b << " c: " << c << endl; }
Depois de descobrir a resposta, confira nossa versão comentada do código aqui.
Exemplo 9: processamento de arquivos
O processamento de arquivos em C++ é executado usando fstream. Para salvar em um arquivo, declarar um "ofstream" e abri-lo usando a expressão "out" modo Marque esta opção no exemplo a seguir.
// file.cpp, Maggie Johnson // Description: An illustration of file processing #include <fstream> #include <iostream> using namespace std; int main() { char first_name[30], last_name[30]; int age; char file_name[20]; // Collect the data. cout << "Enter First Name: "; cin >> first_name; cout << "Enter Last Name: "; cin >> last_name; cout << "Enter Age: "; cin >> age; cout << endl << "Enter the name of the file: "; cin >> file_name; // Create an ofstream called People, open the stream for output. ofstream People(file_name, ios::out); // Write the output to the stream. People << first_name << endl << last_name << endl << age << endl; return 0; }
- Veja se consegue descobrir como abrir o arquivo recém-criado e exibir os dados.Confira nossa solução.
- Agora, veja se é possível modificar o programa para permitir que o usuário insira muitas registros de dados usando um loop. Também queremos ler todos os dados, um gravar por vez.Confira nossa solução.
Agora você já pode tentar alguns exercícios e projetos por conta própria.
Como é ser engenheiro de software no Google
Leia sobre como é trabalhar no Google neste site.
Exercícios e projetos
Os exercícios a seguir oferecem mais prática com o C++ básico. Não fornecemos soluções para esses exercícios e projetos, porque queremos que você trabalhe com outros alunos neste neste curso.
- Os avisos de críquete em campo comuns em proporção direta à temperatura atual.
Somar 40 ao número de vezes que um críquete canta em um minuto e dividir
esse valor por 4 nos dá a temperatura. Escrever um programa que recebe como entrada
o número de avisos em um minuto e mostra a temperatura atual. Para
exemplo,
Number of chirps: 120 The temperature is: 40.0 degrees.
- Escreva um programa que vai calcular sua nota final em um curso de programação
que você está fazendo. Veja o esquema de avaliação:
Final grades will be based on the following: 40% Assignments 15% Midterm Examination 35% Final Examination 10% Class Participation Grade
Seu programa deve pedir ao usuário as quatro pontuações das tarefas: o de meio de ano, das notas finais e das seções. Em seguida, a pontuação final é calculada e exibida. Para fazer os cálculos, calcule a média das quatro pontuações das tarefas. e depois multiplicá-lo por 0,4 (40%). Multiplique a pontuação de meio de ano em 0,15, a final por 0,35 e a nota de participação em 0,1. Depois, some todos os resultados dessas multiplicações.
Use funções sempre que possível neste programa. É possível criar uma função para receber a entrada passando como parâmetro a string a ser exibida de forma explicativa. Veja um exemplo de execução:
Enter the score for the first assignment. 75 Enter the score for the second assignment. 85 Enter the score for the third assignment. 82 Enter the score for the fourth assignment. 94 Enter the score for the midterm. 81 Enter the score for the final. 89 Enter the score for the section grade. 100 The final grade is: 86.9
- À medida que os cronômetros eletrônicos se tornam mais baratos e mais precisos, não
ser inundados com medições de tempo extremamente precisas. Criar um programa
que toma como entrada um período fornecido em segundos e gera o número
de horas, minutos e segundos que ela representa. Por exemplo,
Number of seconds: 3662 Hours: 1 Minutes: 1 Seconds: 2
- Suponha que queremos exibir um banner para o seguinte:
"O FREEZY BREEZE FAZ TRÊS TRÊS CONGELANÇAS"
Queremos que as letras fiquem bem grandes, já que este é um banner:
etc.FFFFF F FFF F F EEEEE E EEE E EEEEE
Como um bom decompositor de problemas, você provavelmente notou que, em vez de colocar todos os atributos na função main, seria muito mais eficiente para colocá-los em funções. Então poderíamos ter um "printE" função e uma "printZ" função e assim por diante.
Escrever um programa com funções que criam um banner de uma palavra ou frase com muitas letras repetidas. Algumas possibilidades:
FREEZY BREEZE MAKES FLEAS SNEEZE TWEETLE BEETLE PADDLE BATTLE SIX SICK CHICKS KICK SUE SEWS SUE'S SOCKS BEN BENDS BIM'S BROOM
- Aqui está um "número mágico" problema: pedir a um usuário para inserir um código de três dígitos
número cujo primeiro dígito é maior que o último. Seu programa reverterá
o número e subtrair a reversão do número original. Por fim,
reverter o número resultante e adicioná-lo à forma não invertida. Gere o resultado
o resultado final. O número original inserido pelo usuário precisa ser um número inteiro
(não três caracteres). Pense em como escrever uma função que use
inteiro como entrada e retorna o inverso desse número. Exemplo:
input number: 901 reverse it: 109 subtract: 901 - 109 = 792 reverse it: 297 add: 297 + 792 = 1089
- A lei exige que os fabricantes de produtos alimentícios coloquem datas de validade
nos produtos deles, mas há uma brecha na legislação: ela não exige
que a data de validade
seja de uma forma específica. Por isso, ela pode ser escrita
suaíli e continuam legais.
A prima de terceiro Ralph Nader, Nadine, é uma espiã da qualidade de alimentos se autonomeada. Ela descobriu que muitos fabricantes de produtos alimentícios começaram a codificar as datas de validade do produto para evitar que os clientes saibam a idade do produto.
Mas a codificação permite que os mercearias descubram as datas de validade se por algum motivo quiserem.
Um método de codificação conhecido:
- codificar os meses de janeiro a dezembro como "A" até a "L"
- codificar cada dígito da data como 'Q' a "Z"
- codificar o ano como "A" a "Z" ou seja, de 1 a 26, que é adicionado em 1995.
Nadine encontrou um pão particularmente questionável nesta data: ARZM. Escreva um programa para determinar a data.
- Essa é uma analogia numérica com um famoso truque de cartas. Peça ao usuário para entrar um número de três dígitos. Pense no número como ABC (onde A, B, C são os três dígitos do número). Agora, encontrar o resto dos números formados por ABC, BCA e CAB quando divididos por 11. Chamaremos esses restos de X, Y, Z) Some-os como X+Y, Y+Z, Z+X. Se alguma das somas for ímpar, aumente ou diminuí-lo em 11 (qualquer operação que resultar em um número positivo menor de 20 Se a soma for 9, basta informar e interromper o processo). Por fim, divida cada uma das somas pela metade. Os dígitos resultantes são A, B, C. Gravação um programa que implementa esse algoritmo.
A seguir, faça a decomposição antes de escrever seu programa. Use funções sempre que possível para criar programas bem estruturados.
Aplicativo: visualização de música com animação
Os engenheiros de software criam uma ampla variedade de aplicativos que costumam ser interessantes e inovadores. Em cada módulo deste curso, apresentamos um aplicativo diferente que os engenheiros projetadas e implementadas, para ajudar você a entender todas as diferentes áreas em que engenheiros trabalham.
Confira aqui um exemplo aplicativo criado para visualizar música.