147
UNIDAD 1: C++ ELEMENTOS BASICOS TEMA 1: C++ INTRODUCCION Los nuevos sistemas de información son costosos en tiempos y recursos, la solución moderna de sistemas de información exigen nuevas herramientas y metodologías para resolver rápida, económica y eficiente los problemas de información 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 programación tradicional, modular o estructurada un programa describe una serie de pasos a ser realizados para la solución de un problema, es decir es un algoritmo, en particular este modelo de programación 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 aplicación se tenía que portar físicamente a otras pc's, al final de su ciclo de vida de este modelo se había mejorado y ya era posible que se ejecutara en alguna ventana-consola de ambientes Windows, con mejor interfase como fonts, colores, background, etc. En programación orientada a objetos ( OOP ) un programa es considerado como un sistema de objetos interactuando entre sí, ambientes de desarrollo visuales facilitan aun más la construcción de programas y solución de problemas, porque permiten abstraer al ingeniero de software de todo el GUI (interfase gráfica) del problema, que constituye más del 60% del código normal de un programa, en general este ambiente permitió una mejora en la interfase del programa con el usuario de la aplicación 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 programación o construcción de programas los compiladores modernos se adaptaron rápidamente y tenemos aplicaciones fantásticas, en donde alguna forma o ventana esta llena de controles visibles e invisibles que realizan muchas tareas donde además 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.

Tutorial_c++

Embed Size (px)

DESCRIPTION

fdfdsfdsfdsf

Citation preview

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

para cualquier valor de x. (caso normal).

13. Evaluar la funcin

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 = X-M / 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;

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 ) 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; 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

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

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

// 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 y = 3sqrt{x} 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

#include

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();

}

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

void main()

{

//declaracinint 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 librera a usar

1.- clrscr(); Limpia pantalla ESTA INSTRUCCION NO OCUPA ACLARACION

2.- gotoxy(#de col,#de ren); posiciona cursor en lugar indicado RECORDAR QUE UNA CONSOLA NORMAL TIENE 24 RENGLONES Y 80 COLUMNAS

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 str120)

{ 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

#include

#include

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

#include

#include

void main()

{

clrscr();

// declaracion variables

int x;

// instruccion for

for(x=1;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

#include

#include

void main()

{

clrscr();

// declaracin variables

int x=1;

// instruccin while

while(x)

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

#include

#include

#include

#include

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

#include

#include

#include

#include

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

#include

#include

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

#include

#include

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

#include

#include

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

#include

#include

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

#include

#include

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

#include

#include

#include

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

#include

#include

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

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