Anda di halaman 1dari 34

8/11/16

Programacin Estructurada
en C

Programacin

Pasos de la programacin

Programacin

La programacin se concibe como el proceso de disear, codificar, depurar y mantener el


cdigo de los programas computacionales . El propsito de la programacin es crear programas que
ejecuten acciones especficas deseadas .
La solucin de un problema, a travs de la programacin consiste en varios pasos que
deben ser observados y resueltos uno por uno, para lograr que un programa resuelva correctamente
el problema para el que fue creado, los pasos a seguir son:

Observe como la programacin implica algunos pasos previos a la codificacin, es MUY


IMPORTANTE que el programador tenga CLARA la solucin del problema ANTES de iniciar
la codificacin del mismo.

1) Entender claramente el problema.


Se recomienda resolver manualmente el problema a atender para una mejor comprensin del
mismo.
2) Plantear y elegir la alternativa de solucin.
Una vez que el problema se resolvi manualmente, es posible plantear algunas alternativas o
caminos de solucin. (No existe la solucin nica).

Problema

El programador observa y comprende el problema ANTES de iniciar la codificacin.

3) Algoritmo de solucin.
Plantear de forma bsica la solucin computacional del problema.
4) Codificacin y pruebas.
Consiste en traducir la solucin planteada en el paso anterior a un Lenguaje de Programacin que
sea comprensible para la computadora y para el ser humano.

Programacin

Programacin

Una vez que el programador ha comprendido CLARAMENTE la naturaleza del problema


realiza la solucin del mismo de forma manual, sto le permite aterrizar mejor la
comprensin del problema he iniciar la generacin de ideas de solucin.

Problema

Solucin
Manual

Ya con varias ideas de solucin, el programador analiza las mismas y determina la mejor
alternativa, al mismo tiempo hace un planteamiento bsico del algoritmo de solucin del
problema y selecciona el lenguaje de programacin que brinde facilidades para la
codificacin de dicha solucin.

Idea 1

Idea 1

Idea 2

Idea 2

Idea N

Idea N

Solucin
Elegida

Algoritmo
De Solucin

Lenguaje
programacin

8/11/16

Programacin

Programacin

A travs del lenguaje de programacin el programador CODIFICA la solucin al problema


y realiza algunas pruebas para determinar su buen funcionamiento, sto es un ciclo
(codificar probar) que se termina cuando el programa funciona de forma adecuada

Codificacin

Puesta en
Operacin

Pruebas

Programacin

Mantenimiento

Programacin

Cuando el ciclo de puesta en operacin y mantenimiento es liberado, se considera que el


programa est terminado y funcionando de forma ptima.

Puesta en
Operacin

Cuando el programador determina que el programa funciona satisfactoriamente ste es


puesto en operacin y, a travs de la observacin se pueden hacer mejoras a su
funcionamiento, este proceso de observacin y mejoras termina cuando el programa
funciona correctamente y de la forma ms eficiente.

Mantenimiento

Programa
Liberado

Programacin
Para entender mejor los pasos sigamos este ejemplo:
Planteamiento del problema
Suponga que un contador tiene dificultades para calcular la depreciacin de los Activos
de la empresa, por lo que le ha pedido elaborar un programa que le ayude con este
clculo. Los datos que sern proporcionados por el contador son: valor del activo (en
pesos), porcentaje de depreciacin anual y aos transcurridos desde la compra del
activo. La frmula para calcular la depreciacin es:
Depreciacin = (valor del activo) * (porcentaje) * aos transcurridos
En este caso ya hemos ledo el problema pero esto NO quiere decir que lo hayamos
COMPRENDIDO, veamos si nuestra comprensin es correcta.

Es muy importante que, como programador, sea cuidadoso de los pasos a seguir en la
solucin computacional de un problema, la experiencia indica que los programadores
que NO observan dichos pasos sufren de ms dolores de cabeza que los programadores
que resuelven los problemas paso a paso, recuerde que los pasos son:

1) Entender claramente el problema


2) Plantear y elegir la alternativa de solucin
3) Plantear algoritmo de solucin
3) Codificacin y pruebas
4) Mantenimiento

Programacin
Un tp que nos ayuda a comprender la naturaleza de un problema es separar las partes
del proceso en entradas, procesamiento y salidas, en este caso tenemos:
Entradas: Las entradas se refieren a los datos que sern proporcionados por el (los)
usuarios(s) para que nuestro programa efectu los clculos u operaciones necesarias para
obtener el resultado deseado.
Los datos que sern proporcionados por el contador son: valor del activo (en pesos),
porcentaje de depreciacin anual y aos transcurridos desde la compra del activo.
Por lo tanto yo tendr como datos de entrada:
Valor del activo, supongamos $ 50,000 pesos
Porcentaje de depreciacin ANUAL, supongamos 5%.
Aos transcurridos desde la compra del activo, supongamos 5 aos
Con sto ya se claramente los datos que me dar el contador, pero .. Qu hago con
ellos?

8/11/16

Programacin

Programacin

Procesamiento: El procesamiento se refiere a los clculos u operaciones que se deben


hacer para obtener el resultado deseado.

Salidas: Se refiere a los resultados que se espera que mi programa muestre despus de
hacer los clculos u operaciones necesarias.

En este caso me estn diciendo que el objetivo de mi programa es calcular la


depreciacin y la frmula es:

En este caso el resultado esperado es el clculo de la depreciacin, por lo tanto slo me


resta mostrarlo.

Depreciacin = (valor del activo) * (porcentaje) * aos transcurridos


Por lo tanto con los datos de entrada de la diapositiva anterior yo tendra:
Depreciacin=(50,000)*(5%)*5
El clculo anterior nos dara como resultado:
Depreciacin = 12,500

Recuerde que un buen tip es separar su problema en:


Entradas
Procesamiento (clculos y operaciones)
Salida
Con esta solucin ya tenemos una comprensin clara del problema, hemos
resuelto el paso 1) Entender claramente el problema.

Lo que quiere decir que la depreciacin del activo ser de $ 12,500 pesos en este caso.

Programacin
El paso 2) Plantear las alternativas de solucin es proponer alguna forma de resolver el
problema, en ocasiones los pasos 2 y 3 (Plantear algoritmo de solucin) se pueden hacer
en un solo paso, esto se presenta cuando el problema a resolver es muy sencillo como en
este caso, por lo tanto la solucin y algoritmo de solucin quedaran de la siguiente
forma:
1) Solicitar valor de compra del activo y almacenarlo en variable (valor_compra)
2) Solicitar el porcentaje de depreciacin anual del activo y almacenarlo en la variable
(depreciacion_anual)
3) Solicitar los aos transcurridos desde la compra del activo y almacenarlo en la
variable (aos_transcurridos)
4) Efectuar el clculo
depreciacin=valor de compra * depreciacin_anual*aos_transcurriodos
5) Mostrar el resultado de la depreciacin
Con esto ya tenemos cubiertos los pasos del 1 al 3, lo que seguira sera codificar la
solucin, pero esto lo veremos ms adelante.

Programacin
Slo para cerrar este tema recuerde que los pasos a seguir para resolver un problema a
travs de programas computacionales son:
1) Entender claramente el problema
2) Plantear y elegir la alternativa de solucin
3) Plantear algoritmo de solucin
4) Codificacin y pruebas
5) Mantenimiento
Recuerde que un buen tp para comprender un problema y plantear sus posibles
soluciones es dividir su problema en:
Entradas
Procesamiento
Salidas

Lenguajes de Programacin

Lenguajes de Programacin

Un lenguaje de programacin es un idioma artificial diseado para describir y detallar


procesos que pueden ser ejecutados por diversas mquinas, entre ellas, las
computadoras. Los lenguajes de programacin se usan para expresar algoritmos
detallados de solucin a un problema.
Un lenguaje de programacin se conforma por un conjunto de smbolos y reglas
sintcticas que definen su estructura y el significado de sus elementos y expresiones.
En fin, un lenguaje de programacin nos permite escribir soluciones a problemas, donde
dichas soluciones pueden ser comprendidas por el ser humano y la computadora; la cual
podr interpretarlas y ejecutar las acciones indicadas en el cdigo.

8/11/16

Lenguajes de Programacin

Lenguajes de Programacin

Principalmente existen dos tipos de lenguajes de


programacin, los lenguajes INTERPRETES
y los lenguajes
COMPILADORES. Los lenguajes interpretes son aquellos que se
escriben por el programador y pueden ser ejecutados de manera
inmediata. Los lenguajes compiladores son los que igualmente, se
escriben por el programador pero requieren un proceso de
revisin sintctica y semntica para generar un nuevo cdigo que
ser entendible por la computadora.

Como ya lo indicamos, un lenguaje interprete se escribe por el programador y puede ser


ejecutado de forma inmediata.

Lenguaje
Interprete

Ejecucin

Lenguajes de Programacin
Los lenguajes compiladores requieren de un proceso previo que es la COMPILACIN,
revisin de la sintaxis y semntica de las instrucciones. Posteriormente generan un nuevo
cdigo.
El programa que es escrito por el programador y que es entendible por la mquina y por
el ser humano se llama CDIGO FUENTE, cuando el compilador revisa el cdigo fuente y
determina que es correcto, entonces genera un nuevo cdigo a nivel mquina, este
cdigo se llama CDIGO OBJETO, y es este ltimo el que puede ser ejecutado.
Cdigo
Fuente

Compilacin

Estructura de un programa
en C

Cdigo
Objeto

Ejecucin

Estructura de un programa en C

Estructura de un programa en C

Como lo vimos en diapositivas anteriores, cada lenguaje tiene su propia sintaxis y su


propia estructura.
La sintaxis se refiere a la forma en como escribimos cada instruccin mientras la
estructura se refiere a la forma como se distribuyen las instrucciones dentro de un
cdigo.
En el lenguaje C tenemos una estructura simple que se compone de tres partes
elementales:

Seccin de libreras

En esta seccin se indican las


libreras que requiere nuestro
programa para funcionar.

Seccin de Variables globales

En esta seccin se indican las


variables que va a utilizar nuestro
programa

Seccin de Instrucciones

En esta seccin se escriben las


instrucciones que sern ejecutadas
por nuestro programa

Seccin de libreras
Seccin de variables globales
Seccin de instrucciones

8/11/16

Estructura de un programa en C
Seccin de libreras, se definen las libreras
que darn apoyo a las instrucciones de
nuestro programa

# include <stdio.h>
# include <conio.h>

Int x,y,r;
main()
{

Se declaran las variables globales que


usaremos en el programa

x=10;
y=10;
r=x+y;
printf(El resultado es: %d,r);
getche();

Se escriben las instrucciones que


ejecutar nuestro programa

Libreras
# include <stdio.h>
# include <conio.h>

Seccin de libreras, se definen las libreras


que darn apoyo a las instrucciones de
nuestro programa

Las libreras de C son paquetes de funciones pre-establecidas que permiten el


funcionamiento de algunas instrucciones, de hecho si dichas libreras no son declaradas
el programa no pasar la fase de compilacin y nos marcar algunos errores impidiendo
que se pueda crear nuestro cdigo objeto y por lo tanto no tendremos una aplicacin a
ejecutar.
En este caso las dos libreras que estamos incluyendo:
stdio.h y conio.h, nos sirven para que las instrucciones de printf y getche() puedan
funcionar.

Variables
Una variable es un smbolo que representa un elemento o valor NO especificado dentro
de un universo de valores. Suponga que creamos la variable x cuyo universo ser el
conjunto {0,1,2,3,4,5,6,7,8,9}, por lo tanto x, puede tomar cualquiera de estos valores.

Variables en C

Una variable es un elemento de una frmula, proposicin o algoritmo, que puede


adquirir o ser substituido por un valor de su universo. Los valores que una variable puede
recibir pueden estar definidos dentro de un rango y estar limitado por razones de
pertenencia al universo que les corresponde.
En resumidas cuentas una variable es un smbolo que representa un valor determinado el
cual debe ser previamente asignado y dicho valor debe estar dentro de su rango de
posibles valores, dentro de su universo.

Variables en C
En el caso de C, las variables pueden tomar un valor determinado dentro de su universo
permitido y est representadas con un nombre NICO, es decir, no puede haber dos
variables que se llamen igual.
Existen algunas reglas para dar nombre a las variables:
1) Un Nombre de variables SIEMPRE debe empezar con letra (de la a a la z en el alfabeto
en ingls) ya sea en maysculas o minsculas OJO!!!! El lenguaje C es sensible a
maysculas y minsculas por lo que la variable valor es diferente a la variable
Valor.
2) Posteriormente se pueden usar letras o nmeros
3) El nico smbolo adicional a los dos anteriores es el guin bajo _.

Variables en C
A continuacin se muestran algunos nombres de variables, su trabajo es indicar si dicho
nombre de variable es correcto colocando una C o incorrecto Colocando una I
1) x
2) valor_01
3) 1valor
4) mi*variable
5) resultado
6) El resultado
7) acumulador01
8) acumulador 01
9) cont
10) mi/cont

Estas reglas se deben respetar al pie de la letra ya que de no hacerlo nuestro programa
nos mostrar errores.

8/11/16

Variables en C
Tipo

Representacin en
printf / scanf

int

Variables en C
Universo de valores

Tipo

Declaracin

%d

Enteros desde -32,768 hasta 32,767

int

Int x;

long int

%d

Enteros desde 2,147,483,648 hasta 2,147,483,648

float

float x;

x=10;

bool

%d

Se muestra como entero, 0=falso y 1=Verdadero

float

float x;

x=1.03;

char

%c

Cualquier carcter de la computadora

double

double x;

float

%f

Nmeros enteros o decimales desde 1.2 e -308


hasta 3.4 e 38

char

char x;

x=1;

double

%f

Nmeros enteros o decimales desde 2.2 e -308


hasta 3.4 e 38

char

char x;

x=1;

Asignacin

C/I

x=10.12;

x=25.367;;

Seccin de Instrucciones

Seccin de instrucciones y
printf

Seccin de Instrucciones
Hasta ahora hemos visto como incluir las libreras y hemos visto slo dos de ellas, la
librera <stdio.h> y la librera <conio.h>.
# include <stdio.h>
# include <conio.h>
Tambin hemos visto como definir variables globales, estableciendo el tipo de valor que
ser almacenado:

Recordando un poco lo visto en diapositivas anteriores, recordemos que la estructura de


C se compone de tres secciones:

Seccin de libreras

En esta seccin se indican las


libreras que requiere nuestro
programa para funcionar.

Seccin de Variables globales

En esta seccin se indican las


variables que va a utilizar nuestro
programa

Seccin de Instrucciones

En esta seccin se escriben las


instrucciones que sern ejecutadas
por nuestro programa

Seccin de Instrucciones
Con los conocimientos anteriores ya estamos en posibilidad de analizar la seccin de
instrucciones. En esta seccin se escriben las instrucciones que sern ejecutadas por
nuestro programa, recuerde que es muy importante que dichas instrucciones estn
dentro de la funcin main(), ya que, de no estar ah se producirn errores en nuestro
programa:
main()
{

int x;
float y;
}

instruccin 1
instruccin 2
instruccin 3
instruccin n

Observe como las instrucciones estn dentro de las llaves de la funcin main().

8/11/16

printf

printf

Teniendo claro que las instrucciones se escriben dentro de la funcin main() analicemos
la primera instruccin. El printf.
El printf es una instruccin que nos permite desplegar letreros en la pantalla, dichos
letreros pueden ser letreros de texto puro o bien letreros que combinen texto con
variables.
Veamos la forma ms simple del printf, desplegando un letrero:
printf(Hola clase, bienvenidos a C);
Observemos cada una de sus partes, primero printf, le da la instruccin a nuestro
programa de desplegar un letrero, el letrero estar dentro de los parntesis y dentro de
las comillas, posteriormente terminamos la instruccin con un ; (punto y coma). La
omisin de cualquiera de estos elementos puede provocar un error en nuestro programa.

Cuando se desean imprimir varios textos se deben usar varios printf, si queremos mostrar
en la pantalla nuestra matricula, nombre y carrera en diferentes renglones, podemos
hacerlo de la siguiente forma:
printf(Matricula : 123456);
printf(Nombre : Juan Perez);
printf(Carrera : isc);
Estas tres lneas generarn la siguiente salida:
Matricula: 123456Nombre : Juan Perez Carrera

: isc

Observe que todo sale en una sola lnea, sin importar que yo haya usado tres
instrucciones de printf en tres diferentes lneas de mi programa. Esto se debe a que el
printf no tiene un salto automtico de lnea, debemos indicarlo.

Sigamos el ejemplo

printf
Para indicar un salto de lnea en un printf, utilizamos el smbolo \n (diagonal invertida n)
lo que indica que deseamos un salto de lnea, por lo tanto nuestras instrucciones
quedaran de la siguiente forma:
printf(Matricula : 123456\n);
printf(Nombre : Juan Perez\n);
printf(Carrera : isc\n);

Ejercicios printf

Incluso podemos usar una sola lnea de cdigo para que salga en tres lneas diferentes en
pantalla:
printf(Matricula: 123456\n Nombre : Juan Perez\n Carrera

: isc\n);

Elabore este ejemplo siguiendo todas las secciones del programa:


1) Libreras
2) Variables (En este caso no se requieren)
3) Instrucciones

printf
Ejercicios:
1) Elabore un programa que muestre las siguientes flechas como salida:
* *
** **
******* *******
** **
* *
2) Elabore un programa que muestre las siguientes figuras:
*********
*** * *
* * * * *** * *
* * * * ***** * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *

printf
Ejercicios:
3) Elabore un programa que muestre su matrcula COM PLETA con nmeros grades, por ejemplo:
******* ******* *
* * *
* * *
******* * *
* * *
* * *
******* * *

4) Elabore un programa que despliegue una carita:


********
* * * *
* * *
* *** *
********

********* *** * *

8/11/16

printf con variables

printf Usando variables

Esta presentacin nos permitir combinar la salida de texto con variables, es decir, puedo
mostrar letreros en pantalla que desplieguen texto y valores de variables al mismo
tiempo, para esto es importante recordar la tabla de presentaciones anteriores y ubicar
la columna representacin en printf/scanf. Dicha tabla se presenta a continuacin.
Con la informacin de esta tabla podemos combinar la salida de texto con valores de
variables.
Observe la tabla de la siguiente diapositiva

Variables en C

printf
Con el conocimiento de la tabla anterior podemos combinar texto y valores de variables,
primero veamos como desplegar el valor de una variable, suponga el siguiente cdigo:

Tipo

Representacin en
printf / scanf

int

%d

Enteros desde -32,768 hasta 32,767

# include <stdio.h>
# include <conio.h>

long int

Universo de valores

%d

Enteros desde 2,147,483,648 hasta 2,147,483,648

int x;

bool

%d

Se muestra como entero, 0=falso y 1=Verdadero

main()
{

char

%c

Cualquier carcter de la computadora

float

%f

Nmeros enteros o decimales desde 1.2 e -308


hasta 3.4 e 38

double

%f

Nmeros enteros o decimales desde 2.2 e -308


hasta 3.4 e 38

printf
Para combinar texto con valores de variables usamos la representacin de la variable
dentro del printf en la posicin que deseamos mostrar el valor, por ejemplo:
printf(El valor de X es: %d,x);
Nos dara como salida:
El valor de X es: 10
Observe como el texto y la representacin de la variable van entre comillas,
posteriormente se coloca una , (coma) y despus la variable cuyo valor se desea
desplegar, en este caso el valor de x. (ejemplo)
La instruccin: printf(%d es el valor de X,x);
Nos dara como salida:
10 es el valor de X

x=10;
printf(x);
getche();

Este cdigo slo desplegara como salida la letra


x ya que sta se encuentra entre comillas por
lo tanto lo toma como un TEXTO.
Para mostrar el valor de la variable es necesario
usar su representacin en printf (recuerde la
tabla), en este caso se trata de una variable
entera, por lo tanto su representacin es %d,
observe la forma correcta del printf para el valor
de la variable:
printf(%d,x);
Esta lnea producira como salida:
10

printf
De la diapositiva anterior note que el lugar donde pongo la representacin de la variable
%d es el lugar donde aparece el valor de la variable. (ejemplo)
Piense que se ha creado una variable x con valor de 5 y una variable y con valor de 10,
posteriormente los sumamos y deseamos mostrar como salida la lnea:
La suma de 10 ms 5 es: 15
Las instrucciones seran las siguientes:
x=10;
y=5;
r=x+y;
printf(La suma de %d mas %d es: %d,x,y,r);
OBSERVE QUE EL MISMO ORDEN CON QUE SE COLOCAN LAS VARIABLES DESPUES DE LA
COMA, ES EL MISMO ORDEN QUE TOMARAN DENTRO DEL printf.

8/11/16

Ejercicios printf con variables


1) Elabore un programa que defina tres variables enteras x, y, r; que le asigne un valor de 5 a la variable x, un valor
de 10 a la variable y, posteriormente debe hacer la suma de los valores x y y en r, es decir, r=x+y;. Para terminar su
programa deber desplegar el mensaje:
La suma de 5 ms 10 es: 15

Ejercicios printf con variables

Donde los valores de 5, 10 y 15 cambiaran en el letrero conforme cambie los valores de las variables x y y dentro
de su programa.
2) Elabore un programa que defina tres variables enteras x, y, r; que le asigne un valor de 5 a la variable x, un valor
de 10 a la variable y, posteriormente debe hacer la suma y desplegar el resultado de la suma, la resta y desplegar el
resultado de la resta, la multiplicacin y desplegar el resultado de la multiplicacin; por ltimo debe hacer la
divisin y desplegar el resultado de la divisin:
La suma de 5 ms 10 es: 15
La resta de 5 menos 10 es: -5
La multiplicacin de 5 por 10 es: 50
La divisin de 5 entre 10 es: 0
Donde los valores de 5, 10 y los resultados cambiaran en el letrero conforme cambie los valores de las variables x y
y dentro de su programa.

Ejercicios printf con variables


3) Sabiendo que la frmula para convertir de grados centgrados a farenheit es:
F = ((C*9)/5)+32
Elabore una tabla de conversin de C a F avanzando de 10 en 10, su tabla debe verse de la siguiente forma:
C

****************
10
20
30
40

50
68
86
104

Lectura de Valores scanf

4) Sabiendo que el dlar tiene un valor de 13.65 pesos elabore una tabla de conversin de dlares a pesos
avanzando de 10 en 10:
Su tabla debe verse de la siguiente forma:
Dlares
Pesos
*****************
10
20
30
40

136.5
273
409.5
546

scanf

scanf
En su forma general la instruccin scanf funciona de la siguiente forma:

Hasta ahora hemos visto como desplegar letreros en pantalla, ya sean de texto puro o
bien con combinaciones de variables y saltos de lnea, a esta accin la llamamos una
salida de informacin, es decir, sacamos, a travs del monitor, texto o valores de variables
que estn definidas internamente.
Tambin hemos realizado operaciones con variables o valores constantes, sin embargo
dichos valores son creados de forma interna en nuestros programas.
scanf es la instruccin que nos permite OBTENER un valor proporcionado por el usuario y
utilizarlo dentro de nuestro programa, a esta accin la llamamos ENTRADA DE DATOS.
As pues la instruccin scanf es la instruccin a travs de la cual INTRODUCIMOS valores
a la computadora para poder interactuar con ellos.

scanf(representacin de variable,&variable)
Observando la forma general de la instruccin scanf, debemos cambiar la
representacin de variable por su representacin correspondiente (recuerde la tabla de
tipos de variables, se presenta en la siguiente diapositiva), por lo tanto, si queremos leer
una variable de tipo entero (int), debemos usar la representacin %d, por lo que la
instruccin se vera de la siguiente forma:
scanf(%d,&variable)
Por ltimo donde dice variable debemos cambiarlo por el smbolo que
representa a la variable que deseamos leer, por ejemplo suponga que ha definido una
variable entera que se llama cont si desea leer esta variable a travs de una instruccin
scanf, su instruccin se vera de la siguiente forma:
scanf(%d,&cont);

8/11/16

Variables en C

scanf

Tipo

Representacin en
printf / scanf

int

%d

Enteros desde -32,768 hasta 32,767

long int

%d

Enteros desde 2,147,483,648 hasta 2,147,483,648

bool

%d

Se muestra como entero, 0=falso y 1=Verdadero

char

%c

Cualquier carcter de la computadora

float

%f

Nmeros enteros o decimales desde 1.2 e -308


hasta 3.4 e 38

double

%f

Nmeros enteros o decimales desde 2.2 e -308


hasta 3.4 e 38

Algunas observaciones importantes son las siguientes:

Universo de valores

scanf

1) La instruccin se escribe con letras minsculas, por ningn motivo se puede


escribir con maysculas ya que sto producira un error de compilacin.
2) Se debe asegurar de que la representacin de la variable corresponde al tipo
de variable, es decir, si la variable es entera se debe usar la representacin
%d, si es flotante, entonces usar %f etc. De no hacerlo correctamente su
programa va a compilar y se va a ejecutar pero NO LEERA correctamente el
valor de la variable.
3) Para que esta instruccin funcione debe estar incluida la librera <stdio.h> de
lo contrario tendremos un error de compilacin ya que no reconocer a scanf
ni como una instruccin, ni como una variable.
4) Se debe colocar el & (ampersand) de no hacerlo su programa producir un
error de ejecucin y detendr todo el proceso.

scanf

A continuacin mostramos un cdigo que lee un valor del usuario y simplemente lo


despliega:

Analice el siguiente cdigo y diga que hace, posteriormente cpielo a su editor de


programas y ejectelo para verificar si hace lo que usted dijo.

# include <stdio.h>
# include <conio.h>

# include <stdio.h>
# include <conio.h>

int var;

int x,y,r;

main()
{
printf("Dame el valor de la variable: ");
scanf("%d",&var);
printf("El valor introducido es : %d",var);
}

main()
{
printf("Dame el primer valor : ");
scanf("%d",&x);
printf("Dame el segundo valor : ");
scanf("%d",&y);
r=x+y;
printf(La salida con los valores %d y %d es: %d,x,y,r);
}

Ejercicios de scanf
1) Elabore un programa que defina una variable entera x, y una variable flotante y, lea dos valores que le
proporcione el usuario, uno entero y uno flotante), posteriormente despliegue los valores capturados por el
usuario indicando cual es el entero y cual el flotante, use dos lneas de salida distintas para esto.

Ejercicios de scanf

2) Elabore un programa que lea tres valores enteros proporcionados por el usuario, posteriormente calcule el
promedio de dichos valores y despliegue el resultado M OSTRANDO los tres valores capturados, la suma y el
promedio de los mismos.
3) Elabore un programa que lea dos valores flotantes proporcionados por el usuario, posteriormente despliegue el
resultado de la suma, resta, multiplicacin y divisin de dichos valores mostrando cada resultado en una lnea de
salida diferente, su salida debe verse as:
La suma de 5 ms 10 es: 15
La resta de 5 menos 10 es: -5
La multiplicacin de 5 por 10 es: 50
La divisin de 5 entre 10 es: 0
4) Una persona tiene un terreno rectangular que mide X mts de frente y Y mts de fondo desea cercar dicho terreno colocando polines
a cada 3 mts con tres lneas de alambre de pas; cada poln tiene un costo de $ 55 pesos y el metro de alambre de pas cuesta $ 3
pesos. El usuario introducir las medidas del terreno (frente y fondo) y su programa le deber indicar:
Cuantos polines se requieren
Cuantos metros de alambre de pas se requieren
Costo de los polines
Costo del alambre de pas
Costo total

10

8/11/16

Ejercicios de scanf
5) Una microempresa dedicada a la fabricacin de pasteles ha detectado demasiados errores en la estimacin de

sus utilidades por da, la causa aparente de dichos errores se debe a que sus empleados cometen errores en los
clculos de los costos de fabricacin. Por tal motivo le ha pedido elaborar un programa que le permita realizar El
clculo de dichas utilidades con base en la siguiente informacin:
La empresa fabrica tres tamaos de pasteles: 1 kilo, 2 kilos y 3 kilos
Cada kilo de pastel requiere:
500 gramos de harina
$ 25 pesos (Por los 500 gramos)
250 gramos de huevo
$ 8 pesos
100 gramos de azcar
$ 5 pesos
100 gramos de saborizante
$ 10 pesos
Litro de leche
$ 5 pesos
M ano de obra
$ 20 pesos
Horneado
$ 5 pesos
El precio de venta de cada kilo de pastel es de $ 100 pesos

Estatutos de Control

El usurio ingresar la cantiadad de pasteles de cada tamao vendidos por da y su algoritmo deber mostrar:
Cantidad de harina en kilos y costo total
Cantidad de huevo en kilos y costo total
Cantidad de azcar en kilos y costo total
Cantidad de saborizante en kilos y costo total
Cantidad de leche en litros y costo total
Total de dinero en mano de obra
Total de dinero en horneado
Costo total de los insumos del da
Venta total del da
Utilidad del da

Estatutos de Control

Estatutos de Control

Un estatuto de control se refiere a diferentes instrucciones que pueden


controlar el flujo de nuestro programa.
En los programas vistos hasta el momento la ejecucin inicia en la primer lnea
y termina en la ltima lneas, EJECUTANDO TODAS las lneas de mi programa una por una,
a este tipo de ejecucin se le conoce como ejecucin en CASCADA, se ejecutan todas las
lneas del cdigo de una en una iniciando en la parte superior y terminando en la parte
inferior.

Instruccin 1
Instruccin 2
Instruccin 3
Instruccin 4
Instruccin N

Ejecucin en cascada, se ejecutan todas las


lneas del cdigo de una en una de arriba a
abajo.

Estatutos de Control

Los estatutos de control, como ya se ha dicho, controlan el flujo del programa y


pueden cambiar la secuencia de ejecucin de las instrucciones, es decir, ya NO
tendremos ejecuciones en cascada, podremos decidir si una instruccin se ejecuta o no
se ejecuta, o bien ejecutar un grupo de instrucciones ms de una vez . Veamos
grficamente diferentes tipos de FLUJOS DE CONTROL.

En

este

caso

tenemos

la

ejecucin en cascada, todas


las instrucciones de arriba a
abajo

En este caso tenemos una

En este caso tenemos un

ejecucin en la cual NO todas


las instrucciones se ejecutan,.

grupo de instrucciones que se


ejecutarn ms de una vez,
por eso hay un CICLO de
regreso

Estatutos de Control
En conclusin, un estatuto de control define el flujo de EJECUCIN de las
instrucciones decidiendo cuales sern las instrucciones que SI o que NO se van a ejecutar
y tambin decidiendo cuales se ejecutarn una o varias veces.
Dentro de el Lenguaje de programacin C, las instrucciones que CONTROLAN
que instrucciones SI se van a ejecutar y que instrucciones NO se van a ejecutar son:
If . else
switch case

En este caso tenemos una combinacin, un gripo de


instrucciones que no se ejecutan dentro de un ciclo, lo que
hace que las otras instrucciones se ejecuten ms de una vez.

Las instrucciones que determinan si habr repeticin o no son:


while
do .. while
for

11

8/11/16

Estatutos de Control

Estatutos de Control

Para que las instrucciones que me permiten establecer estatutos de control


puedan DECIDIR si un grupo de instrucciones se ejecuta o no, o bien, si un grupo de
instrucciones se repite o no, debe basarse en el cumplimiento o incumplimiento de
algunas condiciones.

De los ejemplos anteriores tomemos uno y analicemos cada una de sus partes:

Una condicin se refiere a un hecho o circunstancia que debe ocurrir para que
otro hecho o circunstancia ocurra. Observe los siguientes ejemplos:

La condicin que tenemos es:


La consecuencia en caso de cumplirse es:
La consecuencia en caso de NO cumplirse es:

1) Si el alumno llega a tiempo a clase puede entrar, de lo contrario NO puede entrar


2) Si un alumno tiene 70 o ms de calificacin aprueba la materia, de lo contrario no
aprueba la materia
3) Si un alumno tiene 4 faltas o menos puede presentar el examen final, de lo contrario
no puede presentar el examen final

Si un alumno tiene 70 o ms de calificacin aprueba la materia, de lo contrario no


aprueba la materia
Si tiene 70 o ms de calificacin
Aprueba la materia
Reprueba la materia

OBSERVE NUEVAMENTE COMO EL CUMPLIMIENTO DE LA CONDICIN DETERMINA LA


ACCIN A SEGUIR

Observe como en estos ejemplos establecemos una condicin, si esta condicin


SI se cumple sucede un hecho, de lo contrario sucede otro hecho. Si esto lo vemos en
trminos de programacin podramos decir que: si una condicin se cumple se ejecuta
un grupo de instrucciones, de lo contrario se ejecuta otro grupo de instrucciones.

Estatutos de Control
En muchas ocasiones, las condiciones se basan en el resultado de ms de una
pregunta, por ejemplo, una persona se puede jubilar si tiene 30 aos o ms de servicio y
60 aos o ms de edad. Veamos como se planteara esta condicin:
Si tiene 30 aos o ms de servicio Y 60 aos o ms de edad entonces SE PUEDE JUBILAR
de lo contrario NO SE PUEDE JUBILAR
Veamos otro ejemplo un poco ms elaborado:
Un alumno puede presentar el examen final si tiene 4 faltas o menos, pero si
tiene entre 4 y 6 faltas puede presentar el examen final si tiene un promedio de 86 o
ms, pero si tiene ms de 6 faltas ya no puede presentar el examen.
Cmo plantearamos esta pregunta?.

Estatutos de Control
Recuerde que:
Un alumno puede presentar el examen final si tiene 4 faltas o menos, pero si
tiene entre 4 y 6 faltas puede presentar el examen final si tiene un promedio de 86 o
ms, pero si tiene ms de 6 faltas ya no puede presentar el examen. Cmo
plantearamos esta pregunta?.
Si tiene 4 faltas o menos PUEDE PRESENTAR EL EXAMEN FINAL
De lo contrario
Si tiene entre 4 y 6 faltas y tiene promedio mayor o igual que 86 PUEDE
PRESENTAR EL EXAMEN FINAL
de lo contrario NO PUEDE PRESENTAR EL EXAMEN FINAL
Observe como estamos combinando preguntas basadas en respuestas:
1) Si tiene 4 faltas o menos entonces PUEDE PRESENTAR EXAMEN FINAL
2) De lo contrario realizamos una nueva pregunta, es decir, si el alumno NO tiene 4
faltas o menos entonces hacemos una NUEVA pregunta:
1) Tiene entre 4 y 6 faltas y adems tiene promedio mayor o igual que 86, en este
caso SI PUEDE PRESENTAR EXAMEN FINAL
2) De lo contrario NO PUEDE PRESENTAR EXAMEN FINAL

Ejercicios de Estatutos de Control


Instrucciones: A continuacin se presentan una serie de problemas de decisin, se le pide leer cuidadosamente el
problema y plantear la pregunta en trminos de SI DE LO CONTRARIO. Adems indique cuales son los datos
necesarios para poder plantear la condicin y tomar la decisin. Para entender mejor observe el siguiente ejemplo:

Ejercicios de Estatutos de
Control

EJEM PLO: Para que un alumno pueda tener beca debe tener un promedio igual o superior a 85, obtener un puntaje
de 1,200 puntos o ms en el examen de admisin y tener un ingreso familiar mayor que 10,000 pesos pero menor
que 25,000 pesos.
Solucin:
SI promedio mayor o igual que 85 Y puntaje mayor o igual que 1,200 Y ingreso familiar mayor que 10,000 Y Ingreso
familiar menor que 25,000 entonces SI TIENE BECA de lo contrario NO TIENE BECA
Datos necesarios: Promedio, puntaje de examen de admisin e ingreso familiar
1) Una persona desea obtener su credencial del INSEN (Instituto Nacional de la Senectud) ya que con esta
credencial tiene acceso a descuentos en varias tiendas de autoservicio. Para poder obtener la credencial la persona
debe tener 60 aos o ms de edad.
2) Una tienda departamental ofrece a sus clientes descuentos de acuerdo al volumen de compra, si la compra es
menor que 1,000 pesos no se le otorga descuento, si su compra es mayor o igual que 1,000 pesos y menor que
5,000 pesos se le otorga un 5% de descuento, si la compra es mayor o igual que 5,000 pesos y menor que 10,000
pesos se le otorga un 10% de descuento, si la compra es mayor o igual que 10,000 pesos se le otorga un 15% de
descuento.
3) Un alumno que tiene beca sabe que su beca ser suspendida si tiene un promedio menor que 80, su beca ser
condicionada si tiene un promedio mayor o igual que 80 y menor que 85, su beca se mantendr igual si tiene un
promedio mayor o igual que 85 y menor que 90 y su beca ser incrementada si tiene un promedio mayor o igual
que 90.

12

8/11/16

Ejercicios de Estatutos de Control


4) Un rbol que recibe el agua y nutrientes adecuados crece a razn de 2 centmetros por mes, si recibe el agua
adecuada pero no los nutrientes slo crece 1.5 centmetros por mes, si recibe los nutrientes pero no el agua slo
crece 1 centmetro por mes y, si no recibe ni el agua ni los nutrientes slo crece 0.5 centmetros por mes. Bajo las
condiciones establecidas, escriba las preguntas que me permitan saber cuanto crecer el rbol a lo largo de un
ao.
5) Un vendedor de autos gana un sueldo mensual base de $ 10,000 pesos y adems gana $ 1,000 pesos adicionales
por auto vendido. Si el vendedor vende ms de 10 autos (de 11 en adelante) pero menos de 20 recibe un bono
adicional de $ 5,000 pesos y si vende 20 o ms autos en el mismo mes recibe otro bono adicional de otros $ 5,000
pesos. Bajo las condiciones establecidas, escriba las preguntas que me permitan saber cuanto ganara el vendedor
en un mes. Recuerde que todo es adicional.

Estatuto de control if

Estatuto de Control if
Primera Parte

Estatuto de control if

Slo para recordar un poco. Un estatuto de control se refiere a diferentes


instrucciones que pueden controlar el flujo de nuestro programa basados en la respuesta
de una condicin
El estatuto de control if decide si un accin se ejecuta o no, en su forma ms
simple el estatuto if se representa de la siguiente manera:
If (condicin)
{
Dentro de estas llaves se colocan las instrucciones
a seguir en caso de que la condicin SI se cumpla
}
else
{
Dentro de estas llaves se colocan las instrucciones
a seguir en caso de que la condicin NO se cumpla
}

Estatuto de control if

Analicemos la dispositiva anterior con un ejemplo:


Si un alumno tiene una calificacin menor que 70 reprueba la materia de lo
contrario aprueba la materia.
Separemos esta condiciones de acuerdo a la forma del if:
Si calificacin menor que 70
{
Reprueba la materia
}
de lo contrario
{
Aprueba la materia
}

Estatuto de control if

Analicemos la dispositiva anterior con un ejemplo:


Comparemos nuestra condiciones

Del ejemplo anterior podemos ver que:

En espaol

Con if

Si calificacin menor que 70


{
Reprueba la materia
}
de lo contrario
{
Aprueba la materia
}

if (calificacin menor que 70)


{
Reprueba la materia
}
else
{
Aprueba la materia
}

if (calificacin menor que 70)


{
Reprueba la materia
}
else
{
Aprueba la materia
}

Esta lnea establece la condicin


Accin a seguir si la condicin SI se cumple
de lo contrario (Condicin no se cumple)
Accin a seguir si la condicin NO se cumple

13

8/11/16

Estatuto de control if
Veamos con detenimiento la primera lnea de la condicin;
if (calificacin menor que 70)
Las palabras menor que denotan una comparacin entre la calificacin y el
valor de 70, es claro que el lenguaje de programacin C, no puede reconocer las palabras
menor que; por lo tanto para establecer estas comparaciones en el lenguaje de
programacin C, se requieren los OPERADORES RELACIONALES, estos operadores son los
que me permiten establecer comparaciones entre valores:
OPERADORES RELACIONALES
< Menor que
> Mayor que
>= Mayor o igual que
<= Menor o igual que
!= Diferente de
== Igual que

Estatuto de control if
printf(Dame la calificacin a evaluar: );
scanf(%d,&calif);
if (calif< 70)
{
printf(Reprueba la materia);
}
else
{
printf(Aprueba la materia);
}
En este caso hemos incorporado las instrucciones de C que nos permitirn
evaluar un valor dado por el usuario y determinar si el alumno aprueba o reprueba la
materia.

Estatuto de control if
Transformemos la solucin anterior a una solucin basada en un if..else de C:
if (edad mayor o igual que 18)
{
Si es mayor de edad
}
else
{
NO es mayor de edad
}
Ahora remplacemos las palabras mayor o igual que por su operador relacional correspondiente:
if (edad >=18)
{
Si es mayor de edad
}
else
{
NO es mayor de edad
}

Estatuto de control if
Por lo tanto la condicin quedara establecida de la siguiente forma:
if (calificacin < 70)
{
Reprueba la materia
}
else
{
Aprueba la materia
}
Observe como hemos remplazado las palabras menor que por el operador
relacional <.
Para que nuestra instruccin est totalmente en lenguaje C, an nos falta
remplazar la palabra calificacin por una variable CON NOMBRE VALIDO, de tal
suerte que nuestro estatuto completo con las instrucciones de C quedara de la
siguiente forma:

Estatuto de control if
En este momento ya estamos en posibilidad de resolver estatus de control if
que involucren una sola pregunta, por lo tanto veamos otro ejemplo que resolveremos
por partes:
Se desea determinar si una persona es mayor de edad o an no lo es, recuerde que una
persona se considera mayor de edad cuando tiene 18 aos o ms cumplidos.
Resolviendo nuestro problema por partes primero haremos el planteamiento
del estatuto con palabras, identificando los datos necesarios para la evaluacin:
Solucin:
Si edad es mayor o igual que 18 aos entonces es mayor de edad
de lo contrario NO es mayor de edad
Datos necesarios: La edad de la persona

Estatuto de control if
Finalmente coloquemos las instrucciones de C para completar nuestro algoritmo de
decisin:
printf(Dame edad de la persona: );
scanf(%d,&edad);
if (edad >= 18)
{
printf(SI es mayor de edad);
}
else
{
printf(NO es mayor de edad);
}

14

8/11/16

Ejercicios del Estatuto de control if


1) Lea

un valor entero y determine si dicho valor es mayor que 100, menor que 100 o igual que 100.
Muestre un mensaje en pantalla que indique el resultado.

Ejercicios del Estatuto de


Control if

2) Lea dos valores enteros a y b y determine si son iguales o diferentes. Si son diferentes diga cual es
el mayor
3) Lea dos valores flotantes a y b y si el valor b, es diferente de cero haga y muestre la divisin, de lo
contrario indique que no se puede hacer divisin entre cero.
4) Lea la edad de una persona y determine si es mayor de edad o no lo es, recuerde que una persona
se considera mayor de edad si tiene 18 aos o ms. Muestre un mensaje en pantalla que indique el
resultado, en este mismo programa ahora determine si la persona es adulto mayor o no, recuerde
que un adulto mayor debe tener 60 aos o ms de edad. En este caso se deben ver dos letreros.
Una tienda departamental ofrece a sus clientes un descuento por volumen de compra, si la compra
es menor que 10,000 pesos no ofrece ningn descuento. Si la compra es mayor o igual que 10,000
pesos ofrece un 5% de descuento y si la compra es mayor o igual que 20,000 pesos ofrece un 10% de
descuento.
Elabor el cdigo que pida el monto de compra y muestre como salida la siguiente informacin:
Compra:
17,325.00
Descuento:
5%
Descuento en pesos: 866.25
Total al cobrar:
16,458.75

Ejercicios del Estatuto de control if


5) Un alumno que tiene beca sabe que su beca ser suspendida si tiene un promedio menor que 80, su beca ser
condicionada si tiene un promedio mayor o igual que 80 y menor que 85, su beca se mantendr igual si tiene un
promedio mayor o igual que 85 y menor que 90 y su beca ser incrementada si tiene un promedio mayor o igual
que 90. Elabore un programa que lea el promedio del alumno y determine el estatus de su beca.

Un vendedor de autos gana un sueldo mensual base de $ 10,000 pesos y adems gana $ 1,000
pesos adicionales por auto vendido. Si el vendedor vende ms de 10 autos (de 11 en adelante) pero
menos de 20 recibe un bono adicional de $ 5,000 pesos y si vende 20 o ms autos en el mismo mes
recibe otro bono adicional de otros $ 5,000 pesos. Bajo las condiciones establecidas, escriba las
preguntas que me permitan saber cuanto ganara el vendedor en un mes. Recuerde que todo es
adicional. Elabore un programa que solicite la cantidad de autos vendidos por un vendedor y
determine la cantidad que habr que pagarle.
6)

Estatuto de control if

Estatuto de Control if
Segunda Parte

Estatuto de control if

Hasta el momento hemos visto condiciones que implican una sola pregunta,
por ejemplo:
1) Si la persona es mayor de 18 aos
2) Determinar si un apersona es mayor de 60 aos
3) Determinar si un valor es mayor que 100

Veamos la primera frase:

Como puede notarlo, la condicin SOLO HACE UNA PREGUNTA, sin embargo en
muchas ocasiones se requieren condiciones que establezcan MAS de una pregunta, es
decir, la condicin evala dos o mas situaciones respecto a uno o varios valores,
observemos las siguientes frases:

a) Que la edad de la persona sea mayor de 18 aos

1) Que la edad de la persona sea mayor que 18 aos y menor que 60 aos
2) Que un valor determinado sea mayor que 1 y menor que 100
3) Que un valor sea mayor que 100 y que sea impar
4) Que un valor sea menor que 1 o mayor que 100

1) Que la edad de la persona sea mayor que 18 aos y menor que 60 aos
Note como se hacen dos preguntas:

b) Que la edad de la persona sea menor que 60 aos


Las dos preguntas se conectan por el conector Y que indica, en este caso, que
se deben cumplir ambas preguntas para que la condicin resulte verdadera.

Observe como se hacen DOS preguntas pero ambas preguntas se CONECTAN entre si.

15

8/11/16

Estatuto de control if
Para entender mejor lo anterior tomemos como ejemplo el valor 70:
1) Que la edad de la persona sea mayor que 18 aos
Tomando como base el valor 70, tenemos que esta pregunta SI se cumple, es
decir, es verdadera V
Ahora veamos la segunda pregunta:

Estatuto de control if
Tomando como base el mismo nmero (70), hagamos el ejercicio pero ahora
conectando nuestras preguntas con el conector O:
1) Que la edad de la persona se mayor que 18 aos O menor que 60 aos
Tenemos las mismas preguntas pero conectadas por un conector O.
a) Que la edad de la persona sea mayor de 18 aos

2) Que la edad de la persona sea menor que 60 aos


Tomando nuestro valor base de 70, tenemos que esta pregunta NO se cumple,
es decir, es falsa F

b) Que la edad de la persona sea menor que 60 aos

Como ambas preguntas se conectan por el conector Y determinamos que


tenemos una respuesta VERDADERA y una FALSA mi condicin ser falsa ya que el valor
70 si es mayor que 18 pero no es menor que 60 por lo tanto mi condicin completa NO
se cumple.

Estatuto de control if
1) Que la edad de la persona sea mayor que 18 aos
Tomando como base el valor 70, tenemos que esta pregunta SI se cumple, es
decir, es verdadera V
Ahora veamos la segunda pregunta:

Estatuto de control if
Observe como el simple cambio de conector cambia el resultado de la
condicin, en el primer caso, usando el conecto Y tenemos que mi condicin NO se
cumple, pero en el segundo caso, usando el conector O tenemos que la condicin si se
cumple. Esto suena lgico y se debe a los valores de verdad de los conectores Y y O. A
continuacin mostramos las tablas de verdad de ambos conectores:
Conector Y

2) Que la edad de la persona sea menor que 60 aos


Tomando nuestro valor base de 70, tenemos que esta pregunta NO se cumple,
es decir, es falsa F
Como ambas preguntas se conectan por el conector O determinamos que
tenemos una respuesta VERDADERA y una FALSA mi condicin ser VERDADERA ya que el
valor 70 si es mayor que 18 pero no es menor que 60 por lo tanto mi condicin completa
SI se cumple.

Estatuto de control if
De momento hemos mencionado que usamos el conector Y
y el conector O para conectar dos o ms preguntas. Estos
conectores cumplen la funcin de hacer una conexin LGICA
entre las preguntas determinando si se deben cumplir ambas (en
el caso de Y) o slo una en el caso de (O) para que la condicin
resulte verdadera.

Conector O

Pregunta 1 Pregunta 2 Resultado

Pregunta 1 Pregunta 2 Resultado

Verdadero
Verdadero
Falso
Falso

Verdadero
Verdadero
Falso
Falso

Verdadero
Falso
Verdadero
Falso

Verdadero
Falso
Falso
Falso

Observe que slo es VERDADERA


cuando ambas preguntas son
verdaderas

Verdadero
Falso
Verdadero
Falso

Verdadero
Verdadero
Verdadero
Falso

Observe que slo es FALSA cuando


ambas preguntas son falsas

Estatuto de control if
Hasta este punto lo importante es comprender que:
1) Una condicin puede estar compuesta por dos o ms preguntas
2) Que las preguntas de una condicin sean conectadas usando un conector
3) Que los conectores pueden ser Y O (cualquiera de los dos)
4) Que de acuerdo al resultado independiente de cada una de las preguntas y
al conector utilizado tendremos UN SOLO resultado para toda la condicin.
5) Que los conectores lgicos son Y O.

Dado que la funcin de estos conectores es el de hacer una


conexin los llamaremos:

CONECTORES LGICOS

16

8/11/16

Estatuto de control if

Estatuto de control if

Para comprender mejor todo lo anterior resolvamos un ejercicio:


Suponiendo los siguientes valores, a=5, b=2, c=3, diga el resultado de las siguientes
expresiones lgicas, colocando una F si el resultado es Falso o una V si el resultado es
verdadero
( a != c) Y (a == c)
1)
2)
3)
4)

____

(a == b)
( a != c) O (a == c)
((a >b) Y (b<c)) O (c>a)

F
V
?

Analicemos el siguiente ejercicio: ((a >b) Y (b<c)) O (c>a)


Observe como los parntesis delimitan ciertas condiciones, al igual que en las operaciones
aritmticas primero debemos resolver lo del parntesis ms interno, por lo tanto en este caso
tenemos que evaluar primero:: ((a >b) Y (b<c)) y posteriormente resolver (c>a):

Tenemos que a=5 y que c=3, con esto analicemos por partes
(a!=c), quiere decir a es diferente de c?, esta respuesta es VERDADERA
(a==c), quiere decir a es igual a c?, esta respuesta es FALSA
Como estamos usando un conector Y, tenemos que la expresin es FALSA y por lo
tanto deberamos colocar una F.

((a >b) Y (b<c)) O (c>a)

V
V

F
V

Estatuto de control if

Estatuto de control if

Suponiendo los siguientes valores, a=5, b=2, c=3, diga el resultado de las siguientes expresiones
lgicas, colocando una F si el resultado es Falso o una V si el resultado es verdadero

Suponiendo los siguientes valores, a=5, b=2, c=3, diga el resultado de las siguientes expresiones
lgicas, colocando una F si el resultado es Falso o una V si el resultado es verdadero

(a == b)
( a != c) O (a == c)
((a >b) Y (b<c)) O (c>a)
(( a== 5) O (b==2)) Y((a>c) O (c<b))
(( a== 5) Y (b==2)) O ((a>c) Y (c<b))

(a == b)
( a != c) O (a == c)
((a >b) Y (b<c)) O (c>a)
(( a== 5) O (b==2)) Y((a>c) O (c<b))
(( a== 5) Y (b==2)) O ((a>c) Y (c<b))

____
____
____
____
____

Exprese en trminos de C las siguientes preguntas:


La distancia d es igual a 30?
La longitud l est entre 10 y 20 unidades?
La estatura de una persona est entre 1.60 y 1.80 mts?
Un auto es de modelo 2005 mayor y tiene un precio entre 30,000 y 80,000 pesos?
Un auto es Nissan o VW, es de un modelo 2005 o mayor y tiene un precio entre 30,000 y 80,000
pesos?

La distancia d es igual a 30?


if (d>30)
La longitud l est entre 10 y 20 unidades?
If ((l>=10) Y (l<=20))
La estatura de una persona est entre 1.60 y 1.80 mts?if ((estatura>=1.60) Y (estatura<=1.80))
Un auto es de modelo 2005 mayor y tiene un precio entre 30,000 y 80,000 pesos?
if((modelo>=2004) Y ((precio>=30000) Y (precio <= 80000))
Un auto es Nissan o VW, es de un modelo 2005 o mayor y tiene un precio entre 30,000 y 80,000
pesos?
if ((marca==Nissan) O (marca==VW)) Y (modelo>=2005) Y ((precio>=30000) Y (precio <=80000))

Estatuto de control if

Ejercicios Estatuto de control if

Con los resultados de nuestros ejercicios anteriores ya CASI tenemos nuestras


expresiones en un formato perfecto para ser entendido por el lenguaje C. Observe.
1)

if (d>30)
If ((l>=10) Y (l<=20))
if ((estatura>=1.60) Y (estatura<=1.80))
if((modelo>=2004) Y ((precio>=30000) Y (precio <= 80000))
if ((marca==Nissan) O (marca==VW)) Y (modelo>=2005) Y ((precio>=30000) Y (precio <=80000))

2)

La NICA diferencia es que el C no reconoce las letras Y y O como conectores


lgicos, estas deben ser remplazadas por:
Y -> && (Doble ampersand)
O -> || (Doble barra, ubicada al lado izquierdo del 1 en la mayora de los teclados)
Por lo tanto nuestra expresiones en C quedaran como sigue:
if (d>30)
If ((l>=10) && (l<=20))
if ((estatura>=1.60) && (estatura<=1.80))
if((modelo>=2004) && ((precio>=30000) && (precio <= 80000))

if ((marca==Nissan) || (marca==VW )) && (modelo>=2005) && ((precio>=30000) && (precio <=80000))

F
V
V
V
V

3)

Solicite un valor que est entre 1 y 100, en caso de que dicho valor NO cumpla esta condicin muestre un
mensaje de error y termine el programa. Si el valor CUM PLE la condicin, solicite un segundo valor que est
entre 1 y 100; de igual forma si el segundo valor NO cumple con esta condicin muestre un mensaje de error y
termine el programa. En caso de que ambos valores cumplan las condiciones especificadas, muestre un
letrero que diga VALORES CORRECTOS.
Elabore un programa que lea un valor entero que sea par y que est entre 1 y 1000, si dicho valor NO cumple
con las condiciones solicitadas, deber mostrar un mensaje de error y detener el programa. En caso de que
dicho valor SI cumpla con las condiciones deseadas, deber solicitar un segundo valor que sea impar, que est
entre 1 y 1000 y deber ser mayor que el nmero anterior. En caso de que el segundo valor NO cumpla las
condiciones indicadas su programa deber mostrar un mensaje de error y detenerse. En caso de que ambos
nmeros cumplan todas las condiciones indicadas su programa deber mostrar el mensaje VALOR
CORRECTOS.
Elabore un programa que solicite dos valores flotantes, una vez solicitados dichos valores su programa debe
mostrar el siguiente men de opciones:
Suma
Resta
M ultiplicacin
Divisin (valide divisin entre cero)
M ediante una variable de tipo entero lea la opcin seleccionada por el usuario, una vez que sepa cual fue la
opcin seleccionada muestre el resultado de la operacin correspondiente usando los valores que se leyeron
al inicio

17

8/11/16

Ejercicios Estatuto de control if


4) Elabore un programa que despliegue el siguiente men:
Area del Tringulo
Area del Crculo
Area del rectngulo
Area del cuadrado
Una vez que el men es desplegado solicite la opcin deseada y con base en esta opcin solicite los datos
correspondientes y despliegue el rea de la figura seleccionada

5) Elabore un programa que lea 5 nmeros enteros, cada nmero debe estar entre 1 y 1000 (incluyendo los
lmites). Slo podr solicitar el siguiente valor si el valor ledo cumple con la condicin solicitada, de lo contrario su
programa deber desplegar un mensaje de error y terminar. Una vez que se han ledo correctamente los 5 valores
su programa deber desplegar el siguiente men:
1) Promedio
2) Nmero M ayor
3) Nmero M enor
4) Nmeros pares
5) Nmeros impares

Ejercicios Estatuto de control if


6) Una tienda que maneja cinco artculos diferentes le ha pedido elaborar un algoritmo para estimar el clculo de
sus ventas, los artculos que maneja son:
Bicicletas
Llantas para bicicleta
Frenos
M arco para bicicleta

$ 1,200 pesos
$ 250 pesos
$ 150 pesos
$ 600 pesos

Asientos para bicicleta

$ 200 pesos

Su algoritmo deber solicitar la cantidad de cada uno de los artculos a vender y estimar el precio total de la venta
bajo las siguientes observaciones:
Si la venta es menor de $ 1000 pesos se cobrar el total de la venta
Si la venta est entre $ 1,000 pesos y menos de $ 3000 pesos se har un 10% de descuento
Si la venta est entre $ 3000 pesos y menos de $ 6000 pesos se har el 15% de descuento
Si la venta es de $ 6000 pesos o ms se har un 20% de descuento
El programa deber dar como salida, la venta total, el descuento a aplicar en porcentaje, el descuento a aplicar en
pesos y la venta menos el descuento, que ser el importe total a cobrar al cliente.

Posteriormente debe solicitar la opcin deseada y desplegar SOLO el valor o valores de acuerdo a la opcin
solicitada.

Estatuto de control while

Estatuto de Control while


Ciclos

Recordando el concepto de estatuto de control, nos referimos a instrucciones


que controlan el flujo del programa haciendo que un grupo de instrucciones se ejecute o
NO, de acuerdo a una condicin, o bien un conjunto de instrucciones que se repetirn de
forma controlada.
El estatuto while es el que permite que un grupo de instrucciones se repitan
dentro de un programa de C.
Cuando un grupo de instrucciones se repite dentro de un programa decimos
que tenemos UN CICLO el cual terminar de acuerdo a la condicin establecida.
Antes de entender el funcionamiento del estatuto while comprendamos lo
que es un ciclo.

Estatuto de control while


CICLO: Conjunto de instrucciones que se repiten dada una condicin.
Problema: Transportar pelotas de la mesa A a la mesa B de una en una.

Estatuto de control while


Del ejemplo anterior podemos determinar que la condicin para terminar el
ciclo es se han pasado todas las pelotas? En caso de que la respuesta se POSITIVA el
ciclo terminar, en caso de que la respuesta sea negativa el ciclo se repetir.
Para este ejemplo la accin es tomar una pelota y transportarla, observe como
la accin est dentro del ciclo. Observemos el mismo ejemplo pero con las instrucciones
en espaol:

Este CICLO se va a repetir hasta


Que todas las pelotas estn en la mesa B

1) Tomar una pelota de la mesa A


2) Transportarla a la mesa B
3) Regresar a la mesa A y verificar Se han terminado las pelotas?
si la respuesta es NO ir al PASO 1, si la respuesta es SI ir al PASO 4
4) Terminar

Observe como las instrucciones de las lneas 1 y 2 se van a repetir hasta que no
haya ms pelotas; de acuerdo a la CONDICION de la lnea 3.

18

8/11/16

Estatuto de control while

Estatuto de control while

Observemos un segundo ejemplo:

Resolvamos el problema anterior:

Nos piden crear una tabla de conversin de grados Celcius (C) a Grados
Fahrenheit (F) que inicie en 10 C y su equivalente en F y que avance de 10 en 10 C
hasta llegar a 100 C, la tabla debe verse de la siguiente forma:

Entradas: Ninguna

Celcius
Fahrenheit
----------------------------------------10
50
20
68
30
86
40
104
.
.
.
.
.
.

Procedimiento:
Para resolver este problema lo mejor es crear un ciclo
que inicie en 10 C, que transforme a F y que
despliegue la informacin. Esto debe repetirse hasta
que se llegue a los 100C

Estatuto de control while

Estatuto de control while

ESPAOL ESTRUCTURADO
gc=10
LOOP
gf =((gc*9)/5)+32
Mostrar gc y gf
gc=gc+10
(gc>100) NO ir a 2: SI ir a 7
Terminar

Iniciar en 10 C y transformar a F=((C*9)/5)+32 y desplegar C y F,


incrementar los C en 10 y verificar si no hemos llegado a 100C, si ya llegamos entonces
hemos terminado pero si no hemos llegado entonces repetir la transformacin, el
despliegue y el incremento de los C en 10.
Observe como es que estamos proponiendo REPETIR un grupo de acciones de
acuerdo a una condicin, ESTO ES UN CICLO.

Veamos la solucin del ejercicio anterior en un espaol estructurado, primero diremos


que la variable gc guardar la informacin de los C y que gf guardar la informacin de
los F.

1)
2)
3)
4)
5)
6)
7)

Salidas: Tabla de conversin

(indica el inicio del ciclo)


Instrucciones dentro del ciclo
(Indica la condicin del fin del ciclo)

Estatuto de control while


Pongamos la solucin de nuestro problema en un formato de while para que
funcione en el lenguaje de programacin C, suponga que las librera han sido incluidas
y las variables declaradas.
gc=10;
while (gc<=100) //NO LLEVA ; PUNTO Y COMA
{
gf =((gc*9)/5)+32;
printf(%d %d\n,gc,gf);
gc=gc+10;
}
Con esto nuestro programa desplegar la tabla solicitada. INTENTELO.

Ahora que hemos visto lo que es un ciclo y que hemos comprendido su


funcionamiento veamos como entra el estatuto while.
La forma general del estatuto while es la siguiente:
while (condicin)
{
instruccin 1
instruccin 2
instruccin 3
}

en el inicio del ciclo se establece la condicin


llave que indica el inicio del ciclo
Instrucciones que irn dentro del ciclo
llave que indica el fin del ciclo

Las condiciones del estatuto while funcionan y se construyen exactamente


igual que en el estatuto if.

Estatuto de control while


Para construir un ciclo usando el estatuto while es fundamental identificar las siguientes
partes:
1) Inicio del Ciclo
Debemos tener muy claro donde inicia y donde termina el ciclo, identificando claramente
las instrucciones que estarn dentro del mismo.
2) Condicin de ruptura
Debemos tener MUY CLARO cual ser la condicin que se va a evaluar para decidir si el
ciclo continua o se termina.
3) Variable de control
Es la variable que CAMBIA DE VALOR DENTRO DEL CICLO y que ayuda a determinar
cuando el ciclo se va a romper, esta variable debemos encontrarla en la condicin.
4) Valor inicial de la variable de control
Es FUNDAMENTAL tener muy claro cual ser el primer valor que va a tomar la variable de
control AUN ANTES DE INICIAR EL CICLO, es decir cual ser su valor inicial.

19

8/11/16

Estatuto de control while


Observemos el siguiente ejemplo e identifiquemos cada una de sus partes:
gc=10;
while (gc<=100)
{

// Valor inicial de la variable de control


// Condicin de ruptura, observe que ah se encuentra
// la variable de control, gc en este caso

gf =((gc*9)/5)+32;
printf(%d %d,gc,gf);
gc=gc+10; //La variable de control cambia de valor dentro del ciclo

Ejercicios Estatuto de control while


1)

Elabore un programa que despliegue los nmeros del 1 al 10 en forma de lista usando el estatuto while.

2)

Elabore un programa en C que construya una tabla de conversin de pesos a dlares iniciando en 5 pesos y
terminando en 100 pesos avanzando los pesos de 5 en 5.

3) Una mquina que costo $ 28,000 pesos se deprecia a razn de $ 4,000 pesos anuales durante 7 aos. Elabore un
programa en C que calcule y despliegue una tabla con la depreciacin de los 7 aos, su tabla debe verse de la
siguiente forma:
Ao
----1
2
3
.
.
7

Depreciacin
---------------$ 4000
$ 4000
$ 4000
.
.
$ 4000

Valor a fin de Ao
Depreciacin Acumulada
---------------------------------------------------$ 24000
$ 4000
$ 20000
$ 8000
$ 16000
$ 12000
.
.
.
.
$ 0
$ 28000

4) Elabore un programa en C que solicite un nmero entero X y un nmero entero Y, posteriormente


muestre los valores enteros que estn entre X y Y.
5) Elabore un programa en C que solicite un nmero entero X y un nmero entero Y, posteriormente
muestre los valores enteros PARES que estn entre X y Y.

Estatuto de control while ciclos de validacin

Estatuto de Control while


Ciclos de validacin

Un ciclo de validacin es cuando deseamos OBLIGAR a que un valor cumpla ciertas


condiciones, por ejemplo: X debe estar entre 1 y 1000. Eso nos obliga a PROTEGER
nuestro programa para que dicho valor CUMPLA con la condicin solicitada. Un ciclo de
validacin deber cumplir los siguientes pasos:
1) Solicitar el valor indicado
2) Almacenarlo en una variable
3) Verificar si dicho valor est en el rango deseado
SI entonces ROMPER el ciclo
NO mostrar un mensaje de error y regresar a solicitar el valor (paso 1)
Observe como este ciclo se repetir hasta que el usuario introduzca un valor dentro del
rango establecido.

Estatuto de control while ciclos de validacin

Estatuto de control while ciclos de validacin

Para comprender mejor lo anterior veamos el siguiente ejemplo:

Veamos como quedara nuestro ciclo de validacin usando slo lenguaje C.

Deseamos solicitar un valor que est entre 1 y 1000 (incluyendo 1 y 1000) y construir un
ciclo de validacin que se repita hasta que el usuario introduzca un valor valido.

x=0;

//Se define un valor inicial de X fuera del rango deseado

while ((x<1) || (x>1000))


{
printf(Indica el valor de X: );
scanf(%d,&x);
if ((x<1) || (x>1000))

// Se establece condicin para repetir el ciclo, mientras X est fuera de rengo

1) Solicitar el valor
2) Almacenar el valor en la variable X
3) El valor X est entre 1 y 1000??
SI Romper el ciclo
NO Enviar mensaje de error y regresar al paso 1

// Se solicita el valor
// Se verifica que el valor est dentro del rango

{
printf(Error, valor fuera de rango\n);
getche();

// En caso de estar fuera de rango se despliega el mensaje de


// error

}
}

// El ciclo termina cuando el valor est DENTRO del rango

Definamos ahora el ciclo usando un espaol estructurado:

printf(VALOR CORRECTO);
getche();

1)
2)
3)
4)

Elabore este cdigo y prubelo para ver su funcionamiento en C.

LOOP
//Inicia el ciclo
Leer X
Si (x<1) O (x>1000) mostrar el mensaje de error e ir al paso 1
Mostrar Valor Correcto

20

8/11/16

Ejercicios ciclos de validacin


1)

2)

3)

4)

Elabore un programa que lea un valor entero X y que verifique si dicho valor est entre 1 y 100, si dicho valor
NO cumple la condicin, su programa deber mostrar un mensaje de error, hacer una pausa y regresar a
solicitar dicho valor. Cuando el valor cumpla con la condicin solicitada deber mostrar un letrero que diga
VALOR CORRECTO.
Elabore un algoritmo que pida tres valores flotantes y que valide que dichos valores estn entre 1 y 100. Si el
primer valor es correcto deber pedir el siguiente valor de lo contrario deber mostrar un mensaje de error y
regresar a pedir el mismo valor. Una vez ledo el primer valor puede solicitar el segundo y hacer el

Estatuto de Control while


Mens Ciclados

correspondiente ciclo de validacin, cuando el segundo valor sea correcto se podr solicitar el tercero. Cuando
todos los valores sean ledos correctamente su programa deber mostrar el promedio de dichos nmeros.
Usando C elabore un programa que lea dos nmeros enteros; el primer nmero debe estar entre 1 y 10, de
lo contrario se debe mostrar un mensaje de error y regresar a solicitar dicho nmero. El segundo nmero
debe estar entre 40 y 50 de lo contrario se debe mostrar un mensaje de error y regresar a solicitar el mismo
nmero. Una vez que ambos valores fueron ledos su algoritmo debe mostrar los nmeros pares que estn
entre el primer y segundo valores.
Elabore un programa que lea un valor entero X el cual debe estar entre 1 y 10 VALIDE DICHA CONDICION,
cuando el valor X es dado correctamente su programa deber solicitar un segundo valor entero Y que est
entre 1 y 5 VALIDE DICHA CONDICION, cuando ambos valores sean proporcionados correctamente su
programa deber mostrar el resultado de elevar el valor X a la potencia Y.

5)

Elabore un programa que lea un valor entero X el cual debe estar entre 1 y 10 VALIDE DICHA CONDICION,
cuando el valor X es dado correctamente su programa deber mostrar el factorial del valor dado.

6)

Elabore un programa que lea un nmero entero que est entre 1y 1000, VALIDE dicha condicin, una vez que
el valor dado es correcto su programa deber determinar si dicho valor es primo o no es primo, recuerde que
un nmero primo SOLO ES DIVISIBLE entre si mismo y la unidad, si es divisible entre cualquier otro nmero
que est entre 2 y uno anterior a l NO ser primo. M uestre un letrero que indique el resultado.

Mens Ciclados
Un men ciclado, es un men que se va a repetir hasta que el usuario lo desee, es decir,
hasta que el usuario seleccione la opcin que rompe el ciclo, en el caso de los mens
ciclados el funcionamiento primario es el siguiente:
1) Inicia el ciclo
2) Se despliegan las opciones del men, entre estas opciones debe estar una que
permita la usuario terminar dicho ciclo
3) Una vez leda la opcin deseada se ejecutan las acciones correspondientes a dicha
opcin
4) Regresamos al paso 1
Como se puede ver, el usuario selecciona una opcin y se ejecutan las acciones de
acuerdo a la opcin seleccionada (como lo vimos en el if mens), slo que en este caso el
ciclo regresa a desplegar el men.

Mens Ciclados

Mens Ciclados
Veamos lo anterior en un espaol estructurado:
1)
2)

Loop
M ostrar 1) Suma

3)
4)
5)

M ostrar 2) Resta
M ostrar 3) M ultiplicacin
M ostrar 4) Divisin

//Inicia el ciclo
// Se muestran la opciones del men

6)
7)

M ostrar 5) Terminar
Leer opcin deseada en op

8)
9)
10)
11)
12)
13)

Leer primer valor de la operacin en v1


Leer segundo valor de la operacin en v2
Si (op==1) r=v1+v2;
Si (op==2) r=v1-v2;
Si (op==3) r=v1*v2;
Si (op==4) r=v1/v2;

// Esta es la opcin que permite romper el ciclo

14) M ostrar El resultado es r


15) Si (op==5) ir al paso 16
16) FIN

Ejercicios mens ciclados

Ahora veamos nuestro algoritmo en C:

1) Elabore un programa que despliegue el siguiente men:

op=0;

//Cualquier valor que no sea el que permite romper el ciclo

while (op!=5)
{

// M ientras la variable op sea diferente de 5 se repite la accin

1) rea del tringulo


2) rea del Crculo
3) rea del Cuadrado
4) rea del Rectngulo
5) Terminar

printf(1) Suma\n);
printf(2) Resta\n);
printf(3) M ultiplicacin\n);
printf(4) Divisin\n);
printf(5) Terminar\n);
printf(Indica opcin deseada: );
scanf(%d,&op);
// Se lee la opcin deseada
printf(Indica el primer valor: );
scanf(%d,&v1);
printf(Indica el segundo valor: );
scanf(%d,&v2);
if (op==1) r=v1+v2;
// Se ejecuta la accin de acuerdo a la opcin seleccionada
if (op==2) r=v1-v2;
if (op==3) r=v1*v2;
if (op==4) r=v1/v2;
if (op!=5) printf(El resultado es: %d,r);
// Si la opcin NO fue terminar se despliega el resultado

Despus de desplegar el men su programa deber solicitar la opcin deseada VALIDAR QUE LA
OPCION ESTE DENTRO DEL RANGO DE OPCIONES y de acuerdo a la figura seleccionada deber
solicitar los datos necesarios y mostrar el rea de la figura. Despus de mostrar el resultado debe
hacer una pausa y regresar nuevamente a desplegar el men.
Las acciones de desplegar el men, solicitar la opcin, solicitar los datos necesarios, mostrar el rea y
hacer la pausa se debern repetir hasta que el usuario seleccione la opcin 5 que indica
terminar, en este momento su programa deber finalizar.

21

8/11/16

Ejercicios mens ciclados


2) Elabore un programa que pida tres valores enteros y que valide que dichos valores estn entre 1 y
100 (incluidos). Si el valor es correcto deber pedir el siguiente valor de lo contrario deber mostrar
un mensaje de error y regresar a pedir el mismo valor. Una vez ledos todos los valores deber
desplegar el siguiente men:
1) Promedio
2) Nmero mayor
3) Nmero menor
4) Pares
5) Impares
6) Terminar
El men deber estar CICLADO y slo podr terminar cuando el usuario seleccione la opcin 6)
Terminar, recuerde que debe validar el valor de la opcin dentro del rango de opciones.

Ejercicios mens ciclados


3) Elabore un programa que despliegue el siguiente men:
1) Suma
2) Resta
3) Multiplicacin
4) Divisin (validar divisin entre cero)
5) Potencia
6) Factorial
7) Leer un valor e indicar si es primo
8) Terminar
Despus de desplegar el men su programa deber solicitar la opcin deseada VALIDAR QUE LA
OPCION ESTE DENTRO DEL RANGO DE OPCIONES y de acuerdo a la operacin seleccionada deber
solicitar los datos necesarios y mostrar el resultado. Despus de mostrar el resultado debe hacer una
pausa y regresar nuevamente a desplegar el men.
Las acciones de desplegar el men, solicitar la opcin, solicitar los datos necesarios, mostrar el
resultado y hacer la pausa se debern repetir hasta que el usuario seleccione la opcin 8 que
indica terminar, en este momento su programa deber finalizar.

Instruccin for

Estatuto de Control for


Continuando con los Ciclos

La instruccin for es otra instruccin que nos permite controlar ciclos de repeticin de
instrucciones. Esta instruccin se recomienda usar cuando el incremento de la variable de
control es constante, es decir, siempre incrementa en la misma cantidad, por ejemplo:
siempre de 1 en 1 de 2 en 2 de 10 en 10 etc. Pero siempre CONSTANTE.
Esto es recomendado ya que en la misma estructura de la funcin se define, en un solo
rengln, el valor inicial de la variable de control, la condicin y el incremento de la variable
de control.
Observe la forma general de la instruccin for:
for(valor inicial de la variable de control ; condicin ; incremento de la variable de control)
Observe que cada parte de la instruccin se separa por ; (punto y coma).

Instruccin for
Supongamos una instruccin for en la que deseamos desplegar los nmeros del 1 al 10:
for(x=1;x<=10;x++)
{
printf(%d\n,x);
}

NO LLEVA ;
Llave que indica el inicio del ciclo
Instrucciones que se van a repetir dentro del ciclo
Llave que indica el fin de ciclo

Como podr verlo el valor inicial de la variable de control (x=1), la condicin de fin de ciclo
(x<=10) y el incremento de la variable de control (x++), se definen dentro de la misma
estructura de la instruccin.

Instruccin for
Para comprender mejor lo anterior supongamos un ciclo donde la variable de control ser
x, y deseamos que su valor inicial sea x=1, la condicin sea x<=10, y el incremento de la
variable de control ser siempre 1. Por lo tanto esto lo definiramos de la siguiente forma en
una instruccin for:
for(x=1;x<=10;x++)
Comparemos un ejemplo de while con un ejemplo de for:
X=1;
while (x<=10)
{
}
getche();

printf(%d\n,x);
x++;

for(x=1;x<=10;x++)
{
printf(%d\n,x);
}
getche();
Como slo hay UNA instruccin en las llaves del for, la instruccin podra ser:

for(x=1;x<=10;x++) printf(%d\n,x); getche();


Observe como las 7 lneas de la del while pueden hacerse en una sola lnea con la instruccin for.

22

8/11/16

Instruccin for
Observe las siguientes instrucciones for y diga cual es el valor inicial de la variable de control, cual es la
condicin de fin de ciclo y cual es el incremento de la variable de control:
for(z=0;z<=100;z++)
for(x=100;x>=1;x--)
z=5; y=50;
for(z=x+3;z<=y;z++)
y=100; z=50;
for(x=y;x>=z;x--)

Ejercicios Instruccin for


NOTAS:
Los programas de esta seccin deben ser hechos usando la instruccin FOR cada que se requieran ciclos donde las
variables de control tengan un incremento constante.
Slo puede usar la instruccin W HILE cuando el cambio en las variables de control no sea un incremento constante
por ejemplo; validar la lectura de un valor o ciclar un men.
Cuando se le pida VALIDAR un valor debe indicar un mensaje de error cada que el valor no cumpla las condiciones
solicitadas, hacer una pausa, borrar el mensaje de error y regresar a solicitar dicho valor.
1) Elabore un programa que solicite dos valores enteros a y b, debe validar que los valores estn entre 1 y 100,
posteriormente debe mostrar los mltiplos de 7 entre a y b (incluidos).
2) Elabore un programa que solicite un valor entero N, debe validar que el valor est entre 1 y 100, posteriormente
debe mostrar la sumatoria de dicho valor desde 1 hasta N (incluido). Suponga que N=5, entonces su programa deber
sumar 1+2+3+4+5, por lo tanto la salida es: 15
3) Elabore un programa que solicite un valor Entero Largo y valide que dicho valor est entre 1 y 20. Una vez que el
valor es dado correctamente calcule y despliegue el factorial de dicho valor.
4) Elabore un programa que solicite un valor Entero Largo x y valide que dicho valor est entre 1 y 20. Una vez
que el valor es dado correctamente, solicite un nuevo valor Entero Largo y que est entre 1 y 20. Cuando Ambos
valores han sido proporcionados correctamente su programa deber tomar el primer valor y elevarlo a la potencia del
segundo valor, es decir x elevado a la y.

Ejercicios Instruccin for


NOTAS:
5) Elabore un programa que solicite un valor Entero Largo x y valide que dicho valor est entre 1 y 1000. Una vez
que el valor es dado correctamente, solicite un nuevo valor Entero Largo y que est entre 1 y 1000. Por ltimo
debe revisar que x sea menor que y por lo menos por 10 unidades, de lo contrario deber desplegar un mensaje
de error y regresar a solicitar AM BOS valores (validacin correlacionada). Cuando AM BOS valores han sido
proporcionados correctamente su programa deber mostrar los nmeros primos que se encuentren entre x y y,
incluyendo los mismos x y y.
6) Una frmula matemtica dice que:
X=sumatoria(n=1 hasta que n=lmite uno) + sumatoria(n=1 hasta que n=lmite dos) + factorial de lmite uno + factorial
de lmite dos.
Por ejemplo:
Si el lmite uno
L1=5
El lmite dos -L2=4
ENTONCES:
X=(1+2+3+4+5) + (1+2+3+4) + (1*2*3*4*5) + (1*2*3*4)
X=(15) + (10) + (120) +(24)
X=169

Manejo de funciones

Su programa debe solicitar el valor del lmite uno y el valor del lmite dos validando que estn entre 1 y 10, de lo
contrario deber marcar un mensaje de error y regresar a solicitar el valor correspondiente. Una vez que los valores
han sido proporcionados correctamente su programa deber calcular y desplegar el valor de X.

Funciones en el Lenguaje C
En el lenguaje C una funcin es un segmento de cdigo identificado con un NOMBRE NICO
(ninguna otra funcin, ni ninguna otra variable pueden tener el mismo nombre) y
delimitado por llaves { } .
Una vez que una funcin es creada, dicha funcin (o segmento de cdigo) puede ser
llamada desde cualquier otra parte del programa las veces que sea necesario.
Una funcin puede recibir valores para su funcionamiento, cuando esto es necesario se
debe definir al mismo momento de crear la funcin; y a dichos valores que la funcin recibe
se les va a llamar parmetros.
Por otro lado una funcin puede ser llamada para ejecutar alguna accin sin necesidad de
regresar algn valor pero una funcin tiene la posibilidad de regresar un valor (UNO Y SOLO
UNO) al momento de ser llamada.

Funciones en el Lenguaje C
Para comprender mejor lo anterior pensemos en la funcin caminar la describe
claramente los pasos a seguir para ejecutar dicho movimiento.
Ahora pensemos que uno de sus compaeros es esta funcin y le indicamos caminar
Qu hara su compaero?
Para ser ms claros tenemos que decirle cuantos pasos caminar, por lo tanto la funcin la
llamaramos de la siguiente forma caminar(5), esto ya le dice a su compaero que debe
caminar cinco pasos, pero en que direccin?.
Supongamos que 1=caminar de frente, 2=caminar en reversa, 3=caminar a la derecha y
4=caminar a la izquierda, por lo tanto la instruccin completa para pedirle que camine 10
pasos a la derecha sera: caminar(10,3). En este caso los valores 10 y 3 son parmetros que
estamos enviando a la funcin caminar para una mejor ejecucin de la misma.

23

8/11/16

Funciones en el Lenguaje C

Funciones en el Lenguaje C
Cuando una funcin es llamada slo para ejecutar alguna accin y no va a regresar ningn
valor la vamos a llamar funcin void. Cuando nosotros creamos una funcin de este tipo le
estamos indicando a nuestro compilador que esta funcin no regresar valor alguno
despus de su ejecucin. Veamos un ejemplo:

Observe la siguiente secuencia:


1) caminar(10,1)
2) caminar(5,2)
3) caminar(5,3)
4) caminar(10,4)
5) caminar(5,3)
6) caminar(5,2)

void error()
{
printf(Error, valor fuera de rango );
getche();
}
main()
{

A que distancia est del punto original?

x=0;
while ((x<1) || (x>100))
{
printf(Indica el valor de X: ); scanf(%d,&x);
if ((x<1) || (x>100)) { error(); }
}
}

Funciones en el Lenguaje C
Primero analicemos lnea por lnea de la funcin:

Funciones en el Lenguaje C

Ahora analicemos nuevamente la funcin pero en todo su conjunto:

void error() NO LLEVA PUNTO Y COM A


En esta lnea se indica que se va a crear una funcin del tipo void, es decir una funcin que NO va a regresar ningn
valor.
Al mismo tiempo se le est dando un nombre nico a la funcin, en este caso error.
Por ltimo los parntesis le indican a la funcin que no requiere de parmetros (vea diapositiva 1) para su
funcionamiento.
Entonces desde que estamos creando la funcin estamos estableciendo TRES situaciones:
1) Regresa o no regresa valor
2) Nombre nico
3) Requiere o no requiere parmetros

// void
// en este caso error
// ()

void error()

Primero observe como en esta lnea se est creando una funcin void
En esta misma lnea estamos colocando el nombre nico, en este caso error
Por ltimo los parntesis indican que esta funcin NO requiere de parmetros para su
ejecucin
Esta es la llave que indica el inicio de la funcin
printf(Error, valor fuera de rango );
Estas son las instrucciones que ejecutar la funcin cuando
getche();
esta sea llamada
Esta es la llave que indica el final de la funcin

{
La segunda lnea es la llave que indica el INICIO de la funcin
Las siguientes dos lneas:
printf(Error, valor fuera de rango );
getche();
Son las instrucciones que va a ejecutar la funcin cuando sta sea llamada desde cualquier parte de nuestro programa
}
Por ltimo tenemos la llave que cierra, que es la que indica el FINAL de la funcin

Funciones en el Lenguaje C
Ahora veamos nuestro programa nuevamente:
void error()
{
printf(Error, valor fuera de rango );
getche();
}
main()
{

Pero cuando una funcin SI requiere de parmetros para su funcionamiento es necesario


indicarlos desde el momento mismo en la que sta se crea.
Veamos un ejemplo:

x=0;
while ((x<1) || (x>100))
{
printf(Indica el valor de X: ); scanf(%d,&x);
if ((x<1) || (x>100)) { error(); }
Observe como en esta lnea se llama a la funcin de error para
}
ejecutar las instrucciones de la misma
}

Funciones en el Lenguaje C
Es importante recordar que las funciones pueden o no requerir de parmetros para su
funcionamiento, en el ejemplo anterior vimos una funcin (error()) que NO requiere de
parmetro y eso lo indicamos mediante los parntesis ().

void error (int err)


{
if (err==1) { printf(Error, valor fuera de rango ); }
if (err==2) { printf(Error, opcin incorrecta ---); }
if (err==3) {printf(Error, no hay divisin entre cero ); }
getche();
}

24

8/11/16

Funciones en el Lenguaje C
Funciones en el Lenguaje C
Analicemos la primera lnea de nuestra funcin:
void error (int err)
Nuevamente nos encontramos con void

ya que nuestra funcin NO regresar un valor, pero SI requiere de

parmetros para su funcionamiento.


De igual forma establecemos su nombre nico, en este caso error.

Veamos completo el programa:


void error(int err)
{
if (err==1) { printf(Error, valor fuera de rango ); }
if (err==2) { printf(Error, opcin incorrecta ---); }
if (err==3) {printf(Error, no hay divisin entre cero ); }
getche();
}
main()
{
x=0;
while ((x<1) || (x>100))
{
printf(Dame el valor de X : ); scanf(%d,&x);
if ((x<1) || (x>100)) { error(1);
}
y=0;
while ((y<1) || (y>100) || (y==0))
{
printf(Dame el valor de yY: ); scanf(%d,&y);
if ((y<1) || (y>100)) { error(1);
if (y==0) { error(2); }
}

Por ltimo OBSERVE dentro de los parntesis, ahora le estamos diciendo que usar un parmetro llamado err, este
parmetro es el nombre de una variable como cualquier otra y que ser usada por nuestra funcin de error. En este
caso estamos definiendo que dicho parmetro ser del tipo ENTERO, por lo tanto le indicamos int.
Posteriormente vienen las llaves { } y las instrucciones de nuestro programa, OBSERVE como las instrucciones
dependen del valor que recibir la variable err.
Pero .. Cmo le indico a err el valor que va a tomar? Vea la siguiente diapositiva

Observe como al momento de mandar llamar a la funcin que recibe parmetros se debe
enviar el valor de los mismos, en este caso err tomar el valor que le sea enviado.

Funciones en el Lenguaje C
Veamos otro ejemplo:

void error(int err);


Se define el parmetro err para decidir cual letrero de error o pausa desplegar
{
if (err==1) printf(Error, valor de X fuera de rango );
if (err==2) printf(Error, valor de Y fuera de rango );
if (err==3) printf(PAUSA, oprima ENTER para continuar);
getche();
}
void suma(int a, int b)
Se definen dos parmetros que sern usados para efectuar la suma
{
r=a+b;
printf(La suma es : %d,r);
error(3);
Se manda llamar a la funcin error con un valor de err=3, esto har que se despliegue el letrero de pausa
}
main()
{
x=0;
while ((x<1) || (x>100))
{
printf(Indica el valor de X : ); scanf(%d,&x);
if ((x<1) || (x>100)) error(1); Se llama a la funcin error con valor de err=1 para desplegar mensaje de error en X
}
y=0;
while ((y<1) || (y>100))
{
printf(Indica el valor de Y : ); scanf(%d,&y);
if ((y<1) || (y>100)) error(2); Se llama a la funcin error con valor de err=2 para desplegar mensaje de error en Y
}
suma(x,y);
Se manda llamar a la funcin suma y se le envan los valores capturados, de aqu se enva la x y la funcin
recibe el valor en a, se enva la y y la funcin recibe el valor en b

Funciones en el Lenguaje C
Observemos detenidamente la funcin de suma
void suma (int a, int b)
{
r=a+b;
printf((La suma es: %d,r);
error(3);
}

En este caso se estn definiendo dos parmetros a y b de tipo entero OBSERVE como se
tiene que definir cada uno de forma independiente, esto se debe a que una misma funcin
puede recibir parmetros de diferente tipo, por ejemplo:
void suma (int a, float b), en este caso estamos definiendo un parmetro entero a y otro
flotante b.
void divide (int a, float b, int c) Cuntos parmetros se estn definiendo y de que tipo
son?
Dado que se han definido dos parmetros para la funcin void suma es necesario enviar
dos valores en el momento de mandarla llamar, en este caso suma(x,y);

Funciones en el Lenguaje C
Para finalizar las funciones en C veamos las funciones que SI regresan un valor. Se trata de
funciones que adems de ejecutar una accin van a regresar un valor a la lnea que la
mand llamar. Veamos un ejemplo:

Funciones en el Lenguaje C
Observemos la funcin int factorial(int a)
int factorial(int a)
c=1;
fact=1;
while (x<=a)
{
fact=fact*c;
c++;
}
return(fact);

void error(int err)


Definimos una funcin de error del tipo void, con un parmetro entero
{
if (err==1) printf(Error, valor fuera de rango );
if (err==2) printf(Pausa oprima ENTER para continuar );
getche();
}
int factorial(int a)
{
c=1;
fact=1;
while (x<=a)
{
fact=fact*c;
c++;
}
return(fact);
}

La instruccin return(fact); est indicando que el valor que se va a regresar es el contenido en la variable
fact.

main()
{
x=0;
while ((x<1) || (x>100))
{
printf(Dame el valor de X : ); scanf(%d,&x);
if ((x<1) || (x>100)) { error(1);
}
z=factorial(x);
printf(El factorial de %d es: %d : %d,x,z);
error(2);
}

En este caso la funcin se define como int ya que SI REGRESARA un valor y el valor que va a regresar es de
tipo entero

Observemos main()
main()
{
x=0;
while ((x<1) || (x>100))
{
printf(Dame el valor de X : ); scanf(%d,&x);
if ((x<1) || (x>100)) { error(1);
}
z=factorial(x); Esta instruccin est llamando a la funcin factorial enviando un valor que la funcin recibir en el
parmetro a.
Adems, esta misma instruccin est indicando que el valor que va a regresar la funcin se debe guardar en
la variable z
printf(El factorial de %d es: %d : %d,x,z); Por lo tanto desplegamos la variable z que es la que contiene el resultado del
factorial
error(2);
}

25

8/11/16

Funciones en el Lenguaje C

Ejercicios Funciones en el Lenguaje C

Observe la declaracin de las siguientes funciones y diga si dicha funcin va a regresar algn valor y en
caso afirmativo diga de que tipo es el valor que va a regresar. Adems diga si va a recibir parmetros y
en caso afirmativo diga cuantos parmetros va a recibir y de que tipo son.

1) Elabore un programa que tenga a la funcin letrero, dicha funcin NO va a regresar ningn valor,
ni va requerir de parmetros para su funcionamiento. Esta funcin deber desplegar el letrero
Error en el valor dado cada que sea llamada.

1)
2)
3)
4)
5)
6)
7)

2) Elabore un programa que solicite un valor entero, dicho valor se debe pedir dentro de la funcin
pide_datos() y validar que est entre 1 y 10. Una vez que se ha pedido dicho valor debe calcular
el factorial de dicho nmero mediante la funcin factorial (int valor) y desplegar el resultado.

void suma()
float divi(int x, float y)
void suma(int x, int y)
int resta()
int resta(float x, float y)
void error(int err)
void pausa()

1) Elabore un programa que despliegue el siguiente men:


1) Suma
2) Resta
3) Multiplicacin
4) Divisin
5) Terminar
El men debe estar creado en la funcin menu() la cual NO va a recibir parmetros ni va a regresar
ningn valor.
Una vez que la opcin es indicada su programa deber solicitar los valores de la operacin los cuales
deben estar entre 1 y 1000 (valide este hecho para cada valor). Los valores se deben pedir en una
funcin que se llame pide_datos().
Una vez que se han pedido los datos correctamente su programa deber ejecutar la operacin segn la
opcin seleccionada CADA OPERACIN DEBER ESTAR EN UNA FUNCION que recibir los valores
solicitados como PARAMETROS, ejecutar la operacin y desplegar el resultado.

Ejercicios Funciones en el Lenguaje C


4) Usando C++ y empleando SOLO variables locales construya un programa que despliegue

el siguiente men:
1) Factorial
2) Elevar a una potencia
3) Terminar
Su programa debe cumplir con las siguientes condiciones:
- SOLO puede usar variables locales
- El men debe ser desplegado por una funcin llamada menu() y debe regresar la
opcin seleccionada.
- Debe existir la funcin factorial() la cual debe regresar el valor del factorial.
- Debe existir la funcin potencia() la cual debe regresar el valor de la potencia
- TODAS las funciones deben ser llamadas desde la funcin main()

Arreglos en C

Arreglos

Arreglos en C

Un arreglo, array, o vector (nombres con los que se puede encontrar en diferente bibliografa) es un espacio en memoria
que puede almacenar varios valores DEL MISMO TIPO y dichos valores pueden ser manipulados con el uso de UNA SOLA
VARIABLE y una COORDENADA DE REFERENCIA.
mueble_a
Para comprender mejor el tema, imagine que tiene un mueble con
varias divisiones y en cada divisin puede guardar un valor, cada
divisin est identificada con nmero que le llamaremos
coordenada. De tal forma que al tener el nombre del mueble y la
coordenada podremos ubicar el valor deseado.
Observe la figura de la derecha y supongamos que a ese mueble
lo llamaremos mueble_a. En cada espacio disponible de dicho
mueble tenemos almacenado un valor cualquiera, dicho valor NO
TIENE NADA QUE VER SON SU POSICIN se trata de dos cosas
totalmente diferentes. Una cosa es la coordenada de referencia y
otra muy distinta el valor que esta dentro del espacio.

17

234

15

23

385

mueble_a
Siguiendo el ejemplo de la figura de la diapositiva anterior podemos comprender mejor el
tema de los arreglos:
1) Observe que slo existe un nombre de variable, en este caso mueble_a.
2) Observe que cada espacio de nuestro ARREGLO est identificado con una coordenada
de referencia que EMPIEZA EN CERO, siempre la primera posicin de un arreglo ser la
coordenada CERO
3) Observe que nuestro arreglo tiene 8 posiciones numeradas del 0 al 7
4) Observe que el valor de mueble_a de la coordenada 4 es el valor entero 23
5) Observe que todos los valores son del mismo tipo, es decir, valores enteros, en este
caso.
6) Diga cual es la coordenada del valor entero 234

17

234

15

23

385

26

8/11/16

Arreglos en C

Arreglos en C

Ahora veamos como crear y manipular los valores de un arreglo:

Crear un arreglo

Crear un arreglo

Para asegurarnos que nuestro arreglo iniciar con los valores deseados, podemos colocar dichos valores desde el

Un arreglo se declara como cualquier otra variable, indicando el tipo de variable y el nombre de variable, slo que en este
caso debemos agregar el nmero de espacios que deseamos que tenga nuestro arreglo.

momento mismo de crearlo, veamos el siguiente ejemplo:

Para los arreglos, el tipo de variable indicar el tipo de valores que nuestro arreglo podr almacenar, recuerde que todos
los valores del arreglo deben ser del mismo tipo.
arr
Veamos el siguiente ejemplo:
int arr[5]
En este caso estamos creando un arreglo que almacenar
valores de tipo entero (int) que la variable se llamar arr y

que tendr cinco espacios para almacenar valores.


Observe que el nmero de valore se coloca entre
CORCHETES [ ].

En concreto, la declaracin anterior creara una variable


como la que se muestra en la figura de la derecha.

arr
int arr[5]={-2,3,0,1,7};
En el mismo momento de crear el arreglo estamos

Se esperara que cuando creamos un


arreglo sus espacios siempre tengan
un valor inicial nulo en el caso de los

insertando los valores. Esta declaracin estara creando el


arreglo de la figura de la derecha.

enteros un cero, pero NO siempre es


as,
tenga
en
cuenta
esta
informacin.

-2

Pero Qu pasa si se trata de un arreglo de 1000 posiciones?

Arreglos en C

Arreglos en C

Crear un arreglo

Crear un arreglo

Claro que si se trata de un arreglo con muchas posiciones, colocar los valores iniciales sera un poco complicado no lo cree?. Entonces
como se imagina que podramos colocar ceros en un arreglo de 1000 posiciones que acabamos de crear.

for(i=0;i<1000;i++) arr[i]=0;
En el ciclo que va a colocar ceros en nuestro arreglo tenemos varios aspectos a observar:

Para empezar veamos que la referencia a una coordenada se puede hacer mediante una constante o mediante una variable, por
ejemplo:
arr[10]: en este caso estamos haciendo referencia al arreglo arr de las posicin 10.
x=5;
arr[x]: en este caso estamos haciendo referencia al arreglo arr de la posicin 5 y que la variable x tiene un valor de 5.
Ahora si ya se imagina como??
CLARO CON UN CICLO:

1) El ciclo inicia de CERO (i=0) ya que la primera posicin de nuestro arreglo siempre ser CERO
2) La condicin de fin de ciclo es (i<1000) SOLO MENOR que 1000 ya que al tener 1000 posiciones sus casillas estn numeradas del 0 al
999 por lo que la casilla de la posicin 1000 NO EXISTE
3) Al ir cambiando el valor de i tambin ir cambiando la posicin de la coordenada.
Hasta este punto ya sabemos como colocar valores predeterminados para un arreglo, pero que pasa si deseamos que los valores sean
capturados por el usuario???

for(i=0;i<1000;i++) arr[i]=0;

Arreglos en C

Arreglos en C

Capturar los valores de un arreglo

Capturar los valores de un arreglo

Leer un valor de UNA POSICION de un arreglo se hace exactamente igual que cualquier variable, siguiendo nuestro

Si nosotros deseamos leer TODAS las posiciones de nuestro arreglo lo ms indicado sera usar un ciclo que recorriera

ejemplo donde tenemos int arr[5]; nos damos cuenta de que los valores de cada posicin de nuestro arreglo son enteros,
ahora supongamos que ya hemos colocado CEROS en todas las posiciones de nuestro arreglo si deseamos leer una
posicin determinada del arreglo podemos hacerlo de las siguientes formas:

todas las posiciones y fuera solicitando una a la vez, observe el algoritmo:

arr

scanf(%d,&arr[2]); //Con esto estaramos leyendo la posicin dos del arreglo


Otra forma de hacerlo sera:
x=4;
scanf(%d,&arr[x]); //Dado que el valor de x=4, estaramos leyendo la
la posicin 4 del arreglo

Pero que pasa si deseamos leer TODOS los valores del arreglo ???

for(i=0;i<=4;i++)
{
printf(Dame el valor de la posicin %d: ,i);
scanf(%d,&arr[i]);
}
OBSERVE que nuestro ciclo inicia en la posicin 0, ya que es la primera posicin de nuestro
Arreglo. Por otro lado termina en la posicin 4 ya que es la ltima posicin de nuestro arreglo
Si contamos los dgitos incluidos entre 0 y 4 nos dan las 5 posiciones de nuestro arreglo.

arr
0

27

8/11/16

Arreglos en C

Arreglos en C

Desplegar los valores de un arreglo

Desplegar los valores de un arreglo

Ya hemos visto como declarar un arreglo, ya hemos visto como introducir valores a un arreglo, ahora veamos como se

Si nosotros deseamos desplegar TODAS las posiciones de nuestro arreglo lo ms indicado sera usar un ciclo que

despliegan los valores de un arreglo.

recorriera todas las posiciones y fuera mostrando una a la vez, observe el algoritmo:

Para desplegar una posicin de un arreglo se hace exactamente igual que cualquier variable, si nuestro arreglo es de tipo
entero y deseamos desplegar una posicin usamos:

for(i=0;i<=4;i++)
{
printf(El valor de la posicin %d es: %d\n,i,arr[i]);
}

printf(%d,arr[0]); // Con esto estamos desplegando el valor que est guardado en la posicin 0 de nuestro arreglo, en
este caso un -2.
Otra forma de desplegar un valor sera:
x=4;
printf(%d,arr[x]); // En este caso estaramos desplegando el valor de la posicin 4 ya que x=4;
en este caso un 7.
Pero que hago si deseo desplegar TODOS los valores de un arreglo

arr

-2

Qu vera como salida el usuario?

-2

Vera:
El valor de la posicin 0 es: -2
El valor de la posicin 1 es: 3
El valor de la posicin 2 es: 0
El valor de la posicin 3 es: 1
El valor de la posicin 4 es: 7

Ahora que ya sabe leer y mostrar valores de un arreglo observe el siguiente algoritmo y diga que hace:
// Inluya las instrucciones para gotoxy y todas las libreras necesarias

Arreglos en C

int arr[5], i;
void pide()
{
system("cls");
for(i=0;i<=4;i++)
{
gotoxy(25,12); printf(" ");
gotoxy(25,12); printf("Indica el valor de la posicion %d: ",i);
scanf("%d",&arr[i]);
}
}
void muestra()
{

Para comprender mejor el funcionamiento y uso de los arreglos se le sugiere hacer las siguientes lecturas:
En cualquier libro de programacin en C, lea el tema referente al manejo de Arreglos.
Dos libros recomendados por su sencillez en la explicacin del tema son:

system("cls");
for(i=0;i<=4;i++)
{
gotoxy(25,12+i); printf("El valor de la posicion %d es: %d",i,arr[i]);
}
getche();

}
main()
{

Lecturas sugeridas:

Fundamentos de Programacin, piensa en C


Autor: Osvaldo Castro
Captulo 5, Pg. 175
Programacin en C
Autor: Byron Gottfried
Captulo 9. Pg. 299
Los anteriores slo recomendaciones, pero cualquier libro del tema le puede ser til.

pide();
muestra();

Ejercicios de Arreglos en C

Ejercicios de Arreglos en C

1) Usando C++ elabore un programa que lea una lista de cinco nmeros enteros y los almacene en un arreglo de cinco

3) Usando C++ elabore un programa que lea una lista de diez nmeros enteros entre 1 y 1000 (valide) y los almacene

posiciones, esta accin debe estar en un funcin que se llame captura(). Posteriormente
a) M uestre el arreglo en forma de lista en el mismo orden en que los nmeros fueron capturados y haga una
pausa (getche()). Esta accin debe estar en un funcin que se llame lista().
b) Repita el paso a pero ahora muestre los nmeros empezando por el ltimo nmero capturado y terminando
por el primero, es decir en el orden inverso, esta accin deber estar en un a funcin que se llame inverso().
Todas las funciones deben trabajar con variables locales, la nica variable global ser el propio arreglo.

en un arreglo de diez posiciones. Una vez almacenados los valores su programa debe:
- M ostrar el arreglo en el orden en que fue capturado
- Ordenar el arreglo de menor a mayor y mostrarlo en forma de lista.
- Ordenar el arreglo de mayor a menor y mostrarlo en forma de lista
Todo el conjunto debe verse como una tabla:

2) Usando C++ elabore un programa que lea una lista de diez nmeros enteros entre 1 y 1000 (valide) y los almacene
en un arreglo de diez posiciones, posteriormente ,muestre el siguiente men:
a)
b)
c)
d)
e)
f)
g)

Promedio
Nmero M ayor
Nmero M enor
Lista en secuencia de captura
Lista inversa a secuencia de captura
Ver valor de una posicin determinada
Termiar

Captura
12
3
5
1
4

M enor a M ayor
1
3
4
5
12

M ayor a M enor
12
5
4
3
1

El men debe ser mostrado desde una funcin que se llame men() y cada opcin debe ser ejecutada por una funcin
diferente. Puede usar variables globales y locales segn lo requiera.

28

8/11/16

Ejercicios de Arreglos en C

Ejercicios de Arreglos en C

4) Elabore un programa que despliegue el siguiente men


Opcin e: Debe seleccionar y desplegar el nmero menor de los n nmeros capturados.
1) Capturar Nmeros
2) M ostrar valores capturados
3) M edia/promedio
4) M ayor
5) M enor
6) M ediana
7) M oda
8) Desviacin Estndar
9) M enor a mayor
10) M ayor a menor
11) Terminar
Este men debe estar ciclado y slo podr terminar cuando el usuario seleccione la opcin 11

Opcin f: Debe calcular y desplegar la mediana de los n nmeros capturados. OJO!! La mediana NO es el
promedio.
Opcin g: Debe calcular y desplegar la moda de los n nmeros capturados.
Opcin h: Debe calcular y desplegar la desviacin estndar de los n nmeros capturados. Debe usar la librera
<M ath.h> para obtener la raz sqrt().
Opcin i: Debe mostrar la lista de los nmeros ordenados de menor a mayor
Opcin h: Debe mostrar la lista de los nmeros ordenados de mayor a menor

Opcin a: Debe permitir capturar un grupo NO definido de nmeros flotantes hasta un mximo de 100 nmeros, la
captura deber terminar cuando se completen 100 nmeros o cuando el usuario capture un valor de CERO. Dichos
valores deben ser almacenados en un arreglo.

Las funciones que deben estar incluidas en su programa deben ser:


menu()
- media()
- mayor()
menor()
- moda()
- mediana()
desv_est()
- muestra_nums()
- error()

Opcin b: Debe mostrar la lista de los nmeros que fueron capturados

lista_men_may()

Opcin c: Debe calcular y desplegar el promedio de los n nmeros capturados.

NO es forzoso usar estos nombre puede usar los que quiera pero CADA OPCION del men debe ser una funcin
DENTRO del mismo programa

- lista_may_men()

Opcin d: Debe seleccionar y desplegar el nmero mayor de los n nmeros capturados.

Caracteres y cadenas de caracteres


Al hablar de un carcter, hablamos de CUALQUIER SIMBOLO que la computadora pueda
generar, por ejemplo: letras, signos (+,-,/,@,#), nmeros, espacio en blanco etc. CUALQUIER
SIMBOLO que sea generado por la mquina.

Caracteres y cadenas de
caracteres

Estos caracteres tambin pueden ser almacenados en variables, de tal forma que una
variable puede guardar un carcter.
Para que una variable pueda guardar un cracater debe ser creada como una variable de tipo
char y se declara como:
char x;
Con esto estamos indicando que la variable x almacenar un smbolo generado por la
mquina, por ejemplo:
x=a;
De esta forma la variable x est almacenando al carcter a OBSERVE que para almacenar
un carcter en una variable se usan los apstrofos . Que indican que se trata de un
carcter y NO de otra variable.

Caracteres y cadenas de caracteres

Caracteres y cadenas de caracteres

Si nosotros NO colocamos los apstrofos, el compilador se confundir y pensar que se est


asignando otra variable, observe:

Declaracin de una variable de tipo carcter:


char x;

x=a; //En este caso estamos diciendo que la variable x tomar el valor de la variable a.

Asignacin de un valor a una variable de tipo carcter:


x=@;

x=a; //En este caso estamos diciendo que la variable x guardar el carcter a
Se trata de dos cosas totalmente distintas, tenga mucho cuidado.

Desplegado de una variable de tipo caracater:


printf(%c,x); //Se usa el identificador %c
Lectura de una variable de tipo cracater desde teclado:
scanf(%c,&x); //Se usa el identificador %c
x=getche(); //Se almacena en x la tecla que sea tocada sin esperar enter
x=getch(); //Igual que getche pero la variable no se ve en pantalla

29

8/11/16

Caracteres y cadenas de caracteres


Para comprender mejor lo anterior elabore el siguiente cdigo:
# include <stdio.h>
# include <conio.h>

Caracteres y cadenas de caracteres


Una cadena de caracteres es UN GRUPO DE CARACTERES que puede tener o no un
significado, por ejemplo:
cadena 1: perro
cadena 2: #$@j#mf

char letra;
main()
{

Como podr notarlo, la cadena 1, le transmite a usted un significado, en este caso un animal,
pero la cadena 2, no transmite ningn significado sin embargo sigue siendo una cadena de
caracteres.

printf(Indica la letra deseada: );


scanf(%c,&letra);
printf(El smbolo capturado es: %c,letra);
}

Veamos la cadena 1 de la siguiente forma:

Observe el funcionamiento de este cdigo.


Reemplace la lnea scanf(%c,&letra); por la lnea letra=getche(); Cul es la diferencia?
Reemplace la lnea scanf(%c,&letra); por la lnea letra=getch(); Cul es la diferencia?
No contine hasta comprender claramente las diferencias entre scanf, getche y getch para
la lectura de variables de tipo carcter.

palabra

A que se parece esta vista de la cadena de caracteres?

Caracteres y cadenas de caracteres

Caracteres y cadenas de caracteres

Si usted dijo que se parece a un arreglo de letras est en lo correcto, una cadena de
caracteres es un arreglo de letras que puede ser manipulado como una sola variable
mediante un arreglo.

Cmo declaramos una cadena de caracteres?


char palabra[16];
En este caso estamos declarando un arreglo que almacenar una palabra de hasta 15 letras,
dejando un espacio para el fin de cadena.

Sera importante agregar que para que el lenguaje C sepa que se trata de una cadena
debe tener un FIN DE CADENA el cual indica que se trata de una palabra, por lo que el
arreglo se vera de la siguiente forma:
palabra

\0

El elemento de la posicin 5 \0 indica el fin de cadena, por lo tanto nuestro arreglo


SIEMPRE debe tener una posicin ms de las letras que deseamos almacenar, para reservar
el espacio que indica fin de cadena. Es decir si deseamos que nuestro arreglo pueda
almacenar una cadena de 10 letras debe ser declarado char palabra[11], una posicin ms
para reservar el espacio del fin de cadena.

Cmo le asignamos valor a una cadena de caracteres?


strcpy(destino,origen);
destino: Variable donde se va a guardar la cadena de caracteres
origen: Valor que deseamos guardar en la variable destino
Ejemplos:
Suponga que deseo guardar la cadena perro en la variable palabra
strcpy(palabra,perro);
Suponga que la variable palabrita tiene almacenada la cadena curso de C y
deseo pasarla a la variable salida.
strcpy(salida,palabrita);
Observe como cuando seso pasar una cadena que NO est en una variable uso las comillas,
pero si la cadena ya est en otra variable NO uso las comillas ya que se trata de otra
variable.

Caracteres y cadenas de caracteres

Caracteres y cadenas de caracteres

Cmo leemos un valor dado por el usuario?


Esto se puede hacer de dos formas:
scanf(%s,&palabra); // Note como se usa el identificador de variable %s
El problema es que en este caso slo podremos leer cadenas que NO tengan
espacios en blanco.

Cmo leemos un valor dado por el usuario?


Para evitar que se pierdan las cadenas que estn separadas por espacios en blanco usamos
la instruccin: gets(pal); La cual puede leer la cadena sin importar si se trata de cadenas con
o sin espacios.

Copie el siguiente cdigo y vea el funcionamiento:


char pal[16];
main()
{
printf(Indica una palabra: );
scanf(%s,&pal);
printf(La palabra capturada es: %s,pal);
}

Pruebe el cdigo de la diapositiva anterior cambiando la lena scanf(%s,&pal); por


gets(pal) y pruebe con las mismas cadenas.
Puede ver la diferencia?
Por lo tanto est de ms decir que es recomendable usar gets cuando NO se sabe si la
cadena tendr espacios en blanco o no.

Pruebe este cdigo con las siguientes cadenas:


1)
2)
3)

perro
gato
perro y gato

Puede ver la diferencia?

30

8/11/16

Caracteres y cadenas de caracteres


Cmo desplegamos una cadena de caracteres?
printf(%s,&cadena);
En el caso del printf no importa si la cadena tiene o no espacios en blanco, se
desplegar siempre completa de acuerdo a lo que se haya ledo o asignado para variable
que estamos desplegando.

Caracteres y cadenas de caracteres


Funciones importantes de cadenas de caracteres:
Para facilitar el manejo de cadenas de caracteres el lenguaje C tiene creadas varias
funciones que nos pueden ayudar, dichas funciones se encuentran incluidas en la librera
String.h, as que para que estas funciones puedan ser ejecutadas debemos incluir dicha
librera en la seccin de libreras de nuestro programa.
Funcin strlen(cadena): Regresa un valor entero que indica la cantidad de caracteres que
tiene la cadena sim importar el tamao del arreglo. Ejemplo:
char pal[16];
int x;
main()
{
strcpy(pal,perro);
x=strlen(pal);
printf(%d,x); //Que valor dara x???
}

Caracteres y cadenas de caracteres

Caracteres y cadenas de caracteres

Funciones importantes de cadenas de caracteres:

Funciones importantes de cadenas de caracteres:

Funcin strcmp(cad1,cad2); : Regresa un valor entero IGUAL A CERO si las cadenas son
iguales y un valor diferente de cero si las cadenas son diferentes. Es decir, permite comparar
dos cadenas de caracteres. Por ejemplo:

Funcin strnicmp(cad1,cad2,n); : Regresa un valor entero IGUAL A CERO si las cadenas son
iguales en los primeros n caracteres y un valor diferente de cero si las cadenas son
diferentes en los primeros n caracteres. Es decir, permite comparar el INICIO de dos
cadenas de caracteres hasta n caracteres. Por ejemplo:

strcpy(pal1,juan);
strcpy(pal2,juanito);
x=strcmp(pal1,pal2);
if (x==0) printf(Cadenas iguales);
else printf(Cadenas diferentes);
NO SE PUEDE USAR (pal1==pal2) recuerde que son arreglos

Caracteres y cadenas de caracteres


Funciones importantes de cadenas de caracteres:
Funcin strupr(pal); : Transforma la cadena de la variable pal a MAYUSCULAS, por ejemplo:
strcpy(pal1,juan);
strupr(pal1);
printf(%s,pal1); //Que se vera de salida???
Funcin strlwr(pal); : Transforma la cadena de la variable pal a minsculas, por ejemplo:
strcpy(pal1,JUAN);
strlwr(pal1);
printf(%s,pal1); //Que se vera de salida???

strcpy(pal1,juan);
strcpy(pal2,juanito);
x=strnicmp(pal1,pal2,4);
if (x==0) printf(Cadenas iguales);
else printf(Cadenas diferentes); //Que letrero se vera???

Ejercicios de Caracteres y cadenas de caracteres


1) Elabore un programa que lea una palabra o frase, su programa debe validar que la palabra o frase tenga entre 5 y 20
caracteres (incluidos). Una vez que el valor es dado correctamente ste deber desplegar la palabra al derecho y al
revs. Por ejemplo si la palabra dada es perritos su programa deber desplegar:
Palabra al derecho: perritos
Palabra al revs : sotirrep.
2) Elabore un programa que lea dos cadenas de caracteres, cada cadena deber tener entre 3 y 15 caracteres (valide
este hecho). Una vez ledas deber comparar ambas cadenas y decir si son iguales o diferentes.
3) Elabore un programa que lea una cadena de caracteres que tenga entre 3 y 15 letras (valide este hecho). Una vez
leda la palabra despliegue dicha palabra en maysculas y en minsculas.
4) Elabore un programa que despliegue el siguiente men:
a) Indicar la palabra
b) M ostrar la palabra
c) M ostrar la palabra al revs
d) M ostrar vocales
e) M ostrar consonantes
f) M ostrar letra de una posicin
g) Terminar
Observe que las opciones del men estn dadas con letra y el usuario podr usar maysculas y minsculas de forma
indistinta para seleccionar la opcin deseada.
El men deber estar ciclado y slo podr terminar cuando el usuario seleccione la opcin G) Terminar.

31

8/11/16

Ejercicios de Caracteres y cadenas de caracteres

Ejercicios de Caracteres y cadenas de caracteres

1) Elabore un programa que lea una palabra o frase, su programa debe validar que la palabra o frase tenga entre 5 y 20

5) Una empresa desea asignar cuentas de correo a todos sus empleados, para ello ha decidido seguir la siguiente

caracteres (incluidos). Una vez que el valor es dado correctamente ste deber desplegar la palabra al derecho y al
revs. Por ejemplo si la palabra dada es perritos su programa deber desplegar:
Palabra al derecho: perritos
Palabra al revs : sotirrep.

filosofa:
- El correo siempre ser dado en minsculas
- La primera letra del correo ser la primera letra del nombre del empleado
- Posteriormente se agregar el apellido paterno del empleado reemplazando los espacios en blanco por guiones
bajos _.

2) Elabore un programa que lea dos cadenas de caracteres, cada cadena deber tener entre 3 y 15 caracteres (valide
este hecho). Una vez ledas deber comparar ambas cadenas y decir si son iguales o diferentes.

Por ejemplo si la persona se llama Vctor Jurez su cuenta de correo deber ser vjurez, otro ejemplo si su nombre
es Salomn M ontes de Oca su cuenta de correo deber ser smontes_de_oca.

3) Elabore un programa que lea una cadena de caracteres que tenga entre 3 y 15 letras (valide este hecho). Una vez
leda la palabra despliegue dicha palabra en maysculas y en minsculas.

6) Repita el ejercicio anterior y ahora reemplace las cocales con acento por vocales sin acento y las por n.

4) Elabore un programa que despliegue el siguiente men:


a) Indicar la palabra
b) M ostrar la palabra
c) M ostrar la palabra al revs
d) M ostrar vocales
e) M ostrar consonantes

7) Elabore un programa que solicite los siguientes datos de una persona:


- Nombre (hasta 30 cracteres)
- Apellido Paterno (hasta 30 caracteres)
- Apellido M aterno (hasta 30 cracteres)
- Da de nacimiento (entre 1 y 31)
- M es de naciemiento (entre 1 y 12)

f) M ostrar letra de una posicin


g) Terminar

- Ao de nacimiento (de cuatro dgitos forzoso)


Con estos datos determine el RFC de la persona.

Observe que las opciones del men estn dadas con letra y el usuario podr usar maysculas y minsculas de forma
indistinta para seleccionar la opcin deseada.
El men deber estar ciclado y slo podr terminar cuando el usuario seleccione la opcin G) Terminar.

Archivos de Texto
Un archivo se define como una coleccin de datos organizados y almacenados de forma
sistmica, con una estructura y un orden claramente definidos. Para un mejor manejo de la
informacin un archivo se organiza en campos y registros claramente delimitados.
Por ejemplo, archivo de alumnos:

Archivos de Texto

M atrcula

Nombre

Direccin

1180001

Juan Prez

M orelos# 101

5-22-22-22

1180002

Pedro Lpez

Hidalgo # 305

3-11-11-21

1180003

Pedro M orales

Jurez # 1205

3-15-32-21

Campo

Campo

Campo

Telfono

Registro
Registro
Registro

Campo

En este caso tenemos el archivo alumnos que consta de CUATRO CAMPOS y TRES
REGISTROS.
Un Campo: Se refiere a un dato en particular de algunos de los registros.
Un Registro: Se refiere a TODOS los datos de una de las entidades de nuestro archivo

Archivos de Texto

Archivos de Texto

Para poder crear y manipular un archivo es MUY IMPORTANTE tener clara la ESTRUCTURA y
el ORDEN del mismo.

Cuando hablamos de orden nos referimos a la posicin que ocupa un campo dentro del
archivo, es decir, en este caso sabemos que el PRIMER CAMPO es la matrcula, el segundo el
nombre etc ES MUY IMPORTANTE conocer y respetar este orden, de lo contrario
podramos estar leyendo el apellido materno en la posicin de la matrcula o confundir el
valor de cada campo.

Cuando hablamos de estructura nos referimos a la cantidad de campos, tipo y tamao de


cada uno los campos, por ejemplo:
char mat[16];
char nom[31];
char ap[31];
char am[31];
char carrera[5];
char correo[31];
Es este caso estamos definiendo la estructura de un archivo, indicando que ste tendr 6
campos y definiendo el tipo y tamao de cada uno de ellos.

char mat[16];
char nom[31];
char ap[31];
char am[31];
char carrera[5];
char correo[31];

char nom[31];
char mat[16];
char am[31];
char correo[31];
char carrera[4];
char ap[31];

En los dos ejemplos anteriores tenemos DOS ESTRUCTURAS DIFERENTES, aunque se trata
del mismo nmero de campos y del mismo tipo y tamao para cada uno de ellos tenemos
un ORDEN DIFERENTE, lo que hace una diferencia en la estructura.

32

8/11/16

Archivos de Texto
Los pasos para crear y manipular un archivo en C son los siguientes:
1) Incluir la librera <fstream> (OJO!! No lleva .h)
2) Indicar que adems de la librera vamos a usar utileras del namespace, esto se hace
con la instruccin using namespace std;
3) Crear una variable, que en realidad es un objeto, con la que se manipular la
informacin del archivo, esto se hace:
ifstream variable; // Se usa ifstream si vamos a LEER informacin del archivo
ofstream variable; // Se usa ofstream si vamos a GRABAR informacin en el archivo
4) Ligar el objeto creado en el paso anterior, con el archivo que se crea en nuestra carpeta:
variable.open(archivo.txt,ios::in);
Analicemos parte por parte esta instruccin
variable.open: Indicamos que deseamos abrir nuestro archivo y que vamos a controlar sus
operaciones (lectura / escritura) mediante el objeto variable.
archivo.txt: Es el nombre del archivo, tal como se ver en las carpetas de mi computadora.

Archivos de Texto
variable.open(archivo.txt,ios::in);
ios: Define el tipo de entrada/salida del archivo (input/outpu system), en este caso de indico un in, pero que significa
esto????
Los posibles valores que puede tomar el ios son:
in: Cuando vamos a leer informacin del archivo, OJO!!! En este caso el objeto debi ser creado con ifstream. Debe
haber coincidencia para que mi programa pueda compilar.
app: Append, sirve para grabar informacin en el archivo, en este caso el objeto debi ser creado con ofstream.
Paso 5: M anipular la informacin del archivo:
Para Grabar:
variable <<mat << <<nom << <<ap << <<am << <<carrera << <<correo<<\n;
Para Leer:
variable >>mat >>nom >>ap >>am >>carrera >>correo;
Paso 6: Cerrar nuestro archivo
variable.close();

Archivos de Texto
Es seguro que todo lo anterior queda ms claro con un ejemplo, suponga el siguiente
cdigo:

Veamos la funcin que nos permite grabar los datos en el archivo:


void grabar_datos()
{

# include <stdio.h>
# include <conio.h>
# include <fstream>

ofstream arch;
arch.open(alumnos.txt,ios::app);
arch <<mat << <<nom << <<ap << <<am <<\n;
arch.close();

using namespace std;

//Creamos el objeto con of porque vamos a grabar


//Abrimos con ios app porque vamos a grabar
//Grabamos la informacin
//Cerramos el archivo

char mat[10], nom[31], ap[31], am[31];

Con estas instrucciones hemos grabado la informacin capturada por el usuario en la


funcin pide_datos() a nuestro archivo alumnos.txt.

void pide_datos()
{
printf(Indica
printf(Indica
printf(Indica
printf(Indica

Archivos de Texto

la matricula : ); gets(mat);
el nombre
: ); gets(nom);
al ap. Paterno : ); gets(ap);
al ap. M aterno : ); gets(am);

Cabe mencionar que si el archivo alumnos.txt no existe, entonces ser creado ya que
hemos abierto con ios app.

En esta funcin slo estamos leyendo la informacin que deseamos GRABAR en nuestro
archivo y la estamos guardando en variables. En este punto ya tenemos definida la
estructura del archivo.

Archivos de Texto
Ahora vamos a leer informacin del archivo de alumnos, supongamos que deseamos listar el
contenido de todo el archivo:

Archivos de Texto
Integremos un ejemplo completo que presentaremos en diferentes funciones y cada funcin
estar en una diapositiva.

# include <stdio.h>
# include <conio.h>
# include <fstream>
using namespace std;
char mat[10], nom[31], ap[31], am[31];

# include <stdio.h>
# include <conio.h>
# include <fstream>

void lista_archivo()
{
ifstream arch;
arch.open(alumnos.txt,ios:in);
if (arch.fail())

char mat[10], nom[31], ap[31], am[31];

using namespace std;

// Creamos la variable con if porque vamos a leer


// Abrimos el archivo con in porque vamos a leer
//Verifica la existencia del archivo ya que al leer el archivo NO se crea

void altas()
{
printf(Indica
printf(Indica
printf(Indica
printf(Indica

printf(Error, el archivo indicado NO existe );


}
else
{
while(!arch.eof())

// M ientras NO se termine el archivo

{
arch >>mat >>nom >>ap >>am;
// Lectura de cada resgistro
printf(%s %s %s %s\n,mat,nom,ap,am); // Se despliega la informacin leda en el archivo
}
arch.close();

// Funcin que graba en el archivo


la matricula : ); gets(mat);
el nombre
: ); gets(nom);
al ap. Paterno : ); gets(ap);
al ap. M aterno : ); gets(am);

ofstream arch;

//Creamos el objeto con of porque vamos a grabar

arch.open(alumnos.txt,ios::app);
arch <<mat << <<nom << <<ap << <<am <<\n;
arch.close();

//Abrimos con ios app porque vamos a grabar


//Grabamos la informacin
//Cerramos el archivo

}
}

33

8/11/16

Archivos de Texto
void consulta()

// Funcin que solicita una matrcula y la busca en el archivo

{
char mat_busca[10];
printf(Indica la matricula a buscar

Archivos de Texto
void lista_archivo()

// Funcin que lista el contenido del archivo

{
ifstream arch;
arch.open(alumnos.txt,ios:in);
if (arch.fail())
{
printf(Error, el archivo indicado NO existe );

: ); gets(mat_busca);

ifstream arch;
arch.open(alumnos.txt,ios::in);

}
else
{
while(!arch.eof())
{
arch >>mat >>nom >>ap >>am;
printf(%s %s %s %s\n,mat,nom,ap,am);
}
arch.close();
}

while(!arch.eof())
{
arch >>mat >>nom >>ap >>am;
if (strcmp(,mat,mat_busca==0)
{
printf(Nombre
: %s,nom);
printf(Ap. Paterno : %s,ap);
printf(Ap. M aterno : %s,am);
getche();
}
}

arch.close();
}

Archivos de Texto
void lista_archivo()

// Funcin que lista los alumnos con un apellido determinado

Ejercicios de Archivos de Texto


1)

Suponga que ya existe un archivo con el nombre autos.txt, dicho archivo tiene la siguiente estructura:

{
char ap_listar[31];
printf(Indica el apellido a listar : ); gets(ap_listar);
ifstream arch;
arch.open(alumnos.txt,ios:in);
if (arch.fail())

char placas[8], marca[21], tipo[21], anio[5];

marca (lista filtrada)

Elabore un programa que liste todo el contenido de dicho archivo de forma ordenada en pantalla.
2) Repita el ejercicio del punto anterior, pero en esta ocasin pida una marca y liste slo los registros que tengan dicha

printf(Error, el archivo indicado NO existe );


}
else
{
while(!arch.eof())
{
arch >>mat >>nom >>ap >>am;
if (strcmp(ap,ap_listar)==0)
{
printf(%s %s %s %s\n,mat,nom,ap,am);
}

3) Elabore el programa que le permita solicitar unas placas y mostrar en pantalla los datos correspondientes a dichas
placas, en caso de que las placas indicada por el usuario no existan, deber mostrar en pantalla un letrero que indique
este hecho.
4) Elabore un programa que solicite los datos del punto 1 y que valide los siguientes aspectos:
- Las placas deben tener EXACTAM ENTE 7 caracteres (no valide si son nmeros o letras)
- Verifique que las placas no se dupliquen en el archivo
- La marca debe tener al menos un carcter y mximo 20 caracteres
- El modelo debe tener al menos un carcter y mximo 20 caracteres
- El ao debe tener EXACTAM ENTE 4 dgitos, valide que slo sean nmeros

}
arch.close();

Una vez que TODOS los datos son proporcionados correctamente, debe grabar la informacin en el archivo autos.txt

}
}

5) Elabore un programa que solicite una marca, este programa debe estar ciclado y slo podr terminar cuando el
usuario ingrese la palabra fin. El usuario puede ingresar la palabra todas, en este caso se debern desplegar todos los
registros contenidos en el archivo, de lo contrario su programa deber listar slo los registros que tengan la marca
ingresada por el usuario, en caso de que dicha marca NO exista su programa deber desplegar un mensaje de error.

Ejercicios de Archivos de Texto


6) Elabore un programa que despliegue el siguiente men
a. Alta de productos
b. Consultar producto por clave
c. Listar todos los productos
d. Listar productos de una familia
e. Listar productos en rango de existencia
f. Terminar
Observe que el men es con letras, debe estar ciclado y slo podr terminar cuando el usuario seleccione la opcin f)
Terminar.
La estructura del archivo productos.txt es la siguiente:
char clave[4], nombre[21], familia[21];
int existencia;
a.

Alta de productos

Ejercicios de Archivos de Texto


b. Consultar productos por clave
Debe solicitar una clave de producto y validar:
- Que la clave tenga EXACTAM ENTE tres caracteres
- Que la clave exista en el archivo
Si la clave SI existe se deben desplegar los datos correspondientes a este producto
c. Listar todos los productos
Debe mostrar todos los datos de todos los productos que se encuentren en el archivo
d. Listar productos de una familia
Debe solicitar una familia y validar:
- Que la familia tenga entre 1 y 20 caracteres
- Que la familia exista en el archivo
Deber listar SOLO aquellos productos que pertenezcan a la familia indicada (lista filtrada)
e. Listar productos en rango de existencia
Debe solicitar un valor inicial del rango, el cual debe ser mayor o igual que cero.

Esta opcin permitir grabar nuevos productos en el archivo validando los siguientes aspectos:
- La clave debe tener tres caracteres (nmeros o letras)

Debe solicitar un valor final del rango el cual debe ser mayor que cero y mayor o igual que el rango inicial
Una vez que tenga ambos valores del rango, deber mostrar los productos cuya existencia este dentro de dichos

valore, incluidos los lmites.

Debe verificar que la clave del producto NO se duplique en el archivo


Validar que el nombre del producto tenga entre 1 y 20 caracteres
Validar que la familia tenga entre 1 y 20 caracteres
Validar que la existencia sea mayor o igual que CERO

Cuando todos los datos sean correctos la informacin se debe grabar en el al archivo productos.txt

34

Anda mungkin juga menyukai