Material Lectura Unidad 3

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 55

3 Introducción a la programación de un lenguaje estructurado.

3.1 Introducción a la programación.

Programas y algoritmos

Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse
para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de
programación concreto) uno o más algoritmos. Un algoritmo puede expresarse de distintas
maneras: en forma gráfica, como un diagrama de flujo, en forma de código como
en pseudocódigo o un lenguaje de programación, en forma explicativa, etc.

Compilación

El programa escrito en un lenguaje de programación (fácilmente comprensible por


el programador) es llamado programa fuente y no se puede ejecutar directamente en una
computadora. La opción más común es compilar el programa obteniendo un módulo objeto.

El código fuente del programa se debe someter a un proceso de traducción para convertirlo en


lenguaje máquina, código esté directamente ejecutable por el procesador. A este proceso se le
llama compilación.
Lenguaje de Programación C

C es un lenguaje de programación que ha sido utilizado para la creación de herramientas


informáticas como: Sistemas Operativos, Compiladores, Procesadores de Texto, etc.
Puede también, ser utilizado para cálculos de ingeniera, permitiendo automatizar los mismos
mediante la creación de programas.
El lenguaje C, puede ser utilizado en dos versiones básicas:
a) ANSI C: versión original con la que nació este Lenguaje de Programación. Permite realizar
prácticamente cualquier tipo de programa, con un solo inconveniente: no incorpora tipos
de datos y estructuras para la programación bajo el Paradigma de Programación
Orientado a Objetos que se utiliza en la actualidad para la creación de la mayoría de las
aplicaciones (programas) informáticas.
b) C++ esta es una versión de C que incorpora datos y estructuras para la programación bajo
el Paradigma de Programación Orientado a Objetos.

Para propósitos de este curso y dado los límites de tiempo marcados en el mismo, utilizaremos
instrucciones bajo el denominado ANSI C. Los compiladores actuales de C, pueden traducir
programas escritos tanto en C como en C++.
3.2 Estructura básica de un programa.

En forma similar a un diagrama de flujo, en los cuales existe un símbolo grafico para realizar una
acción específica (solicitar un valor a un usuario, mostrar un valor en pantalla, etc.), en Lenguaje C,
existe un comando o palabra especial para denotar una instrucción especifica a la computadora.

De igual manera, existen símbolos especiales para denotar el inicio y fin de un programa ( { y } ).

Enseguida, se muestra una relación que existe entre un símbolo grafico usado en diagrama de
flujo y su equivalente en Lenguaje C.

Cada uno de estos comandos: scanf, if, printf y otros más, se verán en las siguientes secciones.

Cada uno de ellos tiene un formato para su uso que debe ser cumplido para que la computadora
los pueda interpretar correctamente.
Ejemplo completo de un programa en C y su equivalente en Diagrama de Flujo

Para complementar la relación anterior de equivalencia entre símbolos usados en Diagramas de


Flujo y los comandos equivalentes en Lenguaje C, enseguida se muestra un ejemplo completo de
Diagrama y su Programa en Lenguaje C equivalente.

Estructura general de un programa en C

Un programa en C, está compuesto por bloques de código (uno o más comandos). Cada uno de
estos bloques, llamados funciones, realiza una tarea de las varias tareas que se requieren para
resolver un problema en particular.

A cada uno de las funciones se les asocia un nombre. Cuando se desea ejecutar la tarea en
particular que realiza una función, se coloca el nombre de la función en el punto de nuestro código
en donde se requiere.

Es requisito que al menos exista una función: la función main. La función main es donde arranca la
ejecución de comandos y funciones. Problemas pequeños pueden ser resueltos con una sola
función (main). Problemas grandes requieren múltiples funciones. Más adelante, se verá el tema
de funciones con más detalle.
Programa ejemplo que muestra la Estructura General de un programa en C

/* Comentarios */

// Sección de archivos include


# include <stdio.h>

// Sección de variables globales


int Area _Rec(int b, int a)
{
return b*a;
}

Int main (void)


{ // Inicio de programa

// Variables locales
Int x,y,c;

// Código del programa


x= 2;
y = 4;
c = Area_Rec(x,y);
printf(“%d”,c);

} // Fin de programa

Observaciones:
- En C, un comentario se utiliza para explicar una sección de nuestro programa. Un
comentario no afecta la ejecución de tareas. El compilador ignora estos textos. Un
comentario es solo útil para el programador, como una pequeña documentación de
partes del programa. Hay dos formas de colocar comentarios :
a) Colocándolo entre los símbolos /* y */
b) Colocándolo después de los caracteres //

El caso a) es útil para comentarios de más de una línea. El caso b) para comentarios
de una línea.

- En este ejemplo, se muestra dos funciones: main y Area_Rec. Recordar. Main es donde
comienza la ejecución de main. Desde main se controla el flujo y la ejecución de otras
partes (funciones) de nuestro programa. Recordar que funciones se verá más a detalle
más adelante. En los primeros programas usaremos solo la función main.

- A diferencia de un diagrama de flujo, en un programa, se debe declarar, antes de su uso, a


todas las variables que usara nuestro programa. Usualmente cada bloque o función,
declara las variables que utilizara. Estas variables son conocidas como locales. Si existieran
variables que deben ser conocidas en todo el programa, se declaran como globales.
Tanto para variables locales, como globales, existen puntos específicos donde deben ser
declaradas y que se muestran en el ejemplo anterior.

- En algunos Compiladores , para apreciar los resultados de despliegue en pantalla, es útil,


colocar como última línea de código, un scanf o gets, que detenga el programa
momentáneamente antes de terminar, ya que de lo contrario, como la computadora
realiza todo muy rápidamente, PODEMOS NO ALCANZAR APRECIAR LO QUE SE MOSTRO
EN LA PANTALLA.

Así, nuestra función main se vería algo así como:

Int main (void)


{ /* Inicio de programa */

/* Variables locales */
Int x,y,c;

/* Código del programa */


x= 2;
y = 4;
c = Area_Rec(x,y);
printf(“%d”,c);

getch(); /* Esta línea es solo para detener


Momentáneamente el programa antes de terminar . */
} /* Fin de programa */

Elementos básicos a utilizar en los primero programas

En un programa en C, puede utilizarse una gran diversidad de elementos : variables, instrucciones,


funciones, ciclos, instrucciones de entrada salida, etc. Al inicio, todo esto puede ser abrumador.

Bajo la idea de que las habilidades se logran mejor con la práctica y , dado que la programación es
una habilidad, una buena recomendación o practica de programación es : comenzar con ejemplos
que contengan pocas cosas. Por ejemplo, que declare una variable y la imprima. Que contenga un
ciclo que imprima del 1 al 10, y cosas así. Es decir, poco a poco ir aprendiendo las diversas formas
y situaciones que se pueden presentar en un programa. Estas pequeñas bases le irán fortaleciendo
poco a poco, hasta permitirle resolver problemas más complejos.

En este contexto, en algunos casos, aunque un comando tenga varias formas, trataremos de
fortalecer la más común o útil para la mayoría de los casos. En las siguientes secciones,
mencionaremos comando, instrucción o sentencia como sinónimo.
Centraremos la mayoría de los primeros ejercicios en el uso de los siguientes elementos y/o
sentencias:

- Declaración de variables enteras (int) y reales(float)


- Sentencias de asignación
- Uso de scanf y printf como sentencias de entrada /salida de datos.
- Usos while como sentencia para ciclos. (esto será hasta la Unidad 4)
- Uso de if para ejecución condicionada de partes de código. (esto será hasta la Unidad 4)

http://www.carlospes.com/curso_de_lenguaje_c/01_03_01_tipos_de_instrucciones_lenguaje_c.p
hp
3.3 Identificadores.

Un programa en C está compuesto por varios elementos: variables, funciones, tipos de datos,
comandos o instrucciones, etc. A muchos de estos elementos, se le asocia un nombre llamado
identificador para distinguir uno de otro. Por ejemplo, en el caso de las variables, puedo llamar a
una A y a otra B, para distinguir una de otra al momento de estar usando a las mismas en los
cálculos. Una variable es quizá el tipo de identificador más usado en un programa en C.

Algunos identificadores son particularmente especiales debido a que son usados para identificar
tipos de datos que tendrán las variables o el nombre de comandos (acciones) que se realizaran en
nuestro programa. Estos identificadores que NO PUEDEN SER USADOS PARA NOMBRAR AUN
IDENTIFICADOR DEFINIDO POR EL USUARIO, SE LES LLAMA PALABRAS RESERVADAS.

Palabras reservadas en el Lenguaje ANSI C

  · auto   · double   · int   · struct

  · break   · else   · long   · switch

  · case   · enum   · register   · typedef

  · char   · extern   · return   · union

  · const   · float   · short   · unsigned

  · continue   · for   · signed   · void

  · default   · goto   · sizeof   · volatile

  · do   · if   · static   · while

Reglas para definir identificadores


1. Consta de uno o más caracteres.
2. El primer carácter debe ser una letra o el carácter subrayado (_), mientras que, todos los
demás pueden ser letras, dígitos o el carácter subrayado (_). Las letras pueden ser
minúsculas o mayúsculas del alfabeto inglés. Así pues, no está permitido el uso de las
letras 'ñ' y 'Ñ'.

3. No pueden existir dos identificadores iguales, es decir, dos elementos de un programa no


pueden nombrarse de la misma forma.
Ejemplos de Identificadores Válidos y No Válidos en Lenguaje C

A continuación, se muestran algunos ejemplos de identificadores válidos en lenguaje C y otros que


no lo son:

Ejemplo 1: Algunos identificadores válidos que pueden ser definidos por el programador
son:

numero
dia_del_mes
PINGUINO1
_ciudad
Z

Ejemplo 2: Los siguientes identificadores no son válidos por incumplir la segunda regla:

123
_DÍA
numero*
lugar de nacimiento año

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 minúsculas y mayúsculas.


Ejemplo 4: Mes y mes son considerados identificadores distintos.

Por último, hay que decir que, es aconsejable que los identificadores tengan un significado

afín a lo que representan.


3.4 Tipos de datos.

Un tipo de datos especifica que tipo de valores va a estar asociado a un identificador. Desde el
punto de vista de una variable, su tipo de datos especifica si va a tener valores numéricos (reales o
enteros) o si va a retener valores alfanuméricos (como nombres de persona, domicilios, teléfonos,
etc.).

En seguida, describiremos un poco más amplio, cada uno de los tipos básicos de datos en C.

¿Qué es un dato de tipo entero en  C?

Un dato de tipo entero (int en lenguaje C) es aquel que puede tomar por valor un número
perteneciente al conjunto de los números enteros (Z), el cual está formado por los números
naturales, sus opuestos (números negativos) y el cero.

Z = {..., -3, -2, -1, 0, 1, 2, 3,...}

Ejemplo: La edad de una persona y el año en que nació, son dos datos de tipo entero:

Edad...: 29
Año....: 1976

Z es un conjunto infinito de números enteros, y como el ordenador no puede representarlos todos,
un dato de tipo entero sólo puede tomar por valor un número perteneciente a un subconjunto
de Z. Los valores máximo y mínimo de dicho subconjunto varían según las características de cada
ordenador y del compilador que se utilice.

¿Qué es un dato de tipo real en  C?

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

Ejemplo: El peso de una persona (en kilogramos) y su altura (en centímetros), son datos que
pueden considerarse de tipo real.

Peso.....: 75,3
Altura...: 172,7

R es un conjunto infinito de números reales, y como el ordenador no puede representarlos todos,
un dato de tipo real sólo puede tomar por valor un número perteneciente a un subconjunto de R.
Los valores de dicho subconjunto varían según las características 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 número perteneciente a un subconjunto de R mayor que un dato de tipo float.

Datos de Tipo Carácter en Lenguaje C (char)

¿Qué es un dato de tipo carácter en  C?

Un dato de tipo carácter (char en lenguaje C) es aquel que puede tomar por valor un carácter
perteneciente al conjunto de los caracteres que puede representar el ordenador.

En lenguaje C, el valor de un dato de tipo carácter 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 carácter.

Respuesta correcta a la pregunta 3...: 'c'

¿Qué es un dato de tipo cadena en  C?


De todos los tipos de datos que no son básicos se dice que son derivados, ya que, están 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 título de un libro y el nombre de su autor, son datos de tipo cadena.

Título...: "La Odisea" (cadena de 9 caracteres)


Autor....: "Homero" (cadena de 6 caracteres)

Obsérvese que, en la cadena "La Odisea", el carácter espacio en blanco también se cuenta.

// Ejemplo sencillo de declaración y uso de variables

// Sección de archivos include


# include <stdio.h>

Int main (void)


{ // Inicio de programa

// Variables tipo entero


Int x,y1,cv;

// Variables tipo real (con decimales)


float altura, d;

// Variable tipo char


char c;

// Código del programa


x= 2;
y1 = 4;
cv= x;
printf(“%d”,cv);

altura = 1.69;
d = 4.2;
printf(“%f”,cv);

scanf(“%c”,&c);
} // Fin de programa
Entrada /salida de Datos en un programa en C (Printf y scanf)

Recordemos que la mayoría de las tareas que realiza una computadora, son cálculos y
decisiones que no son visibles para el usuario de un programa. Si un programador desea que el
usuario vea un dato deberá indicárselo a la computadora mediante el comando printf.

Asi mismo, si se necesita que el usuario proporcione , mediante teclado un dato que se
requiere para los cálculos a realizar, también se deberá indicar esto a la computadora
mediante el comando scanf.

Printf

Para indicar que se debe mostrar un valor en la pantalla, dos cosas son requeridas :

a) El tipo(s) del valor (es) que se desea mostrar


b) El valor(es) ( constantes o variables) que se desea mostrar

Asi, la sintaxis de un printf es :

printf(“formato”,valores);

El “formato” puede ser :


“%d” si el valor mostrar es entero
“%f” si el valor mostrar es real ( float)
“%c” si el valor mostrar es caracter
Ejemplos de Printf 
int a,b;
float x;
char t;

a = 2;
b = a;
x = 23.34;
t = ‘g’;

printf(“Valores : \n”); // Ejemplo de printf con solo un mensaje( no se imprimen variables)

printf(“%d”,a);
printf(“%d , %d ”,a,b);
printf(“%f”,x);
printf(“%c”,t);

scanf

Para solicitar valores de teclado por parte del usuario, en forma similar al printf, dos cosas son
requeridas :

a) El tipo del valor que se desea solicitar por teclado


b) La variable donde quedara el valor tecleado por el usuario

Se destaca que, como parte de la sintaxis del scanf, antes de la variable deberá colocarse el
símbolo &.

Asi, la sintaxis de un scanf es :

printf(“formato”,&variable);

El “formato” puede ser :


“%d” si el valor mostrar es entero
“%f” si el valor mostrar es real ( float)
“%c” si el valor mostrar es caracter

Ejemplos de scanf 
int a;
float x;
char t;

scanf(“%d”,&a);
scanf(“%f”,&x);
scanf(“%c”,&c);
Programa Ejemplo: En el siguiente código, ingresamos un número y lo mostramos por
pantalla.

#include "stdio.h"
#include "conio.h"

void main()
{
float Numero; // Declaramos un flotante denominado Numero

printf("Ingrese un numero:");
scanf("%f",&Numero);
printf("\nEl numero ingresado es %f",Numero);
getch(); // Es para que el programa se detenga.
/*
En pantalla va a mostrar, en caso de haber tipeado 10
El numero ingresado es 10.000000
Es con dígitos por que es un tipo de dato float
En caso de querer mostrar menos dígitos decimales
se debería agregar al especificador de formato %f
por ejemplo para que muestre 2 decimales %.2f
quedando printf("El numero ingresado es %.2f",Numero);
*/
}

Secuencias de Escape

Las secuencias de escape se utilizan para que el compilador interprete de diferente forma la
salida de la información a mostrar, por ejemplo:

\n ( Salto de Linea )


\t ( Tabulador )
\b ( Backspace )
\r ( Retroceso del carro )
\a ( Suena Parlante interno de la pc )
\\ ( Muestra \ )
\" ( Muestra " )
3.5 Almacenamiento, direccionamiento y representación en memoria.

Existen en C, varios tipos de datos entero y de varios tipos de datos reales. En un inicio uno
puede preguntarse ¿Por qué varios tipos enteros? ¿Por qué no usar un solo tipo entero?

La razón de lo anterior es que, entre más grande es el número entero, puede requerir más
espacio de almacenamiento en la Memoria RAM de la Computadora. En ese contexto, si uno
conoce el rango de valores que va a retener una variable, es deseable especificar el tipo de
datos justo, para evitar espacio de memoria mal utilizado. Esto es particularmente útil en
programas grandes en donde el recurso de la Memoria es crítico.

Espacio en memoria para tipos de datos Básicos

http://users.dcc.uchile.cl/~lmateu/CC10A/Apuntes/rep/
3.6 Proposición de asignación.
Una sentencia de asignación permite, como su nombre lo indica, asignar el resultado de una
expresión a la variable que se indica.

La sintaxis general es la siguiente:

Variable_destino = expresión ;

Ejemplos de sentencias de asignación son:

1) A = 2;
2) B = a + 2 ;
3) C = (x*2) /2;
4) X = Area_cuadrado(2,3)
5) X = Area_cuadrado(2,3) + 3;

Las primeras tres formas, utilizan en la expresión, solo variables, constantes y operadores. El
cuarto y quinto ejemplo utilizan funciones. Una función, es un bloque de código en nuestro
programa que hace una tarea (cálculo del área de un rectángulo en este caso) y regresa un
valor. El tema de funciones será visto con más detalle más adelante.

¿Cuáles son los operadores aritméticos más comunes que puedo utilizar en una asignación?

Principales Operadores Aritméticos


Operador Descripción Asignaciones ejemplo
+ Suma de valores A = A +2;
X = A + B;
- Resta de Valores A =A -2;
X =A – B;
* Multiplicación de Valores A =A *2;
X =A * B;
/ División de valores A =A / 2;
X =A / B;
% Resto de la división X = 3;
Y = X % 2; // quedaría en Y un 1
X = 2;
Y = X % 2; // quedaría en Y un 0
3.7 Operadores, operadnos y expresiones.
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 aritméticas, tales como la
suma, la resta o la multiplicación.

Ejemplo 1: Algunos ejemplos son:

111 + 6 (operación suma)

19 - 72 (operación resta)

24 * 3 (operación multiplicación)

Todas las operaciones del ejemplo constan de dos operadnos (constantes enteras) y un operador.
La mayoría de las veces es así, pero, también es posible realizar operaciones con distinto número
de operadores y/u operadnos.

Ejemplo 2: Por ejemplo:

111 + 6 - 8 (tres operadnos y dos operadores)

-( ( +19 ) + 72 ) (dos operadnos y tres operadores)

-( -72 ) (un operando y dos operadores)

En las operaciones del ejemplo se puede observar que los caracteres más (+) y menos (-) tienen
dos usos:

1. Operadores suma y resta.


2. Signos de un número (también son operadores).

Los operadores de signo más (+) y menos (-) son operadores monarios, también llamados unarios,
ya que, actúan, solamente, sobre un operando.

Los caracteres abrir paréntesis "(" y cerrar paréntesis ")" se utilizan para establecer la prioridad de
los operadores, es decir, para establecer el orden en el que los operadores actúan sobre los
operandos.
Un operador indica el tipo de operación a realizar sobre los operandos (datos) que actúa. 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 sólo aparecen constantes y variables.
Cuando se combinan uno o más operadores con uno o más operandos se obtiene una expresión.
De modo que, una expresión 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 (valor real) ( 2 * 3.141592 * 3.2 )

9.869600 (valor real) ( 3.141592 * 3.141592 )

10 (valor entero) ( 2 * 5 )

Un operador siempre forma parte de una expresión, en la cual, el operador siempre actúa sobre al
menos un operando. Por el contrario, un operando sí puede aparecer solo en una expresión.
En programación, de la evaluación de una expresión siempre se obtiene un valor. Dicho valor
puede ser de tipo: entero, real, lógico, carácter o cadena. Por consiguiente, una expresión puede
ser:
 Aritmética (devuelve un número entero o real).
 Lógica (devuelve un valor lógico: verdadero o falso)

 De carácter (devuelve un carácter representable por el ordenador).

 De cadena (devuelve una cadena).


3.8 Prioridad de operadores, evaluación de expresiones.

- Todos los operadores (aritméticos, lógicos y relacionales) tienen unas reglas de precedencia que


se aplican cuando varios actúan juntos.

- En los operadores aritméticos, por ejemplo, la multiplicación y la división "se ejecutan" antes que


la suma y la resta, es decir, tienen precedencia.

- Para alterar estas reglas de precedencia, se pueden usar paréntesis.

- Así por ejemplo a + b * c es equivalente a a + (b * c) porque la precedencia de la multiplicación es


superior a la de la suma. Sin embargo, (a + b) * c altera la precedencia.

- Para evitar dudas y problemas, cuando manejemos expresiones con varios operadores, lo mejor
es poner siempre paréntesis y forzar así la precedencia que nosotros deseemos.

- Escribiremos pues a + (b * c) ó (a + b)*c según lo que deseemos, y no dejaremos que sea la


máquina la que lo deduzca

¿Qué prioridad tienen los operadores en C?

En la siguiente Tabla se muestra la prioridad o precedencia que tienen en C los operadores.


Algunos de ellos, no los tocaremos en los temas de este curso. Inicialmente, observe en esta tabla
como los operadores * , / y % tienen prioridad sobre + y -.
3.9 Elaboración de programas
4 Estructuras selectivas y de repetición.

4.1 Selectiva simple.

Instrucción if en Lenguaje C

¿Para qué sirve la instrucción alternativa simple (if)  en C?

Una instrucción alternativa simple (if) es una variante (más sencilla) de una instrucción alternativa
doble (if else). En lenguaje C, para escribir una instrucción if se utiliza la sintaxis:

if ( <expresión_lógica> )
{
   <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

Obsérvese que, en este problema, no se va a mostrar por pantalla "SUSPENDIDO" en el caso de


que la nota sea menor que 5.

   Introduzca nota (real): 3.5

Al igual que ocurre con una instrucción alternativa doble, cuando el <bloque_de_instrucciones> de
una alternativa simple sólo contiene una instrucción, los caracteres abrir llave ({) y cerrar llave (})
también 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;
}
4.2 Selectiva doble.

¿Para qué sirve la instrucción alternativa doble (if else)  en C?

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

if ( <expresión_lógica> )
{
   <bloque_de_instrucciones_1>
}
else
{
   <bloque_de_instrucciones_2>
}

A la <expresión_lógica> de una instrucción alternativa doble (if else) también se le denomina


condición.

Para que se ejecute el <bloque_de_instrucciones_1>, la condición tiene que ser verdadera. Por el
contrario, si la condición es falsa, se ejecutará el <bloque_de_instrucciones_2>.

En resumen, en C una instrucción if else (alternativa doble) permite seleccionar, por medio de una
condición, 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

Otra posibilidad es:

   Introduzca nota (real): 3.5

   SUSPENDIDO

Cuando un bloque de instrucciones sólo contiene una instrucción, 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 código fuente de un programa existe una condición de la cual depende que a
continuación se ejecuten unas instrucciones u otras, se dice que existe una bifurcación.
4.4 Selectiva múltiple.

Instrucción switch en Lenguaje C

¿Para qué sirve la instrucción alternativa múltiple (switch)  en C?

Una instrucción switch (alternativa múltiple) permite seleccionar, por medio de una expresión, el


siguiente bloque de instrucciones a ejecutar de entre varios posibles. En lenguaje C, para escribir
una instrucción alternativa múltiple (switch) se utiliza la sintaxis:

switch ( <expresión> )
{
   case <expresión_1> : [ <bloque_de_instrucciones_1> ]
                        [ break; ]
   case <expresión_2> : [ <bloque_de_instrucciones_2> ]
                        [ break; ]
   ...
   case <expresión_n> : [ <bloque_de_instrucciones_n> ]
                        [ break; ]
            [ default : <bloque_de_instrucciones_n+1> ]
}

El resultado de evaluar la <expresión> debe ser un valor perteneciente a un tipo de dato finito y
ordenado, es decir, entero, lógico, carácter, enumerado o subrango.

Dependiendo del valor obtenido al evaluar la <expresión>, se ejecutará un bloque de instrucciones


u otro.

Opcionalmente, se puede escribir un <bloque_de_instrucciones_n+1> después de default :. Este


bloque de instrucciones se ejecutará en el caso de que el valor obtenido al evaluar la <expresión>,
no se encuentre en ninguna de las expresiones después de cada case.
Ejemplo 1: Se quiere escribir un programa que:

1º) Pida por teclado el número (dato entero) de un día de la semana.

2º)Muestre por pantalla el nombre (dato cadena) correspondiente a dicho día.

Nota: Si el número de día introducido es menor que 1 ó mayor que 7, se mostrará el mensaje:
"ERROR: Día incorrecto.".

En pantalla se podrá ver algo parecido a:

Introduzca día de la semana: 2


   Martes

O también:

Introduzca día de la semana: 9


   ERROR: Día incorrecto.

Solución 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 instrucción alternativa múltiple, obsérvese que, después de cada bloque de
instrucciones se puede escribir, opcionalmente, la instrucción break. Dicha instrucción no se va a
estudiar con detenimiento en este apartado, ya que, de momento, basta con saber que en una
instrucción switch, la escribiremos, casi siempre, después de cada bloque de instrucciones, a
excepción del último. Para comprender su funcionamiento, pruebe a ver que ocurre si omite
algúnbreak en el código del programa del ejemplo 1.

Estúdiese también el siguiente ejemplo.

Ejemplo 2: En la siguiente tabla se muestran las categorías a las que pertenecen los signos del
zodíaco:
Se quiere escribir un programa que:

1º) Muestre el listado de los signos del zodíaco, con sus números asociados.
2º) Pida por teclado un número (dato entero) asociado a un signo del zodíaco.
3º) Muestre la categoría a la que pertenece el signo del zodíaco seleccionado.

Nota: Si el número introducido por el usuario, no está asociado a ningún signo del zodíaco, se
mostrará el mensaje: "ERROR: <número> no está asociado a ningún 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.

O también:

   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 está asociado a ningún signo.

Una posible solución 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 :
      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 ningún signo.", numero );
   }

   return 0;
}

Otra solución 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 )
   {
      case  1 : strcpy( categoria, "Fuego" );
                break;
      case  2 : strcpy( categoria, "Tierra" );
                break;
      case  3 : strcpy( categoria, "Aire" );
                break;
      case  0 : strcpy( 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 solución existen las siguientes diferencias importantes con respecto a la solución
anterior:

 En el código se utiliza una alternativa doble (if else), además de una alternativa múltiple
(switch).
 En la alternativa múltiple no se escribe el <bloque_de_instrucciones_n+1>.

 La <expresión> de la alternativa múltiple es diferente.

 La expresión "\n   Es un signo de " sólo se escribe una vez.

 Se ha utilizado una variable más (un array de caracteres): categoria.

 Se ha empleado la función strcpy, que, como ya vimos en el apartado de Operadores y


expresiones, está disponible en la biblioteca estándar de C.

4.3 Selectiva anidada.

Anidamiento de Instrucciones Alternativas en Lenguaje C

¿Cómo anidar instrucciones alternativas  en C?

En programación, 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 múltiple (switch).

 Simple (if) en simple (if).

 Simple (if) en doble (if else).

 Simple (if) en múltiple (switch).

 Múltiple (switch) en múltiple (switch).

 Múltiple (switch) en doble (if else).

 Múltiple (switch) en simple (if).

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

» Alternativa Doble (if else) en Doble (if else)

Anidamiento if else Dentro de if else en Lenguaje C

¿Como anidar instrucción if else dentro de otro if else  en C?

En lenguaje C, para anidar una instrucción if else en otra (también if else), se utiliza la sintaxis:

if ( <expresión_lógica_1> )
{
   /* Inicio del anidamiento */
   if ( <expresión_lógica_2> )
   {
      <bloque_de_instrucciones_1>
   }
   else
   {
      <bloque_de_instrucciones_2>
   }
   /* Fin del anidamiento */

}
else
{
   <bloque_de_instrucciones_3>
}

O también:

if ( <expresión_lógica_1> )
{
   <bloque_de_instrucciones_1>
{
else
{

   /* Inicio del anidamiento */


   if ( <expresión_lógica_2> )
   {
      <bloque_de_instrucciones_2>
   }
   else
   {
      <bloque_de_instrucciones_3>
   }
   /* Fin del anidamiento */

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 podría ver:

   Introduzca nota (real): 7.5

   APTO

O por ejemplo:

   Introduzca nota (real): 12.2

   ERROR: Nota incorrecta.

Una solución 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;
}

Fíjese que, en este caso, se puede prescindir de los caracteres abrir llave ({) y cerrar llave (}) de la
sintaxis, ya que, los bloques de instrucciones sólo contienen una instrucción.

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


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

» Alternativa Múltiple (switch) en Doble (if else)

Anidamiento switch Dentro de if else en Lenguaje C

¿Cómo anidar instrucción switch dentro de if else  en C?

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

if ( <expresión_lógica> )
{

   /* Inicio del anidamiento */


   switch ( <expresión> )
   {
     case <expresión_1> : [ <bloque_de_instrucciones_1> ]
                          [ break; ]
     case <expresión_2> : [ <bloque_de_instrucciones_2> ]
                          [ break; ]
     ...
     case <expresión_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 Instrucción switch en C, también se
puede resolver anidando una instrucción switch (alternativa múltiple) en una instrucción if
else(alternativa doble), como se muestra a continuación:

#include <stdio.h>

int main()
{
   int dia;

   printf( "\n   Introduzca dia de la semana: " );


   scanf( "%d", &dia );

   if ( dia >= 1 && dia <= 7 )

   /* Sólo si el día es válido, se ejecuta la


   instrucción alternativa múltiple */

      /* Inicio del anidamiento */


      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" );
      }
      /* Fin del anidamiento */
   else
      printf( "\n   ERROR: Dia incorrecto." );

   return 0;
}
4.5 Repetir Mientras.
4.6 Repetir hasta.
4.7 Repetir desde.
¿Qué tipos de instrucciones de control repetitivas existen en C?

A continuación, se estudian las distintas instrucciones de control repetitivas que se pueden utilizar


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

Instrucción while en Lenguaje C

¿Para qué sirve la instrucción repetitiva mientras (while) en C?

Para realizar varoas veces una serie de tareas. Implementa lo que en diagrama de flujo llamamos
ciclo.

Ciclo en Diagramas de Flujo y en Lenguaje C.

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

while ( <expresión_lógica> )
{
   <bloque_de_instrucciones>
}

Cuando el <bloque_de_instrucciones> sólo contiene una instrucción, los caracteres abrir llave ({) y


cerrar llave (}) son opcionales.

Por otra parte, al igual que en las instrucciones alternativas doble y simple, a la <expresión_lógica>
de una instrucción repetitiva while, también se le llama condición.

Para que se ejecute el <bloque_de_instrucciones>, la condición tiene que ser verdadera. Por el
contrario, si la condición 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:

1. Si la condición se evalúa a falsa, el bloque de instrucciones no se ejecuta, y el bucle while


finaliza sin realizar ninguna iteración.
2. Si la condición se evalúa a verdadera, el bloque de instrucciones sí que se ejecuta y,
después, se vuelve a evaluar la condición, para decidir, de nuevo, si el bloque de
instrucciones se vuelve a ejecutar o no. Y así sucesivamente, hasta que, la condición sea
falsa.

El <bloque_de_instrucciones> de un bucle while puede ejecutarse cero o más veces (iteraciones).


Si el <bloque_de_instrucciones> se ejecuta al menos una vez, seguirá ejecutándose
repetidamente, mientras que, la condición sea verdadera. Pero, hay que tener cuidado de que el
bucle no sea infinito.

Cuando la condición de un bucle while se evalúa siempre a verdadera, se dice que se ha producido


un bucle infinito, ya que, el programa nunca termina. Un bucle infinito es un error lógico.

Es importante hacer hincapié en el hecho de que, en un bucle while, primero se evalúa la


condición 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 revés. En él, primero se ejecuta el
bloque de instrucciones y, después, se evalúa la condición.

Para que un bucle while no sea infinito, en el bloque de instrucciones debe ocurrir algo para que la
condición deje de ser verdadera. En la mayoría de los casos, la condición se hace falsa al cambiar el
valor de una variable.

En resumen, una instrucción repetitiva while permite ejecutar, repetidamente, (cero o más veces)


un bloque de instrucciones, mientras que, una determinada condición sea verdadera.

Ejemplo 1: Se quiere escribir un programa que muestre por pantalla los primeros diez números
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; /* Inicialización del contador */


   while ( contador <= 10 )        /* Condición */
   {
      printf( "%d ", contador );   /* Salida */
      contador++;    /* Incremento del contador */
   }

   return 0;
}
Ejemplo 2: 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
El código 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


programación, es muy frecuente usar el bucle while para validar (filtrar) datos. Al bucle que se
utiliza para validar uno o más datos, también se le conoce como filtro.
Instrucción do while en Lenguaje C

¿Para qué sirve la instrucción repetitiva hacer mientras (do while) en C?

En lenguaje C, para escribir una instrucción do while (repetitiva hacer mientras) se utiliza la


sintaxis:

do
{
   <bloque_de_instrucciones>
} while ( <expresión_lógica> );

Cuando el <bloque_de_instrucciones> sólo contiene una instrucción, los caracteres abrir llave ({) y


cerrar llave (}) son opcionales.

Además, como se puede apreciar, la instrucción repetitiva do while, también hace uso de una
condición.

En un bucle do while, primero se ejecuta el bloque de instrucciones y, después, se evalúa la


condición. En el caso de que ésta sea verdadera, se vuelve a ejecutar el bloque de instrucciones. Y
así sucesivamente, hasta que, la condición sea falsa.

Por consiguiente, cuando el flujo de un programa llega a un bucle do while, existen dos
posibilidades:

1. Se ejecuta el bloque de instrucciones y, después, si la condición se evalúa a falsa, el bloque


de instrucciones no se vuelve a ejecutar, de manera que, el bucle do while finaliza,
habiendo realizado una sola iteración.
2. Se ejecuta el bloque de instrucciones y, a continuación, si la condición se evalúa a
verdadera, el bloque de instrucciones se vuelve a ejecutar. Y así sucesivamente, hasta que
la condición sea falsa.

El <bloque_de_instrucciones> de un bucle do while puede ejecutarse una o más veces


(iteraciones). También hay que prevenir que el bucle no sea infinito.

En resumen, una instrucción repetitiva do while permite ejecutar repetidamente (una o más veces)
un bloque de instrucciones, mientras que, una determinada condición sea verdadera.

Ejemplo 1: De modo que, utilizando un bucle do while, el problema del ejemplo 1 del apartado
anterior, Instrucción while en C, se puede resolver con el código:

#include <stdio.h>

int main()
{
   int contador;

   printf( "\n   " );

   contador = 1; /* Inicialización del contador */


   do
   {
      printf( "%d ", contador );   /* Salida */
      contador++;                 /* Incremento */
   } while ( contador <= 10 );     /* Condición */

   return 0;
}

Como ya se ha dicho, el bucle do while puede iterar una o más 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 número (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 números 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 números introducidos es: 20

El código propuesto es:

#include <stdio.h>

int main()
{
   char seguir;
   int acumulador, numero;
   /* En acumulador se va a guardar la suma de
      los números introducidos por el usuario. */

   acumulador = 0;
   do
   {
      printf( "\n   Introduzca un numero entero: " );
      scanf( "%d", &numero);

      acumulador += numero;

      printf( "\n   Desea introducir otro número (s/n)?: " );


      fflush( stdin );
      scanf( "%c", &seguir);
   } while ( seguir != 'n' );

   /* Mientras que el usuario desee introducir


      más números, el bucle iterará. */

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


           acumulador );

   return 0;
}
Instrucción for en Lenguaje C

¿Para qué sirve la instrucción repetitiva para (for) en C?

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

for ( <expresión_1> ; <expresión_2> ; <expresión_3> )


{
   <bloque_de_instrucciones>
}

Cuando el <bloque_de_instrucciones> sólo contiene una instrucción, 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 número 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 más veces. Sin
embargo, el bucle for sólo se suele usar cuando se conoce el número exacto de veces que tiene
que iterar el bucle. Éste es el caso del problema planteado en el ejemplo 1 del
apartado Instrucción 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 instrucción 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, <expresión_1>, <expresión_2> y <expresión_3>, se corresponden, respectivamente,


con:

 la inicialización de la variable contador,


 la condición de salida del bucle y

 el incremento de la variable contador

de una instrucción repetitiva mientras (while).

4.8 Elaboración de programas.

También podría gustarte