Estructura básica de un programa en C/C++
Ejemplo de un programa básico en C/C++
#include
using namespace std;
int main() {
cout << “Hola mundo!” << endl;
return 0;
}
Estructura básica de un programa en C/C++
Ejemplo de un programa básico en C/C++
#include
using namespace std;
int main() {
cout << “Hola mundo!” << endl;
return 0;
}
Inclusión de archivos de encabezado
Estructura básica de un programa en C/C++
Ejemplo de un programa básico en C/C++
#include
using namespace std;
int main() {
cout << “Hola mundo!” << endl;
return 0;
}
Uso global de las librerías estándard
Estructura básica de un programa en C/C++
Ejemplo de un programa básico en C/C++
#include
using namespace std;
int main() {
cout << “Hola mundo!” << endl;
return 0;
}
Declaración de la función principal
Estructura básica de un programa en C/C++
Ejemplo de un programa básico en C/C++
#include
using namespace std;
int main() {
cout << “Hola mundo!” << endl;
return 0;
}
Código a ejecutar por la función principal
Compilación y ejecución
Antes de poder ejecutar el programa que escribimos, es necesario compilarlo.
En DevC++ o CodeBlocks podemos usar los siguientes atajos:
F9: Compilar y ejecutar
CTRL+F9: Compilar (sin ejecutar)
CTRL+F10: Ejecutar (sin recompilar)
Práctica #1
Escriba y ejecute un programa que escriba su nombre completo en la pantalla dentro de un marco formado por asteriscos.
Ejemplo de salida:
****************************
* Me llamo Chamo *
****************************
Variables y asignación
Para declarar variables en C/C++ se escribe primero el tipo de variable, seguido del nombre de una o más variables (separados por comas).
Ejemplos:
int a;
int i, j, k;
float x, y;
Asignación de variables
Para asignar un valor a una variable se utiliza el operador =
Es posible asignar valores al momento de declarar las variables;
Ejemplos:
x = 10;
float a = 3.4, b = 5.6; c = -1.7;
Tipos de variables
char – entero de 8 bits
short – entero con signo de 16 bits
int – entero con signo de 32 bits
float – punto flotante de 32 bits
double – punto flotante de 64 bits
Modificadores: signed / unsigned / long
Operadores aritméticos
En C/C++ se pueden formar expresiones aritméticas con los operadores comunes:+, -, *, /
Debe tenerse siempre en cuenta que los operadores actúan de acuerdo al tipo de datos de los operandos involucrados. Ejemplo:
x = 5 / 2; // el resultado es 2
x = 5.0 / 2; // el resultado es 2.5
C/C++ no cuenta con un operador de potencia, pero se puede utilizar la función pow() de la librería math.h
Salida de datos a consola
En C++ se puede usar el flujo cout para imprimir información en la pantalla, utilizando el operador de salida de flujo <<
La constante endl imprime un retorno de carro
Ejemplos:
cout << “El valor de x es “ << x << endl;
cout << “El area del circulo es “ << 3.14159 * r * r;
cout << endl << endl << endl;
Práctica #2
Desarrolle un programa donde
Declare tres variables de punto flotante: a, b, c
Declare dos variables de tipo double: x1 y x2
Calcule las raíces (reales) x1 y x2 de la ecuación ax2 + bx + c = 0
Imprima los datos y resultados en la pantalla
Ejemplo de salida:
Calculo de las raices de una cuadratica
Coeficientes: a = 1, b = -1, c = -2
Raices: x1 = 2, x2 = -1
Entrada de datos desde consola
El flujo de entrada cin permite introducir datos desde el teclado y almacenarlos en variables.
Ejemplo:
int main() {
int x;
cout << “Escribe un numero entero: “;
cin >> x;
cout << “El numero que escribiste es: “;
cout << x << endl;
}
Práctica #3
Modifique el programa anterior para que el usuario pueda introducir los coeficientes a, b, c, sin necesidad de recompilar el programa.
El programa deberá imprimir mensajes informativos indicando al usuario qué hace el programa y qué información requiere.
Tarea #1
Escriba un programa que pida al usuario dos enteros y los almacene en las variables A y B. Luego el programa debe intercambiar el valor de A y B.
Escriba un programa que calcule e imprima el perímetro y el área de una circunferencia de radio r dado por el usuario.
Escriba un programa que, usando solamente dos variables, calcule el promedio de cinco enteros dados por el usuario.
Escriba un programa que dados dos puntos en el plano (x1,y1) y (x2,y2), calcule y escriba la distancia entre ellos (sugerencia: utilice la función sqrt() de la librería math.h).
Escriba un programa que dados tres puntos en el plano, calcule e imprima las coordenadas del centro y el radio de la circunferencia que pasa por los tres puntos.
EXPRESIONES BOOLEANAS Y ESTRUCTURAS DE DECISION
Expresiones booleanas
Una expresión booleana es aquella que después de evaluarse puede tomar uno de dos posibles resultados: verdadero o falso.
En lenguaje C/C++, los valores verdadero y falso se representan, respectivamente, con los números 1 y 0.
Sin embargo, cualquier valor distinto de cero es considerado como “verdadero”.
Operadores de comparación
Una manera de formar expresiones booleanas es utilizando los operadores de comparación:
a == b – igualdad
a < b – menor a
a > b – mayor a
a != b – distinto de
a <= b – menor o igual a
a >= b – mayor o igual a
Estructuras de decisión
Una de las principales aplicaciones de las expresiones booleanas es la toma de decisiones:
if (expresion) {
// código a ejecutar si la
// expresión es verdadera
} else {
// código a ejecutar si la
// expresión es falsa
}
Operadores booleanos
Las expresiones booleanas pueden combinarse mediante los operadores booleanos clásicos:
&& – conjunción (and)
|| – disyunción (or)
! – negación (not)
Notar que estos operadores difieren de los operadores lógicos binarios: &, |, ~
Notar que, en muchos casos, los operadores && y || pueden reemplazarse, respectivamente, por el producto y la suma.
Práctica #1
Escriba un programa que pida al usuario tres números enteros entre 0 y 10 (inclusive).
El programa debe verificar que los números están en el rango correcto, y en ese caso imprimir el promedio de los números. En caso contrario debe imprimir un mensaje de error indicando cuál de los números está fuera de rango.
Práctica #2
Elabore un programa que pida al usuario los coeficientes de una cuadrática y calcule sus raíces, las cuales posiblemente son complejas. El programa deberá indicar de qué tipo son las raíces (reales, imaginarias o complejas) e imprimir los resultados en el formato adecuado.
Tarea #2
Elabore un programa que pida al usuario cinco números enteros e imprima el menor y el mayor de ellos.
Escriba un programa que tome como entrada las coordenadas de un punto en el plano cartesiano e indique al usuario en qué cuadrante se encuentra el punto.
Elabore un programa que pida al usuario cuatro calificaciones parciales entre 0 y 10. El programa debe verificar que los datos estén en el rango adecuado y calcular e imprimir el promedio. De acuerdo al promedio, deberá también imprimir alguno de los siguientes mensajes: de 6 a 10: “Aprobado”, de 5 a 6: “Derecho a extraordinario”, de 2 a 5: “Derecho a título”, y de 0 a 2: “Sin derecho a acreditar”.
Elabore un programa que pida al usuario su fecha de nacimiento (en el formato día, mes, año), así como la fecha actual, y calcule la edad del usuario en días. El programa debe verificar que las fechas son correctas (e.g., 30/02/1998 y 10/13/1980 no lo son) y tomar en cuenta los años bisiestos.
INSTRUCCIÓN SWITCH
Instrucción switch
La instrucción switch se utiliza cuando se requiere tomar una decisión entre múltiples posibilidades, de acuerdo al valor de una variable o expresión entera.
Una de las principales aplicaciones es la elaboración de un “menú de opciones” dentro de un programa.
Sintaxis
switch (expresion) {
case c1: // código a ejecutar en caso de que expresion == c1
break;
case c2: // código a ejecutar en caso de que expresion == c2
break;
…
default: // código (opcional) a ejecutar en caso de que no se cumpla // ninguna de las condiciones anteriores
}
* Es importante recordar que c1, c2, etc. deben ser constantes enteras!
Ejemplo: menú de opciones
int a, b, r, opcion;
cout << “1.- Suma” << endl;
cout << “2.- Resta” << endl;
cout << “3.- Producto” << endl;
cout << “4.- División” << endl;
cout << “Elige una opción: “ << endl;
cin << opcion;
switch (opcion) {
case 1: r = a + b; break;
case 2: r = a – b; break;
case 3: r = a * b; break;
case 4: r = a / b; break;
default: cout << “Opcion invalida” << endl;
}
cout << “El resultado es “ << r << endl;
int a, b, r, opcion;
cout << “1.- Suma” << endl;
cout << “2.- Resta” << endl;
cout << “3.- Producto” << endl;
cout << “4.- División” << endl;
cout << “Elige una opción: “ << endl;
cin << opcion;
if (opcion == 1) {
r = a + b;
} else {
if (opcion == 2) {
r = a – b;
} else {
if (opcion == 3) {
r = a * b;
} else {
if (opcion == 4) {
r = a / b;
} else {
cout << “Opcion invalida” << endl;
}
}
}
}
cout << “El resultado es “ << r << endl;
Usando switch
Usando if
Práctica #1
En la música occidental, las notas Do, Re, Mi, Fa, Sol, La, y Si suelen representarse mediante las letras C, D, E, F, G, A, y B, respectivamente.
Elabore un programa que tome como entrada la letra (mayúscula o minúscula) correspondiente a una nota e imprima su nombre. Si la letra dada no corresponde a una nota, el programa debe indicarlo mediante un mensaje de error.
Sugerencia: utilice el tipo char para almacenar caracteres y recuerde que las constantes de este tipo se escriben entre apóstrofos (e.g., ‘a’, ‘z’, ‘*’, etc.).
Tarea #3
Considere el siguiente problema: 3 misioneros y 3 caníbales desean cruzar un río usando una balsa para 2 pasajeros. En ningún momento puede haber mas caníbales que misioneros en cualquier orilla del río. Los movimientos válidos consisten en trasladar uno o dos personajes de una orilla a otra, alternando en cada movimiento el origen y destino.
ESTRUCTURAS DE ITERACION
Estructuras de iteración
Las estructuras de iteración se utilizan cuando es necesario repetir un cierto bloque de código un número determinado o indeterminado de veces.
Todas las estructuras de iteración se basan en la ejecución de un bloque de código de manera repetida mientras el valor de una expresión booleana de control sea verdadero.
Por lo tanto, es muy importante asegurarse de que la condición se vuelve falsa en algún momento, de manera que el programa no quede atascado en un ciclo infinito.
Instrucción while
Sintaxis:
while (expresion) {
// Código a ejecutar de manera repetida
// mientras la expresión sea verdadera
}
Ejemplo
El siguiente programa calcula el factorial de n, donde n es dado por el usuario:
int main() {
int i, n, factorial;
cout << “Dame el valor de n: “;
cin >> n;
factorial = 1;
i = 1;
while (i <= n) {
factorial = factorial * i;
i = i + 1;
}
cout << “El factorial de “ << n << “ es “ << factorial << endl;
}
Práctica #1
Elabore un programa que pida al usuario un entero positivo n. Luego, el programa debe pedir al usuario n enteros usando un ciclo. El programa deberá encontrar el mayor, menor, y promedio de los valores dados por el usuario e imprimirlos al final.
Instrucción do…while
La instrucción while siempre verifica primero que la condición de control sea verdadera antes de ejecutar el bloque de código.
Si se desea ejecutar el bloque de código al menos una vez antes de verificar la condición, se puede usar la instrucción do…while:
do {
// bloque de código a ejecutar al menos una vez
} while (expresion);
Práctica #2
Realice un programa que pida al usuario una serie de números enteros no negativos utilizando un ciclo do…while. Una vez que el usuario introduzca un número negativo, el ciclo deberá terminar y el programa deberá imprimir el mayor, menor, y promedio de todos los números ingresados (excepto el último).
Tarea #4
Elabore un programa que implemente el método de bisección para encontrar la raíz en el intervalo (0, 3) de la función
Elabore un programa que implemente la regla del trapecio para calcular la integral
Elabore un programa que elija un número aleatorio n entre 1 y 100 (usar funciones rand() y srand() de stdlib.h). El programa dará al usuario 5 oportunidades para adivinar el número: en cada oportunidad, el usuario ingresará su respuesta y el programa indicará si la respuesta es menor, mayor, o igual a n (en cuyo caso el usuario habrá ganado). Si después de 5 intentos el usuario no ha adivinado, entonces habrá perdido el juego.
Tarea #4 (sugerencias)
Algoritmo de bisección:
Dado el intervalo (a, b) y una función f(x) contínua en (a,b):
Verificar que f(a) f(b) < 0. De lo contrario, no podemos asegurar que existe una raíz en el intervalo dado y el algoritmo debe terminar.
Hacer r=a. Iterar hasta que r converja:
Obtener una aproximación de la raíz r como r = (a+b) / 2 .
Si f(a) f(r) < 0, entonces la raíz está en la mitad izquierda del intervalo. Por lo tanto, hacer b = r.
En caso contrario, entonces la raíz está en la mitad derecha del intervalo. Por lo tanto, hacer a = r.
Regla del trapecio:
donde n es el número de segmentos y h = (b-a)/n.
ESTA PRESENTACIÓN CONTIENE MAS DIAPOSITIVAS DISPONIBLES EN LA VERSIÓN DE DESCARGA