Professional Documents
Culture Documents
Libro de entorno
a Programación
en lenguaje C.
U.E.S.L
Área Técnica
Hay muchos compiladores... por ejemplo, Turbo C++, DJGPP, Borland C++, etc...
Puedes utilizar cualquier compilador, pero recomendamos que si estás empezando utilices el
mismo que voy a utilizar durante el curso, así no te perderás.
El compilador que vamos a utilizar en este curso se llama Dev C++.
2- Nos aparece la siguiente ventana, en la cual seleccionaremos nuestro idioma y después click en
"OK".
6- Se comenzará a instalar el compilador... y casi cuando esté acabando, nos aparecerá una
ventana para indicar si queremos que se instale para todos los usuarios del ordenador, click en "Si"
o "No", depende lo que quieras.
Esto es todo, ya tenemos el compilador de C instalado en nuestro ordenador. Tiene que verse así:
Por si algo no ha quedado del todo claro, ahora adjunto un vídeo donde se ve mejor el proceso
que hay que llevar a cabo para la instalación del compilador:
Lo único que hace este programa es mostrar la frase "Hola Mundo" en la consola de nuestro
Windows.
Para ejecutar nuestro programa pulsamos la tecla F9 o bien vamos al Menú ejecutar > compilar y
ejecutar.
Primero quiero dejar claro que las frases que llevan antes "//" son cosas que el compilador no
ejecuta. Esto se llama comentarios, y nos sirven para que nosotros mismos, los programadores,
sepamos que hace cada instrucción. En este tipo de programas no, pero imaginad un programa de
más de 3000 líneas de código; éste tendría que tener comentarios aclaratorios para que no se
convierta en un caos.
Bien, empezamos a analizar el código (ya os digo que no temáis si no entendéis cosas ahora, es
completamente normal, a todos nos ha pasado).
#include <stdio.h>
#include <stdlib.h>
Estos "#includes" hacen referencia a librerías. Las librerías las veremos más adelante, por lo que ya
entenderéis por qué están ahí. De momento ponedlas sin más, porque son necesarias para que
funcione el programa.
printf es una función que nos permite escribir por pantalla. Escribiremos entre paréntesis y
comillas como veis, la frase a mostrar, y el programa la mostrará. Aclaro que el "\n" es equivalente
a un salto de línea en la consola de Windows.
system("PAUSE");
Y esta instrucción dejará en pausa a la consola de Windows hasta que pulsemos una tecla para que
se cierre. Comprobad si queréis que si quitáis el "pause", la consola se cerrará nada más ejecutar
el programa, por lo que no podremos ver el contenido de nuestro programa.
PrimerPrograma.cpp
Para aclarar un poco mejor todo, vamos a ver un vídeo donde se realizan diversos cambios en el
código para que se aprecien esos cambios en el programa.
-Tipo double: también contienen datos numéricos con decimales, pero a diferencia del float,
estas variables son de más tamaño, es decir, que pueden almacenar números más grandes.
Y luego estarían los datos referentes a las caracteres o cadenas:
-Tipo char: estas variables contienen un solo carácter. Por ejemplo: A, h, b, 1, 5... lo que sea,
pero solo un dígito.
-Tipo string: son cadenas de caracteres, no es un tipo de datos como tal, pero ya veremos más
adelante cómo se utilizan.
Por último un tipo de dato diferente, dato bool, que puede tomar solo dos valores "true" o
"false", es decir, verdadero o falso.
No os preocupéis que todo esto se va a poner en práctica en la siguiente lección, donde enteréis
mejor el uso de las variables.
Recordad los comentarios que voy poniendo en el código, son muy útiles para que sepáis qué está
realizando cada instrucción del programa.
Cabe decir que la creación y asignación de las variables se pueden hacer en una sola línea también,
eso lo podéis hacer como queráis. En este caso, lo hice aparte para que se vea un poco más claro,
pero también se puede hacer lo siguiente:
int num = 10;
Lo novedoso de esta lección es la muestra por pantalla de valores que hemos dado a nuestras
variables, esto se hace a través del printf, como se ve en el código. Esto funciona de la siguiente
manera:
printf("<texto_a_mostrar>", <variables_a_mostrar>)
int -> %i
char -> %c
float -> %f
double -> %f
Como veis, las constantes se definen en la parte superior, debajo de los "includes". La estructura
es la siguiente:
Se escribe así todo directamente, no hace falta utilizar "=" para asignar el valor a la constante.
Este sencillo programa lo que hace es multiplicar 3 por PI y mostrarlo por pantalla.
En el video comprobaremos que no se puede cambiar el valor de la constante, y también se verá
una forma más corta de realizar el ejercicio, que es mostrando directamente en el "printf" el valor
de 3 por PI, de forma que nos podemos saltar la asignación del resultado a la variable "num",
incluso podemos obviar la creación de la variable "num"... y hacerlo todo directamente, de esta
forma:
Recordad que ahora, al ser un número con decimales, utilizamos el "%f" para mostrarlo.
Código fuente:
Descargar Constantes.cpp
Todo esto en cuanto a teoría. Ahora veamos cómo se aplica a nuestras variables de un programa
en C. Vamos a realizar un ejercicio donde hay 2 números, y estos dos números se sumen, resten,
multipliquen y dividan; y todo lo que vayamos haciendo, se mostrará por pantalla.
El código es el siguiente (puede parecer un poco grande, pero no os asustéis, ya que realmente
siempre se realiza lo mismo, solo vamos cambiando el operador en cada caso):
Como siempre adjunto el código fuente para que experimentéis, que así también se aprende
mucho.
Descargar codigo OperadoresAritmeticos.cpp
Y por supuesto, un vídeo en el que veréis el resultado del programa y algunos cambios que podéis
hacer al código para entender mejor el funcionamiento de dichos operadores:
Así que vamos con la teoría. Bien, estos operadores se utilizan para comparar. Compararemos
valores de variables por ejemplo para saber si una variable contiene el mismo valor que otra
variable. Estos operadores se utilizan para comprobar si una condición se cumple o no.
Suponiendo que tenemos la variable "a" y variable "b":
Esto es lo que podemos ver en cuanto a teoría. Como ya he dicho anteriormente, primero
tenemos que ver las sentencias de control para aprender realmente a poner todo esto en práctica.
Aunque como se ve en la tabla, no tiene mucha complicación, son comparaciones básicas entre
variables
Operadores lógicos
Como ocurre en la anterior lección, esta también va a ser meramente teórica, ya que tampoco
podemos ponerla en uso con los conocimientos aprendidos hasta ahora. Estos son operadores que
se utilizan para comparar más de dos condiciones.
Os dejo la tabla de los 3 operadores lógicos que vamos a ver. Ahora vamos a suponer que tenemos
4 variables, como pueden ser 'a', 'b', 'c', 'd'.
En cambio, en el caso del segundo operador (||), se cumpliría con que una de todas las
condiciones fuera correcta.
Y el operador (!) nos sirve para negar cualquier condición. Recordad meter dicha condición entre
paréntesis.
Repito que estos operadores aún no se pueden entender bien del todo hasta que no los pongamos
en práctica más adelante. No os preocupéis que en las lecciones correspondientes os quedará
todo mucho más claro.
Ejercicio nº 1
Llegados a este punto vamos a elaborar un ejercicio para poner en práctica lo que sabemos hasta
ahora.
A lo largo del curso iré haciendo algún que otro ejercicio para que podáis practicar por vosotros
mismos y se os queden mejor los conceptos de programación. No os preocupéis que en la
siguiente lección estará la solución a este ejercicio.
Sin más preámbulos, vamos con el enunciado del ejercicio:
EJERCICIO Nº 1
Realiza un programa con 3 variables, dos para números enteros, y otra
llamada "resultado". Inicializa las variables numéricas con los valores 7
y 2, respectivamente y:
-Muestra por pantalla la resta de estos dos números.
-Muestra por pantalla la suma de estos dos números, multiplicada por
10. Y ese 10, será el valor de una constante creada con anterioridad por
nosotros.
-Intenta realizar el mismo ejercicio sin la creación de la variable
"resultado".
Solución ejercicio nº 1
Si ya has hecho el ejercicio propuesto en la lección anterior, aquí puedes ver la solución.
Según su enunciado, podíamos hacer el ejercicio con la variable "resultado", y mejorar el
programa haciéndolo más eficiente ahorrándonos hacer la variable "resultado". Veamos las dos
formas:
Con la variable resultado
Primero se ejecutaría DIEZ * num2 y luego el resultado de eso se sumaria a num1, y no es eso
lo que queremos.
Creamos la variable "num", indicamos al usuario a través de un mensaje por pantalla que
introduzca un número... y ahora viene la nueva instrucción que analizaremos:
En el valor entre comillas escribiremos el "%" y la letra adecuada para cada tipo de dato, y luego,
separado por una "," escribimos el nombre de la variable donde queremos que se guarde ese
número, en este caso "num", y fijaos que delante tiene un "&". Es necesario ponerlo, aunque
ahora no entendáis bien el por qué. Se entenderá cuando veamos los punteros unas lecciones
más adelante.
Este programa lo único que hace es mostrar por pantalla ese número tecleado por el usuario.
Ahora bien, si lo que queremos es meter un carácter, ya no nos sirve esta función. Para ello,
tendremos que hacer otro procedimiento. Se lleva a cabo con la función getche();
Veamos un ejemplo para introducir un carácter.
caracter = getche();
Descargar IntroduciendoDatosPorTeclado.cpp
Descargar IntroduciendoDatosPorTeclado2.cpp
if (condicion)
{
... //Aquí las instrucciones se ejecutarán solo si se cumple la
condición}
Y eso es todo. Simplemente ponemos la condición entre paréntesis y dentro de los corchetes "{ ...
}" escribiremos el código que ejecutaremos si esa condición se cumple.
Veamos cómo funciona con un ejemplo práctico:
Este programa pedirá al usuario que introduzca un número, luego pondremos una condición "si el
número del usuario es mayor que 5...", y si es correcto escribiremos por pantalla que
efectivamente, ese número introducido es mayor a 5. Si no, no ocurrirá nada y el programa
acabará. En la siguiente lección veremos como hacer que si no se cumple la condición se ejecuten
otras instrucciones.
Como veis, en la condición se utilizan los operadores de comparación, en este caso el operador ">"
que nos servirá para comprobar si el número es mayor que 5. Con este sencillo programa espero
que se haya entendido bien la finalidad de los "If".
Descargar If.cpp
Vídeo del funcionamiento del programa:
Anl. Sist. Daniel Villamar Avilés 19
Sentencia If... Else
En la lección anterior hemos visto como es una sentencia IF simple, ahora vamos a ver como
completarla con un ELSE. De esta forma podemos hacer que cuando la condición se cumpla se
ejecuten ciertas instrucciones, y cuando no se cumpla, se ejecuten otras instrucciones,
dependiendo del caso.
Siguiendo con el ejemplo anterior, recordad que el programa escribía por pantalla cuando el
número introducido por el usuario era mayor a 5. Pero... ¿y si es menor?
Pues si es menor, vamos a hacer que también se nos avise por pantalla, gracias al "else".
Cuando acabe el IF añadimos ELSE, también encerrado entre { ... }. Ahí dentro escribiremos las
instrucciones que queremos ejecutar si no se cumple la condición. En este caso, escribimos por
pantalla que el número es menor que 5.
Ahora bien, ¿y si el número introducido fuese el 5? El programa no mostraría nada, porque el
número ni es mayor, ni es menor que el 5, por lo tanto no ejecutaría ni las instrucciones del IF ni
del ELSE.
Para estos casos, podemos hacer un IF/ELSE anidados, de forma que en el ELSE podemos
introducir otro IF, y así con cuantas condiciones queramos.
Veamos un ejemplo:
Se pueden poner tantos ELSE IF como se quiera, aunque en este ejemplo solo es necesario uno, se
pueden dar ocasiones en las que se necesiten más.
Descargar IfElse.cpp
Descargar IfElse2.cpp
Esta sentencia sirve para crear muchas condiciones de igualdad. Es útil por ejemplo para la
creación de un menú. Imaginad que tenemos un menú con 4 opciones. Pues con el switch
podemos hacer que dependiendo de la opción que elijas se ejecute un código u otro.
La estructura del switch es la siguiente:
switch (<variable>)
{
case 1:
// código que se ejecuta si elige la opción 1
break;
case 2:
// código que se ejecuta si elige la opción 2
break;
...
}
Y así con todas las opciones que queramos introducir. Si el usuario no elige una opción del 1 al 4,
entonces se podría ejecutar otro código diferente; lo haremos a través de un "default" que se
pondrá al final de todas las opciones, como vamos a ver en el ejemplo práctico de C.
Lo que hacemos es crear la variable "num", pedir al usuario que introduzca un número y lo
asignamos a la variable "num". Luego switch comprueba que número ha sido el introducido por el
usuario, y dependiendo del número, nos muestra una cosa u otra por pantalla.
Este tipo de sentencias solo vale para igualdades, es decir, no podemos poner en un case: num < 5.
Realmente case 1, significa: si num es igual a 1... y así con todas las opciones.
Descargar Switch.cpp
A través de una sentencia "go to" podemos hacer que el programa vaya hasta otro punto del
código a ejecutar instrucciones, por ejemplo:
goto <nombre_etiqueta>
Para crear dicha etiqueta simplemente escribimos el nombre en el punto exacto que queramos
crear la etiqueta seguida de ":", como veis en el ejemplo.
El compilador de C irá ejecutando instrucciones una a una, de arriba hacia abajo. Cuando llegue al
"go to", busca el nombre de la etiqueta, automáticamente se va hasta donde esté creada la
misma, y continúa ejecutando instrucciones a partir de ahí.
En el caso del programa, "num" tendrá el valor 1, porque la asignación se la salta el "go to", como
se puede observar.
Un ejemplo un poco más práctico y útil para el "go to" sería el siguiente:
Anl. Sist. Daniel Villamar Avilés 24
En este ejemplo vamos a pedir al usuario que introduzca un número menor que 10. Si introduce el
número menor que 10, el programa acabará; y si no es menor que 10 pondremos un "go to" a una
etiqueta creada al inicio para que nos vuelva a pedir que introduzcamos un número... de esta
forma conseguimos que el programa nos pregunte siempre que no metamos lo que nos pide, o
sea, un número menor que 10.
Descargar GoTo.cpp
Descargar GoTo2.cpp
printf("1");
printf("2");
printf("3");
etc...
Bien, para eso están los bucles, para realizar instrucciones un determinado número de veces de
forma sencilla.
El ejemplo que hemos puesto vamos a realizarlo con un bucle "for".
En <valor_inicial> vamos a darle a una variable ya creada el número por el que queremos que
empiece, en este caso será 1. La condición, si se cumple, ejecutará las instrucciones del "for", y si
no, pues ya sale del "for".
En este caso queremos que se cumpla 10 veces, por tanto, ponemos si "i" es menor que 10. Y en
"<incremento>" lo que haremos es incrementar la variable "i" en 1.
Primero se asigna el valor inicial a la variable "i", en este caso, 1. Bien, ahora se ejecuta la
condición: Si "i" es menor o igual que 10, de manera que ahora "i" vale 1; ¿es menor o igual que
10? Sí, pues se ejecuta lo de dentro, es decir, se muestra por pantalla el 1.
Al terminar, el "for" hace el <incremento> de la variable "i", por lo tanto ahora "i" vale 2.
Y misma operación: se ejecuta la condición... ¿"i" es menor o igual que 10? Como "i" vale 2, sí, es
menor que 10. Entra dentro del "for" y muestra la "i", el 2, por pantalla. Ahora se incrementa, y la
"i" vale 3... y así sucesivamente hasta llegar a 10, momento en el que la condición deja de
cumplirse y se acaba el "for".
Descargar For.cpp
Vamos ahora con un bucle While. En este tipo de bucles, el aumento de la variable (o disminución)
se debe realizar dentro del mismo bucle, y la variable no se inicializa en el propio bucle, como
ocurría en el "for".
while (<condicion/es>)
{
//Instrucciones a ejecutar en el bucle
}
Como se puede apreciar, aquí el bucle se ejecuta si se cumple la condición sin más.
Vamos a crear el mismo ejemplo que hicimos para el "for", pero ahora utilizando un bucle "While"
para que se vea la diferencia.
Inicializamos a "i" en 1. La condición sigue siendo la misma: si "i" es menor o igual que 10 entra en
el bucle.
Y fijaos que dentro del propio bucle aumentamos el valor de "i" en 1. Esto es muy importante, ya
que si no cambiamos el valor de "i" (el valor que interactúa en la condición) podemos entrar en un
bucle infinito, puesto que siempre se cumplirá la condición, porque "i" siempre sería 1. Hay que
tener cuidado con eso.
Vamos a hacer este mismo ejercicio pero con 2 condiciones. Crearemos una variable tipo "bool"
con el valor de "true" (verdadero). Y en la condición del While, añadiremos que la variable bool
sea verdadera, para que entre al bucle.
De esta forma:
El While ahora tiene que cumplir ambas condiciones para que se ejecute el bucle. El operador
utilizado es el "&&", recordad que significa "y"; es decir, si "i" es menor o igual que 10 y "b" es
igual a "true", y como "b" siempre va a ser "true" (porque no se modifica en el bucle), pues va a
entrar al bucle siempre y cuando "i" sea menor o igual que 10. O sea, que ahora mismo el
programa funcionará de la misma forma que anteriormente. Pero es para que se vea que se puede
utilizar más de una condición.
¿Qué pasaría si en vez de "&&" ponemos el operador "||"? Este operador significa "o", es decir,
que entraría al bucle si se cumple una de las dos condiciones. No nos conviene ponerlo ahora
mismo porque "b" siempre es "true"... entonces el bucle se ejecutaría SIEMPRE, por tanto,
entramos en bucle infinito. Si quisiéramos poner ese operador en este ejemplo, habría que
cambiar la variable "b" en algún momento.
Descargar While.cpp
Descargar While2.cpp
En este tipo de bucle se ejecutan al menos una vez las instrucciones del bucle, y esto no se
sucede en los dos anteriores. Aquí ocurre esto porque el programa comprueba la condición del
bucle después de ya haberse ejecutado una vez.
La estructura es la siguiente:
do
{
//Instrucciones del bucle
}
while (<condicion/es>));
Cuando el programa llega a estas líneas de código lo primero que hace es ejecutar lo que hay
dentro del "do", se cumpla la condición o no, y después comprueba si la condición se cumple; si se
cumple, sigue ejecutando lo que hay dentro del "do", si no se cumple, sale del bucle.
Ejemplo para mostrar los números del 1 al 10.
Muy similar a los otros dos ejemplos, como ya os podéis imaginar, solo que ahora utilizamos el
do/while.
Descargar dowhile.cpp
En el vídeo de muestra veréis como se ejecuta siempre una vez lo que hay dentro del "do";
cambiaremos la condición del while para que no se cumpla, y aún así, ejecutará una vez la
instrucción, o sea, que se mostrará un 1 por pantalla.
Anl. Sist. Daniel Villamar Avilés 30
Ejercicio nº 2
Pasamos al 2º ejercicio. Esta vez será un ejercicio más complicado y más práctico que el anterior.
EJERCICIO Nº2
Realiza un programa que contenga un menú de 3 opciones. Estas
opciones serán 1, 2 y 3. Si el usuario introduce el número 0, el
programa acabará, pero mientras elija una opción válida que no sea el 0
el programa debe seguir.
Estaría bien que si introduce una opción que no sea del menú, o sea, ni
1, ni 2, ni 3, el programa te avisara.
Es decir, que el resultado del programa tiene que ser como se aprecia
en el vídeo en la parte inferior de la lección.
Solución ejercicio nº 2
Espero que hayas dado con la solución para el ejercicio nº 2, y si no, aquí la tienes. El truco para
que el programa no acabara y siempre te pregunte para introducir una opción del menú es la de
crear el "menú" dentro de un bucle, con la condición de que el número introducido sea distinto a
0. Ya que cuando el usuario introduzca un 0, el programa acabará.
Descargar Ejercicio2.cpp