Aprende con el ejemplo
Una de las mejores formas de aprender a programar en un idioma nuevo es mirando en muchísimos programas de ejemplo. Lo mejor que se puede hacer es copiar y pegar cada uno de los siguientes programas en un archivo de texto y compilarlo. Luego, prueba los experimentos. Al extender estos programas de ejemplo, te familiarizarás con los diferentes aspectos de C++, y te sentirás más seguro cuando llegue el momento de escribir programas de desde cero.
Ejemplo 1: Haz que tu compilador funcione.
Si aún no lo hiciste, copia y pega el siguiente programa clásico en un archivo de texto y compilarlo. Hay instrucciones disponibles para la compilación aquí.
Es probable que hayas analizado los detalles de este programa en el instructivo, así que no proporcionaremos una descripción línea por línea. Hay algunas cuestiones no obstante, sobre la legibilidad. Esto se refiere a los comentarios y formateo que ayudan a que los programas sean fáciles de leer, entender y mantener.
- Cada programa que escribimos comienza con un comentario de encabezado que proporciona el nombre del autor, su información de contacto, una breve descripción y su uso (si corresponde). Cada función comienza con un comentario sobre la operación y el uso.
- Agregamos comentarios explicativos con oraciones completas, siempre que el código no se documenta a sí mismo, por ejemplo, si el procesamiento es complicado, no evidente interesantes o importantes.
- Usa siempre nombres descriptivos: las variables son palabras separadas en minúscula de _, como en my_variable. Los nombres de las funciones usan letras mayúsculas para marcar palabras, como en MyExcitingFunction(). Las constantes comienzan con una "k". y utiliza letras mayúsculas para marcar palabras, como en kDaysInWeek.
- La sangría es un múltiplo de dos. El primer nivel tiene dos espacios; si más la sangría, usamos cuatro espacios, seis espacios, 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; }
Estos son algunos experimentos que puedes probar:
- Lo más importante es que te asegures de que puedes compilar y ejecutar este programa.
- Modifica el programa anterior para imprimir "Hello World!" 4 veces en una línea de 6 líneas, donde cada una se imprime en un campo de 17 espacios. Usar bucles for para hacerlo. Haz clic aquí para aprenderás a formatear el resultado con cout. Haz clic aquí para a ver la solución.
- Con el programa que acabas de completar, averigua cómo imprimir "Hello ¡Mundial!" alineado a la izquierda en los campos de 17 espacios (el valor predeterminado suele ser alineado a la derecha). Haz clic aquí para ver la solución.
Ejemplo 2: Obtén información
Es fácil obtener entradas desde el teclado en C++ mediante cin. A continuación, se muestra un ejemplo:
// 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; }
Un experimento tiene las siguientes características:
- Cuando se comete un error de entrada, la transmisión “se interrumpe” devoluciones de cina
false, y el programa se detiene. Es muy importante prevenir esos errores
como lo hicimos en el programa anterior. Pero ¿qué sucede si queremos recuperarnos del error
en lugar de que se detenga el programa? Hay dos pasos para recuperarte de
un error:
- Borra el error con cin.clear().
- Elimina los caracteres incorrectos de las novedades. Una forma de hacerlo es con cin.ignore().
Sigue estos dos pasos para escribir un programa que se recupere de las entradas erróneas. Usa que Google busque cómo funcionan estos métodos. Nuestra solución está aquí.
Ejemplo 3: ¿Qué produce este programa?
#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; }
Ejemplo 4: La descomposición facilita todo...
Es hora de que comencemos a escribir juegos de computadora. Esta primera será un poco simple, pero es un comienzo. Nuestra tarea es escribir un programa que implemente una conjetura el juego. Nuestro programa genera un número al azar entre 0 y 100. El jugador debe adivina el número secreto. El programa proporciona pistas como "eso es demasiado alto" o "eso es demasiado bajo" hasta que el jugador adivina el número secreto.
Trabajaremos en este juego en tres pasos.
- Averigua cómo generar un número al azar dentro de un rango de valores determinado.
- Crea una función principal que procese un intento del jugador y proporcione pistas.
- Agrega lo necesario para permitir múltiples intentos hasta que el jugador adivine el número.
Este proceso de desarrollo se denomina descomposición, lo que significa dividir una tarea. en subtareas, cada una de las cuales es fácil de hacer.
Realiza una búsqueda de Google comenzando con el paso 1 para ver cómo generar un número al azar. con C++. Intenta buscar "rand C++". Aquí está nuestra solución.
Para el paso 2, necesitamos recibir una entrada de número entero del reproductor (con los comprobación de errores en cin) y compáralo con el número secreto. Intentar escribir esta parte del juego por tu cuenta antes de consultar nuestros solución.
Por último, debemos agregar un bucle que siga recopilando las conjeturas del jugador hasta que adivinen el número secreto. Después de completar esta parte del puedes consultar nuestra solución.
La descomposición es una de las habilidades más importantes que debe aprender un programador. Ser capaz de dividir una tarea en partes manejables y, luego, completar una a la vez es fundamental, sin importar qué tan grande o pequeño sea el proyecto. Estos son algunos ejemplos para practicar la descomposición.
- Muchas tareas cotidianas ofrecen oportunidades para desarrollar destrezas en descomposición.
¡Puede sorprenderte descubrir que tu mente funciona así!
Por ejemplo, si tengo que limpiar una cocina muy desordenada (quizás algunos niñas pequeñas recién hornean un pastel), desglose las tareas para brindar un plan, para asegurarme de no tener que volver a trabajar después. No quiero lavar piso primero si hay todo tipo de cosas en los mostradores para limpiar, probablemente tenga que volver a cambiar el piso. Tal vez ponga todos los ingredientes fuera primero; meter todos los platos en el fregadero; limpiar los mostradores; lavar los platos; y, por último, limpia el piso. Hay otras formas de realizar pero al pensarlo primero, me ayuda a definir un plan que no requerirán reelaboración.
Usa las tareas cotidianas como ejemplos para desarrollar tus habilidades de descomposición. Quién sabe, incluso podría hacerte más eficiente en la casa.
- El máximo común divisor de dos números enteros es el número más alto que
los divide a ambos de manera uniforme. Por ejemplo, gcd(12, 18) = 6, gcd(−4, 14) = 2.
La forma más eficiente de calcular gcd es con el algoritmo euclidiano. Escritura
un programa con una función que calcule gcd para dos números enteros. Intenta hacer lo siguiente:
sin recursividad primero, lo que te ayudará a entender cómo el algoritmo
funciona.
Define tus subtareas de forma explícita; por ejemplo, busca el código para la forma euclidiana algoritmo; crear una función no recursiva para el algoritmo; etcétera. Aquí está nuestra solución.
Ejemplo 5: Acertijos matemáticos
Una de las ventajas de la computación es poder realizar una búsqueda por fuerza bruta de una solución a un problema. El ensayo y error funciona bien para algunos problemas. De hecho, las computadoras pueden ser especialmente buenas para estos problemas. Ten en cuenta lo siguiente:
Los caballos cuestan USD 10, los cerdos cuestan USD 3 y los conejos, solo USD 0.50. Un granjero compra 100 animales por USD 100, ¿cuántas de cada animal compró?
Existe una solución muy simple para este problema. Ve si puedes encontrar antes de analizar la nuestra.
Este es otro que puedes probar:
¿De cuántas formas puedes organizar 6 libros diferentes, de izquierda a derecha, en un estante?
Esta vez, te daremos la solución y te dejaremos que escribas el programa: 720
Ejemplo 6: Cadenas para tu consideración
¿Qué genera el siguiente programa?
#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; }
Haz clic en aquí para obtener ayuda.
Ejemplo 7: Próximos pasos con descomposición: su primer día en el trabajo
Acabas de conseguir un puesto como vendedor para la empresa ExerShoe, que se especializa en en zapatillas refinadas para hacer ejercicio que cuestan alrededor de $225 por par. Tu jefe te dio tres opciones de compensación, que debes elegir antes de comenzar tu primera día:
- Salario sencillo de 600 USD (o el equivalente en la moneda local) por semana;
- Un salario de $7,00 por hora más una comisión del 10% sobre las ventas;
- Sin salario, pero 20% de comisiones y USD 20 por cada par de zapatos vendidos
Como programador experto en C++, te das cuenta de que puedes escribir un programa que te ayude decidir cuál es la mejor opción de compensación.
Un enfoque común al realizar la descomposición en un programa más grande es crear una función principal que se asemeja a un esquema para resolver el problema. Luego, escribimos las funciones para hacer cada tarea.
Este es un primer examen del programa principal:
GetInput(WeeklySales); CalcMethod1(WeeklySales); CalcMethod2(WeeklySales); CalcMethod3(WeeklySales);
Comprueba si puedes implementar cada una de estas funciones antes de observar nuestras solución.
Ejemplo 8: ¿Qué está disponible y dónde?
¿Cuál es el resultado del siguiente programa?
// 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; }
Una vez que sepas la respuesta, consulta nuestra versión con comentarios del código aquí.
Ejemplo 9: Procesa archivos
El procesamiento de archivos en C++ se realiza con fstream. Para guardar en un archivo, declarar una ofstream y abrirla con el comando . Revisa esto en el siguiente ejemplo.
// 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; }
- Fíjate si puedes descifrar cómo abrir el archivo que acabas de crear y cómo mostrarlo los datos.Esta es nuestra solución.
- Ahora observa si puedes modificar este programa para permitir que el usuario ingrese muchas registros de datos con un bucle. También hay que volver a leer todos los datos a la vez.Esta es nuestra solución.
Ahora puedes probar algunos ejercicios y proyectos por tu cuenta.
Cómo es ser ingeniero de software en Google
Obtenga información sobre cómo es trabajar en Google en este sitio web.
Ejercicios y proyectos
Los siguientes ejercicios para practicar con C++ básico. No ofrecemos soluciones para estos ejercicios. y proyectos porque nos gustaría que trabajaras con otros estudiantes en este en este curso.
- Los pitidos de campo común de críquet en proporción directa con la temperatura del momento.
Sumar 40 a la cantidad de veces que un críquet canta en un minuto y, luego, dividir
ese valor por 4 nos da la temperatura. Escribir un programa que tome como entrada
la cantidad de cantos en un minuto e imprimirá la temperatura actual. Para
ejemplo,
Number of chirps: 120 The temperature is: 40.0 degrees.
- Escribir un programa que calcule la calificación final de un curso de programación
que estás realizando. Este es el esquema de calificación:
Final grades will be based on the following: 40% Assignments 15% Midterm Examination 35% Final Examination 10% Class Participation Grade
Tu programa debe pedirle al usuario las cuatro puntuaciones de las tareas: el examen parcial calificaciones finales y de sección. Luego, se calcula y se imprime la puntuación final. Para hacer los cálculos, promedias las cuatro puntuaciones de las tareas juntas y, luego, multiplícalo por 0.4 (40%). Luego, multiplicas la puntuación intermedia en 0.15, el final en 0.35 y la calificación de participación en 0.1. Luego, suma todos los resultados de estas multiplicaciones.
Usa las funciones siempre que puedas en este programa. Puedes crear una función Para obtener la entrada, pasa como parámetro la cadena que se mostrará en un texto explicativo. Este es un ejemplo de ejecución:
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
- A medida que los cronómetros electrónicos se vuelvan más baratos y precisos, no
la duda se saturará con mediciones del tiempo
imposiblemente precisas. Escribe un programa
que toma como entrada un período dado en segundos y genera la cantidad
de horas, minutos y segundos que representa. Por ejemplo:
Number of seconds: 3662 Hours: 1 Minutes: 1 Seconds: 2
- Supongamos que queremos imprimir un banner para lo siguiente:
"FREEZE congelador hace que tres árboles se congelen"
Queremos que las letras sean bastante grandes, ya que se trata de un banner:
etcéteraFFFFF F FFF F F EEEEE E EEE E EEEEE
Como es un buen descomponedor de problemas, probablemente hayas notado que, en lugar poner todos los couts en la función principal, sería mucho más eficiente para ponerlos en funciones. Así que podríamos tener una "printE" función y una "printZ" la función, etcétera.
Escribir un programa con funciones que cree un banner de una palabra o frase con muchas letras repetidas. Algunas posibilidades:
FREEZY BREEZE MAKES FLEAS SNEEZE TWEETLE BEETLE PADDLE BATTLE SIX SICK CHICKS KICK SUE SEWS SUE'S SOCKS BEN BENDS BIM'S BROOM
- Este es un "número mágico" Problema: pide a un usuario que ingrese un código
cuyo primer dígito es mayor que el último. El programa revertirá
al número y resta la reversión del número original. Finalmente,
revertir el número resultante y agregarlo a su forma no inversa. Obtén el resultado
resultado final. El número original que ingrese el usuario debe ser un número entero
(no tres caracteres). Piensa en cómo escribir una función que tome un
entero como entrada y devuelve el valor inverso de ese número. Ejemplo:
input number: 901 reverse it: 109 subtract: 901 - 109 = 792 reverse it: 297 add: 297 + 792 = 1089
- La ley exige que los fabricantes de productos alimenticios establezcan fechas de vencimiento
en sus productos, pero existe una brecha
la ley: no exige que los clientes
y la fecha de vencimiento
tenga alguna forma en particular. Por lo tanto, se puede escribir
suajili y que siga siendo legal.
Nadine, la prima tercera de Ralph Nader, es una espía de calidad de alimentos. Descubrió que muchos fabricantes de productos alimenticios comenzaron a codificar las fechas de vencimiento del producto para evitar que los clientes sepan la antigüedad de ese tipo de cosas.
Sin embargo, la codificación permite que los vendedores de comestibles determinen las fechas de vencimiento. si por alguna razón quieren hacerlo.
Un método de codificación popular:
- codificar los meses de enero a diciembre como “A” hasta la “L”
- codificar cada dígito de la fecha como “Q” hasta la "Z"
- codificar el año como “A” hasta la "Z" es decir, del 1 al 26, que luego agregado a 1995.
Nadine encontró una barra de pan bastante cuestionable con esta fecha: ARZM. Escribe un programa para determinar la fecha.
- Esta es una analogía numérica con un famoso truco de cartas. Pídele al usuario que ingrese un número de tres dígitos. Piensa en el número como ABC (donde A, B, C son las tres dígitos del número). Ahora, encuentra el resto de los números formados por ABC, BCA y CAB cuando se dividen por 11. A estos restos los llamaremos X, Y, Z Súmalos como X+Y, Y+Z, Z+X. Si alguna de las sumas es impar, incrementa o disminuirlo en 11 (la operación cuyo resultado sea un número positivo menor de 20; ten en cuenta que si la suma es 9, informa esto y detén el proceso). Finalmente, dividir cada una de las sumas por la mitad. Los dígitos resultantes son A, B y C. Escritura un programa que implementa este algoritmo.
A continuación, realiza la descomposición antes de escribir el programa. Usa funciones siempre que sea posible para crear programas bien estructurados.
Aplicación: Cómo visualizar música con animación
Los ingenieros de software crean una amplia variedad de aplicaciones interesantes e innovadoras. En cada módulo de este curso, presentamos una aplicación diferente que los ingenieros diseñada e implementada, para ayudarte a entender todas las diferentes áreas en las que los ingenieros de seguridad en la nube.
Aquí hay un aspecto interesante diseñada para visualizar música.