Programacin Estructurada
en C
Programacin
Pasos de la programacin
Programacin
Problema
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
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
Codificacin
Puesta en
Operacin
Pruebas
Programacin
Mantenimiento
Programacin
Puesta en
Operacin
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:
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
Salidas: Se refiere a los resultados que se espera que mi programa muestre despus de
hacer los clculos u operaciones necesarias.
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
8/11/16
Lenguajes de Programacin
Lenguajes de Programacin
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
Seccin de libreras
Seccin de Instrucciones
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()
{
x=10;
y=10;
r=x+y;
printf(El resultado es: %d,r);
getche();
Libreras
# include <stdio.h>
# include <conio.h>
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
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
int
Int x;
long int
%d
float
float x;
x=10;
bool
%d
float
float x;
x=1.03;
char
%c
double
double x;
float
%f
char
char x;
x=1;
double
%f
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:
Seccin de libreras
Seccin de Instrucciones
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);
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:
******* ******* *
* * *
* * *
******* * *
* * *
* * *
******* * *
********* *** * *
8/11/16
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
# include <stdio.h>
# include <conio.h>
long int
Universo de valores
%d
int x;
bool
%d
main()
{
char
%c
float
%f
double
%f
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();
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
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.
****************
10
20
30
40
50
68
86
104
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
long int
%d
bool
%d
char
%c
float
%f
double
%f
Universo de valores
scanf
scanf
# 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
Instruccin 1
Instruccin 2
Instruccin 3
Instruccin 4
Instruccin N
Estatutos de Control
En
este
caso
tenemos
la
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
11
8/11/16
Estatutos de Control
Estatutos de Control
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:
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
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
Estatuto de control if
Estatuto de Control if
Primera Parte
Estatuto de control if
Estatuto de control if
Estatuto de control if
En espaol
Con if
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
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.
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
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
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:
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:
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
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
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
Verdadero
Verdadero
Falso
Falso
Verdadero
Verdadero
Falso
Falso
Verdadero
Falso
Verdadero
Falso
Verdadero
Falso
Falso
Falso
Verdadero
Falso
Verdadero
Falso
Verdadero
Verdadero
Verdadero
Falso
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.
CONECTORES LGICOS
16
8/11/16
Estatuto de control if
Estatuto de control if
____
(a == b)
( a != c) O (a == c)
((a >b) Y (b<c)) O (c>a)
F
V
?
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.
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))
____
____
____
____
____
Estatuto de control if
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)
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
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
$ 1,200 pesos
$ 250 pesos
$ 150 pesos
$ 600 pesos
$ 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.
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
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
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
1)
2)
3)
4)
5)
6)
7)
19
8/11/16
gf =((gc*9)/5)+32;
printf(%d %d,gc,gf);
gc=gc+10; //La variable de control cambia de valor dentro del ciclo
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
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;
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();
}
}
printf(VALOR CORRECTO);
getche();
1)
2)
3)
4)
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
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
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)
op=0;
while (op!=5)
{
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
Instruccin for
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:
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--)
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:
void error()
{
printf(Error, valor fuera de rango );
getche();
}
main()
{
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
// 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()
{
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 ().
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
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:
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);
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
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()
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
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.
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
arr
int arr[5]={-2,3,0,1,7};
En el mismo momento de crear el arreglo estamos
-2
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
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:
arr
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
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
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
-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:
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
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.
lista_men_may()
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()
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.
x=a; //En este caso estamos diciendo que la variable x tomar el valor de la variable a.
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.
29
8/11/16
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.
palabra
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.
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
perro
gato
perro y gato
30
8/11/16
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
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???
31
8/11/16
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.
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.
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:
# include <stdio.h>
# include <conio.h>
# include <fstream>
ofstream arch;
arch.open(alumnos.txt,ios::app);
arch <<mat << <<nom << <<ap << <<am <<\n;
arch.close();
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())
void altas()
{
printf(Indica
printf(Indica
printf(Indica
printf(Indica
{
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();
ofstream arch;
arch.open(alumnos.txt,ios::app);
arch <<mat << <<nom << <<ap << <<am <<\n;
arch.close();
}
}
33
8/11/16
Archivos de Texto
void consulta()
{
char mat_busca[10];
printf(Indica la matricula a buscar
Archivos de Texto
void lista_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()
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())
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
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.
Alta de productos
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
Cuando todos los datos sean correctos la informacin se debe grabar en el al archivo productos.txt
34