Sunteți pe pagina 1din 122

UNIDAD 1: C++ ELEMENTOS BASICOS

TEMA 1: C++ INTRODUCCION

Los nuevos sistemas de informacin son costosos en tiempos y recursos, la solucin moderna de sistemas de
informacin exigen nuevas herramientas y metodologas para resolver rpida, econmica y eficiente los problemas
de informacin planteados por las organizaciones.
Aun mas el pleno potencial del hardware no es aprovechado plenamente y existe un considerable retraso con el
software y sus aplicaciones, generando lo que se conoce como crisis del software.
En programacin tradicional, modular o estructurada un programa describe una serie de pasos a ser realizados para
la solucin de un problema, es decir es un algoritmo, en particular este modelo de programacin se us mucho para
generar programas o aplicaciones en ambientes pc's y con consolas, es decir el programa se ejecutaba en una
consola de msdos por ejemplo, y el programa o aplicacin se tena que portar fsicamente a otras pc's, al final de su
ciclo de vida de este modelo se haba mejorado y ya era posible que se ejecutara en alguna ventana-consola de
ambientes Windows, con mejor interfase como fonts, colores, background, etc.
En programacin orientada a objetos ( OOP ) un programa es considerado como un sistema de objetos
interactuando entre s, ambientes de desarrollo visuales facilitan aun ms la construccin de programas y solucin
de problemas, porque permiten abstraer al ingeniero de software de todo el GUI (interfase grfica) del problema, que
constituye ms del 60% del cdigo normal de un programa, en general este ambiente permiti una mejora en la
interfase del programa con el usuario de la aplicacin ya que en este caso solo se manejaban formas o ventanas
llenas de componentes o controles especializados en alguna tarea especifica.
A este modelo de programacin o construccin de programas los compiladores modernos se adaptaron rpidamente
y tenemos aplicaciones fantsticas, en donde alguna forma o ventana esta llena de controles visibles e invisibles
que realizan muchas tareas donde adems de los componentes o controles que proporciona directamente el
compilador cuando se instala, existen miles de controles o componentes extras en muchas partes del mundo
realizados por programadores talentosos y que enriquecen el contenido de nuestros programas y aplicaciones
visuales.
Al principio estas aplicaciones, se construan pensando en que se ejecutaban en una PC con ambiente grafico o en
una serie de pc's prximas fsicamente sin embargo el rpido avance de las redes dentro de las empresas u
organizaciones conllevan a que los fabricantes de compiladores cada vez incluyeran mas y mas controles o
componentes que permitan ejecutar el programa o aplicacin simultneamente en una red de pc's.
Sin embargo cuando se habla de redes actuales estamos hablando de la red de redes (Internet) y si en redes
internas o intranets el retraso en el tiempo de comunicacin entre sus pc's internas y la cantidad de informacin a
trasmitir entre las mismas no es algo muy importante o inmanejable, este problema de tiempo de transmisin y
cantidad de informacin, si es un factor muy importante cuando se pretende construir programas o aplicaciones que
deban compartirse o usarse por muchas pc's conectadas a Internet, desgraciadamente como factor externo que es,
no esta bajo control de la empresa o del programador.
C o C++ , son los compiladores que permiten usar cualquiera de los tres enfoques en la solucin de problemas de
informacin que puedan y deban ser resueltos empleando el computador y el lenguaje aunque se repite este curso
esta enfocado al primer modelo.

TEMA 2: MODELO DE SOLUCION C++

En general un problema de informacin es posible entenderlo, analizarlo y descomponerlo en todos sus


componentes o partes que de una u otra manera intervienen tanto en su planteamiento como en su solucin.
Una herramienta rpida que nos permite descomponer en partes un problema para su solucin, es el llamado
modelo de solucin, este consiste de una pequea caja que contiene los tres elementos ms bsicos en que se
puede descomponer cualquier problema sencillo de informacin, estas tres partes son:
1. LA PRIMERA PARTE son todos los datos que el computador ocupa para resolver el problema, estos datos son
almacenados internamente en la memoria del computador en las llamadas variables de entrada.
2. LA SEGUNDA PARTE son todas las operaciones generalmente algebraicas necesarias para solucionar el
problema, generalmente esta parte del modelo es una formula (o igualdad matemtica, ej. X= y + 5).
3. LA TERCERA PARTE es el resultado o solucin del problema que generalmente se obtiene de la parte de
operaciones del modelo y dichos datos estn almacenados en las llamadas variables de salida.
En resumen para todo problema sencillo de informacin es necesario plantearse las siguientes preguntas:
Que datos ocupa conocer el computador para resolver el problema y en cuales variables de entrada se van a
almacenar ?
Que procesos u operaciones debe realizar el computador para resolver el problema planteado.
Que informacin o variables de salida se van a desplegar en pantalla para responder al problema planteado
originalmente?
Como nota importante no confundir los trminos datos, variables e informacin;
Datos se refiere a informacin en bruto, no procesada ni catalogada, por ejemplo Tijuana, calle primera # 213,15
aos, $2,520.00, etc.
Variables es el nombre de una localidad o direccin interna en la memoria del computador donde se almacenan los
datos, ejemplo de variables para los casos del inciso anterior, CIUDAD, DIRECCION, EDAD, SUELDO, ETC.
Informacin son datos ya procesados que resuelven un problema planteado.
EJEMPLO DE MODELO DE SOLUCIN
1. Construir un modelo de solucin que resuelva el problema de calcular el rea de un tringulo con la formula rea
igual a base por altura sobre dos.
Variable(s) de Entrada Proceso u Operacin Variable(s) de Salida
BASE AREA= BASE * ALTURA / 2 AREA
ALTURA
2. convertir la edad en aos de una persona a meses.
3. convertir pesos a dlares.

4. calcular el rea de un circulo con la formula

5. evaluar la funcin

para cualquier valor de x.

Observar para el caso de constantes fijas o conocidas (PI) no se debe dar como dato de entrada su valor, en cambio
colocar directamente su valor dentro de la formula, en la parte de operaciones del problema.
Pero recordar tambin que existirn problemas sencillos donde:
No se ocupan entradas o no se ocupan operaciones, pero todos ocupan salida.
Una formula grande o muy compleja puede ser ms segura y fcil de resolver, si es descompuesta y resuelta en
partes, juntando al final los parciales para obtener el resultado final.
Un problema puede tener ms de una solucin correcta.
El problema no esta suficientemente explicado o enunciado, entonces, estudiarlo, analizarlo y construirlo de manera
genrica.
TAREAS PROGRAMACION C++
Construir los modelos de solucin de los siguientes problemas:
6. Convertir millas a kilmetros (caso normal)
7. Convertir 125 metros a centmetros (no ocupa entradas)
8. Se calcula que en promedio hay 4.7 nidos en cada rbol en la UABC, tambin se calcula que en cada nido existen
un promedio de 5.8 pjaros, se pide calcular la cantidad total de nidos y de pjaros en los 227 rboles que existen
en la UABC. (no ocupa entradas)
9. La gorda Sra. Lpez y sus 8 hijos solo compran una vez al mes su mandado en conocido supermercado, en dicha
tienda el kilogramo de frjol cuesta $8.75, el paquete de tortillas cuesta $3.55 y el frasco de caf vale $14.25, si solo
compran de estos tres productos para su mandado, calcular su gasto total. (Problema no claro)
10. Capturar y desplegar los cinco datos ms importantes de un automvil (no ocupa operaciones)
11. La distancia Tijuana - Ensenada es de 110 kilmetros. Si un automvil la recorre a una velocidad constante de
30 millas por hora, cuanto tiempo tarda en llegar. ( 1 milla = 1.609 Km.) (dos maneras correctas de resolverlo).
12. Evaluar la funcin
13. Evaluar la funcin

para cualquier valor de x. (caso normal).


para cuando x vale 4. (no ocupa entradas).

14. Evaluar el factorial de cualquier numero usando la formula: n!=n!-1


15. La distancia que recorre un auto es de 50 Km. y su velocidad es de 30 millas por hora .Cuanto tiempo tardara
en llegar?
16. Encontrar la derivada de x para cualquier valor con la formula(d/dx(x)=1)

17. Calcular l inters que gana un capital de x pesos a una tasa de inters del 15% anual en un periodo de n aos.
18. Que aceleracin tiene un tren que parte de Tijuana a 10 Km./hr y pasa por ensenada una hora despus a 50
Km./hr.
19. Calcular el nmero de aulas en una escuela que tiene 10 edificios y cada edificio 3 pisos y cada piso 5 aulas,
excepto un edificio que solo tiene dos pisos.
20. Si en una escuela hay 30 maestros y 15 son hombres que atienden a 10 alumnos cada uno. Cuantas maestras
hay?
21. Calcular la corriente de un circuito con un voltaje de 15v y una resistencia de 6 ohms. Formula (I= V/R)
22. Calcular la normal estndar (z) dados los datos por el usuario: X=dato, =media, d=desviacin. Formula (Z = XM / d)
23. Dado un numero(N) cualesquiera obtener su raz y potencia cuadrada.
24. Determinar la media de 5 nmeros diferentes.
25. Determinar la velocidad v requerida para recorrer una distancia d en un tiempo t . Formula (V = d * t)
26. Determinar la pendiente de una recta. Formula (y = m x + b)
27. Calcular la funcin de y= x + 8x + 3 para cualquier x
28. Convertir minutos a horas.
29. Aplicar la formula general para a=1, b=2, c=3.
30. Se desea instalar un cable de red, el cliente pide 30 pies, considerando que se venden en metros, cuantos
deber comprar.
31. Un campesino siembra trigo en un rea cuadrada de 25 mts., cual es el largo del cerco frontal en cms.?
32. Resolver x + 15x - 8 para cualquier variable (X).
33. Convertir C a F.
34. Si cada saln de la escuela tiene 40 alumnos y son 30 salones Cuantos alumnos son en toda la escuela?
35. Si Juan trabaja 5 das a la semana y descansa 2 Cuantos das trabajo en 4 aos?
36. Si en una oficina se procesan 20 facturas cada 10 minutos cuantas se procesaran si se trabajan 5 horas?
37. Si una empresa tiene _ de activo y un pasivo de _ Cual es su capital?. Formula (C = A-P)
38. Calcule el voltaje de un circuito dada una intensidad I y una resistencia R. Formula (V=IR)
39. Calcule la frecuencia de una onda que circula con un tiempo t. Formula (F=1/t)
40. Calcule la potencia de un circuito con un voltaje V y una intensidad I. Formula (f = VI)

41. Calcule el total que tendr que pagar una persona que va al cine dependiendo del no. de boletos a comprar y el
precio.
42. Calcule las anualidades que tendr que pagar una persona que pidi un prstamo. Dependiendo del tiempo que
el elija y el inters por ao. Formula (Anualidad=(Prstamo/Tiempo)+inters)
43. Determinar cuanto ganara una persona en base a las horas trabajadas. Tomando en cuenta el pago por hora.
44. Convertir horas a segundos.
45. Calcular la fuerza. Formula (fuerza = trabajo / tiempo)

TEMA 3: VARIABLES C++

Identificadores son conjuntos de letras y/o nmeros que se utilizan para simbolizar todos los elementos que en un
programa, son definibles por el usuario (programador o ingeniero de software) del mismo, como son las variables
donde se almacenan datos, funciones ( pequeos mdulos con cdigo), etiquetas, clases, objetos, etc.
En C++ un identificador es una palabra compuesta de letras y/o nmeros de hasta 32 caracteres significativos,
empezando siempre con una letra.
Una variable se define como un identificador que se utiliza para almacenar todos los datos generados durante la
ejecucin de un programa.
Existen ciertas reglas en cuanto a variables:
Claras y con referencia directa al problema.
No espacios en blanco, ni smbolos extraos en ellas.
Se pueden usar abreviaturas, pero solo de carcter general.
No deben ser palabras reservadas del lenguaje.
Ejemplos de buenas variables:
Nombre, Edad, SdoDiario, IngMensual, Permetro, Calif1, etc.

TEMA 4: TIPOS DE DATOS C++

A toda variable que se use en un programa, se le debe asociar (generalmente al principio del programa) un tipo de
dato especfico.
Un tipo de dato define todo el posible rango de valores que una variable puede tomar al momento de ejecucin del
programa y a lo largo de toda la vida til del propio programa.
Los tipos de datos ms comunes en C++ son:
TIPO DATO ESPACIO MEMORIA RANGO
unsigned char 8 bits 0 a 255
char 8 bits -128 a 127
short int 16 bits -32,768 a 32,767
unsigned int 32 bits 0 a 4,294,967,295
int 32 bits -2,147,483,648 a 2,147,483,647
unsigned long 32 bits 0 a 4,294,967,295
enum 16 bits -2,147,483,648 a 2,147,483,647
long 32 bits -2,147,483,648 a 2,147,483,647
float 32 bits 3.4 x 10-38 a 3.4 x 10+38(6 dec)
double 64 bits 1.7 x 10-308 a 1.7*10+308(15 dec)
long double 80 bits 3.4 x 10-4932 a 1.1 x 10+4932
void sin valor
Para manejar cadenas de caracteres (strings), se deber usar un arreglo de caracteres con el siguiente formato.
Char nomstring[cant de elementos];
Ejemplo
Char nombre[30];
Char ciudad[20];
Para cargar con un dato se usa el siguiente cdigo;
strcpy(carrera,ing sistemas);

Variables arreglos de caracteres, tienen que usar sus funciones de manipulacin que vienen en la librera string.h,
algunas de estas funciones son: strcpy(), strcat(), strcmp(), strlen(), etc.
TEMA 5: C++ OPERADORES ARITMETICOS

Un operador es un smbolo especial que indica al compilador que debe efectuar una operacin matemtica o lgica.
C++ reconoce los siguientes operadores aritmticos:
Operador Operacin
+ SUMA
- RESTA
* MULTIPLICACION
/ DIVISION
% MODULO O RESIDUO
Como notas importantes a recordar siempre;
En problemas de divisin entre enteros, C++ trunca la parte residual, es decir;
</code> rea de declaracin de variables float a; rea de operaciones
a = 10 / 4;
rea de despliegue de resultados desplegar a; En pantalla sale ( 2.000000 ) </code> El problema no es el tipo
float, sino que por definicin de la divisin entre enteros C++ siempre trunca la parte residual, mas adelante se
indica como se resolver este problema. El operador (%) devuelve el residuo entero de una divisin entre enteros,
ejemplo; <code> rea de declaracin
int alfa;
rea de operaciones alfa = 23 % 4; rea de despliegue
desplegar alfa; El resultado en pantalla es 3
Otro ejemplo;
alfa = 108 % 10;
desplegar alfa; El resultado en pantalla es 8
</code>
Para resolver los problemas de potencias y races, se usan ciertas instrucciones especiales que proporciona el
lenguaje, llamadas funciones matemticas, en C++ existe toda una librera de instrucciones o funciones
matemticas.

Recordar que todas las funciones reciben uno o ms datos o valores y regresan siempre un resultado, una de estas
funciones matemticas es:
#include <math.h>
double pow(double base, double exp);
Esta funcin ocupa dos valores o datos( base y exp) ambos de tipo double, y regresa un resultado tambin de tipo
double, ejemplo;
Resolver el problema de calcular
#include <math.h>
// rea de declaracin de variables
double base, exponente, potencia;
// rea de asignacin o carga o inicializacin de
// variables
base=5;
exponente=3;
// rea de operaciones
potencia =pow( base, exponente);
// Despliegue
desplegar potencia; -> El resultado en pantalla es 125.000000000

Para resolver el problema de races, se aprovecha una de las ms elementales y conocida de las leyes de
exponentes que dice:

Es decir una raz cualquiera se puede transformar a una potencia con un exponente fraccionario.
Ejemplo:
Problema <m> y = 3sqrt{x} </m> esto es equivalente a

entonces usando funcin pow

y= 3*pow(x, 0.5);
En este ejemplo se esta dando por supuesto que no interesa el tipo de dato que requiere la funcin pow() para
trabajar correctamente

RESUMEN: En C++ se pueden resolver con la ayuda de estos operadores toda clase de problemas, ya sean
financieros, algebraicos de negocios, contables, etc
TEMA 6: OPERADOR CAST C++

Se puede forzar un dato, variable o una expresin a convertirse o cambiarse a un nuevo tipo de dato.
El operador cast realiza este proceso, es decir convierte datos, variables o expresiones a un nuevo tipo de dato, su
formato es:
nvotipo (dato , var, exp);
Ejemplo:
// declaracin
int alfa;
// Asignacin
alfa=20;
// Cambio de tipo
float (alfa);

Ejemplo:
int (3.1416);

En este ejemplo se est convirtiendo un float a int, recordar que en este caso ya no se tendrn los decimales.
Como nota importante este operador resuelve los dos problemas pendientes:
1. El de la divisin entre enteros.
2. El tipo de dato especifico que requieren las funciones.
Ejemplos:
a) // Declaracin
float alfa;
// Operacin
alfa = float (23)/5;

// Pero en estos casos es preferible


alfa=23/5.0;

En toda divisin recordar agregar a uno de los dos valores el (.0), solo que los dos elementos sean variables
entonces usar el operador cast con una de ellas.
b)// Declaracin
double potencia;
// Operacin
potencia = pow ( double (5), double (3));

Como se observa en el ejemplo, se puede usar pow(), directamente con los datos, argumentos o parmetros
requeridos , si estos son numricos, pero transformndolos con el operador cast.
Esto tambin va a permitir evaluar expresiones matemticas de manera ms directa y sencilla, solo recordando usar
un pow () por cada potencia y cada raz de la ecuacin, ejemplo:
Sea

dentro de un programa esto se resuelve con;

// rea de declaracin de variables


double y, x;
// rea de captura de datos
capturar el valor de x;
// rea de operaciones
y = 3 * pow(x, double (3)) - pow(x, (1/3.0)) + 4 * pow(x, double(2) );
// rea de despliegue de resultados
desplegar x, y

TAREAS PROGRAMACION C++ POW():


1.
2.

3.
TEMA 7: C++ JERARQUIA DE OPERACIONES

El problema de no tomar en cuenta la jerarqua de los operadores al plantear y resolver una operacin casi siempre
conduce a resultados muchas veces equivocados como estos:
Ejemplos:

2+ 3* 4 = 20(incorrecto)
= 14 (correcto)

b) si calif1=60 y calif2=80 y si entonces en programa se usa


promedio=calif1 + calif2/2
la PC dara como resultado promedio = 100

Recordar siempre, que antes de plantear una formula en un programa se deber evaluar contra el siguiente:
Orden de operaciones:

1.- Parntesis
2.- Potencias y races
3.- Multiplicaciones y divisiones
4.- Sumas y restas
5.- Dos o ms de la misma jerarqua u orden, entonces resolver de izquierda a derecha

Nota: Si se quiere alterar el orden normal de operaciones, entonces usar parntesis.


Nota: Tampoco es bueno usar parntesis de ms en una operacin, esto solo indica que no se evalo bien la
formula, como en el siguiente ejemplo;

aqu los parntesis estn de ms, porque por orden de operaciones, multiplicacin y divisin tienen la misma
jerarqua y entonces se resuelven de izquierda a derecha, en otras palabras ni que falten parntesis ni que sobren
parntesis.
TEMA 8: COMPILADOR C++

Para poder construir programas o aplicaciones se usara el compilador turbo++ que se encuentra en la siguiente
direccin de Internet.
http://community.borland.com/museum/
El compilador tiene el nombre de:
Antique Software: Turbo C++ version 1.01
Bajarlo, descomprimirlo en un flder o subdirectorio temporal, dentro se encontraran tres folders llamados disk1,
disk2, disk3, copiar el contenido de disk2 y disk3 al flder disk1, luego correr un programa llamado install, esto
creara un nuevo flder en el disco duro llamado tc, que ya contendr nuestro compilador a usar.
Para correr el compilador y el editor de programas que trae integrado, solo abrir una sesin de msdos prompt en la
barra de start de Windows y luego navegar al directorio tc\bin con la orden:
cpp:\CD TC\BIN
Luego cargar el compilador con la orden:
cpp:\TC\BIN\TC
Deber mostrarse la siguiente pantalla con el editor:

Recordar que dentro de este compilador no funciona el ratn o Mouse, todas las opciones se cargan con la tecla
ALT y la letra en rojo correspondiente, tambin se podrn usar las teclas de flechas del teclado para navegar por las
opciones de los mens.
TEMA 9: APLICACIONES C++

Prog1.cpp
</code>
#include <stdio.h>
void main()
{
area declaracin variables int base1, altura; float area; area captura de datos
printf(dame base:);
scanf(%d,&base1);
printf(dame altura:);
scanf(%d,&altura);
area de operaciones area=base1 * altura / 2.0; area despliegue
printf(el area es =%0.2f,area);
getchar();getchar();
}
</code>
Reglas para escribir un programa en CPP:
a) Comienza con las instrucciones #include etc y cada una de ellas es una librera de instrucciones especializadas
en tareas especificas.
b) Todas las palabras reservadas del lenguaje deben ser minsculas. (main, include, printf ,etc.)
c) Todo programa comienza con una funcin llamada void main().
d) El cuerpo de instrucciones del programa deber encerrarse entre llaves.
e) Todas las instrucciones ejecutables terminan con punto y coma.
f) Los comentarios se ponen encerrados entre /* comentario */ o // comentario
g) La declaracin de variables ocupa la primera posicin.

h) Se utiliza una instruccin llamada printf() para desplegar mensajes u otros elementos en el dispositivo de salida
estndar(pantalla).
i). Se utiliza una instruccin llamada scanf() para capturar datos desde el dispositivo de entrada estndar (teclado).
j) Se usa una instruccin getchar(); al final para detener la pantalla hasta que el usuario pulse la tecla any key para
continuar o el programa responde tan aprisa que no se alcanza a ver y se regresa al editor.
k). C es case-sensitive, es decir trata a maysculas y minsculas como caracteres diferentes.
Ya creadas y cargadas las variables normales se efectan los procesos u operaciones normales con ellas y al final
se construye una pagina normal html con los resultados.
Este programa se deber crear usando el editor del turboC y grabarlo como prog1.cpp en el flder de su preferencia,
para ejecutarlo usar la opcin RUN del propio editor.
Corrida:

INSTRUCCION PRINTF()
Es una de las ms poderosas herramientas de despliegue de datos que posee el lenguaje.
Su formato completo es:
Printf (string de control, lista de variables);
* Donde string de control puede ser:
a).- Mensaje o texto
b).- Secuencias de escape
c).- Cdigos de formato
d).- Combinacin de los tres
ejemplos;
a).-MENSAJE O TEXTO
Printf(pato)
Printf(%d, varentera);

Printf( los datos son %d %0.f %s ,varent,varfloat,varstring);


ver programa ejemplo.
Nota.- se recomienda no ms de 70 caracteres
b).-SECUENCIAS DE ESCAPE
Estas instrucciones proveen de mecanismos de control para diversas tareas, existe una gran variedad de
secuencias de escape, las ms usuales son:
\n nuevo rengln
\t tabulador horizontal
\b backspace o retroceso
\r carriage return
\a campanilla
\ despliega comillas
\` despliega apstrofe
despliega diagonal
c).- CODIGOS DE FORMATO
Estos cdigos de formatos dentro de la string de control le indican al compilador que deber sustituir en esa posicin
el valor de la variable indicada, adems se deber recordar que existe un cdigo de formato apropiado para cada
tipo de dato existente.
CODIGO TIPO DE DATO SALIDA
%d entero enteros con signo
%u Unsignedint enteros sin signo
%f Float y double pte entera y decimal
%e Float y double notacin exponencial
usando e minscula
%E Float y double notacin exponencial
usando E mayscula
%g el compilador decide
si usa f o e

%G el compilador decide
si usa f o E
%c Char un solo carcter
%s var string conjunto de caracteres
Para el caso de estos cdigos porcientos tambin es posible agregar la cantidad de entero y decimales que se
quiere que se despliegue en la salida con el siguiente formato:
%cantentero.cantdecimal carcter apropiado.
INSTRUCCION SCANF();
Esta instruccin permite que el dato entrado desde el teclado sea capturado y almacenado en la variable
correspondiente su formato completo es:
scanf(string de control, lista de variables);
cdigos de formato o cdigos %
Observar que a diferencia de printf(), scanf() solo puede llevar los cdigos % , dentro de las comillas
En el caso ms sencillo dentro del string de control se pone el porciento con el carcter apropiado al tipo de dato y
en la lista de variables una variable ya declarada de ese mismo tipo.
Se deber tener en cuenta siempre lo siguiente:
a) La cantidad de variables de lista de variables debe ser igual en cantidad que los cdigos porciento %.
b) Todas las variables de tipo numrico dentro de scanf, no de printf, debern ser precedidas del signo ampersand
(&).
EJ;
SCANF(%d, &area); >ver programa ejemplo.
c) %s en scanf solo alcanza a capturar de la string hasta el primer espacio en blanco.
d) El formato porciento en scanf y printf para tipos long int ser %ld.
e) El formato porciento para tipos doubles en scanf y printf es %lf.
TAREAS PROGRAMACION C++
CONSTRUIR 15 PROGRAMAS CUALESQUIERA DE LOS EJEMPLOS QUE ESTAN EL TEMA DEL MODELO DE
SOLUCION.

TEMA 10: OTRAS FUNCIONES DE I/O C++

CAPTURA:
A) Getchar(); Getch(); Getche();
Estas tres instrucciones estn especializadas en captura de un solo carcter y sustituyen a scanf %c en situaciones
especiales.
Estas funciones trabajan por igualacin, es decir para usarse
varchar=getchar();
ej;
char vocal;
vocal=getchar();
NOTA: DEPENDIENDO DEL SISTEMA OPERATIVO EN OCACIONES UN GETCHAR() NO ATRAPA EL
CARACTER A LA PRIMERA VEZ, EN ESTE CASO USAR MAS DE UN GETCHAR EN FORMA CONTINUA.
En este caso poner mas getchar(); despus de getchar() hasta que capture el carcter o tambin para detener la
corrida.
Getchar es una macro que lee un carcter del teclado y regresa el carcter ledo.
La diferencia es que getchar y getche devuelven el carcter ledo a la pantalla y el getch no devuelve el carcter a la
pantalla.
Estas instrucciones debern usarse en las siguientes situaciones:
a) Cuando la captura es de un solo carcter
b) tambin para retener pantallas en este caso sin igualdad
c) Para evitar los saltos en capturas, cuando se captura un entero y una string despus, es este caso es
conveniente usar una serie de getchar() para quitar el carcter de return del teclado, en particular es conveniente
usar un getchar despus de un scanf(entero) como lo muestra el ejemplo de abajo prog2.cpp
B) GETS();
Esta funcin es la alternativa para captura de strings que tengan espacios en blanco intermedios cosa que scanf %s
no puede hacer.
Su formato completo es :
gets(variable string);
DESPLIEGUE:

a) Putch(); Putchar();
Estas instrucciones despliegan directamente un carcter en el dispositivo de salida estndar.
A diferencia de getchar, getch y getche, estas instrucciones si llevan un argumento.
ejemplo;
putchar(alfa);
putchar('\n');
putchar('\064');
b) Puts(variable string);
Es la funcin complemento de gets esta funcin despliega una string en el dispositivo de salida estndar y debe
llevar el argumento o parametro.
puts(nombre);
puts(pato);
PROG2.CPP
#include <stdio.h>
void main()
{
//declaracin
int var1, var2,var3;
char var4[15], var5[15];
//captura y observar donde se ponen getchars
//unos para limpiar return y otros para parar la pantalla
printf("dame entero1:");
scanf("%d",&var1);getchar();
printf("dame string1:");
scanf("%s",&var4);
printf("dame entero2:");
scanf("%d",&var2);

printf("dame entero3:");
scanf("%d",&var3); getchar();
printf("dame string2:");
gets(var5);
//despliegue
printf("entero1 %d \n",var1);
printf("string1 %s \n",var4);
printf("entero2 %d \n" ,var2);
printf("entero3 %d \n",var3);
printf("string2 %s \n",var5);
getchar();
}
Recordar que scanf(%s) no quiere espacios en blanco, por eso es mejor usar gets(var string).
Observar que despus de un scanf(entero) que este antes de un gets(varstring) debern usar un getchar() para
quitar el return del teclado o la PC no va a capturar la string sino que va a saltarse.
El ltimo getchar es para parar o detener la pantalla.
Corrida:

TAREAS PROGRAMACION C++

Reconstruir los programas pedidos en el tema anterior usando estas instrucciones de captura y despliegue.
TEMA 11: FORMATO PANTALLA PROGRAMACION C++

#include<conio.h> librera a usar


1.- clrscr(); Limpia pantalla

ESTA INSTRUCCION NO OCUPA ACLARACION

2.- gotoxy(#de col,#de ren); posiciona cursor en lugar indicado


TIENE 24 RENGLONES Y 80 COLUMNAS

RECORDAR QUE UNA CONSOLA NORMAL

En particular poner un gotoxy(); antes de cada printf() en el programa.


TAREAS PROGRAMACION C++ REARREGLAR LOS PROGRAMAS CONSTRUIDOS PARA SU MEJOR
PRESENTACION.
PALABRAS RESERVADAS C++

auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if

int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
Some of the keywords on C have new meanings or have been overloaded in the world of C++, the following list
shows the keywords that have changed.
struct
static
const
enum

The following list shows the keywords that have been added to C++.
bool
catch
class
delete

friend
inline
new
namespace
operator
private
protected
public
tempate
this
throw
try
template
FUNCIONES TURBO C++
abort() Abort Process and Return Error
abs() Calculate Absolute Value of Integer
absread() Read Disk Sectors
abswrite() Write Disk Sectors
access() Check File Permission Setting
acos() Calculate Arc Cosine
alloca() Allocate Memory Block on Stack
allocmem() Allocate DOS Memory Segment
asctime() Convert Time from Structure to String
asin() Calculate Arc Sine
assert() Diagnostic Message Generator
atan() Calculate Arc Tangent
atan2() Calculate Arc Tangent of y/x

atexit() Register Exit Function


atof() Convert String to Double
atoi() Convert String to Integer
atol() Convert String to Long
bdos() Invoke DOS Function, Short Form
bdosptr() MS-DOS System Call
bioscom() Communications I/O
biosdisk() Hard Disk / Floppy I/O
biosequip() Check Equipment
bioskey() Keyboard Interface
biosmemory() Return Memory Size
biosprint() Printer I/O
biostime() Return the Time of Day
brk() Change Data-Segment Space Allocation
bsearch() Perform Binary Search
cabs() Calculate Absolute Value of Complex Number
calloc() Allocate and Zero Memory
ceil() Calculate Ceiling of Value
cgets() Get a Character String from the Console
chdir() Change Current Working Directory
chmod() Change File Permission Setting
_chmod() Change Access Mode of File
_clear87() Get and Clear 8087/80287 Status Word
clearerr() Clear Error Indicator for a Stream
close() Close File
_close() Close a File Handle
coreleft() Return a Measure of Unused Memory

cos() Calculate Cosine


cosh() Calculate Hyperbolic Cosine
country() Return Country-Dependent Information
cprintf() Formatted Write to Console
cputs() Write a String to the Console
creat() Create a New File
_creat() Create a New File
creatnew() Create a New File
creattemp() Create a New File or Rewrite an Existing One
cscanf() Read Formatted Data from Console
ctime() Convert Time from Long Integer to String
ctrlbrk() Set Control-Break Handler
difftime() Find the Difference between Two Times
disable() Disable Interrupts
dosexterr() Get DOS Extended Error Values
dostounix() Convert Date and Time to UNIX Time Format
dup() Create Second Handle for Open File
dup2() Reassign a File Handle
ecvt() Convert Double to String
enable() Enable Interrupts
eof() Test for End of File
exec() An Overview of the Eight Exec Functions
execl() Execute Program Using: Arg List
execle() Execute Program Using: Arg List, Environment
execlp() Execute Program Using: Arg List, PATH
execlpe() Execute Program Using: Arg List, PATH, Environment
execv() Execute Program Using: Arg Array

execve() Execute Program Using: Arg Array, Environment


execvp() Execute Program Using: Arg Array, PATH
execvpe() Execute Program Using: Arg Array, PATH, Environment
exit() Terminate Process after Cleanup
_exit() Terminate Process without Cleanup
exp() Calculate Exponential
fabs() Calculate Absolute Value of Floating-Point
farcalloc() Allocate Memory from Far Heap
farcoreleft() Return Measure of Unused Memory in Far Heap
farfree() Free a Block from Far Heap
farmalloc() Allocate Memory from Far Heap
farrealloc() Adjust Allocated Block in Far Heap
fclose() Close a Stream
fcloseall() Close All Open Streams
fcvt() Convert Double to String
fdopen() Open a Stream Using a Handle
feof() Detect Stream End-of-File (Macro)
ferror() Test for Error on a Stream (Macro)
fflush() Flush a Stream
fgetc() Read a Character from a Stream
fgetchar() Read a Character from Stdin
fgets() Read a String from Stream
filelength() Return File Length
fileno() Get File Handle Associated with Stream (Macro)
findfirst() Search Disk Directory
findnext() Fetch Files That Match findfirst()
floor() Calculate Floor of Value

flushall() Flush All Streams and Clear All Buffers


fmod() Calculate Floating-Point Remainder
fnmerge() Make New File Name
fnsplit() Split a Full Path Name into Its Components
fopen() Open a File
FP_OFF() Get or Set Offset Portion of a Far Pointer (Macro)
FP_SEG() Get or Set Segment Portion of a Far Pointer (Macro)
_fpreset() Reinitialize Floating-Point Math Package
fprintf() Write Formatted Data to Stream
fputc() Write a Character to a Stream
fputs() Write a String to Stream
fread() Read Unformatted Data from Stream
free() Deallocate Memory Block
freemem() Free a Previously Allocated DOS Memory Block
freopen() Reassign a File Pointer
frexp() Get Mantissa and Exponent of Floating-Point Value
fscanf() Read Formatted Data from Screen
fseek() Reposition File Pointer to Given Location
fstat() Get Information about Open File
ftell() Get Current File Pointer Position
fwrite() Write Unformatted Data to Stream
gcvt() Convert Double to String
geninterrupt() Generate Software Interrupt
getc() Read a Character from a Stream (Macro)
getchar() Read a Character from 'Stdin'
getch() Get a Character from the Console without Echo
getche() Get a Character from Console with Echo

getcwd() Get Path Name of Current Working Directory


getenv() Get a Value from the Environment Table
getpid() Get Process ID
getcbrk() Get Control-Break Setting
getcurdir() Get Current Directory
getdate() Get Date
getdfree() Get Disk Free Space
getdisk() Get Current Drive
getdta() Get Disk Transfer Address
getfat() Get File Allocation Table Information
getfatd() Get File Allocation Table Information
getftime() Get File Date and Time
getpass() Read a Password
getpsp() Get the Program Segment Prefix
gets() Read a Line from 'Stdin'
gettime() Get System Time
getvect() Get Interrupt Vector Entry
getverify() Get Verify State
getw() Read an Integer from a Stream
gmtime() Convert Time from Long Integer to Structure
gsignal() Software Signals
harderr() Establish a Hardware Error Handler
hardresume() Hardware Error Handler Function
hardretn() Hardware Error Handler Function
hypot() Calculate the Hypotenuse of a Right Triangle
inport() Input from Hardware Port
inportb() Input from Hardware Port

intr() Alternate 8086 Software Interrupt Interface


int86() Execute 8086 Software Interrupt
int86x() Set Segment Registers and Execute Software Interrupt
intdos() Invoke DOS Function, Long Form
intdosx() Set Seg Regs and Invoke DOS Function, Long Form
ioctl() Control I/O Device
isalnum() Test for Alphanumeric Character (Macro)
isalpha() Test for Alphabetic Character (Macro)
isascii() Test for ASCII Character (Macro)
isatty() Check for Character Device
iscntrl() Test for Control Character
isdigit() Test for Digit
isgraph() Test for Printable Character Except Space
islower() Test for Lowercase
isprint() Test for Printable Character
ispunct() Test for Punctuation Character
isspace() Test for White-Space Character
isupper() Test for Uppercase
isxdigit() Test for Hexadecimal Digit
itoa() Convert Integer to String
kbhit() Check Keyboard Input Buffer for Character Waiting
keep() Exit and Remain Resident
labs() Calculate Absolute Value of Long Integer
ldexp() Convert Mantissa and Exponent to Floating Point
lfind() Linear Search for Key
localtime() Convert Time from Int to StructureLocal Correction
lock() Set File Sharing Locks

log() Calculate Natural Logarithm


log10() Calculate Base 10 Logarithm
longjmp() Restore Program State
lsearch() Linear Search for Key; Add Key If Not Found
lseek() Reposition File Pointer to Specified Location
ltoa() Convert Long to String
malloc() Allocate Memory Block
matherr() Handle Math Error
_matherr() Floating-Point Error Handling Routine
memccpy() Copy Characters from Buffer
memchr() Find Character in Buffer
memcmp() Compare Characters from Two Buffers
memcpy() Copy Characters between Buffers
memicmp() Compare Characters in Two Buffers
memmove() Move a Block of Bytes
memset() Initialize Buffer
mkdir() Create a New Directory
MK_FP() Make a Far Pointer
mktemp() Create a Unique File Name
modf() Split Floating Point into Mantissa and Exponent
movedata() Copy Characters to a Different Segment
movmem() Move a Block of Bytes
open() Open a File
_open() Open a File For Reading or Writing
outport() Output to a Hardware Port
outportb() Output to a Hardware Port
parsfnm() Parse File Name

peek() Examine Memory Location


peekb() Examine Memory Location
perror() Print Error Message
poke() Store Value at a Given Memory Location
pokeb() Store Value at a Given Memory Location
poly() Generate a Polynomial from Arguments
pow() Calculate X Raised to the Yth Power
pow10() Power Function
printf() Write Formatted String to Stdout
putc() Write a Character to Stream
putchar() Write a Character to Stdout
putch() Write a Character to the Console
putenv() Create New Environment Variables
puts() Write String to Stdout
putw() Write an Integer to Stream
qsort() Perform Quick Sort
rand() Get Pseudorandom Integer
randbrd() Random Block Read
randbwr() Random Block Write
read() Read Data from File
_read() Read Data from a File
realloc() Reallocate Memory Block
rename() Rename a File or Directory
rewind() Reposition File Pointer to Beginning of Stream
rmdir() Remove a Directory
sbrk() Reset Break Value for Calling Process
scanf() Read Formatted Data from Stdin

searchpath() Search the DOS Path


segread() Return Current Values of Segment Registers
setblock() Modify Size of DOS Memory Segment
setbuf() Control Stream Buffering
setcbrk() Set Control-Break Setting
setdate() Set MS-DOS Date
setdisk() Set Current Disk Drive
setdta() Set Disk Transfer Address
setftime() Set File Date and Time
setjmp() Save Program State
setmem() Assign a Value to Memory
setmode() Set File-Translation Mode
settime() Set System Time
setvbuf() Control Stream Buffering and Buffer Size
setvect() Set Interrupt Vector Entry
setverify() Set Verify State
sin() Calculate Sine
sinh() Calculate Hyperbolic Sine
sleep() Suspend Execution for Interval
spawn() An Overview of the Eight Spawn Functions
spawnl() Execute Program Using: Arg List
spawnle() Execute Program Using: Arg List, Environment
spawnlp() Execute Program Using Arg List, PATH
spawnlpe() Execute Program Using Arg List, PATH, Environment
spawnv() Execute Program Using Arg Array
spawnve() Execute Program Using Arg Array, Environment
spawnvp() Execute Program Using Arg Array, PATH

spawnvpe() Execute Program Using Arg Array, PATH, Environment


sprintf() Write Formatted Data to String
sqrt() Calculate Square Root
srand() Set Random Starting Point
sscanf() Read Formatted Data from String
ssignal() Implement Software Signals
stackavail() Return Size of Available Stack Memory
stat() Get File-Status Information on Named File
_status87() Get 8087/80287 Floating-Point Status Word
stime() Set Time
strcat() Append a String
strchr() Find a Character in a String
strcmp() Compare Two Strings, Case Sensitive
strcmpi() Compare Two Strings, Case Insensitive
stricmp() Compare Two Strings, Case Insensitive
strcpy() Copy One String to Another
strcspn() Scan One String for Another
strdup() Duplicate String
strerror() Save System Error Message
strlen() Get String Length
strlwr() Convert String to Lower Case
strncat() Append Specified Number of Characters to a String
strncmp() Compare n Characters of Two Strings, Case Sensitive
strnicmp() Compare n Characters of Strings, Case Insensitive
strncpy() Copy a Specified Number of Characters
strnset() Initialize n Characters of String
strpbrk() Scan String for Character from Character Set

strrchr() Scan String for Last Occurrence of Character


strrev() Reverse Characters in String
strset() Set All Characters in String
strspn() Find First Substring
strstr() Find Substring
strtod() Convert String to Double
strtol() Convert String to Long Decimal Integer
strtok() Finds Next Token in String
strupr() Convert String to Uppercase
swab() Swap Bytes
system() Execute DOS Command
tan() Calculate Tangent
tanh() Calculate Hyperbolic Tangent
tell() Get Current File Pointer Position
time() Get Current System Time as Long Integer
toascii() Convert 'c' to ASCII Character
tolower() Convert 'c' To Lowercase, If Appropriate
_tolower() Convert 'c' to Lowercase
toupper() Convert 'c' to Uppercase, If Appropriate
_toupper() Convert 'c' to Uppercase
tzset() Set External Time Variables, Environment Variables
ultoa() Convert Unsigned Long to String
ungetc() Push Character Back onto the Stream
ungetch() Push Back the Last Character Read from the Console
unixtodos() Convert Date and Time to DOS Format
unlink() Delete a File
unlock() Release File-Sharing Locks

va_arg() Access Variable Number of Arguments, ANSI C Style


vfprintf() Write Formatted Data to Stream
vfscanf() Perform Formatted Input from a Stream
vprintf() Write Formatted Data to Stdout
vscanf() Perform Formatted Input from Stdin
vsprintf() Write Formatted Data to String
vsscanf() Perform Formatted Input from String
write() Write Data to a File
_write() Write Data to a File

UNIDAD 2: C++ CONTROL DE PROGRAMA

TEMA 1: INTRODUCCION C++

Instrucciones de control de programa permiten alterar la secuencia normal de ejecucin de un programa.


Estas instrucciones se dividen en tres grandes categoras:
Instrucciones Condicionales que en C++ CPP se implementan con las instrucciones if() y switch().
Instrucciones de ciclos con, for, while, do-while.
Instruccin de salto incondicional goto.
TEMA 2: INSTRUCCIONES CONDICIONALES C++

Una de las mas poderosas caractersticas de cualquier computador es la capacidad que tiene de tomar decisiones.
Es decir al comparar dos alternativas diferentes el computador puede tomar una decisin, basndose en la
evaluacin que hace de alguna condicin.
ejemplo de instrucciones condicionales ;

a)
si sueldo > 3000
desplegar rico
si no
desplegar pobre
fin-si
b)
si sexo = 'm'
imprime mujer
si no
imprime hombre

fin-si

De los ejemplos observar que los caminos por el computador dependern de la evaluacin que el computador hace
cn y de la condicin.
Todo lenguaje de programacin debe tener instrucciones que permitan formar condiciones e instrucciones que
pueden evaluar esas condiciones.
El formato general de una instruccin condicional es:

Como se observa son cuatro partes bien diferenciadas entre si;


* La propia instruccin condicional en si
* La condicin
* El grupo cierto de instrucciones
* El grupo falso de instrucciones
Cuando el computador evala una condicin, el resultado de esa evaluacin solo es evaluado de dos maneras o la
condicin es CIERTA o la condicin es FALSA.
Esto depender del valor que tenga asignado o que se haya capturado para la variable que esta en la condicin, por
ejemplo si se capturo 6000 en sueldo en el ejemplo a), entonces el computador indicara que la condicin es
CIERTA, pero en otro caso, si a la variable sueldo primero se le asigno un valor de 250 entonces el computador
indicara que la condicin es FALSA.
Ya dependiendo del resultado de la evaluacin, el computador ejecuta las instrucciones contenidas en la parte
CIERTA o en la parte FALSA de la condicin.
Empezaremos el anlisis por la CONDICION.

TEMA 3: CONDICIONES SIMPLES C++

En general todas las condiciones simples se forman con: variables operadores relacinales constante o var.
sexo = 'm'

sueldo > 300000

Una condicin simple se define como el conjunto de variables y/o constantes unidas por los llamados operadores
relacinales.
Los operadores relacinales que reconoce el lenguaje CPP son:
Operador
Significado
' == ' Igual que
' > ' Mayor que
' < ' Menor que
' >= ' Mayor o igual que
' ' Menor o igual que
' != ' No es igual que o es diferente que
Observar y tener cuidado sobre todo con el operador de igualdad( , y el operador relacional de comparacin por
igualdad(= , es decir;
sueldo = 500 , Se esta pidiendo cargar o asignar la variable sueldo con el valor 500
sueldo == 500 , Se esta pidiendo que se compare el valor o dato que se encuentra en la variable sueldo, contra el
numero 500.
Solo este ultimo formato es valido dentro de una condicin en una instruccin condicional.
NOTA IMPORTANTE, Para el caso de objetos de tipo string, los operadores mencionados arriba funcionan, es decir
es valido usar la siguiente condicin:
string carrera;
if (carrera==informatica) etc, etc, etc,
PERO para el caso de arreglos de caracteres, se tendra que usar la funcin strcmp(str1,str2) que regresa cero si
str1=str2, regresa un positivo si str1>str2 y regresa un negativo si str1<str2, el mismo ejemplo:
char carrera[20];
if ( strcmp(carrera,informatica)== 0 ) etc, etc, etc

TEMA 4: INSTRUCCION IF C++

Es la instruccin condicional mas usada en los diversos lenguajes de programacin, su formato completo y de
trabajo en CPP es :

cargar o asignar la variable de condicin;


if (condicin)
{ grupo cierto de instrucciones;}
else
{ grupo falso de instrucciones; };

Primus.- Observar donde van y donde no van los puntos y comas;


Secundus.- La condicin va entre parntesis ;
Tertius.- Si un if no ocupa un grupo falso de instrucciones, entonces no se pone el else, y la llave antes del else si
terminara con punto y coma.
PROG4.CPP
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
// declaracion variables
int edad;
char ciudad[30];
//capturando
clrscr();
gotoxy(10,5);printf("dame edad : ");

scanf("%d",&edad);getchar();
gotoxy(10,7);printf("dame ciudad : ");
gets(ciudad);
//comparando
if( edad>20)
{ gotoxy(30,5);puts("mayor de 20"); }
else{ gotoxy(30,5);puts("menor de 20"); };
if( strcmp(ciudad,"tijuana")==0)
{ gotoxy(35,7);puts("es de tijuana"); };
getchar();
}
CORRIDA:

TAREAS PROGRAMACION C++


1.- Capturar un numero cualesquiera e informar si es o no es mayor de 100
2.- Capturar un numero entero cualesquiera e informar si es o no es mltiplo de 4 ( recordar el operador mod(%),
analizado en el tema de operadores aritmticos).
3.- Capturar los cinco datos mas importantes de un Empleado, incluyendo el sueldo diario y los das trabajados ,
desplegarle su cheque semanal solo si gan mas de $500.00 en la semana, en caso contrario desplegarle un bono
de despensa semanal de $150.00 .
4.- Capturar los datos mas importantes de un estudiante incluyendo tres calificaciones, una pagina que contiene una
boleta de calificaciones es llamada si el estudiante es de la carrera de medicina, en caso contrario otra pagina
despliega un oficio citando a los padres del estudiante a una platica amistosa con los maestros de la escuela.
5.- Capturar los datos mas importantes de una mercancia cualesquiera, incluyendo cantidad, precio, etc., desplegar
una orden de compra, solo si el producto es de origen nacional, en caso contrario no hacer nada.

TEMA 5: CONDICIONES COMPUESTAS C++

En muchas ocasiones es necesario presentar mas de una condicin para su evaluacin al computador.
Por ejemplo que el computador muestre la boleta de un alumno, si este estudia la carrera de medicina y su
promedio de calificaciones es mayor de 70.
Una condicin compuesta se define como dos o mas condiciones simples unidas por los llamados operadores
lgicos.
Los operadores lgicos que CPP reconoce son:
OPERADOR SIGNIFICADO
&& Y LOGICO

! NO NEGACION
Ejemplo:
if ( (sueldo> 700) && ( sexo=='m') ) etc, etc, etc.
Notas:
Observar que cada condicin simple lleva sus propios parentesis.
Si la variable es de tipo string el dato va entre comillas(), pero si la variable es de tipo char el dato va entre
apostrofes(').
Recordar adems que para comparar arreglos de chars se deber usar strcmp().
Para que el computador evale como CIERTA una condicin compuesta que contiene el operador lgico y, las dos
condiciones simples deben ser ciertas.
Para que el computador evale como CIERTA una condicin compuesta que contiene el operador lgico o, basta
con que una de las condiciones simples sea cierta.
La cantidad total de casos posibles cuando se unen dos o mas condiciones simples esta dada por la relacin
donde n = cantidad de condiciones, la primera mitad de ellos ciertos y la segunda mitad falsos.
Ejemplo, si formamos una condiciona compuesta con dos condiciones simples y el operador lgico y, la cantidad
total de casos posibles serian
y se puede construir la siguiente tabla de verdad.
Tabla de verdad con y
IRA COND SIMPLE

2DA COND SIMPLE


EVALUACION
C
C
C
C
F
F
F
C
F
F
F
F
La evaluacin final se obtiene usando la regla anteriormente descrita para una condicin compuesta que contiene el
operador y.
Esta tabla significa lo siguiente;
1.- Cualquiera que san la cantidad de datos procesados, siempre caer en uno de estos cuatro posibles casos.
La tabla de verdad para una condicin compuesta con O es la siguiente;
1RA COND SIMPLE
2DA COND SIMPLE
EVALUACION
C
C
C
C
F
C

F
C
C
F
F
F
Como se observa, una condicin compuesta con O, es menos restrictiva, o el 75% de los casos terminaran
ejecutando el grupo CIERTO de instrucciones de la instruccin condicional.
Construir una tabla de verdad para una condicin compuesta de tres o mas condiciones simples, es tambin tarea
sencilla, solo recordar que;
1.- La cantidad posible de casos posibles es

la mitad empiezan con cierto y la otra mitad empiezan con falso.

2.- Para evaluar esta condicin triple, primero se evalan las dos primeras incluyendo su operador bajo las reglas ya
descritas y luego se evala el resultado parcial contra la ultima condicin y el ultimo operador para obtener la
evaluacin final.
Ejemplo una condicin compuesta de tres condiciones simples, donde el primer operador lgico es el y y el
segundo operador lgico es el O, dara la siguiente tabla de verdad.
1ra cond
2da cond
Eval 1a Y 2a
3ra cond
Eval eval O 3ra
C
C
C
C
C
C
C
C
F

C
C
F
F
C
C
C
F
F
F
F
F
C
F
C
C
F
C
F
F
F
F
F
F
C
C
F

F
F
F
F
En la prctica, cada condicin simple debe ir encerrada en su propio parntesis y las dos condiciones simples
tambin deben encerrarse entre sus propios parntesis, como en el siguiente ejemplo;
if((sueldo> 500)%%(strcmp(departamento,VENTAS)==0 )
{ aqu se construye la pagina que despliega su cheque semanal } else { aqu se construye y despliega la pagina del
bono de despensa o un oficio de motivacin } ;
* Recordar, cada condicin simple debe estar entre parntesis y las dos
condiciones simples tambin deben estar entre parntesis.
* Observar donde se deben incluir los puntos y comas y donde no se
deben incluir los puntos y comas.
TAREAS PROGRAMACION C++
1.- Construir un programa que capture un numero cualesquiera e informe si es o no es mayor de 50 y mltiplo de
tres. ( solo escribir el mensaje de respuesta de manera muy clara y esto resuelve el problema )
2.- Construir un programa que indique si un numero es un par positivo.
3.- Capturar los datos de una mercancia cualquiera incluyendo su cantidad en existencia, desplegar una orden de
compra si la cantidad en existencia del producto es menor que el punto de reorden, o si el origen del producto es
nacional.
4.- Construir un programa que capture los datos de un EMPLEADO , desplegar su CHEQUE semanal si gana mas
de $500.00 y si esta en el departamento de produccin, en caso contrario desplegarle un BONO DE DESPENSA del
25% de su SUELDOsemanal.

TEMA 6: INSTRUCCION SWITCH C++

Tambin existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez, en estos casos o se
usa una condicin compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver
usando la instruccin switch();
La instruccin switch() es una instruccin de decisin mltiple, donde el compilador prueba o busca el valor
contenido en una variable contra una lista de constantes ints o chars, cuando el computador encuentra el valor de
igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no
encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a
un default, aunque este ultimo es opcional.

El formato de esta instruccin es el siguiente;

capturar o asignar variable de condicin;


switch(var int o char)
{
case const1: instruccin(es);
break;
case const2: instruccin(es);
break;
case const3: instruccin(es);
break;
default: instruccin(es);
};

Mejor un ejemplo practico:


Prog5.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
// declaracin variables
char letra;
//capturando
clrscr();
gotoxy(10,5);printf("dame una letra : ");

letra=getchar();getchar();
//empieza switch()
switch(letra)
{
case 'a': gotoxy(30,5);puts("aguila");break;
case 'b': case 'B': gotoxy(30,5);puts("baca");break;
case 'c': gotoxy(30,5);puts("caballo ");puts("camello");break;
default:gotoxy(30,5);puts("no hay");
}
getchar();
}
corrida:

Notas:
1.- Solo se puede usar como variable de condicin una variable entera o variable char.
2.- Las constantes que estamos buscando y comparando son de tipo char, por eso se deben encerrar entre
apstrofes ( ').
3.- Si se quiere resolver el problema de maysculas o minsculas en el teclado, observar que se usan dos case,
pero con un solo break;
4.- Recordar que switch() solo trabaja con constantes y variables de tipo char o int, en este ultimo caso, solo usar
una variable de opcin de tipo entero y en los case poner la constante numrica, sin apstrofes decir por ejemplo
5.- instrucciones; break;
En particular, instrucciones de tipo switch() se usan para construir programas de seleccin de mens, donde al
usuario se le plantean dos o tres problemas distintos y el propio usuario seleccionaba cual de ellos se ejecuta

TAREAS PROGRAMACION C++


Construir una pagina que contenga el siguiente men

1. conversin de pesos a dlares 2. conversin de libras a kilogramos 3. conversin de kilmetros a millas 4. fin de
men
seleccionar opcin [ ] Este es el edit del switch().

2.- Construir un programa que capture un deporte y despliegue dos implementos deportivos apropiados.
3.- Evaluar cualquier funcin vista para cuando x = 3, - 4, 5

TEMA 7: CICLO FOR C++

Instrucciones para ciclos resuelven el problema de repetir todo el programa o cierta parte del programa mas de una
vez.
Este ciclo es uno de los mas usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la
cantidad exacta de veces que se quiere que se ejecute una instruccin simple o compuesta.
Su formato general es:
for (inicializacin; condicin; incremento)
{ instruccin(es); };
ejemplo:

for(x=1;x10;x=x+1)
{ puts( MAMA ); };

En su forma simple la inicializacin es una instruccin de asignacin que carga la variable de control de ciclo con un
valor inicial.
La condicin es una expresin relacional que evala la variable de control de ciclo contra un valor final o de parada
que determina cuando debe acabar el ciclo.

El incremento define la manera en que la variable de control de ciclo debe cambiar cada vez que el computador
repite un ciclo.
Se deben separar esos 3 argumentos con punto y coma (;)
EJEMPLO
Codigo prog6.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracion variables
int x;
// instruccion for
for(x=1;x<=10;x=x+1)
{ gotoxy(10, x+4); printf("%d MAMA",x); };
getchar();
}
corrida:

Casos Particulares del ciclo for;


1.- El ciclo comienza en uno y se incrementa de uno en uno este es el caso mas general.
2.- Pero el valor inicial puede se diferente de uno, ejemplo;
for (x=5;x15;x=x+1){ etc.};
3.- Incluso el valor inicial puede ser negativo, ejemplo;
for (x = -3 ;x 8; x=x+1) { etc.};
4.- Los incrementos tambin pueden ser diferentes al de uno en uno, ej.;
for (x=1; x 20; x=x+3){ etc. };
5.- Incluso pueden ser decrementos, solo que en este caso, recordar;
5.1.-el valor inicial de la variable debe ser mayor que el valor final.
5.2.-cambiar el sentido de la condicin.
ejemplo;

for (x= 50 ; x >= 10; x= x-4 ) { etctera };

6.- Solo para los casos de incrementos y decrementos de una en una


UNIDAD substituir en el for:
el x = x + 1 por x++
el x = x - 1 por x
TAREAS PROGRAMAS EN C++
1.- CONSTRUIR UN PROGRAMA QUE DESPLIEGUE LOS NMEROS DEL 20 AL 30.
2.- DESPLEGAR LOS ENTEROS ENTRE 50 Y 30 ACOMPAADOS DE SU POTENCIA CUADRADA Y RAZ
CUBICA RESPECTIVA (revisar el tema de operadores aritmticos).
3.- DESPLEGAR LOS MLTIPLOS DE 5, ENTRE 10 Y 50, ACOMPAADOS DE SU FACTORIAL Y LOGARITMO
RESPECTIVO (revisar el tema de operadores aritmticos tambin).
4.- DESPLEGAR LA TABLA DE MULTIPLICAR QUE EL USUARIO INDIQUE.
5.- EVALUAR LA FUNCION Y=5X^2 + 3X + 8 CUANDO X> -310 (RANGO DE -3 HASTA 10)

TEMA 8: CICLO WHILE C++

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condicin permanezca como verdadera en el
momento en que la condicin se convierte en falsa el ciclo termina.
Su formato general es :
cargar o inicializar variable de condicin;
while(condicin)
{
grupo cierto de instrucciones;
instruccin(es) para salir del ciclo;
};
Un error muy comn con el while, es poner un punto y coma(;) despus de la (condicin) ejemplo while(condicin);
-esto es y causa un error.
Prog7.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracin variables
int x=1;
// instruccin while
while(x<=10)
{ gotoxy(10, x+3); printf("%d PATO",x); x++; };
getchar();
}

Corrida:

While puede llevar dos condiciones en este caso inicializar 2 variables de condicin y cuidar que existan 2 de
rompimiento o terminacin de ciclo.
El grupo cierto de instrucciones puede ser una sola instruccin o todo un grupo de instrucciones.
La condicin puede ser simple o compuesta.
Los casos generales de for tambin se aplican a while.
A este ciclo tambin se le conoce tambin como ciclo de condicin de entrada o prueba por arriba porque este ciclo
evala primero la condicin y posteriormente ejecuta las instrucciones.
TAREAS PROGRAMAS EN C++
1.- DESPLEGAR ENTEROS ENTRE 50 Y 80
2.- DESPLEGAR MULTIPLOS DE 4 ENTRE 60 Y 20 ACOMPAADOS DE SU LOGARITMOS DE BASE 10 Y BASE
e RESPECTIVOS.
3.- CONSTRUIR LA TABLA DE DIVIDIR QUE EL USUARIO INDIQUE.
4.- Evaluar una funcin cualesquiera para el rango de valores de x de -3 a +5

TEMA 9: CICLO DO WHILE C++

Su diferencia bsica con el ciclo while es que la prueba de condicin es hecha al finalizar el ciclo, es decir las
instrucciones se ejecutan cuando menos una vez porque primero ejecuta las instrucciones y al final evala la
condicin;
Tambin se le conoce por esta razn como ciclo de condicin de salida.
Su formato general es :

cargar o inicializar variable de condicin;


do {
grupo cierto de instruccin(es);
instruccin(es) de rompimiento de ciclo;
} while (condicin);
prog8.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracin variables
int x=1;
// instruccin do while
do{
gotoxy(10, x+3); printf("%d GATO",x);
x++; } while(x<=10);
getchar();
}
Corrida prog

Otra diferencia bsica con el ciclo while es que, aunque la condicin sea falsa desde un principio el cuerpo de
instrucciones se ejecutara por lo menos una vez.
TAREAS PROGRAMAS EN C++
1.- tres del for
2.- tres del while

TEMA 10: CONCLUSIONES ACERCA DE CICLOS C++

El problema de dado un problema cualesquiera cual ciclo se debe usar se resuelve con:
1. Si se conoce la cantidad exacta de veces que se quiere que se ejecute el ciclo o si el programa de alguna manera
puede calcularla usar for.
2. Si se desconoce la cantidad de veces a repetir el ciclo o se quiere mayor control sobre la salida o terminacin del
mismo entonces usar while.
3. Si se quiere que al menos una vez se ejecute el ciclo entonces usar do while.

UNIDAD 3: C++ ARREGLOS


TEMA 1: INTRODUCCION ARREGLOS C++

Uno de los problemas mas comunes en los diversos sistemas de informacin es el tratamiento o procesamiento de
una gran volumen de datos o de informacin.
Las variables manejados hasta ahora no pueden ayudar a resolver este problema.
Las variables usadas hasta ahora reciben propiamente el nombre de variables escalares, porque solo permiten
almacenar o procesar un dato a la vez.

No confundir esto con el tipo de dato o rango de datos que una variable tiene la capacidad de almacenar.
Por ejemplo si se quiere almacenar nombre y edad de 15 personas con el mtodo tradicional se ocuparan 30
variables y esto solo es nombre y edad de 15 personas, agreguen mas datos y mas personas y ya es tiempo de
empezar a analizar otro tipo de variables.
Se ocupan entonces variables que sean capaces de almacenar y manipular conjuntos de datos a la vez.
Variables de tipo arreglo si permiten almacenar y procesar conjuntos de datos del mismo tipo a la vez.
Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y procesa (captura, operacin,
despliegue ) usando el nombre del arreglo respectivo y un subndice indicando la posicin relativa del elemento con
respecto a los dems elementos del arreglo, solo recordar que en cpp la primera posicin, elemento o rengln es el
0 (cero), ej.
NOMBRES
Juan nombres(0)
Pedro nombres(1)
Rosa nombres(2)
Jose nombres(3)
Sin embargo sus problemas son similares a los de variables normales es decir hay que declararlos, capturarlos,
hacer operaciones con ellos, desplegarlos, compararlos, etc.
TEMA 2: ARREGLOS EN C++

En programacin tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o
unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son
variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de
columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos:
A) LISTAS
EDAD
18
34
22
15

B) TABLAS
CIA ACME
ING MENS VTAS
(MILES DE $)
.ENE FEB MAR ABR MAY
SUC A
10
20
30
40
SUC B
50
60
70
80
SUC D
90
100
110
120
Como se observa la diferencia principal entre un arreglo tipo lista y un arreglo tipo tabla son las cantidades de
columnas que contienen.
NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN ENFOCADOS A LOS SISTEMAS DE
INFORMACION CONTABLES FINANCIEROS ADMINISTRATIVOS
EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE VECTORES Y MATRICES, PERO LAS
OPERACIONES Y METODOS SON PRECISAMENTE LOS DEL ALGEBRA MATRICIAL.

TEMA 3: C++ ARREGLO TIPO LISTA (1)

Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de datos del mismo tipo
organizados en una sola columna y uno o mas renglones.
Tambin reciben el nombre de vectores en lgebra o arreglos unidimensionales en programacin.
Los procesos normales con una lista o con sus elementos incluyen declarar toda la lista, capturar sus elementos,
desplegarlos, realizar operaciones con ellos, desplegarlos, etc.
Para declarar una lista se usa el siguiente formato;
tipodato nomlista[cant de elementos o renglones];
ejemplos;

int edades[12];
float sueldos[10];
Char carreras[10][30];

Para crear e inicializar una lista usar el siguiente formato:


Tipodato nomlista[cant reng]={elementos};
Ej
Int edad[5] = { 12,18,20,23,30 };
Float sueldo[3] = { 1.36, 23.67, 77.90 };
Strcpy(carrers[0],informatica);strcpy(carreras[1],sistemas);etc;etc;;;
Recordar que la primera posicin o rengln en una lista es la posicin o rengln 0 (cero).

TEMA 3: C++ LISTAS (2)

Prog9.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracin listas
char nombre[3][20]; int edad[3];
// capturando
for (int r=0; r<=2; r++)
{ gotoxy(5, r*2+2); printf("%d NOMBRE: ",r);gets(nombre[r]);
gotoxy(5, r*2+3); printf("%d EDAD: ",r);
scanf("%d",&edad[r]);getchar();
};
//operando
for ( r=0; r<=2; r++) edad[r]=edad[r] *12;
//desplegando
for ( r=0; r<=2; r++)
{ gotoxy(5, r*2+9); printf("NOMBRE:= %s", nombre[r]);
gotoxy(5, r*2+10); printf("EDAD:=%d",edad[r]);
};
getchar();
}

corrida:

Captura este procedimiento es similar para despliegue.


Se deber usar siempre un ciclo for con una variable de control llamada rengln, misma que tambin se usa como
ndice del arreglo.
Recordar que el primer rengln o ndice en CPP es el rengln 0.
Siempre que se use un elemento de una lista en Cpp con cualquier proceso (captura, despliegue,
operaciones)deber acompaarse de su ndice respectivo.
Para procesar (hacer operaciones con ellos, o comparaciones, etc.) los elementos de la lista, se deber usar un
ciclo for con una variable de control llamada rengln, misma que se usara tambin como ndice de la lista.
Para desplegar los elementos de la lista, tambin se usa un ciclo for con su variable de control rengln, tal como se
muestra en el ejemplo.
El mismo ciclo de proceso o despliegue se puede utilizar para procesar o desplegar los elementos de mas de una
lista, siempre y cuando las listas sean del mismo tamao.
TAREAS PROGRAMACION C++
1.- Capturar y desplegar 5 precios de productos cualesquiera.
2.- Capturar 4 sueldos y desplegarlos aumentados en un 25%

TEMA 4: STRING C++

STRING COMO ARREGLO DE CARACTERES


Las strings no son mas que un caso especial de arreglo de caracteres y como tales presentan ciertas peculiaridades
que no son posible resolver con mtodos tradicionales.
Por ejemplo no es valido usar simples sentencias de asignacin o comparacin.
1.- char nombre [30],copia[nombre];
copia = nombre; esto no es valido en CPP
2.- if(opcion==`si`) Tampoco es valido en CPP
Para casos como estos se debern usar ciertas funciones de manipulacin de strings que provee el lenguaje C,
estas funciones son :
#include <string.h>
A) STRCPY(string destino,string original);
Se utiliza para copiar el contenido de un string original en un string de destino.
ejemplo:
char nombre[30],copia[30];
nombre= getstring(nombre);
strcpy(copia,nombre);
strcpy(nombre,pato);
B) STRCAT(string1,string2);
Encadena o agrega al final de la string1 la string2.
ejemplo: char nombre[30],copia[30];
strcpy(nombre,pepe);
strcat(nombre,lopez);
C) STRCMP(string1,string2);
Se utiliza para comparar 2 strings, esta funcin regresa cero si ambas strings son iguales, regresa un numero mayor
que cero si string 1 es mayor que string 2 y regresa un numero menor que cero si string 1 es menor alfabticamente
que string 2.

ejemplo: char opcion[3];


strcmp(opcion,si);
if(strcmp(opcion,si)==0)
D) STRLEN(string);
Esta funcin regresa la cantidad de caracteres que tiene la string.
ejemplo: char nombre[30];
strcpy(nombre,juan);
printf(%d,sizeof(nombre)); REGRESA 30
printf%d,strlen(nombre)); REGRESA 4

TEMA 5: LISTAS DE STRINGS C++

Listas de strings en C++ tambin dependern del tipo de string que se est usando, es decir como un arreglo de
caracteres o como una lista de strings, en cada caso se ocupara sus propias instrucciones o mtodos de tratamiento
de strings:
1. Como arreglo de caracteres:
rosa
juan
jose
maria
Se deber usar un arreglo bidimensional de chars donde el primer subndice referenciara la cantidad de strings que
tendr el arreglo y el segundo subndice indicara el tamao mximo de cada string.
ejemplo:
char nombres[4][30];
Para efectuar cualquier proceso (captura, comparacin, despliegue), se deber usar el nombre de la lista y nadamas
el primer subndice.
ejemplo:

char nombres[4][30];
int ren;
// capturar o inicializar los elementos
// despliegue
for(ren=0;ren<=3;ren++)
printf("%s",nombres[reng]);
1.- TAREAS PROGRAMACION C++ Capturar los datos de 5 productos comprados en una tienda, incluyendo
nombre, precio y cantidad en sus 3 listas respectivas, despus calcular una cuarta lista con el gasto total por cada
producto desplegarlo todo incluyendo tambin el gran total.
2.- TAREAS PROGRAMACION C++ Capturar en sus listas respectivas los datos de 6 alumnos, pero solo desplegar
los que sean de la carrera de sistemas.

TEMA 6: SORTEOS U ORDENAMIENTOS C++

Un proceso muy comn en C++ con listas es el llamado sorteo u ordenamiento.


Este proceso consiste en reacomodar los elementos de la lista en un nuevo orden, de acuerdo a algn criterio.
Lista original Ord crec Ord decr
15 2 15
2 8 10
10 10 8
8 15 3
Existen muchos mtodos u algoritmos de sorteos, el mas comn de ellos, es el denominado sorteo de burbuja que
se basa en el siguiente algoritmo:
/*area de ordenamiento*/
n=cantidad de elementos de la lista;
for(k=1;k<=n-1;k++)
{ rengln=0;
while(rengln< n-k)

{ if(lista[rengln]>lista[rengln+1])
{ temp=lista[rengln];
lista[rengln]=lista[rengln+1];
lista[rengln+1]=temp; };
rengln=rengln+1;
}; };
Las notas a considerar con respecto al algoritmo son:
- Las variables n, k, rengln, son variables de control y debern ser declaradas de tipo int.
- La variable temp, deber ser declarada de acuerdo al tipo de dato de los elementos de la lista.
- Todas las referencias a LISTA, debern ser cambiadas por el nombre verdadero de la lista real.
- Es el smbolo del if, quien determina el tipo de sorteo, es decir, (>)ascendente, (<) descendente.
- Para el caso de listas de strings, la comparacin en el if y el intercambio en la parte cierta de abajo se deber
hacer usando las instrucciones o mtodos que se analizaron en el tema de strings.
TAREAS PROGRAMACION C++
1.- ORDENAR ASCENDENTEMENTE 5 Registros Federal Causante RFC
2.- ORDENAR DESCENDENTEMENTE 6 CIUDADES
3.- ORDENAR A CRITERIO DEL USUARIO 7 Estados de la Republica

TEMA 7: ARREGLOS TIPO TABLA C++

Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo organizados en dos o mas columnas y uno
o mas renglones.
Para procesar ( recordar solo operaciones y comparaciones) internamente todos los elementos de la tabla se
ocupan dos ciclos for() uno externo para controlar rengln y uno interno para controlar columna.
Los elementos de la tabla se debern simbolizar con el nombre de la tabla y 2 subndices, el primer subndice
referencia al rengln y el siguiente subndice referencia la columna.

La declaracin de una tabla ser de acuerdo al siguiente formato.


tipo nomtabla[cant ren][cant col];
ejemplo:
int calif[3][4];
long int ingresos [3][4];
Para efectuar procesos tales como operaciones despliegue con todos los elementos de la tabla se debern usar 2
ciclos un for externo para controlar rengln y un for interno para controlar columna.
prog10.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// declaracin tabla
int calif[3][4];
int r,c,nc=5;
// capturando
printf("CALIFICACIONES \n");
for (r=0; r<=2; r++)
{
for(c=0;c<=3;c++)
{ gotoxy(nc,r+2); printf("%d %d: ",r,c);
scanf("%d",&calif[r][c]);getchar();
nc=nc+10;
};
nc=5;

};
//operando
for ( r=0; r<=2; r++)
for(c=0;c<=3;c++)calif[r][c]=calif[r][c]+10;
//desplegando
for (r=0; r<=2; r++)
{
for(c=0;c<=3;c++)
{ gotoxy(nc,r+6); printf("%d ",calif[r][c]);
nc=nc+10;
};
nc=5;
};
getchar();
}
corrida:

TAREAS PROGRAMACION C++


1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE CUATRO PRODUCTOS
CUALESQUIERA, QUE SE PRODUCEN EN TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA.
2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES POR VENTAS DURANTE LOS
TRES PRIMEROS MESES DEL AO DE CUATRO SUCURSALES DE UNA CADENA DE AUTO REFACCIONES,
AGREGAR AL FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y UNA
SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR SUCURSAL.

3.- CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS POR TRES VENDEDORES, DE
LOS 5 TIPOS DE LINEA BLANCA DE CONOCIDA MUEBLERIA, ADEMAS LISTAS DE COMISIONES TOTALES Y
PROMEDIOS GANADAS POR LOS VENDEDORES, ASI COMO LISTAS DE COMISIONES TOTALES Y
PROMEDIOS POR TIPO DE LINEA BLANCA.
ANALIZAR ESTE CODIGO:
' PARA TOTALES Y PROMEDIOS POR RENGLON
FOR R = 0 TO 3
FOR C = 0 TO 2
TOTRENG(R) = TOTRENG(R) + TABLA(R,C)
NEXT C
PROMRENG(R) = TOTRENG(R)/3
NEXT R
'PARA TOTALES Y PROMEDIOS POR COLUMNA
FOR C = 0 TO 2
FOR R = 0 TO 3
TOTCOL(C)=TOTCOL(C) + TABLA(R,C)
NEXT R
PROMCOL(C) = TOTCOL(C) / 4
NEXT C
SUGERENCIA: CONSTRUIR PRIMERO LOS CUADROS EN PAPEL.

TEMA 8: INICIALIZACION DE ARREGLOS C++

Se permite la inicializacin de arreglos en C++ de acuerdo al siguiente formato:


static tipo numarreglo[cant de elementos]={valores};
ejemplo: static int edades[5]={18,20,19,17,23};
static long int tabla num[3][4]={1,2,3,4
5,6,7,8
9,10,11,12};
static char nombres [3][30]={juan
jose
rosa};
TAREAS PROGRAMACION C++
1.- inicializar una lista de 8 sueldos y desplegar la lista original y una segunda lista aumentada en 25%
2.- inicializar una lista de 9 ciudades , ordenarlas y desplegarlas.

UNIDAD 4: C++ PROCEDIMIENTOS Y FUNCIONES


TEMA 1: PROCEDIMIENTOS C++

Un camino para dividir un gran programa en partes mas pequeas es el uso de los llamados procedimientos.
Un procedimiento es un grupo de instrucciones, variables, constantes, etc., que estn diseados con un propsito
particular y tiene su nombre propio.
Es decir un procedimiento es un modulo de un programa que realiza tareas especificas y que no puede regresar
valores a la parte principal del programa u otro procedimiento que lo este invocando.
Despus de escribir un procedimiento se usa su propio nombre como una sola instruccin o llamada al
procedimiento.
Los procedimientos se podrn escribir despus del cuerpo principal del programa utilizando el formato:
void NomProc(){instrucciones;};
Pero tambin los procedimientos debern declararse antes del main como lo muestra el programa ejemplo.
Sin embargo el procedimiento se construye antes del main() entonces no hay necesidad de declararlo antes.

Un programa puede tener tantos procedimientos como se deseen para hacer una llamada o invocacin al
procedimiento durante la ejecucin de un programa solo se deber escribir el nombre del procedimiento y los
parntesis en blanco.
Prog11.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
// recordar declarar primero proc y funciones
void proc1();
//llamando o activando procedimiento
proc1();
} // fin del main
void proc1()
{
// area de declaracin de variables y captura de datos
int base1,altura; float area;
//area de captura
printf("dame base: ");scanf("%d",&base1);
printf("dame altura: ");scanf("%d",&altura);
// area de operaciones
area = base1 * altura / 2;
// area de despliegue
printf("area=%0.2f",area);
getchar();getchar();
}

// fin proc
corrida:

Recordar que se pueden crear el procedimiento o los procedimientos (aunque realmente es una funcin) arriba o
abajo de la parte principal del programa.
Recordar tambin que un programa puede tener muchos procedimientos, y estos pueden llamarse o invocarse entre
si.
MUCHO OJO con la nota anterior, es valido que un procedimiento se llame o invoque o se active a si mismo o
usando una referencia circular, por ejemplo proc1, activa proc2 que a su vez llama a proc1 esto se llama recursin y
si no se controla con una instruccin if(condicin)break o exit(no me acuerdo cual de las dos) se va a obtener un
hermoso ciclo infinito, muy divertido cuando le pasa a los programas de los compaeros, estn avisados.
Como se observa un procedimiento puede ser un programa completo.
TAREAS PROGRAMACION C++
Construir los siguientes programas con procedimientos
a) Convertir $800.00 Pesos a dlares.
b) Calcular el Area de un triangulo de base=20 y altura=30.
c) Desplegar una Boleta de calificaciones.
TEMA 2: PARAMETROS EN C++

Un parametro en C++ es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro
procedimiento.
Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algn proceso.
Estos valores que se pasan del cuerpo principal del programa o de un procedimiento a otros procedimientos se
llaman parmetros.
Entonces la declaracin completa de un procedimiento es :
Void Nom_Proc(lista de parmetros)
{ cuerpo de instrucciones;};
Donde lista de parmetros es una o mas variables separadas por coma, como lo muestra el programa ejemplo.

prog12.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
// recordar declarar primero proc y funciones
// y observar como se pasa como parametro una string
void proc1(char nom[], int suma);
void main()
{
clrscr();
//llamando o activando procedimiento
// y pasando dos parmetros uno de ellos string
proc1("juan perez", 3 + 4);
} //fin main

// ya se fijaron como se pasa la string


void proc1(char nom[], int suma)
{
//declarando variables
int edad;
// capturando
printf("dame edad: "); scanf("%d",&edad);
// operaciones sumando parametro
edad = edad + suma;
//construyendo y desplegando la pagina de salida
printf("%s \n",nom);
printf("EDAD= %d", edad);

getchar();getchar();
}
// fin proc
Y no olvidar declarar el procedimiento antes del main() incluyendo sus parmetros como lo muestra el ejemplo.
Recordar tambin que se pueden mandar como parmetros, datos, variables y expresiones algebraicas(no formulas
o ecuaciones algebraicas)
Corrida:

Observar que en el procedimiento los parmetros son dos variables locales es decir variables que solo se pueden
usar dentro del procedimiento estas variables son quienes reciben los datos o valores.
REGLAS PARA EL USO DE PARAMETROS
1.- Cuando se usan variables como parmetros, la variable que se manda debe ser declarada dentro del principal o
del procedimiento de donde se esta enviando.
2.- La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre o el mismo nombre por
claridad de programa, pero recordar que internamente en la memoria del computador existirn dos variables
diferentes.
3.- La cantidad de variables que se envan deben ser igual en cantidad, orden y tipo a las variables que reciben.
4.- La variable que se recibe tiene un mbito local dentro del procedimiento, es decir solo la puede usar ese
procedimiento.
5.- Se puede mandar a un procedimiento un dato, una variable(como lo muestran los ejemplos) o una expresin
algebraica (no ecuacin o formula, pero siempre se debern recibir en una variable.
TAREAS PROGRAMACION C++
1.- Programa que captura 3 calificaciones en principal, calcular promedio en procedimiento uno e imprimir nombre y
promedio en un segundo procedimiento.
2.- Construir una tabla de multiplicar que el usuario indique captura y control de ciclo en principal, calculo y
despliegue en un procedimiento.
3.- Construir un procedimiento que reciba un numero entero y que mande llamar a un segundo procedimiento
pasando el letrero PAR O IMPAR

TEMA 3: VARIABLES LOCALES Y GLOBALES C++

El lugar donde sea declarada una variable afectara el uso que el programa quiera hacer de esa variable.
Las reglas bsicas que determinan como una variable puede ser usada depende de 3 lugares donde se puede
declarar una variable.
En primer lugar es dentro de cualquier funcin o procedimiento a estas se les llama variables locales y solo pueden
ser usadas por instrucciones que estn dentro de esa funcin o procedimiento.
En segundo lugar es como parametro de una funcin donde despus de haber recibido el valor podr actuar como
variable local en esa funcin o procedimiento.
En esencia una variable local solo es conocida por el cdigo de esa funcin o procedimiento y es desconocida por
otras funciones o procedimientos.
En tercer lugar es fuera de todas los procedimiento o funciones a este tipo de variables se les llama variables
globales y podrn ser usadas por cualquier funcin o procedimiento del programa, sin embargo hay que agregarle la
palabra reservada STATIC y a partir del momento en que se declara, acompaada de dicha palabra reservada static
se considera y puede usarse como variable global.
En programacin en serio no es acostumbrado usar muchas variables globales por varias razones, una de ellas es
que variables globales estn vivas todo el tiempo de ejecucin del programa y si una global solo la ocupan unos
cuantos procedimientos no tiene caso que este viva para todo el resto, otra razn es que es peligroso tener
variables globales porque todo el conjunto de procedimiento y funciones que componen un programa tienen acceso
o comparten su valor y se corre el riesgo de que inadvertidamente alguno de ellos modifique su valor.
prog13.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
// recordar declarar primero proc y funciones
void proc1();
// variables globales
float base, altura, area;
void main() {
clrscr();
//capturando datos
printf("dame base: ");scanf("%f",&base);

printf("dame altura: ");scanf("%f",&altura);


//llamando procedimiento
proc1();
}
void proc1(){
// area de operaciones
area = base * altura / 2;
// area de construccin de pagina de salida
printf(" area =%0.2f",area);
getchar();getchar();
}
Es muy agradable trabajar sin parmetros pero recordar la nota de arriba que no es muy bueno usar muchas
variables globales:
Corrida:

TAREAS PROGRAMACION C++


1.- BOLETA DE CALIFICACIONES Y SOLO USAR DOS VARIABLES GLOBALES
2.- UNA TABLA DE MULTIPLICAR Y SOLO USAR UNA VARIABLE GLOBAL
TEMA 4: FUNCIONES C++

Una funcin es un modulo de un programa separado del cuerpo principal, que realiza una tarea especifica y que
puede regresar un valor a la parte principal del programa u otra funcin o procedimiento que la invoque.
La forma general de una funcin es:
Tipodato Nomfun(parmetros)
{

cuerpo de instrucciones;
return [dato,var,expresion];
}
Donde tipodato especifica el tipo de dato que regresara la funcin.
La instruccin RETURN es quien regresa un y solo un dato a la parte del programa que la este llamando o
invocando, sin embargo es de considerar que return puede regresar un dato, una variable o una expresin
algebraica(no ecuacin o formula) como lo muestran los siguientes ejemplos;
a) return 3.1416;
b) return area;
c) return x + 15/2;
La lista de parmetros formales es una lista de variables separadas por comas (,) que almacenaran los valores que
reciba la funcin, estas variables actan como locales dentro del cuerpo de la funcin.
Aunque no se ocupen parmetros los parntesis son requeridos.
INSTRUCCION RETURN
Dentro del cuerpo de la funcin deber haber una instruccin return cuando menos para regresar el valor, esta
instruccin permite regresar datos.
Recordar adems que cuando se llame una funcin deber haber una variable que reciba el valor que regresara la
funcin, es decir generalmente se llama una funcin mediante una sentencia de asignacin, por ejemplo
resultado=funcin(5, 3.1416);
prog14.cpp
<code>
#include <stdio.h>
#include <conio.h>
#include <string.h>
todos los proc y funciones deben declararse antes del main float fun1(float b, float a); void main() { clrscr();
capturando datos
area de declaracin de variables y captura de datos int base,altura; float area; area de captura
printf(dame base: );scanf(%d,&base);
printf(dame altura: );scanf(%d,&altura);
llamando o invocando la funcin fun1 area= fun1(base, altura); desplegando
printf( area =%0.2f,area);

getchar();getchar();
}
float fun1(float b, float a)
{
return b * a / 2;
}
</code
Corrida:

Usar de preferencia solo ints y doubles como parmetros.


Es permitido poner mas de un return en el cuerpo de instrucciones sobre todo en condiciones, pero solo un return se
ejecutara, ejemplo;
if (suma >= 10)
{ return 10; }
else
{ return 20; }
EXISTEN 3 CLASES USUALES DE FUNCIONES.
Las primeras son de tipo computacional que son diseadas para realizar operaciones con los argumentos y
regresan un valor basado en el resultado de esa operacin.
Las segundas funciones son aquellas que manipulan informacin y regresan un valor que indican la terminacin o la
falla de esa manipulacin.
Las terceras son aquellas que no regresan ningn valor, es decir son estrictamente procedurales.
Esto quiere decir que en general toda operacin o calculo en un programa deber convertirse a una o muchas
funciones y el resto debern ser procedimientos.

TAREAS PROGRAMACION C++


1.- Capturar 3 calificaciones y nombre en un procedimiento, calcular promedio en una funcin, desplegar en otro
procedimiento.
2.- Crear una tabla de multiplicar, captura y control de ciclo en el principal, operaciones en una funcin, despliegue
en el principal.
TEMA 5: ARREGLOS COMO PARAMETROS C++

Para pasar un arreglo completo como parametro a un procedimiento a una funcin solo se manda el nombre del
arreglo sin corchetes e ndices, en el procedimiento o funcin que recibe solo se declara un arreglo del mismo tipo y
se puede usar el mismo o diferente nombre del arreglo sin corchetes e ndices.
Sin embargo es conveniente aclarar, que a diferencia de variables escalares normales, c++ no genera una nueva
variable en memoria ni tampoco copia los datos al arreglo que recibe, en su lugar cpp sigue usando los datos que
estn en el arreglo original, es por esta razn que cambios que se le hagan a los datos del arreglo que recibe
realmente se esta haciendo al arreglo original como lo muestra el siguiente ejemplo:
Prog15.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
void proc1(int vector[]);
void main() {
clrscr();
//creando arreglo y cargndolo
int lista[5]= {10,11,12,13,14};
// mandndolo a procedimiento recordar como se manda sin []
proc1(lista);
// desplegando arreglo lista y observar que datos salen
for(int reng=0; reng<=4; reng++)
printf("%d \n",lista[reng]);
getchar();
} // termina main

void proc1(int vector[])


{
// sumndole 50 a lo que se tenia en arreglo lista
// es decir vector queda cargado con 60,61,62,63,64
for(int reng=0; reng<=4; reng++)
vector[reng]=vector[reng]+ 50;
// observar que no se regresa nada
} //termina proc1
corrida:

Es de recordar que los cambios que le hagan al arreglo dentro de la funcin se reflejaran en el arreglo original, es
por esto que si se quiere modificar un arreglo en una funcin no hay necesidad de regresar ningn valor.
TAREAS PROGRAMACION C++
1.- Inicializar 10 edades en el principal mandar la lista a un procedimiento que la convierte a meses, desplegar en
principal.
2.- Capturar un arreglo de 7 ciudades en principal, sortear u ordenar o alfabetizar (sorteo burbuja) en un
procedimiento y desplegar en otro procedimiento tanto la lista original como la lista ordenada.

UNIDAD 5: C++ REGISTROS Y ARCHIVOS DIRECTOS


TEMA 1: INTRODUCCION ARCHIVOS C++

Antes de empezar a programar en serio se estudian en esta


UNIDAD dos problemas.
Problema A:
Variables que puedan almacenar un conjunto de valores y no necesariamente del mismo tipo.
Problema B:

Resolver el problema de almacenar en forma permanente los datos que se generan dentro de un programa ya sea
por captura, proceso, etc.;
El problema (A) se resuelve usando el concepto de estructuras o registros el problema (B) se resuelve usando el
concepto de archivos.
TEMA 2: C++ ESTRUCTURAS O REGISTROS

En este tema exploramos en C la estructura mas comn de representacin de datos la llamada estructura.
Variables simples o escalares pueden almacenar un datum de informacin y arreglos pueden almacenar conjuntos
de ellos del mismo tipo y al mismo tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones
pero a menudo se necesita trabajar sobre datos de diversos tipos en este caso ni variables escalares ni arreglos son
adecuados.
Para resolver este problema C provee de un tipo de dato especial llamado estructura.
Los elementos individuales de una variable estructura reciben el nombre de campos.
Ej:
struct alumno
nombre campo1
direccion campo2
edad campo3
etc.
EL FORMATO GENERAL DE UNA ESTRUCTURA ES:

tipo de almacenamiento struct


{
tipo campo1;
tipo campo2;
}lista de variables;

Es el registro completo quien se declara en cualquiera de los lugares adecuados para ello.
Son los campos del registro a quienes se les va a asignar, inicializar, capturar, etc. y de esta manera a los campos
se les considera como variables normales.

Para indicar a C durante cualquier proceso que la variable a utilizar es un campo de una estructura se utiliza el
siguiente formato.
nomregistro.nombredelcampo
Ejemplo.
prog16.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;}alumno;
void main() {
clrscr();
// captura de campos
printf("dame matricula :");scanf("%d",&alumno.matricula);getchar();
printf("dame nombre :");gets(alumno.nombre);
printf("dame edad :");scanf("%d",&alumno.edad);
// area de operaciones
alumno.edad = alumno.edad * 12;
// area de salida
printf("MATRICULA =%d \n",alumno.matricula);
printf("NOMBRE =%s \n",alumno.nombre);
printf("MESES =%d \n",alumno.edad);
getchar();getchar();
}

Corrida:

Las operaciones mas elementales con los campos de una estructura incluyen captura e inicializacin.
TAREAS PROGRAMACION C++
1.-Crear un registro de alumno con 3 calificaciones.
2.-Declarar un registro de empleado capturar y desplegar un numero indeterminado de veces.
3.-Capturar un registro local de un producto en el principal, mandarlo como parametro a un procedimiento y
desplegarlo.
4.-Capturar un registro local en el principal, mandar el sueldo a una funcin que le aumente el 25% y desplegar en el
principal.
5.-Capturar en principal un registro local de cuentas por cobrar, mandar a un procedimiento e imprimir un aviso si el
saldo esta atrasado.
TEMA 3: C++ ARCHIVOS (INTRODUCCION)

Si bien es cierto que ya se pueden manejar gran cantidad de datos del mismo y diferente tipo al mismo tiempo el
problema es que al terminar de ejecutarse el programa los datos se pierden.
De esta situacin nace el concepto de archivos que son medios que facilita el lenguaje para almacenar los datos en
forma permanente, normalmente en los dispositivos de almacenamiento estndar.
En general es necesario entender algunos conceptos elementales de sistemas de archivos tradicionales.
Como nota a tomar en cuenta los datos que se van almacenando en un archivo de disco, se almacenan en
renglones consecutivos y cada rengln en disco, se conoce como registro del archivo, favor de no confundir el
concepto de registro de archivo y registro o estructura como variable ya analizada, son dos cosas totalmente
diferentes aunque desafortunadamente se llamen igual.
Primero: Operaciones con archivos
ESCRIBIR O GRABAR: Es la operacin mas elemental con un archivo, consiste en tomar un o unos datos en
variables de cualquier tipo (escalar, mezcla de datos, arreglos, estructuras) y almacenarlas en un archivo de datos
en disco.
LEER: Operacin consistente en sacar los datos del archivo en disco y mandarlos o cargar la variable respectiva

Segundo: Organizacin de archivos


En general existen dos tipos de archivos:
Archivos Secuenciales.- En este caso los datos se almacenan en forma consecutiva y no es posible leer (recuerdan
que significa esta operacin) ningn registro (recuerdan la nota de arriba) directamente, es decir para leer el registro
n se deber recorrer o accesar los n-1 registros anteriores.
Archivos Directos o Random.- Para este caso si se puede acceder o leer un rengln n cualquiera.
Tercero: Tipo de archivos
En general existen tantos tipos de archivos como tipos de datos existen, es decir:
El paquete estndar de input/output de C, hace disponible 4 mtodos o maneras diferentes de leer y escribir los
datos a disco.
Tres de ellas corresponden exactamente a lo aprendido de leer y escribir datos desde el teclado hacia la pantalla.
1.- Datos a ser grabados o ledos como un carcter a la vez, se utilizaran funciones anlogas a getchar y putchar.
2.- Datos que pueden ser ledos o grabados como una string se usaran funciones anlogas a gets y puts.
3.- Datos que se capturen o desplieguen con formatos parecidos a los usados por scanf y printf se usaran funciones
similares, es decir sern problemas que involucran mezclas de strings, caracteres, floats, etc.
4.- tambin se podrn leer y escribir datos de tipo arreglo y registros utilizando instrucciones apropiadas, en
resumen:
carcter
string
Formateado
Registros y arreglos
Leer
getc()
fgets()
fscanf()
fread()
Escribir
putc()
fputs()
fprintf()

fwrite()
ATENCION: Ya que se decide utilizar algn archivo especifico de datos(caracteres, strings, formateados, registros o
arreglos) solo utilizar las funciones de escritura y lectura de ese tipo de archivo, por ningn motivo mezcle funciones
de lectura y escritura de otro tipo de archivos.
Cuarto: Almacenamiento en archivos
Modo Texto: en este caso los datos son almacenados usando ASCII y por tanto son plenamente visibles usando
cualquier editor.
Modo Binario: en este caso los datos son almacenados en notacin hexadecimal y por tanto se ocupa un editor
binario para reconocerlos, sin embargo un archivo binario es mas compacto que un archivo texto.
PARA PROPOSITO DE ESTE CURSO, ENTONCES NOS CONCENTRAMOS EN ARCHIVOS DISCO DE
REGISTROS O ESTRUCTURAS, SECUENCIALES, DIRECTOS Y BINARIOS, DE C++ PERO NO OLVIDAR QUE
EXISTEN LOS OTROS TIPOS QUE MAS ADELANTE ESTARAN INCLUIDOS EN ESTE LIBRO.
TEMA 4: C++ ARCHIVOS DISCO (CONTINUACION)

Existen muchas operaciones asociadas a archivos en c++, las mas elementales son:
1.- Creacin de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco con su nombre
tipo y especialidad de almacenamiento de datos apropiado.
2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para procesarlo ya sea
para cargar o grabar estructuras en sus registros o leer algn registro en especial para mandarlo a una variable de
cualquier tipo.
No confundir creacin con apertura, creacin es un proceso que solo se ejecuta una sola vez en la vida de un
archivo, mientras que apertura, siempre se esta realizando por los programas especializados en algn proceso.
3.-Cierre de archivos: Es la operacin mas importante en cualquier programa que maneje archivos, o se cierra el
archivo como ultima instruccin del programa o se vera el anuncio ABORT,RETRY,FAIL.
Windows 98, /s, scandisk
4.-Altas en archivo.- En este proceso se captura una estructura en memoria con sus datos pertinentes y despus
se graba la estructura al archivo en disco.
5.-Lectura de archivo.- En este proceso se abre el archivo, se manda el registro de disco a una estructura en
memoria para su procesamiento.
6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la
pantalla ya sea consola o mejor an, a una pagina html
7.-Bsqueda en archivos: Una de las operaciones mas comunes consiste en que el usuario pide toda la
informacin de algn rengln en disco proporcionando la informacin de algn campo generalmente el campo clave
de la estructura.

8.- Filtros.- En este proceso el usuario esta interesado en algn conjunto de renglones con caractersticas comunes
(condicin), por ejemplo todos los alumnos de sistemas o todos los empleados que ganen mas de $500.00 pesos,
o todos los clientes que sean de Tijuana, etc.
9.-Modificaciones de registros o archivos: Problema muy comn, donde los datos originales ya grabados se
tienen que cambiar o actualizar, por ejemplo el nombre no era juan es juana, o la calificacin no es 100 es 20,
etc.
10.- Bajas de registros: tambin muy comn este proceso, por ejemplo el alumno ya egreso, el cliente huyo, etc.
TEMA 5: CREACION ARCHIVOS SECUENCIAL DISCO C++

En este proceso se pretende solamente crear un archivo secuencial en disco.


Prog17.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;}alumno;
void main() {
clrscr();
//creando y cerrando el archivo en disco
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\alumnos.dat","w");
fclose(archdisco);
printf("ARCHIVO CREADO");
getchar();getchar();
}

CORRIDA:

Recordar que la estructura que se uso para crear el archivo se deber usar siempre y con el mismo orden cuando
se acceda al archivo con los procesos u operaciones anteriormente mencionados.
Lo primero que se crea es una variable de tipo puntero o apuntador a un archivo a disco(instruccin FILE y debe ser
en MAYUSCULAS) llamada archdisco(muy original).
Variables apuntadores son tipos especiales de variables que tienen la capacidad de almacenar no datos, pero si
direcciones ya sean de la memoria del computador o como en este caso de una direccion fisica del disco.
En C una variable apuntador se declara anteponiendo un asterisco antes del nombre.
En el programa se est creando una variable apuntador bautizada con el nombre de archdisco que almacenara la
direccion fisica de el archivo en disco, en algn cilindro, track , sector deber quedar el archivo no es verdad??.
Como segundo paso se abre el archivo con la instruccin fopen():
archdisco = fopen(cpp:\\ac\\alumnos.dat,w);
Observar que el path es la direccion fisica de tu sitio en TU PC.
Observar el doble diagonal(\\) en el parametro.
La funcin fopen() cuando realiza el trabajo de abrir un archivo, regresa la direccion fisica donde crea o graba el
archivo en disco.
El primer parametro o argumento en esta funcin es la
UNIDAD de disco y el nombre del archivo.
El segundo parametro o argumento es llamado modo y es una de los varios modos que podemos usar.

r Lectura.
w Escritura.
a Append, si el archivo ya existe append empieza a aadir los nuevos datos al final del archivo ya existente.
r+ Lectura y escritura, ya debe existir el archivo.
w+ Crea para lectura y escritura y si ya existe, sobreescribe.
a+ Crea o abre para lectura y append, sino existe el archivo ser creado.

En adicion a los valores listados tambin es permitido agregar uno de los siguientes caracteres, pero insertandolo
antes del signo +
modo significado.

t lo abre en modo texto.


b lo abre en modo binario.

Cuando se ha finalizado de escribir al archivo se debe cerrar y esto se hace con la instruccin:
fclose(archdisco);
TEMA 6: GRABACION Y LECTURA DISCO C++

Como ya se menciono grabar y lectura de registros o estructuras a renglones o registros de archivos en disco.
Estos dos procesos son los casos mas comunes y frecuentes que se pueden realizar con un archivo de disco.
GRABACION DE UNA ESTRUCTURA A UN ARCHIVO EN DISCO
prog18.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;} alumno;
void main() {
clrscr();
// captura de campos
printf("dame matricula :");scanf("%d",&alumno.matricula);getchar();
printf("dame nombre :");gets(alumno.nombre);

printf("dame edad :");scanf("%d",&alumno.edad);


// grabando a disco
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\alumnos.dat","at+");
fwrite(&alumno,sizeof(alumno),1,archdisco);
fclose(archdisco);
//avisando usuario
printf("alumno insertado");
getchar();getchar();
}
corrida:

La primera observacin es que se esta usando el fopen() en modo at+ en lugar de modo w pero es para matar
dos pajaros de un tiro, reestudiar la clase anterior de modos de apertura.
La unica instrucin nueva es:
fwrite(&persona,sizeof(alumno),1,archdisco);
Como se observa ocupa 4 parmetros que son:
Con apuntadores se manejan dos operadores diferentes que son ( * y &) el asterisco como ya se indico se usa para
crear una variable apuntador, es decir variables que almacenaran direccines fisicas de algn lugar de la memoria
del computador.
Por supuesto tambin que en ese espacio o bodega en memoria se almacenaran datos o informacin, es el
operador &(ampersand) quien se usa para accesar a esos datos, ejemplo:
Float *pi; aqui se crea una variable apuntador que guardara la direccin donde se almacenara un valor de tipo float.
Si en ese programa, se usa: pi= 3.1416, el compilador protesta porque se esta pretendiendo almacenar un valor
float en una variable que solo puede almacenar direcciones de memoria. Pero si es valido &pi=3.1416, es decir
cuando usamos el operador ampersand estamos trabajando con el contenido de una direccin de memoria, es por
eso que: 1.-PRIMER PARAMETRO: fwrite() ocupa primero conocer cuales datos va a almacenar en disco, aqui se le
esta indicando que es el dato que se tiene en la direccion de memoria donde esta el registro alumno. 2.-

SEGUNDO PARAMETRO: fwrite(), ocupa conocer cuantos bytes de informacin debe grabar, para esto se tienen
dos opciones o se le da el valor exacto por ejemplo 64 bytes o 39 bytes o mas facil aun se usa sizeof() que regresa
el tamao del dato. 3.- TERCER PARAMETRO: fwrite(), necesita conocer tambin cuantas estructuras o registros a
la vez debe grabar por lo general es un solo registro, pero mas adelante estudiaran que es posible grabar mas de
un registro a la vez y esto es de mucho provecho, porque por ejemplo si en un sistema se ocupa grabar 1000
registros y usamos fwrite() de uno en uno, quiere decir que habra mil accesos a disco. 4.-CUARTO PARAMETRO:
fwrite() tambin ocupa conocer exactamente en que cluster, sector y byte exacto del disco duro debe grabar el
registro, la primera opcin seria desarmar el disco duro y ver donde hay lugar para poner el archivo J o mejor aun
usar la variable archdisco que ya tiene esa direccin fisica del archivo en disco. LECTURA DE REGISTROS
Prog19.CPP <code> #include <stdio.h> #include <conio.h> #include <string.h> struct { int matricula; char
nombre[30]; int edad;} alumno; void main() { clrscr(); leyendo disco
FILE *archdisco;
archdisco = fopen(cpp:\\ac\\alumnos.dat,at+);
aqui siempre debe empezar el ciclo de lectura y fread() regresa siempre cuantas estructuras leyo
while(fread(&alumno,sizeof(alumno),1,archdisco)==1)
{
desplegando estructuras printf(MATRICULA =%d ,alumno.matricula); printf( NOMBRE =%s ,alumno.nombre);
printf( MESES =%d ,alumno.edad); printf(\n); }; aqui termina while
// no olvidar cerrar archivo y siempre fuera de while
fclose(archdisco);
getchar();getchar();
}
</code>
corrida:

Las unicas notas son :


En fopen() se uso modo a+.
En lugar de fwrite(), se usa fread() con los mismos cuatro parmetros.
tambin recordar que fread(), nos regresa la cantidad de registros que leyo del disco, por eso el ciclo while se
convierte en falso cuando fread() regresa 0 y esto indica que se llego al fin del archivo.
Y seria bueno que el despliegue fuese en una tabla pero esto queda de tarea.

TAREAS PROGRAMACION C++


1.-crear, cargar y leer un archivo C++ de mercancias y otro de empleados y agregar un ciclo para el proceso de
captura y no tener que estar ejecutando el programa de captura un monton de veces.
TEMA 7: BUSQUEDA ARCHIVOS C++

En este tema se analiza la busqueda de un registro o rengln determinado.


En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacin
proporcionando un dato de busqueda generalmente la clave del registro.
prog20.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;} alumno;
void main() {
clrscr();
// cargando clave a buscar
printf("dame matricula buscar:");
int clave; scanf("%d",&clave);getchar();
//abriendo, leyendo,cargando estructura
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\alumnos.dat","at+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&alumno,sizeof(alumno),1,archdisco)==1)
{

// desplegando estructura buscada


if ( clave == alumno.matricula)
{ printf("MATRICULA =%d ",alumno.matricula);
printf(" NOMBRE =%s ",alumno.nombre);
printf(" MESES =%d ",alumno.edad);
printf("\n");};
}; // aqui termina while
// no olvidar cerrar archivo y siempre fuera de while
fclose(archdisco);
getchar();
}
corrida:

Recordar que la caracteristica principal de un archivo secuencial de c++ es que no es posible acceder o accesar a
un registro o rengln especifico o determinado sino que se deber recorrer todos los n-1 renglones anteriores.
Esta situacin se da porque al construir un registro cualquiera con una montn de campos strings a la hora de
almacenar dichos registros, estos registros tendran tamaos diferentes, esta es la razon principal por la cual al
buscar un registro especifico se tiene que recorrer y validar todos los registros anteriores.
En el programa ejemplo se esta usando un ciclo while fread para recorrer todos los registros del archivo, por
supuesto que si se tiene un archivo con 5000 registro y el buscado es el 4500 al menos se se tendr que recorrer
todos los 4499 registros anteriores.
TAREAS PROGRAMACION C++
Construirles programas de busquedas a los archivos de c++ ya construidos.

TEMA 8: FILTROS C++

Otro problema similar al anterior es el de filtros, es decir en muchas ocasiones es necesario obtener informacin
acerca de un subconjunto de renglones de el archivo.
Por ejemplo todos los estudiantes que sean mayores de 17 aos, o todos los clientes que sean de Tijuana, etc., a
esto le llamamos filtros o condiciones.
prog21.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;} alumno;
void main() {
clrscr();
// cargando variable condicion
printf("EDAD MAYOR QUE >= :");
int edad; scanf("%d",&edad);getchar();
//abriendo, leyendo,cargando estructura
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\alumnos.dat","at+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&alumno,sizeof(alumno),1,archdisco)==1)
{
// desplegando estructuras buscadas
if (alumno. edad >= edad)

{ printf("%d ",alumno.matricula);
printf(" %s ",alumno.nombre);
printf(" %d ",alumno.edad);
printf("\n");};
}; // aqui termina while
// no olvidar cerrar archivo y siempre fuera de while
fclose(archdisco);
getchar();
}
corrida:

Como se observa es un problema y una solucin similar al tema anterior de busquedas.


TAREAS PROGRAMAS EN C++
Hacerles programas de filtrado a los archivos c++ anteriores, pero la condicion de busqueda formarla
completamente con variables uno para la variable y otro para el operador relacional para el dato, esto permitiria que
se pudiera filtrar el archivo por cualquier campo.
TEMA 9: BAJAS O ELIMINACIONES ARCHIVOS DISCO C++

Eliminacin o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen
dos maneras por las cuales se puede realizar ese proceso.
En la primera manera de la cual se proporciona el ejemplo correspondiente se usaran dos archivos, el archivo
original y un archivo temporal, el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si
no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se termina de procesar todo el
archivo original, el archivo temporal solo contendra todos los registros que no se quisieron eliminar, ya con estos dos
archivo se procede a eliminar o borrar usando la instruccin remove de el archivo original y se procede a renombrar
usando la instruccin rename de el archivo temporal como nuevo archivo original.

prog22.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;} alumno;
void main() {
clrscr();
// cargando clave a eliminar
printf("dame matricula eliminar:");
int clave; scanf("%d",&clave);getchar();
FILE *arch1;
FILE *arch2;
arch1 = fopen("cpp:\\ac\\alumnos.dat","r+");
arch2 = fopen("cpp:\\ac\\temporal.dat","at+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&alumno,sizeof(alumno),1,arch1)==1)
{
if ( clave != alumno.matricula) fwrite(&alumno,sizeof(alumno),1,arch2);
}; // aqui termina while
//cerrando archivos
fclose(arch1);

fclose(arch2);
// removiendo y renombrando archivos
// recordar que directorios y archivos de datos no
// mas de 8.3 letras
remove("cpp:\\AC\\ALUMNOS.DAT ");
rename("cpp:\\AC\\TEMPORAL.DAT","cpp:\\AC\\ALUMNOS.DAT ");
//avisando
puts("registro eliminado");
getchar();
}
archivo original PROG19:

corrida prog22

corrida prog19

pobre ana maria se desparecio:>)

EL problema con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de
recuperar esa informacin posteriormente.
Es por eso que otra tecnica comn de eliminacin es incluir un campo de estado, status o bandera o semaforo en el
registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el carcter
'A' alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura,
busqueda y filtros debern revisar esta campo de estado antes de hacer algo con el registro.
TAREAS PROGRAMACION C++
Construir programas de eliminacion usando los dos mtodos( bajas fisicas como en el ejemplo y bajas logicas como
se indica en el ultimo parrafo) para los archivos construidos.
TEMA 10: C++ OPERACIONES CON CAMPOS

En este tema se analiza la manera de poder realizar operaciones o procesos con los campos de los registros en el
archivo secuencial, lo unico importante a considerar es que los campos del registro son en cierta medida igual que
variables normales y por tanto se pueden proceesar de manera normal como lo muestra el ejemplo.
prog23.cpp
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;} alumno;
void main() {
clrscr();
FILE *arch1;
FILE *arch2;
arch1 = fopen("cpp:\\ac\\alumnos.dat","r+");

arch2 = fopen("cpp:\\ac\\temporal.dat","at+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&alumno,sizeof(alumno),1,arch1)==1)
{
// OPERACIONES
alumno.edad=alumno.edad +50;
//grabando a temporal
fwrite(&alumno,sizeof(alumno),1,arch2);
}; // aqui termina while
//cerrando archivos
fclose(arch1);
fclose(arch2);
// removiendo y renombrando archivos
// recordar que directorios y archivos de datos no
// mas de 8.3 letras
remove("cpp:\\AC\\ALUMNOS.DAT ");
rename("cpp:\\AC\\TEMPORAL.DAT","cpp:\\AC\\ALUMNOS.DAT ");
//avisando
puts("EDADES MAS 50");
getchar();
}
corrida:

corrida prog19

como se observa la solucin es muy sencilla solo se ocupa el registro original y los dos archivos el original y el
temporal, se va leyendo registro a registro de archivo original al registro en memoria correspondiente, se realiza la
operacin u proceso deseado con el registro y se graba el registro modificado en el archivo temporal, al final se
elimina archivo original y se renombra el archivo temporal.
TAREAS PROGRAMAS EN C++
Construirles programas que procesen algunos campos de los archivos ejemplos que ya tienen construidos.
TEMA 11: EDICION DE REGISTROS C++

Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacn o para
corregir algn error de captura original o para agregar alguna columna que no existia por modificacin de la tabla o
la base de datos.
La solucion es similar a los temas anterior, es decir se ocupan los dos archivos el original y el temporal y ya sea que
se modifique una sola clave o se modifiquen todos los registros el ejemplo que se construye va mostrando los
registros del archivo y pregunta y modifica o edita el registro pedido.
Prog24.cpp
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;} alumno;
void main() {
clrscr();
// cargando clave a editar

printf("dame matricula editar:");


int clave; scanf("%d",&clave);getchar();
FILE *arch1;
FILE *arch2;
arch1 = fopen("cpp:\\ac\\alumnos.dat","r+");
arch2 = fopen("cpp:\\ac\\temporal.dat","at+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&alumno,sizeof(alumno),1,arch1)==1)
{
if ( clave == alumno.matricula)
{
printf("dame nuevo nombre :");gets(alumno.nombre);
printf("dame nueva edad :");scanf("%d",&alumno.edad);
fwrite(&alumno,sizeof(alumno),1,arch2);
}
else
{
fwrite(&alumno,sizeof(alumno),1,arch2);
};
}; // aqui termina while
//cerrando archivos
fclose(arch1);
fclose(arch2);
// removiendo y renombrando archivos
// recordar que directorios y archivos de datos no
// mas de 8.3 letras

remove("cpp:\\AC\\ALUMNOS.DAT ");
rename("cpp:\\AC\\TEMPORAL.DAT","cpp:\\AC\\ALUMNOS.DAT ");
//avisando
puts("REGISTRO EDITADO");
getchar();getchar();
}
corrida:

corrida prog19.cpp

TAREAS PROGRAMACION C++


1.- construir programas de edicin para sus archivos

UNIDAD 6: C++ REGISTROS Y ARCHIVOS DIRECTOS


TEMA 1: INTRODUCCION REGISTROS ESTRUCTURAS C++

SE DICE QUE UN ARCHIVO ES DE ACCESO U ORGANIZACION DIRECTA CUANDO PARA ACCEDER A UN


REGISTRO N CUALESQUIERA NO SE TIENE QUE PASAR POR LOS N-1 REGISTROS ANTERIIORES.
Como se observa de esta definicin los archivos directos tienen una gran ventaja( son mucho mas rapidos) cuando
se comparan con los archivos de acceso u organizacion secuencial estudiados en la
UNIDAD anterior.
Aunque lo anterior no quiere decir que son mejores que los secuenciales, es decir es el propio problema planteado
quien exigira una solucion u otra, por ejemplo si se quiere construir un archivo para almacenar los datos de un
guestbook, si se construye de manera directa seria muy rapido pero si lo construimos de manera secuencial, se
podrn almacenar datos con cantidades de informacin mas adecuados al problema.

Es decir un archivo de acceso directo tiene que tener sus registros o renglones de un tamao fijo o predeterminado
de antemano.
Un archivo de acceso directo permite posicionar el apuntador de interno de registros, a cualquier registro
determinado sin necesidad de pasar por todos los registros anteriores, usando las siguientes funciones.
1) int fseek(apuntador,long offset,origen);
Esta funcin posiciona el apuntador de registro en el byte indicado. Regresa 0 si se pudo posicionar.
apuntador=fopen(a:archivo.dat,r+);
fseek(apuntador,(long)(clave)*(sizeof(registro)),0);
0 > SEEK_SET principio del archivo.
1 > SEEK_CUR posicion actual.
2 > SEEK_END fin del archivo.
2) long ftell(apuntador);
Regresa un valor long indicando la posicion actual del cursor interno de registros de archivo.
3) int rewind(apuntador);
Regresa el apuntador al principio del archivo.

Ejemplo para hacer modificaciones.


fseek(apuntador,(long)(clave)*(sizeof(registro)),0);
fread(&registro,sizeof(registro),1,apuntador);
hacer las modificaciones.
rewind(apuntador);
fseek(apuntador,(long)(clave)*(sizeof(registro)),0);
fwrite(&registro,sizeof(registro),1,apuntador);

TEMA 2: CREACION ARCHIVOS DIRECTOS DISCO C++

En este proceso se pretende solamente crear un archivo directo en disco.


Prog25.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
//creando y cerrando el archivo en disco
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","wb");
fclose(archdisco);
printf("ARCHIVO CREADO");
getchar();getchar();
}
corrida:

Recordar que la estructura que se uso para crear el archivo se deber usar siempre y con el mismo orden cuando
se acceda al archivo con los procesos u operaciones anteriormente mencionados.

Observar que es completamente similar a la creacin de archivos secuenciales.


Lo primero que se crea es una variable de tipo puntero o apuntador a un archivo a disco(instruccin FILE y debe ser
en MAYUSCULAS) llamada archdisco(muy original).
Variables apuntadores son tipos especiales de variables que tienen la capacidad de almacenar no datos, pero si
direcciones ya sean de la memoria del computador o como en este caso de una direccion fisica del disco.
En C una variable apuntador se declara anteponiendo un asterisco antes del nombre.
En el programa se est creando una variable apuntador bautizada con el nombre de archdisco que almacenara la
direccion fisica de el archivo en disco, en algn cilindro, track , sector deber quedar el archivo no es verdad??.
Como segundo paso se abre el archivo con la instruccin fopen():
archdisco = fopen(cpp:\\ac\\archivo1.dat,wb);
Observar que el path es la direccion fisica de tu PC.
Recordar tambin que archivos y directorios msdos deben respetar 8.3 letras.
Observar el doble diagonal(\\) en el parametro.
La funcin fopen() cuando realiza el trabajo de abrir un archivo, regresa la direccion fisica donde crea o graba el
archivo en disco.
El primer parametro o argumento en esta funcin es la
UNIDAD de disco y el nombre del archivo.
El segundo parametro o argumento es llamado modo y es una de los varios modos que podemos usar.

r Lectura.
w Escritura.
a Append, si el archivo ya existe append empieza a aadir los nuevos datos al final del archivo ya existente.
r+ > Lectura y escritura, ya debe existir el archivo.
w+ > Crea para lectura y escritura y si ya existe, sobreescribe.
a+ > Crea o abre para lectura y append, sino existe el archivo ser creado.

En adicion a los valores listados tambin es permitido agregar uno de los siguientes caracteres, pero insertandolo
antes del signo +
modo significado.

t lo abre en modo texto.


b lo abre en modo binario.

Cuando se ha finalizado de escribir al archivo se debe cerrar y esto se hace con la instruccin:
fclose(archdisco);
TAREAS PROGRAMAS EN C++
Crear en c++ archivos directos de alumnos provedores libros mercancias peliculas
TEMA 3: GRABACION Y LECTURA ARCHIVOS DISCO C++

Como ya se menciono grabar y lectura de registros o estructuras a renglones o registros de archivos en disco.
Estos dos procesos son los casos mas comunes y frecuentes que se pueden realizar con un archivo de disco.
GRABACION DE UNA ESTRUCTURA A UN ARCHIVO EN DISCO
prog26.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
// captura de campos
printf("dame clave :");scanf("%d",&animalito.clave);getchar();
printf("dame nombre :");gets(animalito.nombre);
printf("dame edad :");scanf("%d",&animalito.edad);
// grabando a disco

FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","ab+");
fwrite(&animalito,sizeof(animalito),1,archdisco);
fclose(archdisco);
//avisando usuario
printf("animalito insertado");
getchar();getchar();
}
CORRIDA:

Observar que es completamente similar aL programa de archivos secuenciales, solo se recomienda y exije que las
claves sigan la secuencia 0,1,2,3,4,5..
Otra observacin es que se esta usando el fopen() en modo ab+ en lugar de modo w pero es para matar dos
pajaros de un tiro, reestudiar la clase de modos de apertura.
La instrucin de grabacin es:
fwrite(&animalito,sizeof(animalito),1,archdisco);
que ya se estudio anteriormente.
LECTURA CONSULTA DESPLIEGUE DE REGISTROS
Prog27.CPP
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;

char nombre[30];
int edad;} animalito;
void main() {
clrscr();
// leyendo disco
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","rb+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&animalito,sizeof(animalito),1,archdisco)==1)
{
// desplegando estructuras
printf("%d ",animalito.clave);
printf("%s ",animalito.nombre);
printf("%d ",animalito.edad);
printf("\n");
}; // aqui termina while
// no olvidar cerrar archivo y siempre fuera de while
fclose(archdisco);
getchar();getchar();
}
CORRIDA:

Seria bueno que el despliegue fuese en una tabla pero esto queda de tarea.

TAREAS PROGRAMAS EN C++


1.- Cargar y Leer los archivos pedidos en el tema anterior.
TEMA 4: BUSQUEDA ARCHIVOS C++

En este tema se analiza la busqueda de un registro o rengln determinado.


En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacin
proporcionando un dato de busqueda generalmente la clave del registro.
Recordar que en esta operacin se muestra la diferencia fundamental entre archivos secuenciales y archivos
directos, es decir aqui se puede accesar directamente un registro n cualesquiera.
Prog28.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
// cargando clave a buscar
printf("dame clave buscar:");
int claveb; scanf("%d",&claveb);
//abriendo, leyendo,cargando estructura
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","ab+");
// usar fseek() para posicionarse al principio de registro buscado
fseek (archdisco, (long)(claveb)* sizeof(animalito), 0 );
// ahora se lee el registro

fread(&animalito,sizeof(animalito),1,archdisco);
// desplegando estructura y asegurandose
printf("%d ",animalito.clave);
printf("%s ",animalito.nombre);
printf("%d ",animalito.edad);
printf("\n");
// no olvidar cerrar archivo
fclose(archdisco);
getchar();getchar();
}
corrida:

Como se desprende del programa usando fseek() es posible posicionarse en cualquier byte del archivo.
El formato completo de fseek() es:
fseek(apuntador,(long)(clave)*(sizeof(registro)),0);
donde los parmetros son:
1. Apuntador al archivo en disco
2. El segundo parametro es el BYTE donde se quiere que empieze la lectura o grabacin al archivo en disco.
3. Este BYTE debe ser de tipo LONG asi que si en algn programa de ejemplo ven fseek( , 387L, ); que no les llame
la atencin, es otra manera de hacerle cast a un dato.
Como va a estar dificil que se le atine a un byte determinado, es por eso que en el programa mejor se deja que sea
el propio servidor quien calcule el byte donde empieza un registro determinado con clave * sizeof o tamao de
registro.
4. El tercer parametro es a partir de donde se quiere posicionar el apuntador interno del archivo, los valores pueden
ser:
0 SEEK_SET principio del archivo.
1 SEEK_CUR posicion actual.

2 SEEK_END fin del archivo.


RECORDAR QUE ES MUY IMPORTANTE QUE LAS CLAVES GRABADAS EN UN ARCHIVO DIRECTO TENGAN
LA SECUENCIA 0,1,2,3,4,5..N
TAREAS PROGRAMACION C++
Construirles programas de busquedas a los archivos ya construidos.
TEMA 5: FILTROS CONDICIONES C++

Otro problema similar al anterior es el de filtros o condiciones, es decir en muchas ocasiones es necesario obtener
informacin acerca de un subconjunto de renglones de el archivo.
Por ejemplo todos los estudiantes que sean mayores de 17 aos, o todos los clientes que sean de Tijuana, etc. a
esto le llamamos filtros o condiciones.
tambin se resuelve de manera similar a los de archivos secuenciales es decir usando un ciclo de lectura de todo el
archivo e ir desplegando todos los registros que cumplan la condicion.
Prog29.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
// cargando clave a buscar
printf("EDAD MAYOR QUE >= :");
int edad; scanf("%d",&edad);getchar();
//abriendo, leyendo,cargando estructura
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","at+");

// aqui siempre debe empezar el ciclo de lectura


// y fread() regresa siempre cuantas estructuras leyo
while(fread(&animalito,sizeof(animalito),1,archdisco)==1)
{
// desplegando estructura buscada
if (animalito.edad >= edad)
{ printf("%d ",animalito.clave);
printf(" %s ",animalito.nombre);
printf(" %d ",animalito.edad);
printf("\n");};
}; // aqui termina while
// no olvidar cerrar archivo y siempre fuera de while
fclose(archdisco);
getchar();
}
corrida:

Como se observa es un problema y una solucin similar al tema anterior de busquedas.


TAREAS PROGRAMACION C++
HACERLES PROGRAMAS DE FILTRADO A LOS ARCHIVOS DE C++ ANTERIORES

TEMA 6: BAJAS O ELIMINACIONES C++

Eliminacin o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen
dos maneras por las cuales se puede realizar ese proceso.
En la primera manera se usan dos archivos, el archivo original y un archivo temporal, el procedimiento o algoritmo
es muy sencillo, se lee el registro del archivo original y si no es el registro a eliminar entonces se almacena en el
archivo temporal, cuando se termina de procesar todo el archivo original, el archivo temporal solo contendra todos
los registros que no se quisieron eliminar, ya con estos dos archivo se procede a eliminar o borrar usando la
instruccin remove el archivo original y se procede a renombrar usando la instruccin rename de el archivo temporal
como nuevo archivo original.
Sin embargo en archivos directos no se puede ni se debe eliminar fisicamente registros de los archivos porque
recordar que la clave del registro esta enlazada directamente a la posicin que dicho registro tiene en disco y no
seria muy conveniente estarle cambiando la matricula al alumno cada rato o el numero de serie al auto, etc.
Aparte de que con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de
recuperar esa informacin posteriormente.
Es por eso que otra tecnica comn de eliminacin es incluir un campo de estado, status o bandera o semaforo en el
registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el carcter
'A' alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura,
busqueda y filtros debern revisar esta campo de estado antes de hacer algo con el registro.
TAREAS PROGRAMACION C++
Construir programas de eliminacion usando el segundo metodo( bajas logicas como se indica en el ultimo parrafo)
para los archivos construidos y no olvidar reconstruir los programas anteriores para que incluyan y tomen en cuenta
el nuevo campo.
TEMA 7: OPERACIONES CON CAMPOS C++

En este tema se analiza la manera de poder realizar operaciones o procesos con los campos de los registros en el
archivo DIRECTO, lo unico importante a considerar es que los campos del registro son en cierta medida igual que
variables normales y por tanto se pueden procesar de manera normal como lo muestra el ejemplo.
prog30.cpp
#include <stdio.h>
#include <io.h>
#include <conio.h>
#include <string.h>
struct {
int clave;

char nombre[30];
int edad;} animalito;
void main() {
clrscr();
FILE *arch1;
long r=0;
arch1 = fopen("cpp:\\ac\\archivo1.dat","rb+");
while (fread(&animalito,sizeof(animalito),1,arch1)==1)
{
// sumando 100 a edad
animalito.edad = animalito.edad + 100 ;
// como ya se leyo se regresa el apuntador al principio del registro
fseek(arch1,r*sizeof(animalito),0 );
// y se escribe el registro modificado al archivo
fwrite(&animalito,sizeof(animalito),1,arch1);
r=r+1;
//turboc no permite i/o archivos sin un rewind, fseek, etc.
fseek(arch1,r*sizeof(animalito),0);
}; // aqui termina for
//cerrando archivo
fclose(arch1);
//avisando
puts("EDADES + 100");
getchar();getchar();
}
corrida prog27:

corrida prog30

corrida prog27

como se observa la solucin es muy sencilla solo se ocupa:


1.- leer fread() el registro, esto mueve el apuntador al siguiente registro.
2.- modificar registro
3.- regresar a posicin anterior con fseek()
4.- grabar fwrite() el registro corregido
5.- volver a usar un fseek() porque turboc no acepta i/o sin rewind, fseek, etc. ver ayuda del compilador
y no se ocupan los dos archivos como en el caso secuencial.
TAREAS PROGRAMACION C++
CONSTRUIRLES PROGRAMAS QUE PROCESEN ALGUNOS CAMPOS DE LOS ARCHIVOS C++ EJEMPLOS
QUE YA TIENEN CONSTRUIDOS.

TEMA 8: EDICION MODIFICACION DE REGISTROS C++

Modificar o editar un registro es uno de los procesos mas comunes con archivos en disco, generalmente despus de
un fuerte proceso de captura de registros, una revisin o consulta general muestra muchos de ellos con errores de
captura.
vamos a editar el segundo registro.
Prog31.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
// cargando clave a buscar
printf("dame clave editar:");
int claveb; scanf("%d",&claveb);
//abriendo, leyendo,cargando estructura
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","rb+");
// usar fseek() para posicionarse al principio de registro buscado
fseek (archdisco, (long)(claveb)* sizeof(animalito), 0 );
// ahora se lee el registro
fread(&animalito,sizeof(animalito),1,archdisco);
// desplegando estructura y asegurandose
printf("%d ",animalito.clave);

printf("%s ",animalito.nombre);
printf("%d ",animalito.edad);
printf("\n");getchar();
//recapturando los nuevos datos
printf("dame nuevo nombre :");gets(animalito.nombre);
printf("dame nueva edad :");scanf("%d",&animalito.edad);
// regresando a apuntador para regrabar
fseek (archdisco, (long)(claveb)* sizeof(animalito), 0 );
fwrite(&animalito,sizeof(animalito),1,archdisco);
// no olvidar cerrar archivo
fclose(archdisco);
//avisando
printf("REGISTRO EDITADO");
getchar();getchar();
}
corrida:

Observar que es el programa normal de busqueda pero ya desplegado el registro se piden los nuevos datos,
posteriormente se regresa el apuntador de registros a la posicin original para volverse a regrabar el registro pero
con los datos ya editados.
TAREAS PROGRAMACION C++
CONSTRUIRLES PROGRAMAS DE EDICION O MODIFICACION A LOS ARCHIVOS YA CONSTRUIDOS.

UNIDAD 7: C++ APUNTADORES


TEMA 1: INTRODUCCION PUNTEROS MEMORIA C++

Todas las variables se almacenan en una direccin predeterminada en memoria.


El monto del area de memoria es determinada por el tipo de variable, es decir; una variable int ocupa 2 bytes, un
float 4 bytes, un arreglo ocupara el tipo del arreglo multiplicado por la cantidad de elementos, una estructura es igual
a la suma de los campos.
En C++ existe una nueva clase de variables llamadas apuntadores o punteros, que permiten almacenar la direccin
de memoria de alguna otra variable normal.
En el caso de variables apuntadores a strings o arreglos esta variable solo podr almacenar lo posicion mas relevante
del areglo es decir la ocupada por el primer elemento del arreglo, mismo caso para estructuras.
Las utilidad principal de las variables apuntadores es la facilidad que tienen para accesar y manipular datos
estructurados mas rapidamente, tambin son muy utiles para permitir pasar y recibir valores en funciones.
Para declarar una variable de tipo apuntador se usa :
tipo *var_apuntador;
Donde tipo especifica el tipo de dato al que apuntara la variable.
main()
{
int x = 7;
float y = 4.5;
int *x1;
float *y1;
}
Existen dos operadores especificos que se utilizan para manejar variables apuntadores, estos son :

* Sirve para crear y manipular el valor hexadecimal que representa esa direccion.
& Se utiliza para procesar directamente el dato que se encuentra en dicha direccion.

En resumen en c++ con el operador (*) se crea la variable apuntador o puntero y con el operador (&) se procesa el
dato que esta dentro de esa direccin, o que creen que hace el ampersand en los scanfs().
TEMA 2: APUNTADORES A ESCALARES C++

Variables apuntador deben ser siempre inicializadas y recordar que ellas almacenan direcciones FISICAS DE
MEMORIA RAM
Existen 2 mtodos:
a) inicializar con la direccion de una variable escalar existente.
main()
{
int x,*y;
y = &x;
scanf("%d",&x);
printf("%d %d %d",x,*y,*y+30);
}
scanf("%d",y);
*y = *y+x-8;
b) usar funcin malloc() para reservar un espacio determinado en memoria, aqui solo se inicializa con la direccion
reservada y devuelta por el compilador.
#include <stdlib.h>
main()
{
float *y = malloc(sizeof(float));
*y = 3.14159;
printf("%f",*y);
free(y);
}

TAREAS PROGRAMACION C++ Calcular el area de un triangulo usando apuntadores.


TAREAS PROGRAMACION C++ El programa de pesos a dlares ejecutarlo 3 veces.
TAREAS PROGRAMACION C++ Imprimir 3 boletas de alumno con matricula y promedio.
Nota : tipo float no permite captura.
TEMA 3: APUNTADORES A STRINGS C++

Caso A.
Solo se necesita inicializar una variable char.
main()
{
char nombre[30];
char *ch;
ch = nombre;
gets(nombre);
puts(ch);
}
Caso B.
main()
{
char *nombre = malloc(30);
gets(nombre);
puts(nombre);
free(nombre);
}

TAREAS PROGRAMACION C++


Capturar los datos de 5 alumnos y desplegar solo los de informatica y con promedio aprobatorio todas las variables
apuntadores.
TAREAS PROGRAMACION C++
Capturar los datos de indeterminada cantidad de mercancias o productos de inventario y emitir cheque solo a los
importados o con saldo mayor de 1000.
TEMA 4: APUNTADORES A ARREGLOS C++

tambin solo se ocupa una variable apuntador normal.


Caso A.
main()
{
int x[5]={1,2,3,4,5};
int *y,renglon;
y = x;
printf("%d %d %d",x[1],*y,*(y+1));
for(rengln =0; rengln <= 4; rengln ++)
printf("%d",*(y+rengln));
}
Caso B.
main()
{
int reng;
float *x = malloc(5*sizeof(float));
*(x+2) = 3.14159;
printf("%f",*(x+2);
for(reng = 0; reng <=4; reng ++)
printf("%f",*x++);
free(x);
}

TAREAS PROGRAMACION C++


Capturar en arreglos matriculas y 3 calificaciones de 6 alumnos, calcular arreglo promedio, imprimir matricula y
promedios aprobatorios, apuntadores y malloc.
TAREAS PROGRAMACION C++
Inicializar una lista de apuntadores float, sortear ascendentemente, desplegar original y copia.
TEMA 5: APUNTADORES A TABLAS C++
a) main()
{
int x[3][5],*y;
y = x;
*(y+8) = 20;
printf("%d %d",*(y+8),x[1][3]);
}
b) main()
{
char *nombre[6];
int reng;
for(reng = 0; reng <= 5; reng++)
gets(nombre[reng]);
puts(*(nombre+1);
}
TAREAS PROGRAMACION C++
Contruir una tabla que muestre los ingresos durante los tres primeros meses de las cuatro sucursales de pinturas
corona en la ciudad.
TAREAS PROGRAMACION C++
Desplegar la tabla y adems los ingresos por sucursales y por mes, apuntadores y malloc.

UNIDAD 8: PROGRAMACION ORIENTADA OBJETOS C++


TEMA 1: INTRODUCCION PROGRAMACION OBJETOS C++

Podemos decir que en c++ un objeto es una estructura de datos (coleccion de datos organizados eficientemente
para su facil manipulacin en memoria), este objeto contiene los llamados campos, como en registros, campos que
pueden ser de diferente tipo.
Para declarar y trabajar normalmente con los elementos o campos del objeto se usaran las reglas ampliamente
aprendidas para los campos de los tipos registros.
#include <iostream.h>
#include <stdio.h>
class { public :
int x;
char nombre[30];
}obj;
main()
{
clrscr();
gets(obj.nombre);
scanf("%d",obj.x);
puts(obj.nombre);
return 0;
}
En adicion los objetos pueden contener campos especiales llamados mtodos.
Los mtodos son procedimientos o funciones que representan simples campos dentro del objeto.

#include <iostream.h>
class{ publicpp:
int x;
char nombre[30];
int proc1(void)
}obj;
void main(void)
{
obj.proc1();
}
Un metodo podr recibir parmetros, tambin podr accesar a los otros campos del objeto, incluso a otros mtodos.
class { publicpp:
int x;
void proc(int y)
{
for( x = 1; x <= y; x++)
printf("Pato);
}
}obj;
void main(void)
{
obj.proc(5);
};

El real poder de OOP es la habilidad que tienen para heredar mucha de su naturaleza a otro objeto.
Por ejemplo.
1. Pueden utilizar los elementos o campos del objeto del cual descienden, a esta propiedad se le llama herencia.
2.
#include <iostream.h>
#include <stdio.h>
class papa { public :
int x;
};
class hijo : public papa {
int z;
};
void main(void)
{
hijo hijo1;
hijo1.x = 5;
printf("%d",hijo1.x);
}
3. pasar parmetros al objeto del cual desciende.
4.
#include <iostream.h>
#include <stdio.h>
class papa { public :
void funcin(int x)
{
printf("%d",x+6);
}

};
class hijo : public papa {
int z;
};
void main(void)
{
hijo hijo1;
hijo1.funcin(5);
}
5. Si el mtodo del padre es una funcin podr recibir dicho valor.
#include <iostream.h>
#include <stdio.h>
class papa { public :
int funcin(int n)
{
return n+5;
}
};
class hijo : public papa {
int z;
};
void main(void)
{
hijo hijo1;
char nombre[30];
int parametro;

clrscr();
cout <<"Dame tu nombre.. ";
cin >>nombre;
cout <<"Dame el parametro";
cin >>parametro;
hijo.z = hijo.funcion(parametro);
cout <<"\n"<<nombre<<"la funcin regreso : "<<hijo.z;
getch();
};
TAREAS PROGRAMACION C++
Construir algunos programas de prueba usando objetos de c++

S-ar putea să vă placă și