Sei sulla pagina 1di 117

TUTORIAL LENGUAJE DE PROGRAMACIN C

MICROPROCESADORES Y MICROCONTROLADORES

PROFESOR
MG. RAIMON SALAZAR SALINAS
2014

REFERENCIA:
HTTP://WWW.CARLOSPES.COM/C
URSO_DE_LENGUAJE_C/

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

I.- INTRODUCCIN.
1.2.3.4.5.-

2.-

3.4.-

5.6.-

7.-

Reglas de sintaxis y funciones de la biblioteca estndar de C ................................................................5


Fases de la Puesta a Punto de un Programa en Lenguaje C ....................................................................6
Estructura de un Programa en Lenguaje C .............................................................................................8
Tipos de Instrucciones en Lenguaje C.....................................................................................................8
Mi primer Programa en Lenguaje C...................................................................................................... 10

II.- ELEMENTOS BSICOS.


1.-

TABLA DE CONTENIDOS

13

Tipos de Datos. .................................................................................................................................... 13


1.1.- Tipos de Datos en Lenguaje C. ..........................................................................................................13
1.2.- Datos de Tipo Entero en Lenguaje C (int)..........................................................................................13
1.3.- Datos de Tipo Real en Lenguaje C (float o double). ..........................................................................14
1.4.- Datos de Tipo Carcter en Lenguaje C (char) ....................................................................................14
1.5.- Datos sin Valor en Lenguaje C (void) .................................................................................................15
1.6.- Datos de Tipo Lgico en Lenguaje C..................................................................................................15
1.7.- Datos de Tipo Cadena en Lenguaje C ................................................................................................15
Identificadores en Lenguaje C .............................................................................................................. 16
2.1.- Identificadores. .................................................................................................................................16
2.2.- Ejemplos de Identificadores Vlidos y No Vlidos en Lenguaje C .....................................................16
2.3.- Palabras Reservadas en Lenguaje C ..................................................................................................17
Variables en Lenguaje C .......................................................................................................................18
3.1.- Variable de Lenguaje. ........................................................................................................................18
3.2.- Ejemplos de Declaracin de Variables en Lenguaje C .......................................................................18
Constantes en Lenguaje C. ...................................................................................................................21
4.1.- Constante en Lenguaje C...................................................................................................................21
4.2.- Constantes de Tipo Entero en Lenguaje C.........................................................................................23
4.3.- Constantes de Tipo Real en Lenguaje C. ...........................................................................................24
4.4.- Constantes de Tipo Carcter en Lenguaje C......................................................................................25
4.5.- Constantes de Tipo Cadena en Lenguaje C. ......................................................................................26
Operadores y Expresiones en Lenguaje C.............................................................................................27
Expresiones Aritmticas en Lenguaje C................................................................................................29
6.1.- Expresiones Aritmticas. ...................................................................................................................29
6.2.- El Operador Divisin (/) en Lenguaje C..............................................................................................30
6.3.- Conversin de Tipo (Casting) en Lenguaje C. ....................................................................................31
6.4.- La Funcin pow en Lenguaje C ..........................................................................................................32
6.5.- Expresiones Lgicas en Lenguaje C ...................................................................................................33
6.5.1.- Operadores Relacionales en Lenguaje C ...................................................................................33
6.5.2.- Operadores Lgicos en Lenguaje C. ..........................................................................................34
6.6.- La Funcin strcat en Lenguaje C ........................................................................................................35
6.7.- Operadores de Asignacin en Lenguaje C .........................................................................................36
6.8.- La Funcin strcpy en Lenguaje C .......................................................................................................39
6.9.- Los Operadores Incremento (++) y Decremento (--) en Lenguaje C..................................................40
6.10.- Prioridad de Operadores en Lenguaje C ...........................................................................................41
Funciones printf y scanf. ......................................................................................................................43
7.1.- La Funcin printf en Lenguaje C ........................................................................................................43
7.2.- Texto Ordinario en la Funcin printf del Lenguaje C .........................................................................44
7.3.- Especificadores de Formato en la Funcin printf del Lenguaje C .....................................................44

Tutorial Lenguaje de Programacin C.

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

7.4.- Secuencias de Escape en la Funcin printf del Lenguaje C ...............................................................46


7.5.- Especificadores de Formato en la Funcin printf del Lenguaje C .....................................................49
7.6.- La Funcin scanf en Lenguaje C.........................................................................................................51
7.7.- Especificadores de Formato en la Funcin scanf del Lenguaje C ......................................................51
7.8.- Ejercicios de scanf y printf en Lenguaje C .........................................................................................56
7.8.1.- Ejercicio - rea de un Tringulo (en C) ......................................................................................56
7.8.2.- Ejercicio - Divisin Entera (en C) ...............................................................................................57
8.- Comentarios. ....................................................................................................................................... 58
8.1.- Comentarios en Lenguaje C...............................................................................................................58
9.- Funcin fflush. ..................................................................................................................................... 59
9.1.- La Funcin fflush en Lenguaje C ........................................................................................................59
10.- Tipos de Errores................................................................................................................................... 62
10.1.- Tipos de Errores en Lenguaje C .........................................................................................................62
10.2.- Errores de Sintaxis en Lenguaje C .....................................................................................................62
10.3.- Errores de Ejecucin en Lenguaje C ..................................................................................................62
10.4.- Errores de Lgica en Lenguaje C........................................................................................................63

III.- INSTRUCCIONES DE CONTROL

65

1.-

Instrucciones Alternativas en Lenguaje C.............................................................................................65


1.1.- Instruccin de Control Alternativa Doble (if else) .............................................................................65
1.1.1.- Instruccin if else en Lenguaje C ...............................................................................................65
1.1.2.- Listado de Ejercicios Resueltos con la instruccin if else ..........................................................66
1.2.- Instruccin de Control Alternativa Simple (if) ...................................................................................69
1.2.1.- Instruccin if en Lenguaje C ......................................................................................................69
1.2.2.- Ejercicios de la Instruccin Alternativa Simple (if) en Lenguaje C.............................................70
1.3.- Instruccin de Control Alternativa Mltiple (switch) ........................................................................72
1.3.1.- Instruccin switch en Lenguaje C ..............................................................................................72
1.4.- Ejercicios de la Instruccin Alternativa Mltiple (switch) en Lenguaje C ..........................................77
1.4.1.- Ejercicio - Nmero del Dado (en C) ...........................................................................................77
1.4.2.- Ejercicio - Habitaciones de una Casa Rural (en C) .....................................................................79
1.5.- Anidamiento de Instrucciones de Control Alternativas ....................................................................82
1.5.1.- Anidamiento de Instrucciones Alternativas en Lenguaje C.......................................................82
1.5.2.- Anidamiento if else Dentro de if else en Lenguaje C ................................................................83
1.5.3.- Anidamiento switch Dentro de if else en Lenguaje C ...............................................................85
1.5.4.- Ejercicios de Anidamiento de Instrucciones Alternativas en Lenguaje C ..................................86
2.- Instrucciones Repetitivas en Lenguaje C ..............................................................................................90
2.1.- Instruccin while en Lenguaje C........................................................................................................90
2.2.- Ejercicios de la Instruccin Repetitiva mientras (while) en Lenguaje C ............................................92
2.2.1.- Ejercicio - rea de una Esfera (en C) .........................................................................................92
2.2.2.- Ejercicio - Volmenes de Cubos (en C)......................................................................................94
2.3.- Instruccin de Control Repetitiva hacer...mientras (do while). ........................................................95
2.3.1.- Instruccin do while en Lenguaje C ..........................................................................................95
2.3.2.- Ejercicios de la Instruccin Repetitiva hacer...mientras (do..while) en Lenguaje C ..................97
2.4.- Instruccin de Control Repetitiva para (for) ...................................................................................100
2.4.1.- Instruccin for en Lenguaje C..................................................................................................100
2.4.2.- Cundo usar un Bucle u otro? ............................................................................................102
2.4.3.- Ejercicios de la Instruccin Repetitiva para (for) en Lenguaje C .............................................102
2.5.- Anidamiento de Instrucciones de Control Repetitivas y Alternativas. ............................................103
2.5.1.- Bucle for en do while ..............................................................................................................104
2.5.2.- Instruccin if Anidada en Bucle for del Lenguaje C .................................................................104
2.5.3.- Ejercicios de Anidamiento de Instrucciones de Control Repetitivas y Alternativas. ...............105

Tutorial Lenguaje de Programacin C.

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

3.-

Ejercicio - Cantidad y Suma de Nmeros Enteros (en C) .......................................................................105


Instrucciones de Salto en Lenguaje C ................................................................................................. 108
3.1.- Instruccin break en Lenguaje C .....................................................................................................108
3.2.- Instruccin continue en Lenguaje C. ...............................................................................................111
3.3.- Instruccin goto en Lenguaje C. ......................................................................................................115
3.4.- Instruccin return en Lenguaje C ....................................................................................................117
3.5.- Ventajas de no Usar las Instrucciones de Salto en Lenguaje C .......................................................117

Tutorial Lenguaje de Programacin C.

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

I.- INTRODUCCIN.

1.-

REGLAS DE SINTAXIS Y FUNCIONES DE LA BIBLIOTECA ESTNDAR DE C

Los contenidos de este curso/tutorial pueden ser tiles a todos aquellos que quieran
iniciarse en la programacin utilizando lenguaje C. Aunque no es imprescindible, al lector le
resultar ms fcil seguir las explicaciones si ya posee conocimientos previos de programacin en
otro lenguaje y, en especial, es aconsejable que ya sepa disear algoritmos; vase el Curso de Diseo
de Algoritmos. En cualquier caso, para facilitar la comprensin del texto, se han aadido enlaces de
algunos conceptos al Diccionario de Informtica.
Para poder escribir programa en C, es imprescindible ser conocedor de sus reglas de
sintaxis y de las funciones de su biblioteca estndar.

Las funciones de la biblioteca estndar de C son un conjunto de funciones (subprogramas)


que acompaan a todos los compiladores de lenguaje C, y sirven para realizar un gran nmero de
tareas.
Adems de las funciones de la biblioteca estndar, la mayora de los compiladores de C
tambin proporcionan otras funciones que no son estndares, pero, stas suelen ser muy tiles
para el programador, quien, por otra parte, tambin puede desarrollar sus propias funciones.

Tutorial Lenguaje de Programacin C.

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

2.-

FASES DE LA PUESTA A PUNTO DE UN PROGRAMA EN LENGUAJE C

Para convertir un algoritmo en un programa, se deben llevar a cabo las siguientes fases de
puesta a punto:

Edicin
En esta primera fase, el programador debe convertir el algoritmo que haya diseado en
instrucciones escritas en C. Para ello, se debe hacer uso de un editor de textos, con el cual
se obtendr el llamado cdigo fuente del programa. El programador deber guardar dicho
cdigo fuente en un archivo con extensin (.c) o (.cpp).
Si un programa escrito en C se va a compilar con un compilador de C, el cdigo fuente
debe ser guardado, obligatoriamente, en un archivo con extensin (.c). Ahora bien, si se
utiliza un compilador de C/C++, el archivo se puede guardar con extensin (.c) o (.cpp).

Pre-proceso.
El pre-proceso sirve para realizar modificaciones en el cdigo fuente obtenido en la fase de
edicin. Es el programador quien, mediante directivas del preprocesador, "dice" al
preprocesador las modificaciones que ste debe llevar a cabo.
El preprocesador es un programa caracterstico de C, es decir, en otros lenguajes de
programacin no existe, y siempre se ejecuta antes de llevarse a cabo la compilacin. Esto
es debido a que, es el propio compilador quien llama al preprocesador antes de realizar la
compilacin.

Compilacin.
Una vez que el cdigo fuente ha sido preprocesado, el compilador traducir ese cdigo
fuente (modificado) a cdigo mquina, tambin llamado cdigo objeto, siempre y cuando,
el propio compilador no detecte ningn error en dicho cdigo fuente ya preprocesado.
Como resultado de la compilacin, el compilador guardar el cdigo objeto del programa
en un archivo con otra extensin, que, dependiendo del sistema operativo puede variar.
Por ejemplo, en Windows, se guardar con la extensin (.obj), abreviatura de object.

Enlace.
(linkaje o montaje). Los programas pueden utilizar funciones de la biblioteca estndar de
C, tales como scanf o printf. De cada una de ellas existe un cdigo objeto que debe ser
enlazado (unido) al cdigo objeto del programa que las utilice. Esto se realiza mediante un
programa llamado enlazador, montador o linkador.
Como resultado del enlace, el enlazador guardar, en disco, un archivo ejecutable. En
Windows, dicho archivo tendr extensin (.exe), abreviatura de executable. Dicho archivo
ser "el ejecutable".

Tutorial Lenguaje de Programacin C.

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Adems de las funciones de la biblioteca estndar de C, el programador tambin puede


utilizar funciones que hayan sido desarrolladas por l mismo. stas pueden agruparse en su propia
biblioteca de funciones (no estndar). Por lo que, tambin en esta fase, el cdigo objeto de dichas
funciones deber ser enlazado al cdigo objeto del programa que las utilice.
Grficamente, el proceso de puesta a punto de un programa escrito en C se puede ver en la
siguiente figura:

Figura - Fases de la puesta a punto de un programa en lenguaje C.


Finalmente, para que el cdigo ejecutable de un programa se ejecute en la computadora, es
necesario que un programa del sistema operativo, llamado cargador, lo lleve a la memoria principal
de la misma. A partir de ese momento, la CPU empezar a ejecutarlo.

Tutorial Lenguaje de Programacin C.

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

3.-

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

Un programa escrito en lenguaje C est compuesto por una o ms funciones. Como ya es


sabido, una funcin es un programa que sirve para realizar una tarea determinada, por ejemplo, la
funcin scanf sirve para leer datos desde el teclado.

Existe una funcin que est presente en todos los programas escritos en lenguaje C, su
misin es marcar el inicio y fin de la ejecucin de cada uno de ellos; es la funcin principal, la
primera que se ejecuta; es la funcin main. Su sintaxis "bsica" es:
int main()
{
<bloque_de_instrucciones>
}

La funcin main contiene al bloque de instrucciones principal de un programa, dentro de los


caracteres abrir llave ({) y cerrar llave (}).

Los parntesis "()" escritos despus de main sirven para indicar que el identificador main es
una funcin. Es importante comprender que main no es una palabra reservada de C. Ningn
identificador de funcin lo es.
Finalmente, no podemos pasar por alto que delante de main se ha escrito la palabra
reservada int; enseguida veremos el porqu.

4.-

TIPOS DE INSTRUCCIONES EN LENGUAJE C

En lenguaje C, las instrucciones, tambin llamadas sentencias, se pueden clasificar en:


De expresin.
De control.
Compuestas.

Una instruccin compuesta siempre alberga, entre llaves ({...}), a un <bloque_de_instrucciones>:


{
}

<bloque_de_instrucciones>

Un bloque de instrucciones puede estar compuesto por una o ms instrucciones, que, a su


vez, pueden ser instrucciones de expresin, de control y/o compuestas nuevamente.

Tutorial Lenguaje de Programacin C.

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

El cuerpo de toda funcin es una instruccin compuesta. Sirva como ejemplo el cuerpo de la
funcin main, el cual alberga al bloque de instrucciones principal de un programa escrito en
lenguaje C.

Las instrucciones de expresin, tambin conocidas como instrucciones simples o


elementales, son aquellas que representan a las acciones ms pequeas (elementales) que se
pueden ejecutar en un programa, y siempre van seguidas de un carcter punto y coma (;), el cual
indica que la instruccin ha terminado:
<instruccin_de_expresin>;

Una instruccin de expresin es, en s misma, una expresin. De modo que, la accin que se ejecuta
es la evaluacin de dicha expresin:
<expresin>

En cuanto a las instrucciones de control, existen de distintos tipos, y todas sirven para
modificar el flujo de control de un programa. Veremos que, algunas de ellas deben ir seguidas del
carcter punto y coma (;), pero otras no.

Tutorial Lenguaje de Programacin C.

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

5.-

MI PRIMER PROGRAMA EN LENGUAJE C

Ejemplo:
Se quiere escribir un programa que muestre por pantalla un mensaje de saludo:
Hola mundo

Obsrvese que, el saludo se visualiza justo en la esquina superior izquierda de la pantalla.


Ms adelante se estudiar cmo se puede mostrar en otro lugar de la pantalla.
En lenguaje C, el cdigo fuente de dicho programa puede ser:

#include <stdio.h>
int main()
{
printf( "Hola mundo" );
return 0;
}

Todas las funciones de la biblioteca estndar de lenguaje C son subprogramas que ya estn
compilados, es decir, junto a cualquier compilador de lenguaje C se acompaan los cdigos objeto
de todas las funciones de su biblioteca estndar, pero no sus cdigos fuente. Por tanto, aunque no
sea posible modificar sus cdigos fuente, s se puede hacer uso de dichas funciones en cualquier
programa. Por ejemplo, se puede llamar a la funcin printf para que muestre por pantalla el saludo
"Hola mundo".
printf( "Hola mundo" );

Dentro de los parntesis "()" de la funcin printf, se debe escribir, entre comillas dobles ("),
el mensaje o cadena de caracteres que se desea mostrar por pantalla.

Obsrvese que, despus del carcter cerrar parntesis ")" se ha escrito un punto y coma (;),
esto implica que la llamada a la funcin printf es considerada como una instruccin de expresin.

Del cdigo fuente preprocesado de un programa, el compilador generar un cdigo objeto


que se debe unir (enlazar) con los cdigos objeto de las funciones de la biblioteca estndar del
lenguaje C que se llamen desde dicho programa. Por ejemplo, el cdigo objeto de nuestro primer
programa se debe enlazar con el cdigo objeto del subprograma printf.
El enlazador sabe dnde encontrar el cdigo objeto de las funciones de la biblioteca
estndar de C que utilice un programa. Sin embargo, para poder utilizar una funcin (sea de la
biblioteca estndar de C o no) en un programa, la funcin debe ser declarada previamente, al igual
que se tienen que declarar las variables y las constantes que usa un programa.

Tutorial Lenguaje de Programacin C.

10

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Para que el compilador conozca la declaracin de la funcin printf, hay que utilizar la
directiva del preprocesador #include:
#include <stdio.h>

En este caso, la directiva #include indica, al preprocesador, que debe incluir, antes de la
compilacin, en el cdigo fuente del programa, el contenido del archivo <stdio.h> (stdio, Standard
Input/Output). En dicho archivo estn escritas las declaraciones de todas las funciones de entrada y
salida estndar de la biblioteca estndar de C, como printf. Si el compilador no sabe quien es printf,
no podr generar el cdigo objeto del programa.
Las funciones de la biblioteca estndar de C estn clasificadas en base a su funcionalidad, y
sus declaraciones se agrupan en archivos con extensin (.h), los cuales son llamados archivos de
cabecera. Adems de stdio.h, algunos de los archivos de cabecera ms utilizados en lenguaje C son:
math.h, string.h y stdlib.h. En ellos estn escritas, respectivamente, las declaraciones de las
funciones matemticas, funciones de cadena y funciones de utilidad de la biblioteca estndar de C.

Despus de #include, el nombre del archivo de cabecera se puede escribir entre los
caracteres menor y mayor (<stdio.h>), o entre comillas dobles ("stdio.h"). Cuando se escriba entre
comillas dobles, el preprocesador buscar dicho archivo en el directorio actual de trabajo, y de no
encontrarlo ah, entonces lo buscar en el directorio especificado por el compilador. En el caso de
escribirse entre los caracteres menor y mayor, el proceso de bsqueda ser al revs.
Adems de la directiva del preprocesador #include, existen otras, pero, ninguna de ellas es
una palabra reservada del lenguaje C.
El cdigo objeto generado por el compilador de C tendr "huecos" (espacios) en donde ms
tarde el enlazador escribir el cdigo objeto correspondiente a las llamadas de las funciones ya
compiladas (como printf) y, as, generar el archivo ejecutable.
Toda funcin retorna un valor. En nuestro primer programa se ha escrito:

return 0;

Esto quiere decir que la funcin main devuelve el valor 0. Precediendo a main se ha escrito la
palabra reservada int, indicando as, que la funcin retornar un valor de tipo int (entero).
int main()

En general, la instruccin return suele ser la ltima del bloque de instruccines de la


funcin main. Al retornar el valor 0, indica (informa al sistema operativo) que el programa finaliz
correctamente, es decir, sin producirse ningn error en su ejecucin. Cuando la funcin main
devuelva un valor distinto de cero, esto siginificar que se ha producido algn error en la ejecucin
del programa, o que ha ocurrido algo fuera de lo normal.
La instruccin return es una de las instrucciones de control que existen en lenguaje C. Por
tanto, es una palabra reservada. Despus del valor de retorno (que es una expresin) se debe
escribir un punto y coma (;). La sintaxis de la instruccin return es:
Tutorial Lenguaje de Programacin C.

11

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

return <expresin>;
Por el momento, se ha visto que la sintaxis "bsica" de un programa escrito en lenguaje C es:

[ <directivas_del_preprocesador> ]
int main()
{
<bloque_de_instrucciones>
}

Ahora es una buena ocasin para poner en prctica lo aprendido en el apartado Fases de la
Puesta a punto de un Programa. Para ello, puede consultar las Guas de Uso de algunos
compiladores de C/C++.

Tutorial Lenguaje de Programacin C.

12

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

II.- ELEMENTOS BSICOS.


1.-

1.1.-

TIPOS DE DATOS.

Datos de Tipo Entero (int)


Datos de Tipo Real (float o double)
Datos de Tipo Carcter (char)
Datos sin Valor (void)
Datos de Tipo Lgico
Datos de Tipo Cadena
TIPOS DE DATOS EN LENGUAJE C.

En lenguaje C se dice que todos los datos que utilizan los programas son bsicos (simples
predefinidos o estndares) o derivados. Los tipos bsicos en lenguaje C se clasifican en:

Figura - Clasificacin de los tipos de datos bsicos en lenguaje C.


1.2.-

DATOS DE TIPO ENTERO EN LENGUAJE C (INT)

Un dato de tipo entero (int en lenguaje C ) es aquel que puede tomar por valor un nmero
perteneciente al conjunto de los nmeros enteros (Z), el cual est formado por los nmeros
naturales, su opuestos (nmeros negativos) y el cero.
Z = { ..., -3, -2, -1, 0, 1, 2, 3, ... }

Tutorial Lenguaje de Programacin C.

13

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo:
La edad de una persona y el ao en que naci, son dos datos de tipo entero:
Edad...: 29
Ao....: 1976

Z es un conjunto infinito de nmeros enteros, y como el ordenador no puede representarlos


todos, un dato de tipo entero slo puede tomar por valor un nmero perteneciente a un
subconjunto de Z. Los valores mximo y mnimo de dicho subconjunto varan segn las
caractersticas de cada ordenador y del compilador que se utilice.
1.3.-

DATOS DE TIPO REAL EN LENGUAJE C (FLOAT O DOUBLE).

Un dato de tipo real (float o double en lenguaje C) es aquel que puede tomar por valor un
nmero perteneciente al conjunto de los nmeros reales (R), el cual est formado por los nmeros
racionales e irracionales.

Ejemplo:
El peso de una persona (en kilogramos) y su altura (en centmetros), son datos que pueden
considerarse de tipo real.
Peso.....: 75,3
Altura...: 172,7

R es un conjunto infinito de nmeros reales, y como el ordenador no puede representarlos


todos, un dato de tipo real slo puede tomar por valor un nmero perteneciente a un subconjunto
de R. Los valores de dicho subconjunto varan segn las caractersticas de cada ordenador y del
compilador que se utilice.
La diferencia principal entre float y double est en el hecho de que un dato de tipo double
puede tomar por valor un nmero perteneciente a un subconjunto de R mayor que un dato de tipo
float.
1.4.-

DATOS DE TIPO CARCTER EN LENGUAJE C (CHAR)

Un dato de tipo carcter (char en lenguaje C) es aquel que puede tomar por valor un
carcter perteneciente al conjunto de los caracteres que puede representar el ordenador.
En lenguaje C, el valor de un dato de tipo carcter se debe representar entre comillas
simples (').

Ejemplo:
En un examen con preguntas en las que hay que seleccionar la respuesta correcta entre
varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas es un dato de
tipo carcter.
Respuesta correcta a la pregunta 3...: 'c'

Tutorial Lenguaje de Programacin C.

14

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

1.5.-

DATOS SIN VALOR EN LENGUAJE C (VOID)

1.6.-

DATOS DE TIPO LGICO EN LENGUAJE C

Un dato sin valor (void en lenguaje C) es un dato que no puede tomar por valor nign valor,
es decir, es un dato vaco (nulo).

En programacin, un dato de tipo lgico es aquel que puede tomar por valor slo uno de los
dos siguientes:
{ verdadero, falso }

Los valores verdadero y falso son contrapuestos, de manera que, un dato de tipo lgico
siempre est asociado a que algo se cumpla o no se cumpla.
Ejemplo:
El estado de una barrera de paso de trenes es un dato que puede considerarse de tipo
lgico, por ejemplo, asociando verdadero a que est subida y falso a que est bajada.
Estado...: falso (indica que la barrera est bajada)

En lenguaje C no existen datos de tipo lgico (que s existen en otros lenguajes de


programacin). Ahora bien, se pueden simular con datos de tipo entero, considerndose el valor
cero (0) como falso, y cualquier otro valor entero como verdadero (para ello, generalmente, se
emplea el valor uno (1)).
1.7.-

DATOS DE TIPO CADENA EN LENGUAJE C

De todos los tipos de datos que no son bsicos se dice que son derivados, ya que, estn
basados en alguno que s lo es. Por ejemplo, los datos de tipo cadena son aquellos que pueden
tomar por valor una secuencia de caracteres.
(").

En lenguaje C, el valor de un dato de tipo cadena se debe representar entre comillas dobles

Ejemplo:
El ttulo de un libro y el nombre de su autor, son datos de tipo cadena.
Ttulo...: "La Odisea" (cadena de 9 caracteres)
Autor....: "Homero" (cadena de 6 caracteres)

Obsrvese que, en la cadena "La Odisea", el carcter espacio en blanco tambin se cuenta.

Tutorial Lenguaje de Programacin C.

15

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

2.-

2.1.-

IDENTIFICADORES EN LENGUAJE C

Identificadores
Ejemplos de Identificadores vlidos y no vlidos
Palabras Reservadas
IDENTIFICADORES.

La mayora de los elementos de un programa se diferencian entre s por su nombre. Por


ejemplo, los tipos de datos bsicos en lenguaje C se nombran como:
char, int, float, double y void

Cada uno de ellos es un identificador. Un identificador es el nombre que se le da a un


elemento de un algoritmo (o programa). Por ejemplo, el tipo de dato int hace referencia a un tipo de
dato que es distinto a todos los dems tipos de datos, es decir, los valores que puede tomar un dato
de tipo entero, no son los mismos que los que puede tomar un dato de otro tipo.
Los identificadores char, int, float, double y void estn predefinidos, forman parte del
lenguaje C. No obstante, en el cdigo de un programa tambin pueden existir identificadores
definidos por el programador. Por ejemplo, un programa puede utilizar variables y constantes
definidas por el programador.

En lenguaje C, a la hora de asignar un nombre a un elemento de un programa, se debe tener


en cuenta que todo indenficador debe cumplir las siguientes reglas de sintaxis:
Consta de uno o ms caracteres.

El primer carcter debe ser una letra o el carcter subrayado (_), mientras que, todos los
dems pueden ser letras, dgitos o el carcter subrayado (_). Las letras pueden ser minsculas o
maysculas del alfabeto ingls. As pues, no est permitido el uso de las letras '' y ''.
No pueden exitir dos identificadores iguales, es decir, dos elementos de un programa no
pueden nombrarse de la misma forma. Lo cual no quiere decir que un identificador no pueda
aparecer ms de una vez en un programa.
De la segunda regla se deduce que un identificador no puede contener caracteres especiales,
salvo el carcter subrayado (_). Es importante resaltar que las vocales no pueden llevar tilde ni
diresis.
2.2.-

EJEMPLOS DE IDENTIFICADORES VLIDOS Y NO VLIDOS EN LENGUAJE C

A continuacin, se muestran algunos ejemplos de identificadores vlidos en lenguaje C y


otros que no lo son:

Tutorial Lenguaje de Programacin C.

16

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 1:
Algunos identificadores vlidos que pueden ser definidos por el programador son:
numero
dia_del_mes
PINGUINO1
_ciudad
Z

Ejemplo 2:
Los siguientes identificadores no son vlidos por incumplir la segunda regla:
123
_DA
numero*
lugar de nacimiento
ao

Ejemplo 3:
Los siguientes identificadores no pueden ser definidos por el programador:
int
char

int y char son identificadores predefinidos (ya existen en lenguaje C), por tanto, no pueden
ser definidos por el programador, en cumplimiento de la tercera regla.
Los identificadores son sensibles a minsculas y maysculas.
Ejemplo 4:
Mes y mes son considerados identificadores distintos.

Por ltimo, hay que decir que, es aconsejable que los identificadores tengan un significado
afn a lo que representan.
2.3.-

PALABRAS RESERVADAS EN LENGUAJE C

Las palabras reservadas son identificadores predefinidos (tienen un significado especial).


En todos los lenguajes de programacin existe un conjunto de palabras reservadas. Por el
momento, en lenguaje C, se han estudiado las siguientes:
char, int, float, double, void

En la sintaxis de ANSI C, puede consultar toda la lista de palabras reservadas que existen en
lenguaje C.
Tutorial Lenguaje de Programacin C.

17

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

3.-

3.1.-

VARIABLES EN LENGUAJE C

Variables en lenguaje.
Ejemplos de declaracin de Variables
VARIABLE DE LENGUAJE.

En lenguaje C hay que escribir un punto y coma (;) despus de la declaracin de una o ms
variables. As pues, la sintaxis para declarar una variable es:
<tipo_de_dato> <variable> [ = <expresin> ];

Y para ms de una variable del mismo tipo se utiliza la sintaxis:

<tipo_de_dato> <variable_1> [= <expresin_1>],


<variable_2> [= <expresin_2>],
...,
<variable_n> [= <expresin_n>];

Una expresin representa a un valor de un tipo de dato. En el apartado Operadores y


Expresiones se estudiarn en detalle las expresiones.
3.2.-

EJEMPLOS DE DECLARACIN DE VARIABLES EN LENGUAJE C

A continuacin, se muestran algunos ejemplos de declaracin de variables en lenguaje C.

Ejemplo 1:
La declaracin de una variable para almacenar la edad de una persona se escribe:
int edad;

Ejemplo 2:
Para declarar varias variables del mismo tipo de dato se puede escribir:
int edad;
int numero_de_hijos;

Tutorial Lenguaje de Programacin C.

18

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 3:
O tambin, en la misma lnea separadas por el carcter coma (,):
int edad, numero_de_hijos;

Ejemplo 4:
Si se desea declarar una variable para almacenar un nmero entero y que, inicialmente,
contenga el valor 35, se debe escribir:
int numero = 35;

Ejemplo 5:
A continuacin, se muestra la declaracin de una variable para almacenar una letra del
alfabeto y que, inicialmente, contenga el valor 'Z':
char letra = 'Z';

Ejemplo 6:
Para declarar una variable que pueda almacenar el nombre de una persona y que,
inicialmente, contenga el valor "Isabel", escribiremos:
char nombre[7] = "Isabel";

Un dato de tipo cadena es un dato compuesto (estructurado), debido a que est formado
por una agrupacin de caracteres. Pues bien, dicha agrupacin se define por medio de un array. Un
array agrupa, bajo el mismo nombre de variable, a una coleccin de elementos (datos) del mismo
tipo.
Para declarar un array de caracteres, despus del identificador de la variable, se tiene que
escribir, entre corchetes "[]", el nmero de caracteres que se van a almacenar en el array, ms uno.
Por tanto, en este caso, puesto que "Isabel" tiene seis caracteres, hay que escribir un 7 entre los
corchetes.
Se tiene que escribir un nmero ms, porque en la memoria se va a reservar espacio para
los seis caracteres de la cadena "Isabel", ms uno, conocido ste como el carcter nulo, el cual se
representa mediante una barra invertida y un cero (\0). El sistema se encarga de "poner" dicho
carcter, que indica el fin de la cadena.
Tutorial Lenguaje de Programacin C.

19

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Por consiguiente, en la memoria se almacenarn siete caracteres consecutivos:

Los caracteres del array pueden ser referenciados mediante el identificador del mismo,
seguido de un nmero entre corchetes. A dicho nmero, de manera formal, se le llama "ndice", y
puede oscilar entre el valor 0 y n-1, siendo n el nmero de caracteres que pueden ser almacenados
en memoria en el array, en este caso 7.
<nombre_de_la_variable>[<ndice>]

Por ejemplo, nombre[3] hace referencia al espacio de memoria donde est el carcter 'b'.

Ejemplo 7:
Si se declara la variable de tipo cadena:
char nombre[7] = "June";

En memoria tendremos:

Fjese que, en esta ocasin, el array de caracteres nombre ha sido inicializado con el valor
"June". De manera que, el fin de la cadena se encuentra en nombre[4], y no en el ltimo espacio de
memoria reservado para el array, ya que, "June" tiene, solamente, cuatro caracteres.

Tutorial Lenguaje de Programacin C.

20

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

4.-

CONSTANTES EN LENGUAJE C.
Constantes de Tipo Entero
Constantes de Tipo Real
Constantes de Tipo Carcter
Constantes de Tipo Cadena

4.1.-

CONSTANTE EN LENGUAJE C.

En lenguaje C, una constante puede ser de tipo entero, real, carcter, de cadena o
enumerado. Las contantes de tipo enumerado se van a estudiar ms adelante. En cuanto a las
dems, se pueden expresar de dos formas diferentes:
1. Por su valor.
2. Con un nombre (identificador).

Ejemplo 1:
Las siguientes contantes de tipo entero estn expresadas por su valor:
-5
10

Para expresar una constante con un nombre, la constante debe ser declarada previamente.
Las constantes que se declaran en un programa escrito en lenguaje C reciben un tratamiento
diferente al de la mayora de los lenguajes de programacin. En C, para representar a las constantes,
se utilizan constantes simblicas. Una constante simblica representa (sustituye) a una secuencia
de caracteres, en vez de representar a un valor (dato almacenado en memoria).
Para declarar una constante simblica, en lenguaje C, se utiliza una nueva directiva del
preprocesador:
#define <constante> <secuencia_de_caracteres>
La directiva #define indica al preprocesador que debe sustituir, en el cdigo fuente del
programa, todas las ocurrencias del <nombre_de_la_constante> por la <secuencia_de_caracteres>,
antes de la compilacin.
Ejemplo 2:
Dos constantes muy habituales son:
#define PI 3.141592 #define
NUMERO_E 2.718281

Tutorial Lenguaje de Programacin C.

21

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

En programacin es una buena prctica escribir los identificadores de las constantes en


maysculas, de esta forma es ms fcil localizarlos en el cdigo de un programa. Ntese que,
despus de la declaracin de una constante simblica no se escribe un carcter punto y coma (;),
cosa que s se debe hacer al declarar una variable.
Por otra parte, no se puede declarar ms de una constante simblica en una misma lnea de
cdigo.
Ejemplo 3:
Para declarar las constantes simblicas PI y NUMERO_E, no se puede escribir:
#define PI 3.141592, NUMERO_E 2.718281

Por otra parte, en C, es posible declarar una variable indicando que su valor es inalterable.
Para ello, se utiliza el cualificador const.
Ejemplo 4:
Uso de const:

const int temperatura = -5;


En el ejemplo, se ha declarado la variable entera temperatura inicializada al valor -5 y, por
medio de const, que es una palabra reservada, se ha indicado que su valor no puede cambiar
durante la ejecucin del programa. En cierta manera, la variable temperatura est simulando a una
constante.

Ya se sabe cmo escribir la declaracin de una constante y de las variables que utilice un
programa y, tambin, se conoce el lugar en que se tiene que escribir la directiva del preprocesador
#define para declarar la constante.
En cuanto a las variables que utiliza un programa, su declaracin puede escribirse en varios
lugares, pero, de momento las vamos a declarar inmediatemente despus del carcter abrir llave ({)
de la funcin main.
[ <directivas_del_preprocesador> ]

int main()
{
[ <declaraciones_de_variables> ]
<lista_de_instrucciones>
}

Tutorial Lenguaje de Programacin C.

22

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 5:
Si en un programa se quieren declarar dos variables (area y radio) y una constante (PI), se
puede escribir:
#define PI 3.141592
int main()
{
float area, radio;
...
}
4.2.-

CONSTANTES DE TIPO ENTERO EN LENGUAJE C.

Una constante de tipo entero es aquella que representa a un valor (dato) perteneciente al
subconjunto de Z representable por el ordenador.

Ejemplo 1:
Suponiendo que el ordenador (utilizando diecisis bits) pueda representar, en
Complemento a 2, el siguiente conjunto de valores enteros:
{ -32768, -32767, ..., 1, 0, -1, ..., 32766, 32767 }

Algunos ejemplos de constantes de tipo entero son:


-32000
0
000077
(Los ceros a la izquierda no son significativos)
+1111
Obsrvese que, adems de los caracteres numricos, dgitos del (0) al (9), tambin se puede
hacer uso de los caracteres especiales (+) y (-) para indicar el signo de un nmero entero, el cual es
positivo por omisin. Sin embargo, en lenguaje C, es incorrecto usar los caracteres coma (,) y/o
punto (.) para expresar constantes de tipo entero.
Ejemplo 2:
Por tanto, es incorrecto escribir:
-32.000
0,0
+1,111.00

Ejemplo 3:
Otros ejemplos incorrectos de constantes de tipo entero son:
++111
38000

(No se puede duplicar el signo)


(No pertenece al subconjunto de Z representable por el ordenador)

Tutorial Lenguaje de Programacin C.

23

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

4.3.-

CONSTANTES DE TIPO REAL EN LENGUAJE C.

Una constante de tipo real es aquella que representa a un valor (dato) perteneciente al
subconjunto de R representable por el ordenador.
Ejemplo 1:
Algunos ejemplos son:
8.12
000.333
+1111.809
-3200<
.56

(Los ceros a la izquierda no son significativos)


(Tambin se puede escribir -3200.0)
(Tambin se puede escribir 0.56)

Obsrvese que, adems de los caracteres numricos, dgitos del (0) al (9), tambin se puede
hacer uso de los caracteres especiales (+) y (-) para indicar el signo de un nmero real. Adems, en
lenguaje C, obligatoriamente debe aparecer el carcter punto (.), o el carcter (e) o (E) seguido del
exponente, del cual tambin puede indicarse su signo con los caracteres (+) y (-). Los signos del
exponente y del nmero en s, por omisin, son positivos
Ejemplo 2:
Las siguientes constantes de tipo real estn expresadas correctamente:
-77e-3
+1111e+2
2000E+2
3040e2

Una constante de tipo real tambin se puede expresar con el carcter punto (.) y el
exponente al mismo tiempo.
Ejemplo 3:
Algunos ejemplos son:
-50.50e-4
400.e-3
+65.65E+2
.7e2

El exponente tiene la funcin de desplazar la posicin del punto decimal hacia la derecha si
es positivo o, hacia la izquierda si es negativo.

Tutorial Lenguaje de Programacin C.

24

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 4:
As pues, las siguientes constantes de tipo real representan al mismo valor:
0.004E+3
4.
.4e1
+400.00e-2
4000E-3

Ejemplo 5:
Algunos ejemplos de constantes de tipo real incorrectas son:
-200
-20,0
--111-111..
-111.11.
+22e
+22ee6
+22e 6
38E-2.2

4.4.-

(No aparece el punto ni el exponente)


(No puede aparecer la coma)
(No se puede duplicar el signo)
(No se puede duplicar el punto)
(No puede aparecer ms de un punto)
(Despus del carcter (e) o (E) se debe escribir el exponente)
(No se puede duplicar el carcter (e) o (E))
(No se puede escribir el carcter espacio en blanco)
(El exponente debe ser una cantidad entera)

CONSTANTES DE TIPO CARCTER EN LENGUAJE C

Una constante de tipo carcter es aquella que representa a un valor (dato) perteneciente al
conjunto de caracteres que puede representar el ordenador.
Ejemplo 1:
Las siguientes constantes de tipo carcter estn expresadas por su valor:
'a'
'T'
'5'
'+'
'.'

Ejemplo: 2
En lenguaje C, para representar el carcter comilla simple ('), se debe anteponer el carcter
barra invertida (\).
'\''

Tutorial Lenguaje de Programacin C.

25

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

4.5.-

CONSTANTES DE TIPO CADENA EN LENGUAJE C.

Una constante de tipo cadena es aquella que representa a un valor (dato) de tipo cadena, es
decir, representa a una secuencia de caracteres.
Ejemplo 1:
Las siguientes constantes de tipo cadena estn expresadas por su valor:
"Alejandro"
"Lucerna"
"Barcelona 2000"

Ejemplo 2:
En lenguaje C, para representar el carcter comilla doble (") dentro de una cadena, se debe
anteponer el carcter barra invertida (\).
#define FIESTA "7 de julio \"San Fermn\""

Tutorial Lenguaje de Programacin C.

26

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

5.-

OPERADORES Y EXPRESIONES EN LENGUAJE C

Expresiones Aritmticas
El Operador Divisin
Conversin de Tipo (Casting)
La Funcin pow
Expresiones Lgicas
Operadores Relacionales
Operadores Lgicos
La Funcin strcat
Operadores de Asignacin
La Funcin strcpy
Los Operadores Incremento (++) y Decremento (--)
Prioridad de Operadores en Lenguaje C

En un programa, el tipo de un dato determina las operaciones que se pueden realizar con l.
Por ejemplo, con los datos de tipo entero se pueden realizar operaciones aritmticas, tales como la
suma, la resta o la multiplicacin.
Ejemplo 1:
Algunos ejemplos son:
111 + 6
19 - 72
24 * 3

(operacin suma)
(operacin resta)
(operacin multiplicacin)

Todas las operaciones del ejemplo constan de dos operandos (constantes enteras) y un
operador. La mayora de las veces es as, pero, tambin es posible realizar operaciones con distinto
nmero de operadores y/u operandos.
Ejemplo 2:
Por ejemplo:

111 + 6 - 8
-( ( +19 ) + 72 )
-( -72 )

(tres operandos y dos operadores)


(dos operandos y tres operadores)
(un operando y dos operadores)

En las operaciones del ejemplo se puede observar que los caracteres ms (+) y menos (-)
tienen dos usos:
1. Operadores suma y resta.
2. Signos de un nmero (tambin son operadores).

Los operadores de signo ms (+) y menos (-) son operadores monarios, tambin llamados
unarios, ya que, actan, solamente, sobre un operando.

Tutorial Lenguaje de Programacin C.

27

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Los caracteres abrir parntesis "(" y cerrar parntesis ")" se utilizan para establecer la
prioridad de los operadores, es decir, para establecer el orden en el que los operadores actan
sobre los operandos.
Un operador indica el tipo de operacin a realizar sobre los operandos (datos) que acta.
Los operandos pueden ser:
Constantes (expresadas por su valor o con un nombre (identificador)).
Variables.
Llamadas a funciones.
Elementos de formaciones (arrays).

En este apartado se van a tratar operaciones en donde slo aparecen constantes y variables.
Cuando se combinan uno o ms operadores con uno o ms operandos se obtiene una
expresin. De modo que, una expresin es una secuencia de operandos y operadores escrita bajo
unas reglas de sintaxis.
Ejemplo 3:
Dadas las siguientes declaraciones de constantes y variables:
#define PI 3.141592

int numero = 2;
float radio_circulo = 3.2;
Algunos ejemplos de expresiones son:
2 * PI * radio_circulo
( PI * PI )
numero * 5

De sus evaluaciones se obtienen los valores:


20.106189
9.869600
10

(valor real)
(valor real)
(valor entero)

( 2 * 3.141592 * 3.2 )
( 3.141592 * 3.141592 )
(2*5)

Un operador siempre forma parte de una expresin, en la cual, el operador siempre acta
sobre al menos un operando. Por el contrario, un operando s puede aparecer solo en una
expresin.
En programacin, de la evaluacin de una expresin siempre se obtiene un valor. Dicho
valor puede ser de tipo: entero, real, lgico, carcter o cadena.
Por consiguiente, una expresin puede ser:

Aritmtica (devuelve un nmero entero o real).


Lgica (devuelve un valor lgico: verdadero o falso)
De carcter (devuelve un carcter representable por el ordenador).
De cadena (devuelve una cadena).

Tutorial Lenguaje de Programacin C.

28

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

6.-

EXPRESIONES ARITMTICAS EN LENGUAJE C.

6.1.-

EXPRESIONES ARITMTICAS.

De la evaluacin de una expresin aritmtica siempre se obtiene un valor de tipo entero o


real. En lenguaje C existen algunos operadores que no se utilizan en pseudocdigo, y al revs. A
continuacin, se van a ver algunas similitudes y diferencias entre ambos lenguajes.

Figura - Comparacin entre operadores aritmticos en pseudocdigo y en C.

Como se puede apreciar, existen tres diferencias importantes entre los operadores
aritmticos en pseudocdigo y en lenguaje C:
1.
2.
3.

El operador potencia (**) no existe en lenguaje C.


En lenguaje C, slo existe un operador de divisin (/).
En lenguaje C, el operador mdulo (mod) se escribe con el carcter porcentaje (%).

Ejemplo:
A partir de las variables:
En pseudocdigo:

entero a = 4, b = 7, c = 2
En lenguaje C:

Tutorial Lenguaje de Programacin C.

29

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

int a = 4, b = 7, c = 2;
podemos escribir, por ejemplo, la expresin:
En pseudocdigo:
-a * ( b mod c )
En lenguaje C:

-a * ( b % c )
De la evaluacin de esta expresin se obtiene el valor
-4
6.2.-

(actan en orden los operadores: (%), menos (-) y (*))

EL OPERADOR DIVISIN (/) EN LENGUAJE C

Puesto que, en lenguaje C, slo existe un operador de divisin, el resultado de una divisin
depender de los operandos. La regla a seguir es: "si ambos operandos son enteros, el resultado de
evaluar la expresin ser entero, en caso contrario, es decir, si al menos un operando es real, el
resultado ser real".
Ejemplo:
Declaradas las variables:
int h = 3, v = 6;

De las expresiones:
v/h
5/h
5.0 / 2
5 / 2.
5.4 / 2.0

se obtienen los valores:


2
1
2.5
2.5
2.7

(valor entero, ambos operandos son enteros)


(valor entero, ambos operandos son enteros)
(valor real, el primer operando es real)
(valor real, el segundo operando es real)
(valor real, ambos operandos son reales)

Tutorial Lenguaje de Programacin C.

30

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

6.3.-

CONVERSIN DE TIPO (CASTING) EN LENGUAJE C.

En lenguaje C, cuando los dos operandos de una divisin (/) son enteros, pero aun as, de su
evaluacin se quiere obtener un valor real, hay que hacer un casting (o conversin de tipo). Su
sintaxis es:
( <tipo_de_dato> ) <expresin>;

De esta forma, se consigue cambiar el tipo de dato del valor resultante de evaluar la
<expresin> a un <tipo_de_dato> deseado.
Ejemplo:
Para cambiar el tipo de dato de los valores resultantes de las siguientes expresiones:
5
v
5.0
v/h
5/h
5.0 / 2
5 / 2.
5.4 / 2.0

(valor entero)
(valor entero)
(valor real)

se puede escribir:

( float ) 5
( float ) v
( int ) 5.0
( float ) v / h
( float ) 5 / h
( int ) 5.0 / 2
5 / ( int ) 2.
( int ) ( 5.4 / 2.0 )
de tal forma que, los resultados de evaluar las expresiones anteriores son:
5.000000
6.000000
5
2.000000
1.666667
2
2
2

(valor real)
(valor real)
(valor entero)
(actan en orden los operadores: "( <tipo> )" y (/))
(actan en orden los operadores: "( <tipo> )" y (/))
(actan en orden los operadores: "( <tipo> )" y (/))
(actan en orden los operadores: "( <tipo> )" y (/))
(actan en orden los operadores: (/) y "( <tipo> )")

Tutorial Lenguaje de Programacin C.

31

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

6.4.-

LA FUNCIN POW EN LENGUAJE C

En lenguaje C, para realizar operaciones con potencias se utiliza una funcin de su biblioteca
estndar, en concreto la funcin pow, a la que hay que "darle" (pasarle) dos operandos entre
parntesis. La sintaxis de su llamada es:
pow( <operando_nmero_base>, <operando_exponente> )

La funcin pow devuelve, sobre el propio identificador de la funcin, el resultado que se


obtiene de elevar el <operando_nmero_base> al <operando_exponente>. El valor de retorno de
la funcin es de tipo double, con independencia de que los operandos sean reales o enteros.
Ejemplo:
Partiendo de la variable:
En pseudocdigo:
entero numero = 9
En lenguaje C:

int numero = 9;
De la expresin:

En pseudocdigo:
1 + numero ** 2
En lenguaje C:
1 + pow

( numero, 2 )

La funcin pow devuelve el resultado de elevar el valor de la variable numero a 2. De


manera que, el resultado de evaluar la expresin anterior es:
82.000000

(se obtiene de 1 + 81.000000)

La declaracin de la funcin pow se encuentra en el archivo de cabecera math.h. Por tanto,


si en un programa se utiliza dicha funcin, habr que escribir tambin:
#include <math.h>

Tutorial Lenguaje de Programacin C.

32

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

6.5.-

EXPRESIONES LGICAS EN LENGUAJE C

De la evaluacin de una expresin lgica siempre se obtiene un valor de tipo lgico


(verdadero o falso). En las expresiones lgicas se pueden utilizar dos tipos de operadores:
6.5.1.-

Operadores Relacionales en Lenguaje C

Un operador relacional se utiliza para comparar los valores de dos expresiones. stas deben
ser del mismo tipo (aritmticas, lgicas o de carcter).
En la siguiente figura se comparan los operadores relacionales en pseudocdigo y en
lenguaje C:

Figura - Comparacin entre operadores relacionales en pseudocdigo y en C.

Las diferencias son dos:

1. En C, el operador igual que (=) se escribe con los caracteres igual-igual (==).
2. En C, el operador distinto que (<>) se escribe con los caracteres admiracin-igual (!=).

Ejemplo:
A partir de las variables:
En pseudocdigo:

entero p = 45, q = 186


En lenguaje C:

int p = 45, q = 186;

Tutorial Lenguaje de Programacin C.

33

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

podemos escribir la expresin:


En pseudocdigo:
p <> q

En lenguaje C:
p != q

De su evaluacin se obtiene:
En pseudocdigo:
Verdadero

En lenguaje C:
1

( p es distinta de q )

(C simula el valor lgico verdadero con el valor entero 1)

En lenguaje C, los datos de tipo lgico se simulan con datos de tipo entero, considerndose
el valor 0 como falso, y cualquier otro valor entero como verdadero.
6.5.2.-

Operadores Lgicos en Lenguaje C.

Un operador lgico acta, exclusivamente, sobre valores de expresiones lgicas.

En la siguiente figura se comparan los operadores lgicos en pseudocdigo y en lenguaje C:

Figura - Comparacin entre operadores lgicos en pseudocdigo y en C.

Tutorial Lenguaje de Programacin C.

34

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo:
Habiendo declarado las variables:
En pseudocdigo:

entero r = 2, s = 9, t = 8
En lenguaje C:

int r = 2, s = 9, t = 8;
se puede escribir

En pseudocdigo:
No

( r = s o r <= t )

En lenguaje C:

( r == s || r <= t )

La expresin se evala a
En pseudocdigo:
falso

En lenguaje C:
0

6.6.-

(actan en orden los operadores: (<=), (==), (||) y (!))


(C simula el valor lgico falso con el valor entero 0)

LA FUNCIN STRCAT EN LENGUAJE C

En lenguaje C, no existe el operador concatenacin (+), que s existe en otros lenguajes. Sin
embargo, para concatenar cadenas, se puede utilizar la funcin strcat, que est disponible en la
biblioteca estndar de C. La sintaxis de una llamada a strcat es:
strcat( <cadena_destino>, <cadena_fuente> )

La funcin strcat aade el contenido de la <cadena_fuente> a la <cadena_destino>.

Ejemplo:
Dadas las siguientes declaraciones de arrays de caracteres:
En pseudocdigo:

Tutorial Lenguaje de Programacin C.

35

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

cadena nombre = "Ana", apellido = "Luz"


En lenguaje C:

char nombre[8] = "Ana", apellido[4] = "Luz";


es posible escribir la expresin:
En pseudocdigo:
nombre + apellido
En lenguaje C:
strcat

( nombre, apellido )

Observe el efecto que tiene, en la memoria de la computadora, la ejecucin de la funcin


strcat. El contenido del array apellido se concatena (aade) al array nombre.

La declaracin de la funcin strcat se encuentra en el archivo de cabecera string.h. Por tanto,


para poder usar dicha funcin en un programa, hay que escribir:
#include <string.h>

6.7.-

OPERADORES DE ASIGNACIN EN LENGUAJE C

En lenguaje C existen expresiones de asignacin y, para escribirlas, se utilizan los siguientes


operadores de asignacin:

Figura - Clasificacin de los operadores de asignacin en C.

Tutorial Lenguaje de Programacin C.

36

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

De ellos, el ms utilizado es el operador de asignacin (=). Su funcionalidad es equiparable


a la de una instruccin de asignacin en psedocdigo, y su sintaxis es muy similar.
<nombre_de_la_variable> = <expresin>;
Existen dos diferencias:

1. En vez del smbolo reservado flecha izquierda (), se utiliza el carcter igual (=).
2. Se debe escribir un punto y coma (;) al final.

Ejemplo 1:
Partiendo de la constante simblica
#define PI 3.141592
y de las variables

float area, longitud, radio;


una instruccin de asignacin puede ser:
radio = 5.78;

Tcnicamente, en lenguaje C, una asignacin (=) es una operacin, al igual que lo es una
suma (+) o una resta (-). En consecuencia, radio = 5.78 es una expresin de asignacin, que entra
dentro de la categora de las instrucciones de expresin.
<instruccin_de_expresin>;

De la evaluacin de una expresin de asignacin siempre se obtiene el mismo valor que el


asignado a la variable, en este caso, 5.78.
Si ahora escribimos:

area = PI * pow
( radio, 2 );
longitud = 2 * PI * radio;
De la evaluacin de estas instrucciones de expresin se obtienen los valores 57.046290 y
36.316804, los cuales coinciden con los valores asignados a las variables area y longitud,
respectivamente.

Cuando el operador de asignacin (=) se escribe precedido de un operador aritmtico:


suma (+), resta (-), multiplicacin (*), divisin (/) o mdulo (%), la unin de ambos se convierte en
un nuevo operador de asignacin que opera de la siguiente manera:
"A la variable se le asigna el valor que se obtiene de evaluar
<variable> <operador_aritmtico> <expresin>."

Tutorial Lenguaje de Programacin C.

37

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 2:
Dada la siguiente declaracin de variables:
int m = 4, n = 1;

se puede escribir la instruccin de expresin


m += 3;

que es equivalente a la instruccin


m = m + 3;

En la memoria, cambiar el valor almacenado en el espacio representado por la variable m.

Si, a continuacin, se ejecuta la instruccin


m *= n += 2;

ahora, los valores de las variables m y n son:

Primero, se evala la expresin n += 2 (equivalente a n = n + 2). Esto produce que a la


variable n se le asigne un 3. En segundo lugar, se evala la expresin m *= 3 (equivalente a m = m *
3), asignndosele a la variable m el valor 21.
Tutorial Lenguaje de Programacin C.

38

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

6.8.-

LA FUNCIN STRCPY EN LENGUAJE C

En lenguaje C, para asignar una expresin de cadena a un array de caracteres, no se puede


utilizar el operador de asignacin (=). Para ello, se puede utilizar la funcin strcpy, que est
disponible en la bibiliteca estndar de C. La sintaxis de una llamada a strcpy es:
strcpy( <variable_destino>, <cadena_fuente> )

La funcin strcpy copia el contenido de la <cadena_fuente> en la <variable_destino>,


siendo sta un array de caracteres.
Ejemplo:
Habiendo declarado el siguiente array de caracteres:
En pseudocdigo:
cadena ciudad
En lenguaje C:

char ciudad[6];
es posible escribir
En pseudocdigo:

ciudad "Roma" (instruccin de asignacin)


En lenguaje C:

strcpy( ciudad, "Roma" ) (instruccin de expresin)


Por tanto, en memoria tendremos:

La declaracin de la funcin strcpy se encuentra en el archivo de cabecera string.h. Por


tanto, para poder usar dicha funcin en un programa, hay que escribir:
#include <string.h>

Tutorial Lenguaje de Programacin C.

39

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

6.9.-

LOS OPERADORES INCREMENTO (++) Y DECREMENTO (--) EN LENGUAJE C

En lenguaje C, tanto el operador incremento (++) como el operador decremento (--) actan
siempre sobre un solo operando, normalmente una variable. Por tanto, son operadores monarios, y
sirven para incrementar o decrementar en una unidad el valor de dicho operando.
Ejemplo 1:
Declaradas las variables:
int r = 8, s = 3;

se pueden escribr las instrucciones de expresin:


r++;
s--;

Dichas instrucciones son equivalentes a:


r = r + 1;
s = s - 1;

Y tambin se pueden escribir como:


++r;
--s;

Tras su ejecucin, el aspecto de la memoria ser:


En estas instrucciones, ambos operadores se pueden escribir, indistintamente, antes o
despus de los operandos sobre los que actan. Pero, cuando en una expresin, adems del
operador incremento o decremento, tambin aparecen otros operadores, entonces s que hay que
tener en cuenta la diferencia que supone el escribirlos antes o despus.
Ejemplo 2:
A partir de las variables:
int i = 5, j, k = 5, m;

Si se ejecutan las instrucciones:

j = i++;
m = ++k;

Tutorial Lenguaje de Programacin C.

40

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Los valores de las variables en memoria sern:

Obsrvese que, los valores de j y m son diferentes. Esto es debido a que, cuando se evala la
expresin j = i++, en primer lugar, se le asigna a j el valor de i (es decir, un 5) y, a continuacin, se
incrementa el valor de la variable i. Por el contrario, cuando se evala la expresin m = ++k,
primero, se incrementa el valor de k (de 5 pasa a ser 6) y, despus, este nuevo valor de k se le
asigna a m.
En resumen, cuando en una expresin el operador incremento (++) o decremento (--)
precede al operando sobre el que acta (por ejemplo ++k), antes de utilizar el valor de dicho
operando para otro propsito, este se incrementa. De ser al revs, es decir, si es el operando quien
precede al operador (por ejemplo i++), el valor de dicho operando se incrementa despus de ser
utilizado para otro fin.
6.10.-

PRIORIDAD DE OPERADORES EN LENGUAJE C

La prioridad de todos los operadores del lenguaje C estudiados hasta el momento en este
curso/tutorial es:

Figura - Prioridad de los operadores aritmticos, de ndice de un array, de llamada a una funcin,
relacionales, lgicos, de asignacin y de conversin de tipo en C.

Tutorial Lenguaje de Programacin C.

41

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Obsrvese que, en lenguaje C, tanto los parntesis "( )" que se utilizan para llamar a una
funcin, como los corchetes "[ ]" que albergan el ndice de un array, tambin son considerados
operadores. Adems, son los operadores ms prioritarios y, en una expresin, se evalan de
izquierda a derecha.

Por otra parte, los operadores incremento (++), decremento (--) y conversin de tipo "(
<tipo> )" entran dentro de la categora de operadores monarios. De manera que, al igual que los
operadores signo ms (+), signo menos (-), negacin (!) y de asignacin, todos ellos se evalan de
derecha a izquierda en una expresin, al revs que todos los dems.

Tutorial Lenguaje de Programacin C.

42

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

7.-

FUNCIONES PRINTF Y SCANF.

La Funcin printf
Texto Ordinario en la Funcin printf
Especificadores de Formato en la Funcin printf
Secuencias de Escape en la Funcin printf
La Funcin scanf
Especificadores de Formato en la Funcin scanf
Ejercicios de Entrada y Salida Estndar (scanf y printf)

En lenguaje C no existen palabras reservadas para realizar entradas y salidas. Para ello, el
programador puede hacer uso de las funciones de entrada y salida estndar proporcionadas por la
biblioteca estndar de lenguaje C, como son printf y scanf, entre otras que estudiaremos ms
adelante en este curso/tutorial.
7.1.-

LA FUNCIN PRINTF EN LENGUAJE C

Texto Ordinario en la Funcin printf


Especificadores de Formato en la Funcin printf
Secuencias de Escape en la Funcin printf

La funcin printf permite llevar hacia la salida estndar (la pantalla) los valores (datos)
obtenidos de la evaluacin de una lista de argumentos. La sintaxis de su llamada es:
printf( <cadena_de_control> [, <lista_de_argumentos> ] )

En programacin, los argumentos (tambin llamados parmetros) se emplean para


transferir datos de un programa (o subprograma) llamante a otro llamado, y viceversa (del llamado
al llamante).

Cuando desde un programa llamante se invoca a la funcin printf, a sta se le pasa una lista
de argumentos (expresiones). Los valores (datos) obtenidos de la evaluacin de esa lista de
expresiones son los que se van a mostrar por la pantalla. Tambin la <cadena_de_control> es un
argumento.
En la <cadena_de_control>, el programador debe indicar el formato de salida de los datos
que se van a mostrar por la pantalla. Para ello, se puede hacer uso de:
Texto ordinario (texto normal).
Especificadores de formato.
Secuencias de escape.

La <cadena_de_control> es, en s misma, una cadena de caracteres, que se debe escribir


entre comillas dobles (").

Tutorial Lenguaje de Programacin C.

43

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

7.2.-

TEXTO ORDINARIO EN LA FUNCIN PRINTF DEL LENGUAJE C

En la funcin printf de la biblioteca estndar del lenguaje C, el texto ordinario que se puede
utilizar es texto normal y corriente, a diferencia de los especificadores de formato y de las
secuencias de escape, que se les considera texto especial.

Ejemplo:
En la llamada a la funcin printf de nuestro primer programa de este curso/tutorial, la
cadena de control slo contena texto ordinario:
#include <stdio.h>
int main()
{
printf( "Hola mundo" );
return 0;
}

Ntese que, en este ejemplo, a la funcin printf no se le pasa ningn argumento, aparte de la
cadena de control.
Por pantalla aparecer:
Hola mundo
7.3.-

ESPECIFICADORES DE FORMATO EN LA FUNCIN PRINTF DEL LENGUAJE C

Cuando a la funcin printf de la biblioteca estndar del lenguaje C se le pase una lista de
argumentos (expresiones), se debe escribir un especificador de formato por cada argumento. En la
funcin printf, los especificadores de formato establecen el formato de salida por pantalla de los
argumentos. La forma ms sencilla de escribir un especificador de formato es con el carcter tanto
por ciento (%) seguido de un carcter de conversin que indique el tipo de dato del argumento. De
momento, en este curso/tutorial no es necesario conocer todos los especificadores de formato que
se pueden usar en la funcin printf, pero s, los ms utilizados:

Figura - Especificadores de formato ms utilizados en la funcin printf.


Tutorial Lenguaje de Programacin C.

44

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 1:
Dada la constante simblica
#define NOMBRE "Raquel"
si escribimos
printf( "Hola %s", NOMBRE );
por pantalla se ver:
Hola Raquel

El especificador de formato (%s) escrito en la cadena de control, indica que, por pantalla, se
va a mostrar un dato de tipo cadena en ese lugar, en este caso, "Raquel".
Ejemplo 2:
Si se ejecuta el programa

#include <stdio.h>
int main()
{
char nombre[8] = "Timoteo";
int hermanos = 2, sobrinos = 4;
printf( "%s tiene %d hermanos y %d sobrinos.",
nombre, hermanos, sobrinos );
return 0;
}
por pantalla se ver:

Timoteo tiene 2 hermanos y 4 sobrinos.


En la cadena de control del ejemplo, los especificadores de formato (%s), (%d) y (%d)
indican que, en esos lugares, y en dicho orden, va a aparecer un dato de tipo cadena, un dato de tipo
entero y otro dato de tipo entero, respectivamente. En este caso, se muestran los valores "Timoteo",
2 y 4.
Cada especificador de formato de la cadena de control se hace corresponder con un
argumento (expresin), en el mismo orden de aparicin, de izquierda a derecha. En el caso de que
existan ms argumentos que especificadores de formato, los "sobrantes" son ignorados. Por el
contrario, si existen menos argumentos que especificadores de formato, en pantalla se mostrarn
datos inverosmiles.

Tutorial Lenguaje de Programacin C.

45

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

7.4.-

SECUENCIAS DE ESCAPE EN LA FUNCIN PRINTF DEL LENGUAJE C

Una secuencia de escape siempre representa a un carcter del ASCII. Dichos caracteres se
pueden clasificar en:

Grficos (se corresponden con los smbolos ms usados para escribir por los humanos).
No grficos (representan a acciones, como por ejemplo, mover el cursor de la pantalla al
principio de la lnea siguiente).

La forma ms sencilla de escribir una secuencia de escape es con el carcter barra invertida
(\), seguido de un carcter especial. Por tanto, cuando en la cadena de control de la funcin printf
se escriba una secuencia de escape, o bien se mostrar un carcter grfico por pantalla, o bien se
realizar una accin. Por ahora, no es necesario conocer todas las secuencias de escape que existen
en lenguaje C, pero s, algunas de las ms utilizadas:

Figura - Secuencias de enlace ms utilizadas en la funcin printf.


En general, cuando se disea el algoritmo de un programa, el programador no se preocupa
del lugar exacto de la pantalla en donde van a aparecer los datos de salida del programa, ya que,
este aspecto suele concretarse en la codificacin.
En Windows, la patanlla (de la consola) est compuesta por 25 filas (lneas) y 80 columnas,
es decir, en pantalla se pueden visualizar 2000 caracteres a la vez (25*80).

Normalmente, al ejecutar un programa escrito en lenguaje C, el cursor se posiciona (por


defecto) en la primera columna de la primera fila.
_ (cursor)
A partir de esa posicin, se mostrarn por pantalla los datos de salida de dicho programa.

Tutorial Lenguaje de Programacin C.

46

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 1:
Si se escribe

#include <stdio.h>
int main()
{
printf( "uno dos tres" );
return 0;
}
Tal cual est escrita la funcin printf, por pantalla se ver el texto "uno dos tres" pegado a la
esquina superior izquierda de la misma.
uno dos tres

Hasta ahora, no nos hemos preocupado del lugar exacto de la pantalla donde queremos que
se muestren los datos de salida. Sin embargo, si deseamos visualizar dicho texto en otro lugar de la
pantalla, por ejemplo, en la segunda lnea:
uno dos tres

Esto se puede conseguir haciendo uso de la secuencia de escape nueva lnea (\n).
printf( "\nuno dos tres" );

Partiendo de que, inicialmente, el cursor se encuentre en la primera columna de la primera


fila, es decir, en la esquina superior izquierda de la pantalla, la secuencia de escape nueva lnea (\n)
lo mover al principio de la segunda fila y, a continuacin, se escribir el texto "uno dos tres".
Obsrvese que, los caracteres que forman la secuencia de escape, (\) y (n), no aparecen en pantalla.
La instruccin anterior hace lo mismo que las dos siguientes
printf( "\n" );
printf( "uno dos tres" );

Ejemplo 2:
Si por pantalla se quiere ver
uno
dos
tres

hay que escribir

printf( "uno\ndos\ntres" );

Tutorial Lenguaje de Programacin C.

47

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

El proceso de ejecucin de esta instruccin es el siguiente: justo en la esquina superior


izquierda de la pantalla (primera lnea) se muestra el texto "uno". Despus, una secuencia de
escape nueva lnea (\n) mueve el cursor al principio de la lnea siguiente (segunda lnea), en donde
se visualiza el texto "dos". Posteriormente, otra secuencia de escape nueva lnea (\n) vuelve a
mover el cursor al principio de la lnea siguiente (tercera lnea) y, finalmente, se muestra el texto
"tres".
La instruccin anterior es equivalente a:
Printf( "uno" );
printf( "\ndos" );
printf( "\ntres" );

Igualmente, se podra escribir


printf( "uno\n" );
printf( "dos\n" );
printf( "tres" );

Ejemplo 3:
Para visualizar
uno dos tres
se puede escribir

printf( "\n uno dos tres" );


Ejemplo 4:
Y para mostrar
uno
dos
tres

escribiremos, por ejemplo,

printf( "\n uno\n dos\n tres" );


La secuencia de escape tabulador horizontal (\t) mueve el cursor a la posicin siguiente del
tabulador horizontal de la pantalla. Entre cada posicin hay ocho caracteres, por tanto, dichas
posiciones estn en las columnas 1, 9, 17, 25, 33, 41, 49, 57, 65 y 73.

Tutorial Lenguaje de Programacin C.

48

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 5:
De la instruccin

printf( "diez\tveinte\ttreinta" );

diez

se obtiene por pantalla

veinte treinta

Obsrvese que, la d (de diez), la v (de veinte) y la primera t (de treinta) estn en las
posiciones del tabulador horizontal 1, 9 y 17, respectivamente. Grficamente, representando los
espacios en blanco mediante guiones (-), en pantalla se muestra:
diez----veinte--treinta

Entre el carcter d (de diez) y la v (de veinte) hay exactamente ocho caracteres (la v no se
cuenta), al igual que entre la v (de veinte) y la primera t (de treinta).
Las secuencias de escape comilla doble (\") y barra invertida (\\) sirven para mostrar por
la pantalla los caracteres comilla doble (") y barra invertida (\), respectivamente.
Ejemplo 6:
Al escribir

printf( "\n\t\t7 de julio \"San Fermin\"" );


en la segunda lnea de la pantalla se mostrar, a partir de la tercera posicin del tabulador
horizontal (columna 17), el mensaje: "7 de julio "San Fermin""
7 de julio "San Fermin"

7.5.-

ESPECIFICADORES DE FORMATO EN LA FUNCIN PRINTF DEL LENGUAJE C

Cuando a la funcin printf de la biblioteca estndar del lenguaje C se le pase una lista de
argumentos (expresiones), se debe escribir un especificador de formato por cada argumento. En la
funcin printf, los especificadores de formato establecen el formato de salida por pantalla de los
argumentos. La forma ms sencilla de escribir un especificador de formato es con el carcter tanto
por ciento (%) seguido de un carcter de conversin que indique el tipo de dato del argumento. De
momento, en este curso/tutorial no es necesario conocer todos los especificadores de formato que
se pueden usar en la funcin printf, pero s, los ms utilizados:

Tutorial Lenguaje de Programacin C.

49

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Figura - Especificadores de formato ms utilizados en la funcin printf.

Ejemplo 1:
Dada la constante simblica
#define NOMBRE "Raquel"
si escribimos

printf( "Hola %s", NOMBRE );


por pantalla se ver:
Hola Raquel

El especificador de formato (%s) escrito en la cadena de control, indica que, por pantalla, se
va a mostrar un dato de tipo cadena en ese lugar, en este caso, "Raquel".
Ejemplo 2:
Si se ejecuta el programa

#include <stdio.h>
int main()
{
char nombre[8] = "Timoteo";
int hermanos = 2, sobrinos = 4;
printf( "%s tiene %d hermanos y %d sobrinos.",
nombre, hermanos, sobrinos );
return 0;
}
por pantalla se ver:

Timoteo tiene 2 hermanos y 4 sobrinos.

Tutorial Lenguaje de Programacin C.

50

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

En la cadena de control del ejemplo, los especificadores de formato (%s), (%d) y (%d)
indican que, en esos lugares, y en dicho orden, va a aparecer un dato de tipo cadena, un dato de tipo
entero y otro dato de tipo entero, respectivamente. En este caso, se muestran los valores "Timoteo",
2 y 4.

Cada especificador de formato de la cadena de control se hace corresponder con un


argumento (expresin), en el mismo orden de aparicin, de izquierda a derecha. En el caso de que
existan ms argumentos que especificadores de formato, los "sobrantes" son ignorados. Por el
contrario, si existen menos argumentos que especificadores de formato, en pantalla se mostrarn
datos inverosmiles.
7.6.-

LA FUNCIN SCANF EN LENGUAJE C

La funcin scanf de la biblioteca estndar del lenguaje C permite asignar a una o ms


variables, uno o ms valores (datos) recibidos desde la entrada estndar (el teclado). La sintaxis de
su llamada es:
scanf( <cadena_de_control> [, <lista_de_argumentos> ] )

En la <cadena_de_control>, el programador debe indicar el formato de entrada de los datos


que se van a recoger por teclado. Para ello, se puede hacer uso de:
Especificadores de formato.
Otros caracteres

Por ahora, en este curso/tutorial, slo vamos a estudiar algunos de los especificadores de
formato ms utilizados en la funcin scanf.
7.7.-

ESPECIFICADORES DE FORMATO EN LA FUNCIN SCANF DEL LENGUAJE C

En la funcin scanf, por cada argumento (variable) que se le pase, se debe escribir un
especificador de formato, que establecer el formato de entrada por teclado del argumento. La
forma ms sencilla de escribir un especificador de formato en la funcin scanf es con el carcter
tanto por ciento (%) seguido de un carcter de conversin que indique el tipo de dato del
argumento. De momento, no es necesario conocer todos los especificadores de formato que se
pueden usar en la funcin scanf, pero s, los ms usados, que son los mismos que en la funcin
printf:

Tutorial Lenguaje de Programacin C.

51

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Figura - Especificadores de formato ms utilizados en la funcin scanf.

Ejemplo 1:
Dado el programa:

#include <stdio.h>
int main()
{
int numero;
printf( "\n Introduzca un numero entero: " );
scanf( "%d", &numero );
return 0;
}
En la memoria se reservar espacio para la variable numero. Y si el usuario teclea, por
ejemplo, un 5, en pantalla se ver:
Introduzca un numero entero: 5
Puesto que la variable numero es de tipo entero, en la cadena de control se tiene que
escribir el especificador de formato asociado a la entrada de un nmero entero (%d). Por otro lado,
la variable numero se ha escrito precedida del carcter ampersand (&). Se trata de un nuevo
operador, el operador direccin. El operador direccin (&) siempre acta sobre un operando
(normalmente una variable) y, de su evaluacin, se obtiene la direccin de memoria de dicha
variable.
Es sabido que, una variable representa a un espacio de memoria en el cual se puede
almacenar un dato. Pues bien, en realidad, a la funcin scanf no se le pasa una lista de variables,
sino, las direcciones de memoria de los espacios de memoria a los que representan dichas variables.

Tutorial Lenguaje de Programacin C.

52

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Para todas las variables declaradas en un programa se reservan espacios de memoria en


donde se almacenarn datos. La memoria del computador est dividida en celdas numeradas de
forma consecutiva, por lo que, cada una de ellas tiene una direccin (un nmero). Un dato puede
necesitar una o ms celdas de memoria. As pues, en el ejemplo 1, la expresin &numero hace
referencia a la primera celda donde se va a almacenar el valor 5 introducido por el usuario. La
direccin de memoria de la variable nmero podra ser, por ejemplo, 0012FF88. En informtica, las
direcciones de memoria suelen representarse con nmeros hexadecimales. Grficamente, se puede
representar de la siguiente manera:

El operador direccin (&) entra dentro de la categora de operadores monarios y, siguiendo


con el ejemplo, de la evaluacin de la expresin
&numero

se obtiene el valor 0012FF88, que es la direccin de memoria de la variable numero. Esa direccin
la necesita conocer la funcin scanf para localizar la primera celda del espacio de memoria en
donde se va a almacenar el 5 introducido por el usuario.
La direccin de memoria de la variable numero se puede visualizar en pantalla escribiendo

printf ( "%p", &numero );

Puesto que, de la expresin &numero se obtiene una direccin de memoria, en la cadena de


control de la funcin printf se tiene que escribir el especificador de formato asociado a la salida de
una direccin de memoria, (%p).

Obsrvese que, en la cadena de control de printf, se ha eludido escribir con tilde la palabra
numero, ya que, de haberlo hecho, por pantalla hubiesemos visto algo parecido a:
Introduzca un nmero entero: 5
Para visualizar el carcter '', podemos escribir:

printf( "\n Introduzca un n%cmero entero: ", 163 );

Fjese que, 163 es el nmero decimal que corresponde al carcter '' en ASCII.

Tutorial Lenguaje de Programacin C.

53

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 2:
Ahora, estudiemos el siguiente programa:

#include <math.h>
#include <stdio.h>
#define PI 3.141592
int main()
{
float area, radio;
printf( "\n Introduzca radio: " );
scanf( "%f", &radio );
area = PI * pow( radio, 2 );
printf( "\n El area de la circunferencia es: %f", area );
return 0;
}
Inicialmente, en la memoria se reservar espacio para las dos variables del programa.

Si el usuario teclea, por ejemplo, el valor 3.8 para el radio, en pantalla se visualizar:

Introduzca radio: 3.8


El area de la circunferencia es: 45.364588

La variable radio es de tipo real y, por tanto, en la cadena de control de la funcin scanf se
tiene que escribir el especificador de formato asociado a la entrada de un nmero real, (%f). Y,
puesto que, en la funcin printf, el resultado de evaluar la expresin area tambin es de tipo real, en
su cadena de control hay que escribir, de igual forma, el especificador de formato asociado a la
salida de un nmero real, (%f).
Para que el rea se muestre slo con dos cifras decimales, es decir, 45.36 en vez de
45.364588, en la cadena de control de la funcin printf se debe escribir %.2f en vez de %f.
printf( "\n El area de la circunferencia es: %.2f", area );
En pantalla se ver

Introduzca radio: 3.8


El area de la circunferencia es: 45.36

Tutorial Lenguaje de Programacin C.

54

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Aunque slo se muestren dos cifras decimales, en memoria el area seguir valiendo
45.364588.
Por otra parte, hemos dicho que, para conocer la direccin de memoria de una variable, se
puede utilizar el operador direccin (&). Pero, esta regla no es general. Por ejemplo, no es aplicable
a las variables (arrays) de tipo cadena.
Ejemplo 3:
Si se desea desarrollar un programa para leer un nombre de persona:
Introduzca nombre: Elsa
se puede escribir:

#include <stdio.h>
int main()
{
char nombre[5];
printf( "\n Introduzca nombre: " );
scanf( "%s", nombre );
return 0;
}
Obsrvese que, a la funcin scanf se le "pasa" nombre en vez de &nombre. Esto es as, ya
que, para las variables de tipo cadena (arrays de caracteres), su propio identificador (nombre, en
este caso) ya hace referencia a la direccin de memoria donde se va a almacenar el dato. Ms
concretamente, hace referencia al espacio reservado en memoria para guardar el primer carcter
de la cadena. Para el resto de caracteres de la cadena, el sistema habr reservado, en memoria,
espacios contiguos al primero.

Ntese que, la variable nombre ha sido declarada con un tamao de cinco caracteres. Por
consiguiente, con este programa slo se podr almacenar en memoria un nombre de persona de
hasta cuatro caracteres, ya que, en el quinto debe guardarse el carcter nulo (\0).

Tutorial Lenguaje de Programacin C.

55

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

7.8.7.8.1.-

EJERCICIOS DE SCANF Y PRINTF EN LENGUAJE C


Ejercicio - rea de un Tringulo (en C)

Resolver con printf y scanf


Escribir un programa, en lenguaje C, que:

1) Pida por teclado la base (dato real) de un tringulo.


2) Pida por teclado la altura (dato real) de un tringulo.
3) Calcule el rea del tringulo.
4) Muestre por pantalla el resultado (dato real).
En pantalla:
Introduzca base: 1.2
Introduzca altura: 4.5
El rea del tringulo es: 2.7

Nota: rea de un tringulo = base * altura / 2

Solucin del Ejercicio - rea de un Tringulo (en C)


Cdigo fuente del programa:
#include <stdio.h>
int main()
{
float altura, area, base;
printf( "Introduzca base: " );
scanf( "%f", &base );
printf( "Introduzca altura: " );
scanf( "%f", &altura );
area = base * altura / 2;
printf( "El area del triangulo es: %f", area );
return 0;
}
Una segunda solucin es:

#include <stdio.h>
int main()
{
float altura, base;
printf( "Introduzca base: " );
scanf( "%f", &base );
printf( "Introduzca altura: " );
scanf( "%f", &altura );
printf( "El area del triangulo es: %f", base * altura / 2 );
return 0;
}

Tutorial Lenguaje de Programacin C.

56

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

7.8.2.-

Ejercicio - Divisin Entera (en C)

Resolver con printf y scanf


Escribir un programa, en lenguaje C, que:

1) Pida por teclado dos nmeros (datos enteros).


2) Muestre por pantalla el resultado de realizar la divisin entera del primer nmero
introducido por el usuario entre el segundo, y el resto.
En pantalla:

Introduzca dividendo (entero): 39


Introduzca divisor (entero): 5
39 div 5 = 7 ( Resto = 4 )
Nota: Se entiende que el usuario no introducir un divisor igual a cero.

Solucin del Ejercicio - Divisin Entera (en C)


Cdigo fuente del programa:

#include <stdio.h>
int main()
{
int dividendo, divisor, cociente, resto;
printf( "Introduzca dividendo (entero): " );
scanf( "%d", &dividendo );
printf( "Introduzca divisor (entero): " );
scanf( "%d", &divisor );
cociente = dividendo / divisor;
resto = dividendo % divisor;
printf( "%d div %d = %d ( Resto = %d )",
dividendo, divisor, cociente, resto );
return 0;
}
Una segunda solucin es:

#include <stdio.h>
int main()
{
int dividendo, divisor;
printf( "Introduzca dividendo (entero): " );
scanf( "%d", &dividendo );
printf( "Introduzca divisor (entero): " );
scanf( "%d", &divisor );
printf( "%d div %d = %d ( Resto = %d )", dividendo, divisor,
dividendo / divisor, dividendo % divisor );
return 0;
}

Tutorial Lenguaje de Programacin C.

57

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

8.-

8.1.-

COMENTARIOS.

COMENTARIOS EN LENGUAJE C

En lenguaje C, los comentarios se escriben entre los caracteres barra-asterisco (/*) y


asterisco-barra (*/).
Ejemplo:
Cdigo fuente de un programa comentado:
/*********************************************/
/* Programa: Area_de_una_circunferencia
*/
/*
*/
/* Descripcin: Recibe por teclado el radio */
/* de una circunferencia, mostrando su rea */
/* por pantalla.
*/
/*
*/
/* Autor: Carlos Pes
*/
/*
*/
/* Fecha: 31/03/2005
*/
/*********************************************/
#include <math.h>
#include <stdio.h>
#define PI 3.141592 /* Definicin de una constante */
int main()
{
/* Variables del programa */
float area, radio;
printf( "\n Introduzca radio: " );
scanf( "%f", &radio ); /* Entrada de dato */
/* Clculo del rea de la circunferencia */
area = PI * pow( radio, 2 );
/* Salida por pantalla del resultado */
printf( "\n El area de la circunferencia es: %f", area );
return 0;
}
Los comentarios sern ignorados por el compilador y, por tanto, su presencia en el cdigo
fuente es, meramente, informativa.

Tutorial Lenguaje de Programacin C.

58

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

9.-

9.1.-

FUNCIN FFLUSH.

LA FUNCIN FFLUSH EN LENGUAJE C

Ejemplo 1:
Si ejecutamos el siguiente programa:

#include <stdio.h>
int main()
{
int a, b;
printf( "Introduzca el primer numero: " );
scanf( "%d", &a );
printf( "Introduzca el segundo numero: " );
scanf( "%d", &b );
printf( "Los valores son: %d, %d ", a, b );
return 0;
}
por pantalla veremos algo parecido a:

Introduzca el primer numero: 76


Introduzca el segundo numero: 45
Los valores son: 76, 45

Obsrvese que, cuando se ejecuta scanf, por ejemplo, en la primera vez


scanf( "%d", &a );

el programa se detiene a la espera de que el usuario teclee el dato de entrada requerido, el cual es
almacenado, temporalmente, en el buffer (memoria intermedia) de la entrada estndar. Y cuando
se pulsa la tecla INTRO, es, en ese momento, cuando a la variable a se le asigna el valor introducido.
Pero, adems, se produce un salto de lnea automtico, de forma que, despus de introducir el
nmero 76, la siguiente instruccin se muestra una lnea ms abajo. De igual forma, despus de la
instruccin
scanf( "%d", &b );

tambin se produce un salto de lnea automtico. En este ejemplo todo ha ido muy bien, sin
embargo, se tiene que tener especial cuidado si utilizados scanf para leer caracteres.

Tutorial Lenguaje de Programacin C.

59

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 2:
En el siguiente programa:

#include <stdio.h>
int main()
{
char a, b, c;
printf( "Introduzca primer caracter: " );
scanf( "%c", &a );
printf( "Introduzca segundo caracter: " );
scanf( "%c", &b );
printf( "Introduzca tercer caracter: " );
scanf( "%c", &c );
printf( "Los valores son: %c, %c, %c ", a, b, c );
return 0;
}
por pantalla se ver algo similar a:

Introduzca primer caracter: f


Introduzca segundo caracter: Introduzca tercer caracter: h
Los valores son: f,
,h
En esta ocasin, por qu no se ejecuta, correctamente, la siguiente instruccin?

scanf( "%c", &b );


La razn es la siguiente: cuando se ejecuta la primera instruccin de entrada:
scanf( "%c", &a );

despus de asignar el carcter 'f' a la variable a, se produce un salto de lnea automtico, pero, en el
buffer del teclado tambin se ha quedado almacenada la secuencia de escape (\n), que es,
precisamente, un carcter. En consecuencia, cuando se ejecuta la instruccin
scanf( "%c", &b );

a la variable b se le asigna el salto de lnea almacenado en el buffer de la entrada estndar, y la


ejecucin del programa continua con la siguiente instruccin. Ahora, el buffer vuelve a estar vaco y,
por tanto, la entrada de la variable c s que se ejecuta de forma correcta.
Para comprobar que esto es as, podemos sustituir la instruccin

printf( "Los valores son: %c, %c, %c ", a, b, c );


por esta otra:

printf( "Los valores son: %d, %d, %d ", a, b, c );

Tutorial Lenguaje de Programacin C.

60

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

En pantalla veremos:

Introduzca primer caracter: f


Introduzca segundo caracter: Introduzca tercer caracter: h
Los valores son: 102, 10, 104
y como se puede comprobar en las tablas del ASCII, los nmeros 102, 10 y 104 corresponden a los
caracteres 'f', LF (Salto de Lnea) y 'h', respectivamente.

Para resolver este problema, antes de leer un carcter con scanf, hay que vaciar (limpiar) el
buffer del teclado. Para ello, se utiliza la funcin fflush.
Ejemplo 3:
De forma que, el cdigo quedara de la siguiente manera:
#include <stdio.h>
int main()
{
char a, b, c;
printf( "Introduzca primer caracter: " );
scanf( "%c", &a );
printf( "Introduzca segundo caracter: " );
fflush( stdin );
scanf( "%c", &b );
printf( "Introduzca tercer caracter: " );
fflush( stdin );
scanf( "%c", &c );
printf( "Los valores son: %c, %c, %c ", a, b, c );
return 0;
}

La primera vez que se ejecuta scanf, el buffer del teclado est vaco, por tanto, no es preciso
utilizar fflush, pero s, en los dos casos posteriores. Obsrvese que, a fflush hay que indicarle el
buffer a limpiar, Standar Input (stdin) en este caso.

Tutorial Lenguaje de Programacin C.

61

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

10.-

10.1.-

TIPOS DE ERRORES.

TIPOS DE ERRORES EN LENGUAJE C

Una vez escrito el cdigo fuente de un programa, siempre se debe comprobar si se han
cometido errores. Estos pueden ser de tres tipos:
De sintaxis (sintcticos).
De ejecucin.
De lgica (lgicos).

10.2.-

ERRORES DE SINTAXIS EN LENGUAJE C

Los errores de sintaxis son los ms fciles de detectar en el cdigo fuente de un programa.
Un error de sintaxis se produce al escribir, incorrectamente, alguna parte del cdigo.

Ejemplo:
Estdiese el siguiente cdigo fuente de un programa escrito en lenguaje C:
include <stdio.h>
imt main()
{
int a, b;
a = 4;
b = a * 6;
printf( "%d", b )
retunr 0;
}

Existen cuatro errores de sintaxis:

Se ha escrito include en vez de #include.


Se ha escrito imt en vez de int.
Falta un punto y coma (;) despus de la llamada a printf.
Se ha escrito retunr en vez de return.

10.3.-

ERRORES DE EJECUCIN EN LENGUAJE C

Una vez corregidos los errores de sintaxis en el cdigo fuente de un programa, se debe
revisar que no se puede producir ningn error en la ejecucin del mismo. Un error de ejecucin se
produce cuando el ordenador no puede ejecutar alguna instruccin de forma correcta.
Tutorial Lenguaje de Programacin C.

62

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo:
En el programa:
#include <stdio.h>
int main()
{
int a;
float b;
a = 0;
b = 6.4 / a;
printf( "%f", b );
return 0;
}

se produce un error de ejecucin, ya que, al intentar evaluar la expresin:

6.4 / a

a vale 0, y no se puede dividir entre cero.


10.4.-

ERRORES DE LGICA EN LENGUAJE C.

Los errores de lgica son los ms difciles de detectar. Cuando un programa no tiene errores
de sintaxis ni de ejecucin, pero, an as, no funciona bien, esto es debido a la existencia de algn
error lgico. De manera que, un error de lgica se produce cuando los resultados obtenidos no son
los esperados.
Ejemplo:
Estdiese el siguiente cdigo:

#include <stdio.h>
int main()
{
float base, altura;
base = 6.3;
altura = 4.;
printf( "El area es: %f", base * altura / 3 );
return 0;
}
Su salida por pantalla es:

El area es: 8.4

No existen errores de sintaxis ni de ejecucin, sin embargo, la salida esperada es:


El area es: 12.6
Tutorial Lenguaje de Programacin C.

63

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Por consiguiente, existe algn error lgico que hay que corregir. El error est en la
expresin:
base * altura / 3

que, aunque no es incorrecta, no sirve para calcular el rea de un tringulo. En su lugar se debe
escribir:
base * altura / 2

Tutorial Lenguaje de Programacin C.

64

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

1.-

III.- INSTRUCCIONES DE CONTROL

INSTRUCCIONES ALTERNATIVAS EN LENGUAJE C

A continuacin, se estudian las distintas instrucciones de control alternativas que se pueden


utilizar en lenguaje C: doble (if else), simple (if) y mltiple (switch).
1.1.1.1.1.-

INSTRUCCIN DE CONTROL ALTERNATIVA DOBLE (IF ELSE)


Instruccin if else en Lenguaje C

En lenguaje C, para escribir una instruccin alternativa doble (if else) se utiliza la sintaxis:

if ( <expresin_lgica> )
{
<bloque_de_instrucciones_1>
}
else
{
<bloque_de_instrucciones_2>
}

A la <expresin_lgica> de una instruccin alternativa doble (if else) tambin se le


denomina condicin.
Para que se ejecute el <bloque_de_instrucciones_1>, la condicin tiene que ser verdadera.
Por el contrario, si la condicin es falsa, se ejecutar el <bloque_de_instrucciones_2>.
En resumen, en C una instruccin if else (alternativa doble) permite seleccionar, por medio
de una condicin, el siguiente bloque de instrucciones a ejecutar, de entre dos posibles.
Ejemplo:
Se quiere escribir un programa que:

1) Pida por teclado la nota (dato real) de una asignatura.


2) Muestre por pantalla:

"APROBADO", en el caso de que la nota sea mayor o igual que 5.


"SUSPENDIDO", en el caso de que la nota sea menor que 5.
De modo que, por pantalla se ver, por ejemplo:

Introduzca nota (real): 7.5


APROBADO

Tutorial Lenguaje de Programacin C.

65

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Otra posibilidad es:

Introduzca nota (real): 3.5


SUSPENDIDO
Cuando un bloque de instrucciones slo contiene una instruccin, los caracteres abrir llave
({) y cerrar llave (}) son opcionales. Por tanto, en lenguaje C, para resolver el problema del ejemplo
se puede escribir:
#include <stdio.h>
int main()
{
float nota;
printf( "\n Introduzca nota (real): " );
scanf( "%f", &nota );
if ( nota >= 5 )
printf( "\n APROBADO" );
else
printf( "\n SUSPENDIDO" );
return 0;
}

Cuando en el cdigo fuente de un programa existe una condicin de la cual depende que a
continuacin se ejecuten unas instrucciones u otras, se dice que existe una bifurcacin. Ejercicios
de la Instruccin Alternativa Doble (if else) en Lenguaje C

1.1.2.-

Listado de Ejercicios Resueltos con la instruccin if else

EJERCICIO - Suma de Dos Nmeros


Resolver con la Instruccin if else

Escribir un programa, en lenguaje C, que:

1) Pida por teclado dos nmeros (datos enteros).


2) Calcule la suma de los nmeros introducidos por el usuario.
3) Muestre por pantalla:

"LA SUMA S ES MAYOR QUE CERO.", en el caso de que s lo sea.


"LA SUMA NO ES MAYOR QUE CERO.", en el caso de que no lo sea.
En pantalla:

Introduzca primer nmero (entero): 14


Introduzca segundo nmero (entero): -17
LA SUMA NO ES MAYOR QUE CERO.
Resuelto con la Instruccin if else
Tutorial Lenguaje de Programacin C.

66

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Cdigo fuente del programa:

#include <stdio.h>
int main()
{
int a, b, suma;
printf( "Introduzca primer numero (entero): " );
scanf( "%d", &a );
printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &b );
suma = a + b;
if ( suma > 0 )
printf( "LA SUMA SI ES MAYOR QUE CERO." );
else
printf( "LA SUMA NO ES MAYOR QUE CERO." );
return 0;
}
Una segunda solucin es:

#include <stdio.h>
int main()
{
int a, b;
printf( "Introduzca primer numero (entero): " );
scanf( "%d", &a );
printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &b );
if ( a + b > 0 )
printf( "LA SUMA SI ES MAYOR QUE CERO." );
else
printf( "LA SUMA NO ES MAYOR QUE CERO." );
return 0;
}
EJERCICIO - Nmero Intermedio
Resolver con la Instruccin if else

Escribir un programa, en lenguaje C, que:

1) Pida por teclado tres nmeros (datos enteros): <numero1>, <numero2> y


<numero3>.
2) Muestre por pantalla:
Tutorial Lenguaje de Programacin C.

67

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

"<numero2> S ES MENOR QUE <numero3> Y MAYOR QUE <numero1>", en el caso de que s lo


sea.
"<numero2> NO ES MENOR QUE <numero3> Y MAYOR QUE <numero1>", en el caso de que no lo
sea.
En pantalla:

Introduzca primer nmero (entero): 6


Introduzca segundo nmero (entero): 9
Introduzca tercer nmero (entero): 22
9 S ES MENOR QUE 22 Y MAYOR QUE 6
Introduzca primer nmero (entero): 15
Introduzca segundo nmero (entero): 7
Introduzca tercer nmero (entero): 8
7 NO ES MENOR QUE 8 Y MAYOR QUE 15
Solucin del Ejercicio - Nmero Intermedio (en C)
Resuelto con la Instruccin if else
Cdigo fuente del programa:

#include <stdio.h>
int main()
{
int n1, n2, n3;
printf( "Introduzca primer numero (entero): " );
scanf( "%d", &n1 );
printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &n2 );
printf( "Introduzca tercer numero (entero): " );
scanf( "%d", &n3 );
if ( n2 < n3 && n2 > n1 )
printf( "%d SI ES MENOR QUE %d Y MAYOR QUE %d", n2, n3, n1 );
else
printf( "%d NO ES MENOR QUE %d Y MAYOR QUE %d", n2, n3, n1 );
return 0;
}
Otra solucin es:

#include <stdio.h>
int main()
{
int n1, n2, n3;
printf( "Introduzca primer numero (entero): " );

Tutorial Lenguaje de Programacin C.

68

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

scanf( "%d", &n1 );


printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &n2 );
printf( "Introduzca tercer numero (entero): " );
scanf( "%d", &n3 );
printf( "%d", n2 );
if ( n2 < n3 && n2 > n1 )
printf( " SI " );
else
printf( " NO " );
printf( "ES MENOR QUE %d Y MAYOR QUE %d", n3, n1 );
return 0;

1.2.-

1.2.1.-

INSTRUCCIN DE CONTROL ALTERNATIVA SIMPLE (IF)


Instruccin if en Lenguaje C

Una instruccin alternativa simple (if) es una variante (ms sencilla) de una instruccin
alternativa doble (if else). En lenguaje C, para escribir una instruccin if se utiliza la sintaxis:
if ( <expresin_lgica> )
{
<bloque_de_instrucciones>
}

Ejemplo:
Se quiere escribir un programa que:

1) Pida por teclado la nota (dato real) de una asignatura.


2) Muestre por pantalla:

"APROBADO", en el caso de que la nota sea mayor o igual que 5.

Introduzca nota (real): 7.5


APROBADO

Obsrvese que, en este problema, no se va a mostrar por pantalla "SUSPENDIDO" en el caso


de que la nota sea menor que 5, como s se haca en el ejemplo del apartado anterior (Instruccin if
else).
Introduzca nota (real): 3.5

Al igual que ocurre con una instruccin alternativa doble, cuando el


<bloque_de_instrucciones> de una alternativa simple slo contiene una instruccin, los caracteres
Tutorial Lenguaje de Programacin C.

69

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

abrir llave ({) y cerrar llave (}) tambin son opcionales. De modo que, para resolver el problema del
ejemplo se puede escribir:
#include <stdio.h>
int main()
{
float nota;
printf( "\n Introduzca nota (real): " );
scanf( "%f", &nota );
if ( nota >= 5 )
printf( "\n APROBADO" );
return 0;
}

1.2.2.-

Ejercicios de la Instruccin Alternativa Simple (if) en Lenguaje C

Ejercicio - Cambio de Signo (en C)

Resolver con la Instruccin if


Escribir un programa, en lenguaje C, que:

1) Pida por teclado un nmero (dato real).


2) Muestre por pantalla el nmero introducido, pero, cambiado de signo y, slo en el caso
de que el nmero no sea mayor o igual que cero.
En pantalla:

Introduzca nmero (real): -9.6


9.6
Introduzca nmero (real): 7.11
Solucin del Ejercicio - Cambio de Signo (en C)
Resuelto con la Instruccin if
Cdigo fuente del programa:

#include <stdio.h>
int main()
{
float numero;
printf( "Introduzca numero (real): " );
scanf( "%f", &numero );
if ( numero < 0 )
printf( "%f", -numero );
return 0;

Tutorial Lenguaje de Programacin C.

70

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

}
Ejercicio - Media Aritmtica (en C)

Resolver con la Instruccin if


Escribir un programa, en lenguaje C, que:

1) Pida por teclado dos nmeros (datos enteros).


2) Muestre por pantalla la media artimtica de los nmeros introducidos, pero, slo en el
caso de que ambos nmeros sean mayores que cero.
En pantalla:

Introduzca primer nmero (entero): 7


Introduzca segundo nmero (entero): 10
8.5
Introduzca primer nmero (entero): 6
Introduzca segundo nmero (entero): -2
Solucin del Ejercicio - Media Aritmtica (en C)
Resuelto con la Instruccin if
Cdigo fuente del programa:

#include <stdio.h>
int main()
{
int a, b;
printf( "Introduzca primer numero (entero): " );
scanf( "%d", &a );
printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &b );
if ( a > 0 && b > 0 )
printf( "%f", ( float ) ( a + b ) / 2 );
return 0;
}

Tutorial Lenguaje de Programacin C.

71

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

1.3.1.3.1.-

INSTRUCCIN DE CONTROL ALTERNATIVA MLTIPLE (SWITCH)


Instruccin switch en Lenguaje C

Una instruccin switch (alternativa mltiple) permite seleccionar, por medio de una
expresin, el siguiente bloque de instrucciones a ejecutar de entre varios posibles. En lenguaje C,
para escribir una instruccin alternativa mltiple (switch) se utiliza la sintaxis:
switch ( <expresin> )
{
case <expresin_1> : [ <bloque_de_instrucciones_1> ]
[ break; ]
case <expresin_2> : [ <bloque_de_instrucciones_2> ]
[ break; ]
...
case <expresin_n> : [ <bloque_de_instrucciones_n> ]
[ break; ]
[ default : <bloque_de_instrucciones_n+1> ]
}
El resultado de evaluar la <expresin> debe ser un valor perteneciente a un tipo de dato
finito y ordenado, es decir, entero, lgico, carcter, enumerado o subrango.

Dependiendo del valor obtenido al evaluar la <expresin>, se ejecutar un bloque de


instrucciones u otro.

Opcionalmente, se puede escribir un <bloque_de_instrucciones_n+1> despus de default :.


Este bloque de instrucciones se ejecutar en el caso de que el valor obtenido al evaluar la
<expresin>, no se encuentre en ninguna de las expresiones despus de cada case.
Ejemplo 1:
Se quiere escribir un programa que:

1) Pida por teclado el nmero (dato entero) de un da de la semana.


2) Muestre por pantalla el nombre (dato cadena) correspondiente a dicho da.

Nota: Si el nmero de da introducido es menor que 1 mayor que 7, se mostrar el


mensaje: "ERROR: Da incorrecto.".
En pantalla se podr ver algo parecido a:

Introduzca dia de la semana: 2

Tutorial Lenguaje de Programacin C.

72

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Martes
O tambin:

Introduzca dia de la semana: 9


ERROR: Dia incorrecto.
Solucin propuesta:

#include <stdio.h>
int main()
{
int dia;
printf( "\n Introduzca dia de la semana: " );
scanf( "%d", &dia );
switch ( dia )
{
case 1 : printf( "\n Lunes" );
break;
case 2 : printf( "\n Martes" );
break;
case 3 : printf( "\n Miercoles" );
break;
case 4 : printf( "\n Jueves" );
break;
case 5 : printf( "\n Viernes" );
break;
case 6 : printf( "\n Sabado" );
break;
case 7 : printf( "\n Domingo" );
break;
default : printf( "\n ERROR: Dia incorrecto." );
}
return 0;
}
En la sintaxis de una instruccin alternativa mltiple, obsrvese que, despus de cada
bloque de instrucciones se puede escribir, opcionalmente, la instruccin break. Dicha instruccin
no se va a estudiar con detenimiento en este apartado, ya que, de momento, basta con saber que en
una instruccin switch, la escribiremos, casi siempre, despus de cada bloque de instrucciones, a
excepcin del ltimo. Para comprender su funcionamiento, pruebe a ver que ocurre si omite algn
break en el cdigo del programa del ejemplo 1.
Estdiese tambin el siguiente ejemplo.

Ejemplo 2:
En la siguiente tabla se muestran las categoras a las que pertenecen los signos del zodaco:
Tutorial Lenguaje de Programacin C.

73

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Se quiere escribir un programa que:

1) Muestre el listado de los signos del zodaco, con sus nmeros asociados.
2) Pida por teclado un nmero (dato entero) asociado a un signo del zodaco.
3) Muestre la categora a la que pertenece el signo del zodaco seleccionado.

Nota: Si el nmero introducido por el usuario, no est asociado a ningn signo del zodaco,
se mostrar el mensaje: "ERROR: <nmero> no est asociado a ningn signo.".
En pantalla veremos:

Listado de signos del zodiaco:


1. Aries
2. Tauro
3. Geminis
4. Cancer
5. Leo
6. Virgo
7. Libra
8. Escorpio
9. Sagitario
10. Capricornio
12. Acuario
13. Piscis
Introduzca numero de signo: 7
Es un signo de Aire.

Tutorial Lenguaje de Programacin C.

74

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

O tambin:

Listado de signos del zodiaco:


1. Aries
2. Tauro
3. Geminis
4. Cancer
5. Leo
6. Virgo
7. Libra
8. Escorpio
9. Sagitario
10. Capricornio
12. Acuario
13. Piscis
Introduzca numero de signo: 15
ERROR: 15 no esta asociado a ningun signo.
Una posible solucin es:

#include <stdio.h>

int main()
{
int numero;
printf( "\n Listado de signos del zodiaco:" );
printf( "\n\n 1. Aries" );
printf( "\n 2. Tauro" );
printf( "\n 3. Geminis" );
printf( "\n 4. Cancer" );
printf( "\n 5. Leo" );
printf( "\n 6. Virgo" );
printf( "\n 7. Libra" );
printf( "\n 8. Escorpio" );
printf( "\n 9. Sagitario" );
printf( "\n 10. Capricornio" );
printf( "\n 11. Acuario" );
printf( "\n 12. Piscis" );
printf( "\n\n Introduzca numero de signo: " );
scanf( "%d", &numero );
switch ( numero )
{
case 1 :

Tutorial Lenguaje de Programacin C.

75

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

case 5 :
case 9 : printf( "\n Es un signo de Fuego." );
break;
case 2 :
case 6 :
case 10 : printf( "\n Es un signo de Tierra." );
break;
case 3 :
case 7 :
case 11 : printf( "\n Es un signo de Aire." );
break;
case 4 :
case 8 :
case 12 : printf( "\n Es un signo de Agua." );
break;
default : printf( "\n ERROR: %d no esta asociado a ningun signo.", numero );

}
return 0;

Otra solucin es:

#include <stdio.h>
#include <string.h>
int main()
{
int numero;
char categoria[7];
printf( "\n Listado de signos del zodiaco:" );
printf( "\n\n 1. Aries" );
printf( "\n 2. Tauro" );
printf( "\n 3. Geminis" );
printf( "\n 4. Cancer" );
printf( "\n 5. Leo" );
printf( "\n 6. Virgo" );
printf( "\n 7. Libra" );
printf( "\n 8. Escorpio" );
printf( "\n 9. Sagitario" );
printf( "\n 10. Capricornio" );
printf( "\n 11. Acuario" );
printf( "\n 12. Piscis" );
printf( "\n\n Introduzca numero de signo: " );
scanf( "%d", &numero );
switch ( numero % 4 )

Tutorial Lenguaje de Programacin C.

76

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

case 1 : strcpy(
break;
case 2 : strcpy(
break;
case 3 : strcpy(
break;
case 0 : strcpy(

categoria, "Fuego" );
categoria, "Tierra" );
categoria, "Aire" );
categoria, "Agua" );

if ( numero >= 1 && numero <= 12 )


printf( "\n Es un signo de %s.", categoria );
else
printf( "\n ERROR: %d no esta asociado a ningun signo.",
numero );
return 0;

En esta segunda solucin existen las siguientes diferencias importantes con respecto a la
solucin anterior:

En el cdigo se utiliza una alternativa doble (if else), adems de una alternativa mltiple
(switch).
En la alternativa mltiple no se escribe el <bloque_de_instrucciones_n+1>.
La <expresin> de la alternativa mltiple es diferente.
La expresin "\n Es un signo de " slo se escribe una vez.
Se ha utilizado una variable ms (un array de caracteres): categoria.
Se ha empleado la funcin strcpy, que, como ya vimos en el apartado de Operadores y
expresiones, est disponible en la biblioteca estndar de C.

1.4.-

1.4.1.-

EJERCICIOS DE LA INSTRUCCIN ALTERNATIVA MLTIPLE (SWITCH) EN LENGUAJE C


Ejercicio - Nmero del Dado (en C)

Resolver con la Instruccin switch


Escribir un programa, en lenguaje C, que:

1) Pida por teclado el resultado (dato entero) obtenido al lanzar un dado de seis caras.
2) Muestre por pantalla el nmero en letras (dato cadena) de la cara opuesta al resultado
obtenido.
Nota 1: En las caras opuestas de un dado de seis caras estn los nmeros: 1-6, 2-5 y 3-4.

Tutorial Lenguaje de Programacin C.

77

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Nota 2: Si el nmero del dado introducido es menor que 1 mayor que 6, se mostrar el
mensaje: "ERROR: Nmero incorrecto.".
En pantalla:

Introduzca nmero del dado: 5


En la cara opuesta est el "dos".
Introduzca nmero del dado: 8
ERROR: Nmero incorrecto.
Solucin del Ejercicio - Nmero del Dado (en C)
Resuelto con la Instruccin switch
Cdigo fuente del programa:

#include <stdio.h>
int main()
{
int numero;

printf( "Introduzca numero del dado: " );


scanf( "%d", &numero );

switch ( numero )
{
case 1 : printf( "En la cara opuesta esta el \"seis\"." );
break;
case 2 : printf( "En la cara opuesta esta el \"cinco\"." );
break;
case 3 : printf( "En la cara opuesta esta el \"cuatro\"." );
break;
case 4 : printf( "En la cara opuesta esta el \"tres\"." );
break;
case 5 : printf( "En la cara opuesta esta el \"dos\"." );
break;
case 6 : printf( "En la cara opuesta esta el \"uno\"." );
break;
default : printf( "ERROR: Numero incorrecto." );
}
return 0;

Tutorial Lenguaje de Programacin C.

78

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Una segunda solucin es:

#include <stdio.h>
#include <string.h>
int main()
{
char letras[7];
int numero;
printf( "Introduzca numero del dado: " );
scanf( "%d", &numero );
switch ( numero )
{
case 1 : strcpy( letras, "seis" );
break;
case 2 : strcpy( letras, "cinco" );
break;
case 3 : strcpy( letras, "cuatro" );
break;
case 4 : strcpy( letras, "tres" );
break;
case 5 : strcpy( letras, "dos" );
break;
case 6 : strcpy( letras, "uno" );
}
if ( numero >= 1 && numero <= 6 )
printf( "En la cara opuesta esta el \"%s\".", letras );
else
printf( "ERROR: Numero incorrecto." );
return 0;
}

1.4.2.-

Ejercicio - Habitaciones de una Casa Rural (en C)

Resolver con la Instruccin switch

En la siguiente tabla se muestra el nmero de camas de las habitaciones de una casa rural,
adems de la planta donde est ubicada cada una de ellas:

Tutorial Lenguaje de Programacin C.

79

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Escribir un programa, en lenguaje C, que:

1) Muestre el listado de las habitaciones de la casa rural.


2) Pida por teclado el nmero (dato entero) asociado a una habitacin.
3) Muestre por pantalla la planta y el nmero de camas de la habitacin seleccionada.

Nota: Si el nmero introducido por el usuario, no est asociado a ninguna habitacin, se


mostrar el mensaje: "ERROR: <nmero> no est asociado a ninguna habitacin.".
En pantalla:

Listado de habitaciones:
1. Azul
2. Roja
3. Verde
4. Rosa
5. Gris
Introduzca nmero de habitacin: 3
La Verde tiene 3 cama/s y est en la segunda planta.
Listado de habitaciones:
1. Azul
2. Roja
3. Verde
4. Rosa
5. Gris
Introduzca nmero de habitacin: 7
ERROR: 7 no est asociado a ninguna habitacin.
Solucin del Ejercicio - Habitaciones de una Casa Rural (en C)
Resuelto con la Instruccin switch
Cdigo fuente del programa:
#include <stdio.h>
int main()
{
int numero;
printf( "Listado de habitaciones:" );
printf( "\n\n1. Azul" );
printf( "\n2. Roja" );
printf( "\n3. Verde" );
printf( "\n4. Rosa" );
printf( "\n5. Gris" );
printf( "\n\nIntroduzca numero de habitacion: " );

Tutorial Lenguaje de Programacin C.

80

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

scanf( "%d", &numero );


switch ( numero )
{
case 1 : printf( "La Azul tiene 2 cama/s y esta en la primera planta." );
break;
case 2 : printf( "La Roja tiene 1 cama/s y esta en la primera planta." );
break;
case 3 : printf( "La Verde tiene 3 cama/s y esta en la segunda planta." );
break;
case 4 : printf( "La Rosa tiene 2 cama/s y esta en la segunda planta." );
break;
case 5 : printf( "La Gris tiene 1 cama/s y esta en la tercera planta." );
break;
default : printf( "ERROR: %d no esta asociado a ninguna habitacion.", numero );
}
return 0;

Otra solucin es:

#include <string.h>
#include <stdio.h>
int main()
{
char nombre[6], planta[8];
int numero, camas;
printf( "Listado de habitaciones:" );
printf( "\n\n1. Azul" );
printf( "\n2. Roja" );
printf( "\n3. Verde" );
printf( "\n4. Rosa" );
printf( "\n5. Gris" );
printf( "\n\nIntroduzca numero de habitacion: " );
scanf( "%d", &numero );
switch ( numero )
{
case 1 : strcpy( nombre, "Azul" );
camas = 2;
strcpy( planta, "primera" );
break;
case 2 : strcpy( nombre, "Roja" );
camas = 1;
strcpy( planta, "primera" );
break;

Tutorial Lenguaje de Programacin C.

81

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

case 3 : strcpy( nombre, "Verde" );


camas = 3;
strcpy( planta, "segunda" );
break;
case 4 : strcpy( nombre, "Rosa" );
camas = 2;
strcpy( planta, "segunda" );
break;
case 5 : strcpy( nombre, "Gris" );
camas = 1;
strcpy( planta, "tercera" );

}
if ( numero >= 1 && numero <= 5 )
printf( "La %s tiene %d cama/s y esta en la %s planta.",
nombre, camas, planta );
else
printf( "ERROR: %d no esta asociado a ninguna habitacion.",
numero );
return 0;

1.5.1.5.1.-

ANIDAMIENTO DE INSTRUCCIONES DE CONTROL ALTERNATIVAS


Anidamiento de Instrucciones Alternativas en Lenguaje C

En programacin, las instrucciones alternativas y repetitivas pueden escribirse una dentro


de otra. A este hecho se le conoce como anidamiento.
En lenguaje C, las instrucciones alternativas permiten realizar las siguientes combinaciones
de anidamiento:
Doble (if else) en doble (if else).
Doble (if else) en simple (if).
Doble (if else) en mltiple (switch).
Simple (if) en simple (if).
Simple (if) en doble (if else).
Simple (if) en mltiple (switch).
Mltiple (switch) en mltiple (switch).
Mltiple (switch) en doble (if else).
Mltiple (switch) en simple (if).

De ellas, vamos a estudiar, como ejemplo, las siguientes combinaciones:

Tutorial Lenguaje de Programacin C.

82

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

1.5.2.-

Anidamiento if else Dentro de if else en Lenguaje C

En lenguaje C, para anidar una instruccin if else en otra (tambin if else), se utiliza la sintaxis:
if ( <expresin_lgica_1> )
{
/* Inicio del anidamiento */
if ( <expresin_lgica_2> )
{
<bloque_de_instrucciones_1>
}
else
{
<bloque_de_instrucciones_2>
}
/* Fin del anidamiento */
}
else
{
<bloque_de_instrucciones_3>
}
O tambin:

if ( <expresin_lgica_1> )
{
<bloque_de_instrucciones_1>
{
else
{
/* Inicio del anidamiento */
if ( <expresin_lgica_2> )
{
<bloque_de_instrucciones_2>
}
else
{
<bloque_de_instrucciones_3>
}
/* Fin del anidamiento */
}

Tutorial Lenguaje de Programacin C.

83

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo:
Se quiere escribir un programa que:

1) Pida por teclado la nota (real) de una asignatura.


2) Muestre por pantalla:

"APTO", en el caso de que la nota sea mayor o igual que 5 y menor o igual que 10.
"NO APTO", en el caso de que la nota sea mayor o igual que 0 y menor que 5.
"ERROR: Nota incorrecta.", en el caso de que la nota sea menor que 0 o mayor que 10.

En pantalla se podra ver:

Introduzca nota (real): 7.5


APTO
O por ejemplo:

Introduzca nota (real): 12.2


ERROR: Nota incorrecta.
Una solucin al problema es:

#include <stdio.h>
int main()
{
float nota;

printf( "\n Introduzca nota (real): " );


scanf( "%f", &nota );

if ( nota >= 5 && nota <= 10 )


printf( "\n APTO" );
else
/* Inicio del anidamiento */
if ( nota >= 0 && nota < 5 )
printf( "\n NO APTO" );
else
printf( "\n ERROR: Nota incorrecta." );
/* Fin del anidamiento */
return 0;

Fjese que, en este caso, se puede prescindir de los caracteres abrir llave ({) y cerrar llave
(}) de la sintaxis, ya que, los bloques de instrucciones slo contienen una instruccin.
Tutorial Lenguaje de Programacin C.

84

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Como se puede observar, el anidamiento de instrucciones alternativas permite ir


descartando valores hasta llegar al bloque de instrucciones que se debe ejecutar.
1.5.3.-

Anidamiento switch Dentro de if else en Lenguaje C

En lenguaje C, para anidar una instruccin switch en if else, se utiliza la sintaxis:

if ( <expresin_lgica> )
{
/* Inicio del anidamiento */
switch ( <expresin> )
{
case <expresin_1> : [ <bloque_de_instrucciones_1> ]
[ break; ]
case <expresin_2> : [ <bloque_de_instrucciones_2> ]
[ break; ]
...
case <expresin_n> : [ <bloque_de_instrucciones_n> ]
[ break; ]
[ default : <bloque_de_instrucciones_n+1> ]
}
/* Fin del anidamiento */
}
else
{
<bloque_de_instrucciones_n+2>
}

Ejemplo:
As por ejemplo, el primer ejemplo del apartado Instruccin switch en C, tambin se puede
resolver anidando una instruccin switch (alternativa mltiple) en una instruccin if else
(alternativa doble), como se muestra a continuacin:
#include <stdio.h>
int main()
{
int dia;
printf( "\n Introduzca dia de la semana: " );
scanf( "%d", &dia );
if ( dia >= 1 && dia <= 7 )
/* Slo si el da es vlido, se ejecuta la
instruccin alternativa mltiple */
/* Inicio del anidamiento */
switch ( dia )
{

Tutorial Lenguaje de Programacin C.

85

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

case 1 : printf(
break;
case 2 : printf(
break;
case 3 : printf(
break;
case 4 : printf(
break;
case 5 : printf(
break;
case 6 : printf(
break;
case 7 : printf(

"\n Lunes" );
"\n Martes" );
"\n Miercoles" );
"\n Jueves" );
"\n Viernes" );
"\n Sabado" );

"\n Domingo" );
}
/* Fin del anidamiento */
else
printf( "\n ERROR: Dia incorrecto." );
return 0;

1.5.4.-

Ejercicios de Anidamiento de Instrucciones Alternativas en Lenguaje C

Ejercicio - Suma o Multiplicacin de Dos Nmeros (en C)


Resolver con Anidamiento de Instrucciones Alternativas
Escribir un programa, en lenguaje C, que:

1) Pida por teclado dos nmeros (datos enteros).


2) Calcule la suma y multiplicacin de ambos nmeros.
3) Muestre por pantalla:

"La suma es mayor.", en caso de que sea mayor que la multiplicacin de ambos nmeros.
"La multpilicacin es mayor.", en caso de que sea mayor que la suma de ambos nmeros.
"La suma y multiplicacin son iguales.", en caso de que as sea.

En pantalla:

Introduzca primer nmero (entero): -2


Introduzca segundo nmero (entero): 3
La suma es mayor.
Introduzca primer nmero (entero): 2
Introduzca segundo nmero (entero): 2
La suma y multiplicacin son iguales.

Tutorial Lenguaje de Programacin C.

86

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Solucin del Ejercicio - Suma o Multiplicacin de Dos Nmeros (en C)


Cdigo fuente del programa:
#include <stdio.h>
int main()
{
int a, b, suma, multiplicacion;
printf( "Introduzca primer numero (entero): " );
scanf( "%d", &a );
printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &b );
suma = a + b;
multiplicacion = a * b;
if ( suma > multiplicacion )
printf( "La suma es mayor." );
else
/* Inicio del anidamiento */
if ( multiplicacion > suma )
printf( "La multiplicacion es mayor." );
else
printf( "La suma y multiplicacion son iguales." );
/* Fin del anidamiento */
return 0;
}
Una segunda solucin es:

#include <stdio.h>
int main()
{
int a, b;
printf( "Introduzca primer numero (entero): " );
scanf( "%d", &a );
printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &b );
if ( a + b > a * b )
printf( "La suma es mayor." );
else
/* Inicio del anidamiento */
if ( a * b > a + b )
printf( "La multplicacion es mayor." );
else
printf( "La suma y multiplicacion son iguales." );
/* Fin del anidamiento */
return 0;
}

Tutorial Lenguaje de Programacin C.

87

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejercicio - Nmero del Dado (en C)


Resolver con Anidamiento de Instrucciones Alternativas

Escribir un programa, en lenguaje C, que resuelva el problema del ejercicio Nmero del
Dado con switch, anidando una alternativa mltiple (switch) en una alternativa doble (if).
Solucin del Ejercicio - Nmero del Dado (en C)

Resuelto con Anidamiento de Instrucciones Alternativas


Cdigo fuente del programa:

#include <stdio.h>
int main()
{
int numero;
printf( "Introduzca numero del dado: " );
scanf( "%d", &numero );
if ( numero >= 1 && numero <= 6 )
/* Slo si el nmero es vlido, se ejecuta la instruccin alternativa mltiple */
/* Inicio del anidamiento */
switch ( numero )
{
case 1 : printf( "En la cara opuesta esta el \"seis\"." );
break;
case 2 : printf( "En la cara opuesta esta el \"cinco\"." );
break;
case 3 : printf( "En la cara opuesta esta el \"cuatro\"." );
break;
case 4 : printf( "En la cara opuesta esta el \"tres\"." );
break;
case 5 : printf( "En la cara opuesta esta el \"dos\"." );
break;
case 6 : printf( "En la cara opuesta esta el \"uno\"." );
}
/* Fin del anidamiento */
else
printf( "ERROR: Numero incorrecto." );
return 0;
}

Tutorial Lenguaje de Programacin C.

88

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Una segunda solucin es:


#include <string.h>
#include <stdio.h>
int main()
{
char letras[7];
int numero;
printf( "Introduzca numero del dado: " );
scanf( "%d", &numero );

if ( numero >= 1 && numero <= 6 )


{
/* Slo si el nmero es vlido, se ejecuta la instruccin alternativa mltiple */
/* Inicio del anidamiento */
switch ( numero )
{
case 1 : strcpy( letras, "seis" );
break;
case 2 : strcpy( letras, "cinco" );
break;
case 3 : strcpy( letras, "cuatro" );
break;
case 4 : strcpy( letras, "tres" );
break;
case 5 : strcpy( letras, "dos" );
break;
case 6 : strcpy( letras, "uno" );
}
/* Fin del anidamiento */
printf( "En la cara opuesta esta el \"%s\".", letras );
}
else
printf( "ERROR: Numero incorrecto." );
return 0;

Tutorial Lenguaje de Programacin C.

89

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

2.-

INSTRUCCIONES REPETITIVAS EN LENGUAJE C

A continuacin, se estudian las distintas instrucciones de control repetitivas que se pueden


utilizar en lenguaje C: mientras (while), hacer...mientras (do while) y para (for).
2.1.-

INSTRUCCIN WHILE EN LENGUAJE C

En lenguaje C, para escribir una instruccin while (repetitiva mientras) se utiliza la sintaxis:

while ( <expresin_lgica> )
{
<bloque_de_instrucciones>
}

Cuando el <bloque_de_instrucciones> slo contiene una instruccin, los caracteres abrir

llave ({) y cerrar llave (}) son opcionales.

Por otra parte, al igual que en las instrucciones alternativas doble y simple, a la
<expresin_lgica> de una instruccin repetitiva while, tambin se le llama condicin.
Para que se ejecute el <bloque_de_instrucciones>, la condicin tiene que ser verdadera. Por
el contrario, si la condicin es falsa, el <bloque_de_instrucciones> no se ejecuta.
Por tanto, cuando el flujo de un programa llega a un bucle while, existen dos posibilidades:

Si la condicin se evala a falsa, el bloque de instrucciones no se ejecuta, y el bucle while


finaliza sin realizar ninguna iteracin.
Si la condicin se evala a verdadera, el bloque de instrucciones s que se ejecuta y, despus,
se vuelve a evaluar la condicin, para decidir, de nuevo, si el bloque de instrucciones se
vuelve a ejecutar o no. Y as sucesivamente, hasta que, la condicin sea falsa.

El <bloque_de_instrucciones> de un bucle while puede ejecutarse cero o ms veces


(iteraciones). Si el <bloque_de_instrucciones> se ejecuta al menos una vez, seguir ejecutndose
repetidamente, mientras que, la condicin sea verdadera. Pero, hay que tener cuidado de que el
bucle no sea infinito.
Cuando la condicin de un bucle while se evala siempre a verdadera, se dice que se ha
producido un bucle infinito, ya que, el programa nunca termina. Un bucle infinito es un error lgico.
Es importante hacer hincapi en el hecho de que, en un bucle while, primero se evala la
condicin y, en el caso de que sta sea verdadera, entonces se ejecuta el bloque de instrucciones.
Veremos que, en el bucle do while, el procedimiento es al revs. En l, primero se ejecuta el bloque
de instrucciones y, despus, se evala la condicin.
Para que un bucle while no sea infinito, en el bloque de instrucciones debe ocurrir algo para
que la condicin deje de ser verdadera. En la mayora de los casos, la condicin se hace falsa al
cambiar el valor de una variable.
En resumen, una instruccin repetitiva while permite ejecutar, repetidamente, (cero o ms
veces) un bloque de instrucciones, mientras que, una determinada condicin sea verdadera.

Tutorial Lenguaje de Programacin C.

90

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 1:
Se quiere escribir un programa que muestre por pantalla los primeros diez nmeros
naturales:
1 2 3 4 5 6 7 8 9 10

En lenguaje C, para resolver el problema de este ejemplo se puede escribir:

#include <stdio.h>
int main()
{
int contador;
printf( "\n " );
contador = 1; /* Inicializacin del contador */
while ( contador <= 10 )
/* Condicin */
{
printf( "%d ", contador ); /* Salida */
contador++; /* Incremento del contador */
}
return 0;
}
Se quiere escribir un programa que:

1) Pida por teclado la nota (dato real) de una asignatura.


2) En el caso de que la nota sea incorrecta, muestre por pantalla el mensaje:
"ERROR: Nota incorrecta, debe ser >= 0 y <= 10".

3) Repita los pasos 1 y 2, mientras que, la nota introducida sea incorrecta.


4) Muestre por pantalla:
"APROBADO", en el caso de que la nota sea mayor o igual que 5.
"SUSPENDIDO", en el caso de que la nota sea menor que 5.

En pantalla:

Introduzca nota (real): 12.4


ERROR: Nota incorrecta, debe ser >= 0 y <= 10
Introduzca nota (real): -3.3
ERROR: Nota incorrecta, debe ser >= 0 y <= 10
Introduzca nota (real): 8.7
APROBADO

Tutorial Lenguaje de Programacin C.

91

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

El cdigo propuesto es:

#include <stdio.h>
int main()
{
float nota;
printf( "\n Introduzca nota (real): " );
scanf( "%f", &nota );
/* Si la primera nota introducida por el usuario es correcta, el bucle no itera ninguna vez. */
while ( nota < 0 || nota > 10 )
{
printf( "\n ERROR: Nota incorrecta, debe ser >= 0 y <= 10\n" );
printf( "\n Introduzca nota (real): " );
scanf( "%f", &nota );
}
/* Mientras que el usuario introduzca una nota incorrecta, el bucle iterar. Y cuando
introduzca una nota correcta, el bucle finalizar. */
if ( nota >= 5 )
printf( "\n APROBADO" );
else
printf( "\n SUSPENDIDO" );
return 0;
}
En el programa, el bucle while se ha usado para validar la nota introducida por el usuario.
En programacin, es muy frecuente usar el bucle while para validar (filtrar) datos. Al bucle que se
utiliza para validar uno o ms datos, tambin se le conoce como filtro.
2.2.2.2.1.-

EJERCICIOS DE LA INSTRUCCIN REPETITIVA MIENTRAS (WHILE) EN LENGUAJE C


Ejercicio - rea de una Esfera (en C)

Resolver con la Instruccin while

Escribir un programa, en lenguaje C, que:

1) Pida por teclado el radio (dato real) de una esfera.


2) En el caso de que el radio sea menor o igual que 0, muestre por pantalla el mensaje:
"ERROR: El radio debe ser mayor que cero.".

3) Repita los pasos 1 y 2, mientras que, el radio introducido sea incorrecto.


4) Muestre por pantalla:
"El rea de una esfera de radio <radio> es: <rea>".
Tutorial Lenguaje de Programacin C.

92

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Nota 1: rea de una esfera = 4 * pi * radio2


Nota 2: Utilice un bucle mientras (while).
En pantalla:

Introduzca radio: 3.6


El rea de la esfera de radio 3.6 es: 162.860129
Introduzca radio: -2.4
ERROR: El radio debe ser mayor que cero.
Introduzca radio: 2.4
El rea de la esfera de radio 2.4 es: 72.382279
Solucin del Ejercicio - rea de una Esfera (en C)
Resuelto con la Instruccin while
Cdigo fuente del programa:

#include <math.h>
#include <stdio.h>
int main()
{
float radio;
printf( "Introduzca radio: " );
scanf( "%f", &radio );
/* Filtramos el radio */

while ( radio <= 0 )


{
printf( "ERROR: El radio debe ser mayor que cero." );
printf( "\nIntroduzca radio: " );
scanf( "%f", &radio );
}
printf( "El area de la esfera de radio %f es: %f",
radio, 4 * 3.141592 * pow( radio, 2 ) );
return 0;

Tutorial Lenguaje de Programacin C.

93

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

2.2.2.-

Ejercicio - Volmenes de Cubos (en C)

Resolver con la Instruccin while

Escribir un programa, en lenguaje C, que:

1) Pida por teclado la arista (dato real) de un cubo.


2) En el caso de que la arista sea mayor que cero, muestre por pantalla el mensaje:
"El volumen del cubo de arista <arista> es: <volumen>".

3) Repita los pasos 1 y 2, mientras que, la arista introducida sea mayor que cero.
4) Muestre por pantalla cuantos volmenes de cubos han sido calculados.
Nota 1: Volumen de un cubo = arista3
Nota 2: Utilice un bucle mientras (while).

En pantalla:

Introduzca arista: 7.3


El volumen de un cubo de arista 7.3 es: 389.017
Introduzca arista: 10.1
El volumen de un cubo de arista 10.1 es: 1030.301
Introduzca arista: 0
Ha calculado el volumen de 2 cubo(s).
Introduzca arista: -5.8
Ha calculado el volumen de 0 cubo(s).
Solucin del Ejercicio - Volmenes de Cubos (en C)
Resuelto con la Instruccin while
Cdigo fuente del programa:

#include <math.h>
#include <stdio.h>
int main()
{
int contador;
float arista;
printf( "Introduzca arista: " );
scanf( "%f", &arista );
contador = 0; /* Inicializacin del contador */
while ( arista > 0 )
{
printf( "El volumen de un cubo de arista %f es: %f\n",
arista, pow( arista, 3 ) );

Tutorial Lenguaje de Programacin C.

94

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

contador++; /* Incremento*/
printf( "Introduzca arista :" );
scanf( "%f", &arista );

}
printf( "Ha calculado el volumen de %d cubo(s).", contador );
return 0;

2.3.2.3.1.-

INSTRUCCIN DE CONTROL REPETITIVA HACER...MIENTRAS (DO WHILE).


Instruccin do while en Lenguaje C

En lenguaje C, para escribir una instruccin do while (repetitiva hacer mientras) se utiliza la
sintaxis:
do
{
<bloque_de_instrucciones>
} while ( <expresin_lgica> );

Cuando el <bloque_de_instrucciones> slo contiene una instruccin, los caracteres abrir


llave ({) y cerrar llave (}) son opcionales.
Adems, como se puede apreciar, la instruccin repetitiva do while, tambin hace uso de
una condicin.

En un bucle do while, primero se ejecuta el bloque de instrucciones y, despus, se evala la


condicin. En el caso de que sta sea verdadera, se vuelve a ejecutar el bloque de instrucciones. Y
as sucesivamente, hasta que, la condicin sea falsa.
Por consiguiente, cuando el flujo de un programa llega a un bucle do while, existen dos
posibilidades:
Se ejecuta el bloque de instrucciones y, despus, si la condicin se evala a falsa, el bloque
de instrucciones no se vuelve a ejecutar, de manera que, el bucle do while finaliza, habiendo
realizado una sola iteracin.
Se ejecuta el bloque de instrucciones y, a continuacin, si la condicin se evala a verdadera,
el bloque de instrucciones se vuelve a ejecutar. Y as sucesivamente, hasta que la condicin
sea falsa.

El <bloque_de_instrucciones> de un bucle do while puede ejecutarse una o ms veces


(iteraciones). Tambin hay que prevenir que el bucle no sea infinito.
En resumen, una instruccin repetitiva do while permite ejecutar repetidamente (una o ms
veces) un bloque de instrucciones, mientras que, una determinada condicin sea verdadera.

Tutorial Lenguaje de Programacin C.

95

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 1:
De modo que, utilizando un bucle do while, el problema del ejemplo 1 del apartado anterior,
Instruccin while en C, se puede resolver con el cdigo:
#include <stdio.h>
int main()
{
int contador;
printf( "\n " );
contador = 1; /* Inicializacin del contador */
do
{
printf( "%d ", contador ); /* Salida */
contador++;
/* Incremento */
} while ( contador <= 10 );
/* Condicin */
return 0;
}
Como ya se ha dicho, el bucle do while puede iterar una o ms veces, por tanto, cuando un
bloque de instrucciones debe iterar al menos una vez, generalmente, es mejor utilizar un bucle do
while que un bucle while, como por ejemplo, en el siguiente problema.
Ejemplo 2:
Se quiere escribir un programa que:

1) Pida por teclado un nmero (dato entero).


2) Pregunte al usuario si desea introducir otro o no.
3) Repita los pasos 1 y 2, mientras que, el usuario no responda 'n' de (no).
4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.
En pantalla:

Introduzca un numero entero: 7


Desea introducir otro (s/n)?: s
Introduzca un numero entero: 16
Desea introducir otro (s/n)?: s
Introduzca un numero entero: -3
Desea introducir otro (s/n)?: n
La suma de los numeros introducidos es: 20

Tutorial Lenguaje de Programacin C.

96

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

El cdigo propuesto es:

#include <stdio.h>
int main()
{
char seguir;
int acumulador, numero;
/* En acumulador se va a guardar la suma de los nmeros introducidos por el usuario. */
acumulador = 0;
do
{
printf( "\n Introduzca un numero entero: " );
scanf( "%d", &numero);
acumulador += numero;
printf( "\n Desea introducir otro numero (s/n)?: " );
fflush( stdin );
scanf( "%c", &seguir);
} while ( seguir != 'n' );
/* Mientras que el usuario desee introducir ms nmeros, el bucle iterar. */

printf( "\n La suma de los numeros introducidos es: %d",


acumulador );
return 0;

2.3.2.-

Ejercicios de la Instruccin Repetitiva hacer...mientras (do..while) en Lenguaje C

Ejercicio - Media Aritmtica de Nmeros Introducidos (en C)


Resolver con la Instruccin do while
Escribir un programa, en lenguaje C, que:

1) Pida por teclado un nmero (dato entero).


2) Muestre por pantalla los mensajes:

Ha introducido <cantidad_de_nmeros> nmero(s)


La suma es <suma>

3) Pregunte al usuario si desea introducir otro o no.


4) Repita los pasos 1, 2 y 3, mientras que, el usuario no responda 'n' de (no).
5) Muestre por pantalla la media aritmtica (dato real) de los nmeros introducidos.
Nota: Utilice un bucle hacer mientras (do while).

Tutorial Lenguaje de Programacin C.

97

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

En pantalla:

Introduzca un nmero entero: 3


Ha introducido 1 nmero(s)
La suma es 3
Desea introducir otro (s/n)?: s
Introduzca un nmero entero: 7
Ha introducido 2 nmero(s)
La suma es 10
Desea introducir otro (s/n)?: s
Introduzca un nmero entero: 6
Ha introducido 3 nmero(s)
La suma es 16
Desea introducir otro (s/n)?: s
Introduzca un nmero entero: 13
Ha introducido 4 nmero(s)
La suma es 29
Desea introducir otro (s/n)?: n
La media aritmtica es 7.25
Introduzca un nmero entero: 8
Ha introducido 1 nmero(s)
La suma es 8
Desea introducir otro (s/n)?: n
La media aritmtica es 8.000000
Solucin del Ejercicio - Media Aritmtica de Nmeros Introducidos (en C)
Resuelto con la Instruccin do while
Cdigo fuente del programa:

#include <stdio.h>
int main()
{
char seguir;
int acumulador, contador, numero;
acumulador = 0;
contador = 0;
do
{

Tutorial Lenguaje de Programacin C.

98

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

printf( "Introduzca un numero entero: " );


scanf( "%d", &numero );

acumulador += numero;
contador++;
printf( "Ha introducido %d numero(s).", contador );
printf( "\nLa suma es %d", acumulador );
printf( "\n\nDesea introducir otro numero (s/n)?: " );
fflush( stdin );
scanf( "%c", &seguir );
} while ( seguir != 'n' );
printf( "La media aritmetica es %f",
( float ) acumulador / contador );
return 0;

Ejercicio - Clculo de Sumas (en C)


Resolver con la Instruccin do while

Escribir un programa, en lenguaje C, que:

1) Pida por teclado dos nmeros (datos enteros).


2) Muestre por pantalla el mensaje:
La suma es <suma>

3) Pregunte al usuario si desea realizar otra suma o no.


4) Repita los pasos 1, 2 y 3, mientras que, el usuario no responda 'n' de (no).
5) Muestre por pantalla la suma total de los nmeros introducidos.
Nota: Utilice un bucle hacer mientras (do while).
En pantalla:

Introduzca primer nmero: 9


Introduzca segundo nmero: 4
La suma es 13
Desea realizar otra suma (s/n)?: s
Introduzca primer nmero: 2
Introduzca segundo nmero: 14
La suma es 16
Desea realizar otra suma (s/n)?: s
Introduzca primer nmero: 6
Introduzca segundo nmero: 1
La suma es 7

Tutorial Lenguaje de Programacin C.

99

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Desea realizar otra suma (s/n)?: n


La suma total es 36
Introduzca primer nmero: 10
Introduzca segundo nmero: 100
La suma es 110
Desea realizar otra suma (s/n)?: n
La suma total es 110
Solucin del Ejercicio - Clculo de Sumas (en C)
Resuelto con la Instruccin do while
Cdigo fuente del programa:

#include <stdio.h>
int main()
{
char seguir;
int acumulador, n1, n2;
acumulador = 0;
do
{
printf( "Introduzca primer numero: " );
scanf( "%d", &n1 );
printf( "Introduzca segundo numero: " );
scanf( "%d", &n2 );
printf( "La suma es %d", n1 + n2 );
acumulador += n1 + n2;
printf( "\n\nDesea realizar otra suma (s/n)?: " );
fflush( stdin );
scanf( "%c", &seguir );
} while ( seguir != 'n' );
printf( "La suma total es %d", acumulador );
return 0;
}
2.4.-

2.4.1.-

INSTRUCCIN DE CONTROL REPETITIVA PARA (FOR)


Instruccin for en Lenguaje C

En lenguaje C, para escribir una instruccin for (repetitiva para) se utiliza la sintaxis:

for ( <expresin_1> ; <expresin_2> ; <expresin_3> )


{
<bloque_de_instrucciones>
}

Tutorial Lenguaje de Programacin C.

100

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Cuando el <bloque_de_instrucciones> slo contiene una instruccin, los caracteres abrir


llave ({) y cerrar llave (}) son opcionales.
Por otro lado, el bucle for es ideal usarlo cuando, de antemano, ya se sabe el nmero de
veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones.
El bucle for es una variante del bucle while y, al igual que ste, puede iterar cero o ms
veces. Sin embargo, el bucle for slo se suele usar cuando se conoce el nmero exacto de veces que
tiene que iterar el bucle. ste es el caso del problema planteado en el ejemplo 1 del apartado
Instruccin while en C, en el cual, se sabe de antemano que el bucle tiene que iterar, exactamente,
diez veces.
Ejemplo:
Por tanto, dicho problema, se puede resolver con una instruccin repetitiva for de la
siguiente forma:
#include <stdio.h>
int main()
{
int contador;
printf( "\n " );
for ( contador=1 ; contador<=10 ; contador++ )
printf( "%d ", contador );
return 0;
}

En este caso, <expresin_1>, <expresin_2> y <expresin_3>, se corresponden,


respectivamente, con:
la inicializacin de la variable contador,
la condicin de salida del bucle y
el incremento de la variable contador
de una instruccin repetitiva mientras (while).

Tutorial Lenguaje de Programacin C.

101

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

2.4.2.-

Cundo usar un Bucle u otro?

En programacin, a la hora de elegir un bucle u otro, debemos hacernos la siguiente


pregunta:
Se conoce, de antemano, el nmero de veces (iteraciones) que tiene que ejecutarse un
determinado bloque de instrucciones?

Si la respuesta es afirmativa, habitualmente se usa un bucle for. En caso contrario, nos


plantearemos la siguiente pregunta:
El bloque de instrucciones debe ejecutarse al menos una vez?

En este caso, si la respuesta es afirmativa, generalmente haremos uso de un bucle do while,


y si la respuesta es negativa, usaremos un bucle while.
2.4.3.-

Ejercicios de la Instruccin Repetitiva para (for) en Lenguaje C

Ejercicio - Cubos de Nmeros Pares (en C)


Resolver con la Instruccin for

Escribir un programa, en lenguaje C, que muestre por pantalla los cinco primeros nmeros
naturales pares elevados al cubo.
Nota 1: Cubo de un nmero = nmero3
Nota 2: Utilice un bucle para (for).
En pantalla:

8 64 216 512 1000


Solucin del Ejercicio - Cubos de Nmeros Pares (en C)
Resuelto con la Instruccin for
Cdigo fuente del programa:

#include <math.h>
#include <stdio.h>
int main()
{
int numero;
for ( numero = 2 ; numero <= 10 ; numero += 2 )
{
printf( "%.f ", pow( numero, 3 ) );
}
return 0;
}

Tutorial Lenguaje de Programacin C.

102

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejercicio - Nmeros Mltiplos de 3 del -15 al -3 (en C)


Resolver con la Instruccin for

Escribir un programa, en lenguaje C, que muestre por pantalla todos los nmeros mltiplos
de 3 que hay entre el -15 y el -3, ambos inclusive.
Nota: Utilice un bucle para (for).
En pantalla:

-15 -12 -9 -6 -3

Solucin del Ejercicio - Nmeros Mltiplos de 3 del -15 al -3 (en C)


Resuelto con la Instruccin for
Cdigo fuente del programa:

#include <stdio.h>
int main()
{
int numero;
for ( numero = -15 ; numero <= -3 ; numero += 3 )
{
printf( "%d ", numero );
}
return 0;
}

2.5.-

ANIDAMIENTO DE INSTRUCCIONES DE CONTROL REPETITIVAS Y ALTERNATIVAS.

Al igual que las instrucciones alternativas, las instrucciones repetitivas tambin se pueden
anidar, permitiendo las siguientes combinaciones de anidamiento:
while en while
while en do while
while en for
do while en do while
do while en for
do while en while
for en for
for en while
for en do while

De ellas, vamos a estudiar, como ejemplo, la combinacin:


Tutorial Lenguaje de Programacin C.

103

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

2.5.1.-

Bucle for en do while

Por otro lado, las instrucciones alternativas y repetitivas tambin se pueden anidar entre s,
permitiendo realizar 18 combinaciones ms de anidamiento:
while en if else
while en if
while en switch

do while en if else
do while en if
do while en switch
for en if else
for en if
for en switch

if else en while
if else en do while
if else en for
if en while
if en do while
if en for

switch en while
switch en do while
switch en for

2.5.2.-

De ellas, vamos a estudiar, como ejemplo, la combinacin:


Instruccin if Anidada en Bucle for del Lenguaje C

En lenguaje C, para anidar una instruccin if en un bucle for, se utiliza la sintaxis:

for ( <expresin_1> ; <expresin_2> ; <expresin_3> )


{
/* Inicio del anidamiento */
if ( <expresin_lgica> )
{
<bloque_de_instrucciones>
}
/* Fin del anidamiento */
}

Tutorial Lenguaje de Programacin C.

104

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo:
Se quiere escribir un programa que muestre por pantalla todos los nmeros enteros del 1 al
100 (ambos inclusive) que sean divisibles entre 17 21:
17 21 34 42 51 63 68 84 85

Anidando una instruccin if en un bucle for, el problema se puede resolver con el cdigo:

#include <stdio.h>
int main()
{
int numero;
printf( "\n " );
for ( numero = 1 ; numero <= 100 ; numero++ )
{
/* Inicio del anidamiento */
if ( numero % 17 == 0 || numero % 21 == 0 )
printf( "%d ", numero );
/* Fin del anidamiento */
}
return 0;
}

2.5.3.-

Ejercicios de Anidamiento de Instrucciones de Control Repetitivas y Alternativas.

Ejercicio - Cantidad y Suma de Nmeros Enteros (en C)

Resolver con Anidamiento de Instrucciones Repetitivas y Alternativas


Escribir un programa, en lenguaje C, que:

1) Pida por teclado un nmero (dato entero).


2) Repita el paso 1, mientras que, el nmero introducido sea distinto de cero.
3) Muestre cuntos nmeros mayores que cero han sido introducidos por el usuario, as
como, la suma de todos ellos.
En pantalla:
Introduzca un nmero entero: 4
Introduzca un nmero entero: 8
Introduzca un nmero entero: -6
Introduzca un nmero entero: 12
Introduzca un nmero entero: 0
Ha introducido 3 nmero(s) mayor(es) que cero.
La suma es 24
Introduzca un nmero entero: -3
Introduzca un nmero entero: 0
Ha introducido 0 nmero(s) mayor(es) que cero.
La suma es 0

Tutorial Lenguaje de Programacin C.

105

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Solucin del Ejercicio - Cantidad y Suma de Nmeros Enteros (en C)


Resuelto con Anidamiento de Instrucciones Repetitivas y Alternativas
Cdigo fuente del programa:
#include <stdio.h>
int main()
{
int numero, contador, suma;
printf( "Introduzca un numero entero: " );
scanf( "%d", &numero );
contador = 0;
suma = 0;
while ( numero != 0 )
{
if ( numero > 0 )
{
contador++;
suma += numero;
}
printf( "Introduzca un numero entero: " );
scanf( "%d", &numero );
}
printf( "Ha introducido %d numero(s) mayor(es) que cero.",
contador );
printf( "\nLa suma es %d", suma );
return 0;
}

Ejercicio - Mostrar y Sumar Nmeros Enteros (en C)

Resolver con Anidamiento de Instrucciones Repetitivas y Alternativas


Escribir un programa, en lenguaje C, que:

1) Pida por teclado dos nmeros (datos enteros).


2) En el caso de que el primer nmero introducido por el usuario, no sea mayor que cero y
el segundo menor que cero, muestre por pantalla el mensaje:
"ERROR: El primer nmero debe ser mayor que cero y el segundo menor que cero."

En caso contrario, muestre por pantalla los nmeros que hay entre los dos nmeros
introducidos por el usuario, ambos inclusive, as como, la suma de todos ellos.

Tutorial Lenguaje de Programacin C.

106

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

En pantalla:

Introduzca primer nmero entero: 5


Introduzca segundo nmero entero: -2
-2 -1 0 1 2 3 4 5
La suma es 12
Introduzca primer nmero entero: 17
Introduzca segundo nmero entero: 8
ERROR: El primer nmero debe ser mayor que cero y el segundo menor que cero.

Tutorial Lenguaje de Programacin C.

107

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

3.-

INSTRUCCIONES DE SALTO EN LENGUAJE C

A continuacin, se estudian las distintas instrucciones de control de salto que se pueden


utilizar para escribir programas en lenguaje C: break, continue, goto y return.
3.1.-

INSTRUCCIN BREAK EN LENGUAJE C

En lenguaje C, para escribir una instruccin de salto break (interrumpir), se utiliza la


sintaxis:
break;

La instruccin de salto break se usa para interrumpir (romper) la ejecucin normal de un


bucle, es decir, la instruccin break finaliza (termina) la ejecucin de un bucle y, por tanto, el
control del programa se transfiere (salta) a la primera instruccin despus del bucle.
Ejemplo 1:
Estdiese el siguiente cdigo fuente:

#include <stdio.h>
int main()
{
int n, a;
a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );
if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
break;
/* En el caso de que n sea un cero,
el bucle se interrumpe. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 );
printf( "Suma: %d", a );
return 0;
}

Tutorial Lenguaje de Programacin C.

108

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

El programa puede ser la solucin del problema siguiente:


Escriba un programa que:

1) Pida por teclado un nmero (dato entero).


2) Si el nmero introducido por el usuario es distinto de cero, muestre por pantalla el
mensaje:
"El opuesto es: <-nmero>".

3) Repita los pasos 1 y 2, mientras que, el usuario introduzca un nmero mayor o igual
que -10 y menor o igual que 10.
Pero, si el usuario introduce un cero, el bucle tambin finaliza, mostrndose por pantalla el
mensaje:
"ERROR: El cero no tiene opuesto.".

4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.


En pantalla:

Introduzca un nmero entero: 15


El opuesto es: -15
Suma: 15
La traza del programa es:

Tutorial Lenguaje de Programacin C.

109

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

El bucle ha finalizado porque la condicin ( n >= -10 && n <= 10 ) es falsa, ya que, 15 no es
mayor o igual que -10 y menor o igual que 10.
Sin embargo, el bucle tambin puede finalizar, no porque sea falsa la condicin ( n >= -10
&& n <= 10 ), sino, porque se ejecute la instruccin break. Esto ocurrir cuando el usuario
introduzca un cero. Por ejemplo:
Introduzca un nmero entero: 8
El opuesto es: -8
Introduzca un nmero entero: -7
El opuesto es: 7
Introduzca un nmero entero: 0
ERROR: El cero no tiene opuesto.
Suma: 1
La traza en este caso es:

Normalmente, cuando en un bucle se utiliza una instruccin break, la ejecucin de sta se


condiciona.

En el ejemplo 1, el bucle se interrumpe si la condicin ( n == 0 ) es verdadera. Ntese que,


dicha condicin no est contemplada en la condicin de salida estndar del bucle, por lo que, a la
condicin ( n == 0 ) se le considera condicin de salida interna del bucle.
Tutorial Lenguaje de Programacin C.

110

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Ejemplo 2:
No obstante, el problema tambin se puede resolver sin hacer uso de la instruccin break:
#include <stdio.h>
int main()
{
int numero, acumulador;
acumulador = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &numero );
if ( numero == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
}
else
{
printf( "El opuesto es: %d\n", -numero );
acumulador += numero;
}
} while ( numero >= -10 && numero <= 10 && numero != 0 );
printf( "Suma: %d", acumulador );
return 0;
}

Obsrvese que, en este programa, s se contempla en la condicin de salida del bucle la


posibilidad de que el usuario teclee un cero, en cuyo caso, el bucle deja de iterar de forma natural.
Los resultados por pantalla de este cdigo fuente son idnticos a los del cdigo anterior.
Por otra parte, en lenguaje C, como ya vimos en el apartado Instruccin switch en C, la
instruccin break tambin se usa para interrumpir (salir de) una alternativa mltiple.
3.2.-

INSTRUCCIN CONTINUE EN LENGUAJE C.

En lenguaje C, para escribir una instruccin de salto continue (continuar), se utiliza la


sintaxis:
continue;

La instruccin de salto continue siempre se usa para interrumpir (romper) la ejecucin


normal de un bucle. Sin embargo, el control del programa no se transfiere a la primera instruccin
despus del bucle (como s hace la instruccin break, vase el apartado anterior Instruccin break
en C), es decir, el bucle no finaliza, sino que, finaliza la iteracin en curso, transfirindose el control
del programa a la condicin de salida del bucle, para decidir si se debe realizar una nueva iteracin
o no.

Tutorial Lenguaje de Programacin C.

111

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Por tanto, la instruccin continue finaliza (termina) la ejecucin de una iteracin de un


bucle, pero, no la ejecucin del bucle en s. De forma que, la instruccin continue salta (no ejecuta)
las instrucciones que existan despus de ella, en la iteracin de un bucle.
Ejemplo 1:
En el programa siguiente se muestra como se puede utilizar la instruccin continue:
#include <stdio.h>

int main()
{
int n, a;
a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );
if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
continue;
/* En el caso de que n sea un cero,
la iteracin en curso del bucle
se interrumpe aqu. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 );
printf( "Suma: %d", a );
return 0;
}
El cdigo del programa es el mismo que el del ejemplo 1 del apartado anterior, Instruccin
break en C, excepto por la instruccin break, que ha sido sustituida por la instruccin continue. El
programa puede ser la solucin para el problema siguiente, el cual se diferencia del ejemplo 1 del
apartado anterior en que si el usuario introduce un cero, el bucle no deja de iterar.
Disee el algoritmo de un programa que:

1) Pida por teclado un nmero (dato entero).


2) Si el nmero introducido por el usuario es distinto de cero, muestre por pantalla el
mensaje:
"El opuesto es: <-nmero>".
En caso contrario, muestre el mensaje:
"ERROR: El cero no tiene opuesto.".
3) Repita los pasos 1 y 2, mientras que, el usuario introduzca un nmero mayor o igual
que -10 y menor o igual que 10.
4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.
Tutorial Lenguaje de Programacin C.

112

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

En pantalla:

Introduzca un nmero entero: 2


El opuesto es: -2
Introduzca un nmero entero: 0
ERROR: El cero no tiene opuesto.
Introduzca un nmero entero: -59
El opuesto es: 59
Suma: -57

La traza del programa es:

La instruccin continue se ejecuta cuando el usuario introduce un cero, interrumpiendo la


iteracin en curso; pero, el bucle solamente finaliza cuando la condicin ( n >= -10 y n <= 10 ) sea
falsa.

Tutorial Lenguaje de Programacin C.

113

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

Normalmente, al igual que ocurre con la instruccin break, cuando en un bucle se utiliza una
instruccin continue, la ejecucin de sta tambin se condiciona.
n = 0 ).

En el ejemplo 1, la iteracin en curso del bucle se interrumpe si es verdadera la condicin (

Ejemplo 2:
No obstante, el problema tambin se puede resolver sin hacer uso de la instruccin
continue:
#include <stdio.h>
int main()
{

int numero, acumulador;


acumulador = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &numero );
if ( numero == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
}
else
{
printf( "El opuesto es: %d\n", -numero );
acumulador += numero;
}
} while ( numero >= -10 && numero <= 10 );
printf( "Suma: %d", acumulador );
return 0;
Los resultados por pantalla de este programa son idnticos a los del algoritmo anterior.

Tutorial Lenguaje de Programacin C.

114

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

3.3.-

INSTRUCCIN GOTO EN LENGUAJE C.

En lenguaje C, para escribir una instruccin de salto goto (ir a), se utiliza la sintaxis:

goto <nombre_de_la_etiqueta>

La instruccin de salto goto se puede usar en un programa, para transferir


incondicionalmente el control del mismo a la primera instruccin despus de una etiqueta, o dicho
de otra forma, al ejecutar una instruccin goto, el control del programa se transfiere (salta) a la
primera instruccin despus de una etiqueta. Una etiqueta se define mediante su nombre
(identificador) seguido del carcter dos puntos (:).
Ejemplo:
En el siguiente programa se utiliza la instruccin goto para resolver el mismo problema que
el del ejemplo 1 del apartado Instruccin break en C:
#include <stdio.h>
int main()
{
int n, a;

a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );
if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
goto etiqueta_1;
/* En el caso de que n sea un cero,
el control de programa salta a la
primera instruccin despus de
etiqueta_1. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 );
etiqueta_1:
printf( "Suma: %d", a );
return 0;

Los resultados por pantalla de este programa son idnticos a los de los programas de los
ejemplos 1 y 2 del apartado Instruccin break en C.
Tutorial Lenguaje de Programacin C.

115

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

En pantalla:

Introduzca un nmero entero: -4


El opuesto es: 4
Introduzca un nmero entero: 12
El opuesto es: -12
Introduzca un nmero entero: 0
ERROR: El cero no tiene opuesto.
Suma: 8
La traza del programa es:

Normalmente, al igual que ocurre con las instrucciones break y continue, cuando en un
algoritmo se utiliza una instruccin goto, la ejecucin de sta tambin se condiciona.

Tutorial Lenguaje de Programacin C.

116

INSTITUTO PROFESIONAL VIRGINIO GMEZ


ESCUELA TECNOLGICA INDUSTRIAL

3.4.-

INSTRUCCIN RETURN EN LENGUAJE C

En lenguaje C, para escribir una instruccin de salto return (volver), se utiliza la sintaxis:

return <expresin>;
La instruccin de salto return es utilizada en lenguaje C para indicar el valor de retorno de
una funcin. Por tanto, vamos a hacer uso de la instruccin return cuando definamos subprogramas
de tipo funcin, que estudiaremos ms adelante en el apartado Llamadas a subprogramas.
Por otra parte, recurdese que, en el apartado Mi primer programa en C de este
curso/tutorial, ya estudiamos la utilidad de la instruccin return en la funcin main.
3.5.-

VENTAJAS DE NO USAR LAS INSTRUCCIONES DE SALTO EN LENGUAJE C

Las ventajas de no usar las instrucciones de salto, especialmente la instruccin goto, se


pueden resumir en:
La legibilidad del cdigo fuente de los programas es mayor.
La probabilidad de cometer errores en el algoritmo diseado es menor.
Es ms fcil realizar cambios o corregir errores en el algoritmo del programa.
Nunca se altera (rompe) la secuencia de ejecucin normal del programa. Dicho de otro
modo, el programa siempre se ejecuta de un modo natural.

Tutorial Lenguaje de Programacin C.

117

Potrebbero piacerti anche