Sunteți pe pagina 1din 51

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA INGENIERA EN SISTEMAS COMPUTACIONALES

APUNTES DE LA MATERIA

PROGRAMACIN BSICA
ANTOLOGA

Compilacin terico-prctica para la enseanza de la materia de Programacin Bsica del ITSX


Elaborado por: MCC Virginia Lagunes Barradas

Verano 2011

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Programacin Bsica

OBJETIVO(S) GENERAL(ES) DEL CURSO


El estudiante analizar problemas y representar su solucin mediante el diseo de y la implementacin de programas en algn lenguaje de programacin. FUENTES DE INFORMACIN Luis Joyanes Aguilar, Fundamentos de Programacin, Algoritmos, Estructura de datos y objetos. 3. Edicin McGRAW-HILL.Espaa 2003. Luis Joyanes Aguilar, Programacin en C++, Algoritmos, Estructuras de Datos y objetos. 1. Edicin McGRAW-HILL, Mxico 2000. Martin Fowler y Kendall Scott, UML gota a gota, Ed. Pearson, Mxico 1999. Stephen R. Schach, Anlisis y Diseo [Orientado a Objetos con UML y el Proceso Unificado. McGRAW-HILL. Mxico 2005.

UNIDAD I.-

Tcnicas de Diseo
Objetivo Educacional
Comprender el concepto de algoritmo. Conocer la terminologa y reglas relacionada con los algoritmos. Aplicar un lenguaje algortmico grfico.

Actividades de Aprendizaje
Elaborar una sntesis referente a la terminologa y reglas relacionada con los algoritmos. Disear una solucin de problema utilizando los distintos tipos de algoritmos estudiados.

Fuentes de Informacin

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Luis Joyanes Aguilar. Programacin en C++, un enfoque prctico. Mc Graw Hill. Espaa 2006. Francisco Javier Ceballos. Programacin Orientara a Objetos C++. Ed. Alfaomega. 3a edicin. Mxico, 2004. Luis Joyanes Aguilar. Fundamentos de Programacin, Algoritmos, Estructuras de datos y Objetos. Mc Graw Hill. Espaa 2003.

3.1 Diseo algortmico.


El proceso de resolucin de problemas con computadoras conduce a la escritura de un programa y su ejecucin en la misma. Aunque el proceso de disear programas es esencialmente un proceso creativo, se puede considerar una serie de fases o pasos comunes que generalmente deben seguir los programadores. Estas fases son las siguientes:

Definicin del Problema: Esta fase est dada por el enunciado del problema, el cual requiere una definicin clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. Anlisis del Problema: Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir: 1. Los datos de entrada. 2. Cual es la informacin que se desea producir (salida). 3. Los mtodos y frmulas que se necesitan para procesar los datos.

Una recomendacin muy prctica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. Codificacin.

La codificacin es la operacin de escribir la solucin del problema (de acuerdo a la lgica del diagrama de flujo o pseudocdigo), en una serie de instrucciones detalladas, en un cdigo reconocible por la computadora, la serie de instrucciones detalladas se le conoce como cdigo fuente, el cual se escribe en un lenguaje de programacin o lenguaje de alto nivel. Prueba y Depuracin:

Los errores humanos dentro de la programacin de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solucin sin errores se le llama depuracin. La depuracin o prueba resulta una tarea tan creativa como el mismo desarrollo de la solucin, por ello se debe considerar con el mismo inters y entusiasmo.
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Documentacin:

Es la gua o comunicacin escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentacin sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones. La documentacin se divide en tres partes: 1. Documentacin Interna: son los comentarios o mensajes que se aaden al cdigo fuente para hacer mas claro el entendimiento de un proceso. 2. Documentacin Externa: se define en un documento escrito los siguientes puntos:

Descripcin del Problema. Nombre del Autor. Algoritmo (diagrama de flujo o pseudocdigo). Diccionario de Datos. Cdigo Fuente (programa).

3. Manual del Usuario: describe paso a paso la manera como funciona el programa, con el fin de que el usuario obtenga el resultado deseado. Mantenimiento:

Se lleva acabo despus de terminado el programa, cuando se detecta que es necesario hacer algn cambio, ajuste o complementar al programa para que siga trabajando de manera correcta. Los pasos antes descritos se muestran en la siguiente figura, para su mejor entendimiento:

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

3.2 Diseo algortmico de las funciones.


Definicin de lenguaje de programacin.

Lenguaje de programacin es un conjunto de sintaxis y reglas semnticas que definen los programas del computador. Es una tcnica estndar de comunicacin para entregarle instrucciones al computador. Un lenguaje le da la capacidad al programador de especificarle al computador, que tipo de datos actan y que acciones tomar bajo una variada gama de circunstancias. Existen dos tipos de traductores de lenguajes: compilador e intrprete. En un lenguaje compilado, el compilador recorre todas las instrucciones del programa fuente y checa si hay errores en el mismo cdigo, si los hay, no termina de compilar el programa y no crea el programa objeto, en vez de esto muestra un mensaje diciendo que hay errores en el cdigo fuente. En un lenguaje intrprete, traduce el programa fuente sin importar los errores que pueda contener. En el lenguaje compilado el margen de error y el tiempo de bsqueda de errores se reducen considerablemente. Las ventajas del lenguaje intrprete es que el tiempo de traduccin del cdigo fuente a lenguaje mquina es mucho menor que el de los lenguajes compilados, pero por otro lado el margen de error es enorme.
Proceso de traduccin de un intrprete Proceso de traduccin de un compilador

Programa fuente Intrprete

Programa fuente Compilador

Traduce y ejecuta lnea por lnea

Programa Objeto Montador / ligador

Programa Ejecutable

En la siguiente figura se puede observar la clasificacin de los lenguajes por su nivel:


MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Mquina

Tipos de lenguajes

Bajo

Ensamblador

Nemnicos ADD, SUB

Alto

Traductores

Intrpretes Compiladores

DEFINICIN DE ALGORITMO.

Un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. La palabra "algoritmo" deriva del nombre latinizado del gran matemtico rabe Mohamed Ibn Moussa Al Kow Rizmi, el cual escribi sobre entre los aos 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se recoga el sistema de numeracin hind y el concepto del cero. Fue Fibonacci, el que tradujo su obra al latn y la inici con las palabras: Algoritmi dicit. Algoritmo: es una secuencia de pasos que, seguidos uno a uno, nos permiten resolver un problema.

Ejemplo: cuando quiero ver una pelcula de video, podra hacer: 1. Elijo una pelcula de las de mi coleccin. 2. Compruebo SI TV y video estn conectados a la red (y procedo). 3. SI la TV est apagada, la enciendo, SI NO, pues no. Y lo mismo con el vdeo. 4. Abro el estuche de la pelcula. 5. Saco la pelcula de su estuche. 6. Introduzco la pelcula en el video. Dejo el estuche sobre el vdeo. 7. SI la TV no est en el canal adecuado, la cambio, SI NO, pues no. 8. Tomo los controles remotos (el de la TV y el de la video). 9. Me pongo cmodo. 10. Pulso PLAY en el control de la video. Es necesario fijarse bien en ciertos detalles que son fundamentales y que aparecen en este algoritmo: Caractersticas:

1. La descripcin de cada paso no me lleva a ambigedades: los pasos son absolutamente explcitos y no inducen a error.
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

2. El nmero de pasos es finito. Diferencia entre el lenguaje algortmico y el informtico.

El lenguaje algortmico es aquel por medio del cual se realiza un anlisis previo del problema a resolver y encontrar un mtodo que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le denomina algoritmo. El lenguaje informtico es aquel por medio del cual dicho algoritmo se codifica a un sistema comprensible por la computadora. Este tipo de lenguaje es ms cercano a la mquina que al ser humano y podemos distinguir distintos tipos dependiendo de la proximidad a la maquina. Se denomina lenguaje de alto nivel aquel que es ms cercano a la comprensin humana y lenguaje de bajo nivel a aquellos que son ms comprensibles por la mquina. En concreto, nosotros vamos a estudiar un lenguaje en la frontera de uno de bajo nivel. Es por ello que el 'C++' es tan potente y rpido, pues las funciones principales representan las funciones ms bsicas de la computadora. TCNICAS PARA LA FORMULACIN DE ALGORITMOS

Como ya se ha comentado anteriormente, el sistema para describir (escribir) un algoritmo consiste en realizar una descripcin paso a paso con un lenguaje natural del citado algoritmo. Recordemos que un algoritmo es un mtodo o conjunto de reglas para solucionar un problema. En clculos elementales estas reglas tienen las siguientes propiedades: Deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un resultado coherente, Slo puede ejecutarse una operacin a la vez.

El flujo de control usual de un algoritmo es secuencial. El algoritmo consta de cuatro acciones bsicas, cada una de las cuales debe ser ejecutada antes de realizar la siguiente. En trminos de computadora, cada accin se codificar en una o varias sentencias que ejecutan una tarea particular. El algoritmo descrito es muy sencillo; sin embargo, como ya se ha indicado en prrafos anteriores, el algoritmo general se descompondr en pasos ms simples en un procedimiento denominado refinamiento definido, ya que cada accin puede descomponerse a su vez en otras acciones simples que pueden ser implementados para su solucin en la computadora se denomina diseo descendente (top-down design). Para representar un algoritmo se debe utilizar algn mtodo que permita independizar dicho algoritmo del lenguaje de programacin elegido. Ello
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

permitir que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea representado grfica o numricamente, de modo que las sucesivas acciones no dependan de la sintaxis de ningn lenguaje de programacin, sino que la descripcin pueda servir fcilmente para su transformacin en un programa, es decir, su codificacin. Ejercicio 5: Escribir los pasos necesarios para cambiar una llanta de un auto ponchado, considerando que ya est estacionado el auto y que se cuenta con toda la herramienta necesaria. Ejercicio 6. Escribir los pasos ordenados para la elaboracin de un pastel de chocolate, considerando que se cuenta con todos los ingredientes y utensilios necesarios.

Los mtodos ms usuales para representar un algoritmo son: 1. 2. 3. 4. 5. Diagrama de flujo. Diagrama N-S (Nassi-Schneiderman). Pseudocdigo. Lenguaje espaol. Frmulas.

Los mtodos 4 y 5 no suelen ser fciles de transformar en programas. DIAGRAMAS DE FLUJO

Un diagrama de flujo (flowchart) es una de las tcnicas de representacin de algoritmos mas antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin de lenguajes de programacin estructurada. Un diagrama de flujo es un diagrama que utiliza los smbolos (cajas estndares y que tiene los pasos del algoritmo escrito en esas cajas unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se deben ejecutar. SMBOLOS DE DIAGRAMA DE FLUJO SMBOLOS PRINCIPALES FUNCIN Terminal (Representa el comienzo, (inicio), y el final (fin), de un programa. Puede representar tambin una para o interrupcin programada que sea necesario realizar en un
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

programa) Entrada/Salida (cualquier tipo de introduccin de datos en la memoria desde los perifricos, (entrada), o registro de la informacin procesada en un perifrico, (salida)). Proceso (Cualquier tipo de operacin que pueda originar cambio de valor, formato o posicin de la informacin almacenada en memoria, operaciones aritmticas, de transferencia, etc. no Decisin (Indica operaciones lgicas o de comparqacin de datos normalmente dos y en funcin del resultado de la misma determina cual de los dos distintos caminos alternativos del programa debe seguir, normalmente tiene dos salidas respuestas si o no -, pero puede tener tres o mas segn los casos. Decisin mltiple (en funcin del resultado de la comparacin se seguir uno de los diferentes caminos de acuerdo con dicho resultado)

si

Conector (sirve para enlazar dos partes cualesquiera de un ordinograma a travs de un conector en la salida y otro conector en la entrada. Se refiere a la conexin en la misma pgina del diagrama) Indicador de direccin o lnea de flujo (indica el sentido de ejecucin de las operaciones) Lnea Conectora (sirve de unin entre dos smbolos) Conector (conexin entre dos puntos del organigrama situado en pginas diferentes)

Llamada a subrutina o a un proceso predeterminado (una subrutina es un mdulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa, al terminar, al programa principal) SMBOLOS SECUNDARIOS FUNCIN Pantalla (se utiliza en ocasiones en lugar del smbolo de E/S)

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Impresora (se utiliza en ocasiones en lugar del smbolo de E/S)

Teclado (se utiliza en ocasiones en lugar del smbolo de E/S)

Comentarios (se utiliza para aadir comentarios clasificadores a otros smbolos del diagrama de flujo. Se pueden dibujar a cualquier lado del smbolo)

Ejemplo. Resolucin de un programa que deduce el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas, precio de la hora, y sabiendo que los impuestos aplicados son el 25% sobre el salario bruto.

Inicio

Leer nombre, horas y precio

bruto = horas * precio tasa = 0.25 * bruto neto = bruto - tasa

Escribir nombre, bruto, tasa, neto

Fin

PSEUDOCDIGO

Otra herramienta muy til en el anlisis de programacin es el pseudocdigo pseudo o seudo, significa falso, imitacin y cdigo se refiere a las
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

instrucciones escritas en un lenguaje de programacin; pseudocdigo no es realmente un cdigo sino una imitacin y una versin abreviada de instrucciones reales para las computadoras. El pseudocdigo es una tcnica para expresar en lenguaje natural la lgica de un programa, es decir, su flujo de control. El pseudocdigo no es un lenguaje de programacin sino un modo de plantear un proceso de forma que su traduccin a un lenguaje de alto nivel sea sencillo para un programador. La fase de confeccin de pseudocdigos es inmediatamente anterior a su codificacin en el lenguaje de programacin elegido. En la actualidad el pseudocdigo es una tcnica muy utilizada sobre todo en programacin de lenguajes estructurados como Pascal, o bien utilizando tcnicas de programacin estructurada en otros lenguajes. Los pseudocdigos utilizan palabras clave como DO (hacer), IF-THEN-ELSE (Si-entonces-sino), ENDIF (fin de si), REPEAT-UTIL (Repetir hasta), REPEATWHILE (Repetir-mientras) o bien DO-WHILE (hacer mientras), DO-UNTIL (hacer hasta), etc. El ejemplo del programa de clculo de la calificacin media de un alumno en pseudocdigo podr ser: Ejemplo: Lectura registro o ficha del estudiante Mientras no se encuentre fin de archivo sumar notas dividir la suma total entre nmero de asignaturas impresin del registro Fin-mientras El pseudocdigo tiene algunas ventajas:

Es fcil hacer cambios si nos equivocamos en la lgica del programa. Es independiente del lenguaje de programacin que vaya a usarse; un algoritmo que est escrito en pseudocdigo es fcilmente traducible a muchos lenguajes de programacin.

DIAGRAMAS ESTRUCTURADOS (NASSI-SCHNEIDERMAN) Un diagrama N-s o diagrama de caja, es como un diagrama de flujo con las flechas omitidas y cajas o bloques contiguos. Las acciones sucesivas se escriben en cajas sucesivas. Como un diagrama de flujo, diferentes acciones pueden ser escritas en una caja. La diferencia en esta forma y las otras dos formas (diagramas de flujo y algoritmo) parece trivial. Sin embargo, esto es debido a que los algoritmos son bastante sencillos. Este sistema de representacin permite tener una visin mucho ms estructurada de ellos y por consiguiente mayor facilidad al traducirlos al lenguaje de una computadora.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Estos diagramas tratan de optimizar los programas, ya que permiten gran flexibilidad, al permitir fciles correcciones, modificaciones o ampliaciones al diagrama original. El diagrama se lee de arriba a abajo. Cada bloque ejecuta una operacin especfica que se puede documentar o describir con la precisin que se desee. Los smbolos utilizados para realizar diagramas N-S son los siguientes:

A continuacin se muestran algunos ejemplos en las tres modalidades: pseudocdigo, diagrama de caja y diagrama de flujo.
Ejemplo 1: Leer dos nmeros y obtener el mayor.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Ejemplo 2. Obtener y desplegar la suma de los 10 primeros nmeros. Pseudocdigo:

Diagrama de flujo:

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Diagrama de caja:

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Prcticas 1 10.
REALIZAR EN DIAGRAMA DE FLUJO, DE CAJA Y PSEUDOCDIGO LOS SIGUIENTES ALGORITMOS 1. Escribir un algoritmo que sume dos nmeros: a=4 b=3 2. Escribir un algoritmo que sume, reste, multiplique y divida dos nmeros: x = 10 y=2 3. Escribir un algoritmo que calcule el rea de un rectngulo: lado1 = 3 lado2 = 4 rea del rectngulo=lado1 * lado2 4. Escribir un algoritmo que calcule el rea de un tringulo: base = 7 altura = 4 rea del tringulo = (base * altura)/2 5. Escribir un algoritmo que calcule la longitud y el rea de una circunferencia: radio = 4 longitud de la circunferencia = 2 * PI * radio rea de la circunferencia = PI * radio2 6. Escribir un algoritmo que calcule la velocidad de un proyectil que recorre 2 Km en 5 minutos. Expresar el resultado en metros y segundo. Velocidad = espacio/tiempo 7. Escribir un algoritmo que calcule el volumen de una esfera: radio = 3 volumen de la esfera = 4/3 * PI * radio3 8. Escribir un algoritmo que evale la siguiente expresin: (a+7*c)/(b+2-a)+2*b a = 3,b = 6,c = 4 9. Escribir un algoritmo que evale la siguiente expresin: (a+5) * 3 / 2 * b - b a = 3,b = 6 10. Escribir un algoritmo que evale la siguiente expresin: (-b + razcuadrada(b2-4*a*c)/(2*a) (es la solucin positiva de una ecuacin de 2 grado)

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Prcticas 11 20.
REALIZAR EN DIAGRAMA DE FLUJO, DE CAJA Y PSEUDOCDIGO LOS SIGUIENTES ALGORITMOS 11. Escribir un algoritmo que calcule el rea y el volumen de un cilindro: A = (2 * (PI * r2)) + ((2 * PI * r) * h) V = (PI * r2) * h 12. Escribir un algoritmo que calcule el rea y el volumen de un hexaedro A = (l*l) * 6 V = l3 13. Escribir un algoritmo que calcule el rea y el volumen de un prisma A = (2 *(l1 * l2)) + (2 * (l1 * l3)) + (2*(l2 * l3)) V = l1 * l2 * l3 14. Escribir un algoritmo que calcule el rea y el volumen de un tetraedro A = a2 * razcuadrada(3) V = (a3/12) * razcuadrada (2) 15. Escribir un algoritmo que calcule el rea y el volumen de un octaedro A = 2 * a2 * razcuadrada(3) V=(a3/3) * razcuadrada(2) 16. Escribir un algoritmo que calcule el rea y el volumen de un cono A = (PI * r * l)+ (PI * r2) V = (PI * r2 * h)/3 17. Escribir un algoritmo que calcule el volumen e un elipsoide V = (4/3) * PI * a * b *c 18. Escribir un algoritmo que calcule una ecuacin de 2 grado 19. Escribir un algoritmo que calcule el rea y el volumen de un cilindro: radio = 3 altura = 4 20. Escribir un algoritmo que calcule la hipotenusa de un tringulo rectngulo cateto 1 = 5 cateto 2 = 5

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

UNIDAD II.Introduccin a la Programacin


Objetivo Educacional
Comprender los conceptos bsicos de la programacin, y escribir expresiones aritmticas y lgicas en un lenguaje de programacin.

Actividades de Aprendizaje
Realizar un mapa conceptual sobre los tipos de software y los conceptos bsicos de programacin. Realizar ejercicios de codificacin de expresiones aritmticas y lgicas en un lenguaje de programacin. Buscar la informacin necesaria para Instalar y configurar el compilador del lenguaje de programacin a utilizar. Compilar y ejecutar un programa modelo. Realizar cambios en expresiones lgicas y algebraicas de un programa modelo y analizar los resultados obtenidos.

Fuentes de Informacin
Luis Joyanes Aguilar. Programacin en C++, un enfoque prctico. Mc Graw Hill. Espaa 2006. Francisco Javier Ceballos. Programacin Orientara a Objetos C++. Ed. Alfaomega. 3a edicin. Mxico, 2004. Luis Joyanes Aguilar. Fundamentos de Programacin, Algoritmos, Estructuras de datos y Objetos. Mc Graw Hill. Espaa 2003.

4.1 Conceptos de la programacin. 4.1.1 Definicin de programa.


Un Programa informtico (software) es la unin de una secuencia de instrucciones que una computadora puede interpretar y ejecutar. Puede interpretar y ejecutar una (o varias) estructuras de datos que almacena la informacin, independiente de las instrucciones que dicha secuencia de instrucciones maneja. Para ello se usan lenguajes de programacin que sirven para programar la secuencia de instrucciones requerida.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

4.1.2 Definicin de programacin.


Se llama programacin al acto de crear un programa de computadora, un conjunto concreto de instrucciones que una computadora puede ejecutar. El programa se escribe en un lenguaje de programacin, aunque tambin se pueda escribir directamente en lenguaje de mquina, con cierta dificultad. Un programa se puede dividir en diversas partes, que pueden estar escritas en lenguajes distintos.

4.1.3 Definicin de lenguaje de programacin.


El lenguaje es la capacidad del ser humano para comunicarse mediante un sistema de signos o lengua para ello. No se debe confundir con lengua o idioma, que es la representacin de dicha capacidad. Los lenguajes son, explicados de una manera fcil, aunque reduciendo sus alcances e importancia para la formacin de nuestro mundo, formas de representar cosas. La mayora de las veces el trmino se refiere a los lenguajes que los humanos utilizan para comunicarse, ya sea lenguaje hablado, lenguaje de signos o el empleado en la literatura, normalmente llamados lenguaje natural. El lenguaje natural incluye todas las comunicaciones animales, incluyendo el lenguaje humano. En las matemticas y en la informtica, por ejemplo, los lenguajes artificiales son llamados lenguajes formales (incluyendo lenguajes de programacin). Sin embargo, el lenguaje humano tiene una caracterstica que no puede ser encontrada en los lenguajes de programacin: la diversidad. Lenguaje de programacin es un conjunto de sintaxis y reglas semnticas que definen los programas del computador. Es una tcnica estndar de comunicacin para entregarle instrucciones al computador. Un lenguaje le da la capacidad al programador de especificarle al computador, que tipo de datos actan y que acciones tomar bajo una variada gama de circunstancias.

4.2 Datos. 4.2.1 Definicin.


Un dato es la unidad o cantidad mnima de informacin no elaborada, sin sentido en s misma, pero que convenientemente tratada se puede utilizar en la realizacin de clculos o toma de decisiones. Es de empleo muy comn en el mbito informtico.

4.2.2 Tipos de datos.


En la siguiente tablea se muestran los principales tipos de datos bsicos o simples, sus tamaos en bytes y el rango de valores que puede almacenar.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

TIPO char short int unsigned int Long Float Double Long double

EJEMPLO C -15 1024 42325 262144 10.5 0.00045 Le-8

TAMAO EN BYTES 1 2 2 2 4 4 8 8

RANGO MNIMO..MXIMO 0..255 -128..127 -3276832767 0..65535 -2147483648..2147483637 3.4 *(10-38)..3.4 * (1038) 1.7 * (10-308)..1.7 * (10308) Igual que double

Los tipos de datos fundamentales en C son: enteros: (nmeros completos y sus negativos), de tipo int. variantes de enteros: tipos short, long y unsigned. reales: nmeros decimales, tipos float, double o long double. caracteres: letras, dgitos, smbolos y signos de puntuacin, tipo char.

char, int, float y double son palabras reservadas, o ms especficamente, especificadores de tipos. Cada tipo de dato tiene su propia lista de atributos que definen las caractersticas del tipo y pueden variar de una mquina a otra. Los tipos char, int y double tienen variaciones o modificadores de tipos de datos, tales como short, long, signed y unsigned, para permitir un uso ms eficiente de los tipos de datos. Existe el tipo adicional enum (constante de enumeracin ). En C++, sin embargo, cada tipo enumerado es su propio tipo independiente. Esto significa que C++ no permite que un valor int se convierta automticamente a un valor enum. Sin embargo, un valor enumerado se puede utilizar en lugar de un int. Ejemplo: enum lugar{primero,segundo,tercero}; lugar pepe=primero; //correcto int vencedor=pepe; //correcto lugar juan=1; //incorrecto ENTEROS (int) Probablemente el tipo de dato ms familiar es el entero, o tipo int. Los enteros son adecuados para aplicaciones que trabajen con datos numricos. Los tipos enteros se almacenan internamente en 2 bytes (o 16 bits) de memoria. La Tabla siguiente resume los tres tipos enteros bsicos, junto con el rango de valores y el tamao en bytes usual, dependiendo de cada mquina. TIPO C int Unsigned int Short int RANGO DE VALORES -32.768.. +32.767 0..65.535 -128..+127 USO RECOMENDADO Aritmtica de enteros, bucles, for, conteo Conteo bucles for, ndices Aritmtica de enteros, bucles for,
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

conteo.

4.2.3 Identificadores.
Un identificador es un conjunto de caracteres alfanumricos de cualquier longitud que sirve para identificar las entidades del programa (clases, funciones, variables, tipos compuestos, Etc.) Los identificadores pueden ser combinaciones de letras y nmeros. Cada lenguaje tiene sus propias reglas que definen como pueden estar construidos. En el caso de C++, son las que se indican a continuacin. Cuando un identificador se asocia a una entidad concreta, entonces es el "nombre" de dicha entidad, y en adelante la representa en el programa. Por supuesto puede ocurrir que varios identificadores se refieran a una misma entidad. Los identificadores C++ pueden contener las letras a a z y A a Z, el guin bajo "_" ("Underscore") y los dgitos 0 a 9.

El primer carcter debe ser una letra o el guin bajo. El Estndar establece que los identificadores comenzando con guin bajo y mayscula no deben ser utilizados. Este tipo de nombres se reserva para los compiladores y las Libreras Estndar. Tampoco se permite la utilizacin de nombres que contengan dos guiones bajos seguidos. El estndar ANSI establece que como mnimo sern significativos los 31 primeros caracteres, aunque pueden ser ms, segn la implementacin [1]. Es decir, para que un compilador se adhiera al estndar ANSI, debe considerar como significativos, al menos, los 31 primeros caracteres.

Los identificadores distinguen maysculas y minsculas, as que Sum, sum y suM son distintos para el compilador. Aunque los nombres de los identificadores pueden ser arbitrarios (dentro de las reglas sealadas), se produce un error si se utiliza el mismo identificador dentro del mismo mbito compartiendo el mismo espacio de nombres. Los nombres duplicados son legales en diferentes espacios de nombres con independencia de las reglas de mbito. Un identificador no puede coincidir con una palabra clave o con el de ninguna funcin de biblioteca. Los identificadores pueden ser ms largos; de hecho en C++ pueden ser de cualquier longitud, pero el compilador solo considera los n primeros; es decir: considera iguales aquellos identificadores cuyos n primeros caracteres coinciden. C++Builder establece por defecto que son significativos los primeros

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

250 caracteres, pero este valor puede ser modificado utilizando la opcin -in, donde n es un nmero entre 8 y 250; adems el 0 significa el valor mximo.

4.2.4 Almacenamiento, direccionamiento y representacin en memoria.


La memoria es un dispositivo electrnico en el que se almacenan datos. Permite dos tipos de operaciones: 1. Escritura en las que los datos se almacenan en un lugar dado. 2. Lectura en las que dado un lugar, se obtiene el contenido previamente almacenado en dicho lugar. La memoria consta de celdas capaces de almacenar un bit. Cada celda necesita voltaje para mantener la informacin almacenada. A este tipo de memoria se le conoce como memoria RAM (Random Access Memory). Existen dos tipos de memoria RAM: 1. Esttica (SRAM): Almacena la informacin en las celdas indefinidamente mientras se mantenga el voltaje. 2. Dinmica (DRAM): La informacin almacenada se borra tras un tiempo entre 10 y 100 milisegundos. Para evitar perder informacin se debe reescribir cada bit de informacin antes de perderlo. Es 10 veces mas lenta, 6 veces mas compacta y 100 veces mas barata. La unidad mnima de direccionamiento se define como la cantidad de informacin que se almacena en una posicin de la memoria a la que se refiere una direccin. Es decir, los datos almacenados entre dir y dir+1. Generalmente, esta unidad mnima de direccionamiento es un byte (8 bits). Cada una de las posiciones tiene una direccin nica. La primera unidad de informacin tiene la direccin 0. Una memoria que almacena 1024 bytes tiene direcciones desde la 0 hasta la 1023. El tamao de memoria se mide por la cantidad de informacin que es capaz de almacenar. Un kilobyte son 1024 bytes Un megabyte son 1024 kilobytes Un gigabyte son 1024 megabytes Un terabyte son 1024 gigabytes Por qu la memoria se suele medir siempre en tamaos potencias de 2? Cada lenguaje de programacion debe definir los tamaos de los tipos de datos primitivos.

4.2.5 Sistema de numeracin binaria y hexadecimal.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

El sistema binario es el que usan los ordenadores, su unidad bsica de memoria, el bit, slo puede tomar dos valores, inactivo o activo, y se codifican como 0 y 1, respectivamente. Por ejemplo, veamos el nmero binario 10110. Estamos en base 2, as que el nmero se calcula as: 0 * 2^0 + 1 * 2^1 + 1 * 2^2 + 0 * 2^3 + 1 * 2^4 = 2 + 4 + 16 = 22 (decimal) Este tipo de numeracin resulta muy til cuando cada bit puede significar cosas diferentes para un ordenador. El sistema hexadecimal, que es el rey de los sistemas de numeracin, al menos en lo que respecta a los ordenadores. Usa 16 dgitos, los archiconocidos 0 a 9 y para los otros seis se usan las letras A, B, C, D, E y F, que tienen valores 10, 11, 12, 13, 14 y 15, respectivamente. Se usan indistintamente maysculas y minsculas. Por ejemplo, un nmero hexadecimal 4F3D: 13 * 16^0 + 3 * 16^1 + 15 * 16^2 + 4 * 16^3 = 13 + 3 * 16+ 15 * 256 + 4 * 4096 = 20285 Este sistema de numeracin tiene muchas ventajas:

La conversin entre binario y hexadecimal es tan simple como en octal, la nica diferencia es que los bits se agrupan de cuatro en cuatro. 0000 es 0, 0001 es 1, 0010 es 2 ... 1111 es F. El byte, es la unidad de memoria ms usada por los ordenadores y agrupa ocho bits. Para codificar un nmero de 8 bits slo se necesitan dos dgitos hexadecimales. El mayor nmero expresable por un byte, 11111111(binario), equivale a 255(decimal) y a FF(hexadecimal). Y para palabras de dos bytes (16 bits), se usan slo cuatro dgitos hexadecimales. (El nmero 16 aparece mucho cuando se habla de ordenadores.) Para 32 bits: 8 dgitos hexadecimales, y sucesivamente.

Con la prctica podrs hacer conversiones de hexadecimal a binario de memoria: 3E equivale a 00111110 AA equivale a 10101010

4.3 Operadores, operandos y expresiones.


Los programas C constan de datos, sentencias de programas y expresiones. Una expresin es, normalmente, una ecuacin matemtica, tal como 3 +5. En
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

esta expresin, el smbolo ms (+) es el operador de suma, y los nmeros 3 y 5 se llaman operandos. En sntesis, una expresin es una secuencia de operaciones y operandos que especifica un clculo. Cuando se utiliza el + entre nmeros (o variables) se denomina operador binario, debido a que el operador + suma dos nmeros. Otro tipo de operador de C es el operador unitario (<unario), que acta sobre un nico valor. Si la variable x contiene el valor 5, -x es el valor -5. El signo menos (-) es el operador unitario menos. C soporta un conjunto potente de operadores unarios, binarios y de otros tipos. Sintaxis Variable Expresin un valor Variable= expresin identificador vlido C declarado como variable. una constante, otra variable a la que se ha asignado previamente o una frmula que se ha evaluado y cuyo tipo es el de variable. Una expresin es un elemento de un programa que toma un valor. En algunos casos puede tambin realizar una operacin. Las expresiones pueden ser valores constantes o variables simples, tales como 25 o 'Z; pueden ser valores o variables combinadas con operadores(a+ +,m==n, etc.); o bien pueden ser valores combinados con funciones tales como toupper (b). OPERADOR DE ASIGNACiN El operador = asigna el valor de la expresin derecha a la variable situada a su izquierda. codigo = 3467; fahrenheit = 123.456; coordX = 525; coordY = 725; Este operador es asociativo por la derecha, eso permite realizar asignaciones mltiples. As, a = b = c = 45; equivale a a=(b=(c=45)); o dicho de otro modo, a las variables a, by c se asigna el valor 45. Esta propiedad permite inicializar varias variables con una sola sentencia int a, b, c;
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

a = b = c = 5;

/* se asigna 5 a las variables a, by c */

Adems del operador de asignacin =, C proporciona cinco operadores de asignacin adicionales. En la Tabla siguiente aparecen los seis operadores de asignacin. Estos operadores de asignacin actan como una notacin abreviada para expresiones utilizadas con frecuencia. As, por ejemplo, si se desea multiplicar 10 por i, se puede escribir i = i * 10; OPERADORES DE ASIGNACIN DE C SMBOLO = *= /=
la variable

USO a=b a *= b
a la variable a.

DESCRIPCIN
Asigna el valor de b a a. Multiplica a por b y asigna el resultado

a/=b a. a %= b a += b a-=b

Divide a entre b y asigna el resultado a

%= += -=
variable a.

Fija a al resto de a/b Suma b y a y lo asigna a la variable a. Resta b de a y asigna el resultado a la

C proporciona un operador abreviado de asignacin (* = ) , que realiza una asignacin equivalente i *= 10; equivale a i = i * 10;

EQUIVALENCIA DE OPERADORES DE ASIGNACIN Operador += -= *= /= %= Sentencia abreviada m += n m -= n m *= n m /= n m %= n Sentencia no abreviada m = m + n; m = m n; m = m * n; m = m / n; m = m % n;

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Estos operadores de asignacin no siempre se utilizan, aunque algunos programadores C se acostumbran a su empleo por el ahorro de escritura que suponen. OPERADORES ARITMTICOS Los operadores aritmticos sirven para realizar operaciones aritmticas bsicas. Los operadores aritmticos C siguen las reglas algebraicas tpicas de jerarqua o prioridad. Estas reglas especifica la precedencia de las operaciones aritmticas. Considere la expresin 3+5*2 Cul es el valor correcto, 16 ( 8 * 2) o 13 (3 + 1 O ) ? De acuerdo a las citadas reglas, la multiplicacin se realiza antes que la suma. Por consiguiente, la expresin anterior equivale a: 3 + (5 * 2) En C las expresiones interiores a parntesis se evalan primero; a continuacin, se realiza los operadores unitarios, seguidos por los operadores de multiplicacin, divisin, resto, suma y resta. OPERADORES ARITMTICOS Operador Ejemplo * / + % Tipos enteros Producto Divisin entera: cociente Suma Resta Divisin entera: resto Tipos reales Producto x*y

Divisin en coma flotante b / 5 Suma Resta x+y b-c b %. 5

4.4 Prioridad de operadores, evaluacin de expresiones.


PRECEDENCIA DE OPERADORES MATEMTICOS BSICOS. Operador +, *, /, % Operacin +25, -6.745 5*5 es 25/5 es 25%6 es 25 5 1 Nivel de precedencia 1 2

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

+, -

2+3 2-3

es es

5 -1

Ejemplo 1. Cul es el resultado de la expresin: 6 + 2 * 3 - 4/2? 6 + 2 * 3 - 4/2 6 + 6 - 4/2 6+6 - 2 12 - 2 10 2. Cules el resultado de la expresin: 5 *5(5+(6-2)+1)? 5 * (5 + (6-2) + 1) 5 * (5 + 4 + 1) 5 * 10 50 Ejemplo Cul es el resultado de la expresin: 7 * 10-5 % 3 * 4 + 9? Existen tres operadores de prioridad ms alta (*, % Y *) 70 - 5 % 3 * 4 + 9 La asociatividad es de izquierda a derecha, por consiguiente se ejecuta a continuacin % 70 - 2 * 4 + 9 y la segunda multiplicacin se realiza a continuacin, produciendo 70 - 8 + 9 Las dos operaciones restantes son de igual prioridad y como la asociatividad es a izquierda, se realizar la resta primero y se obtiene el resultado 62 + 9 y, por ltimo, se realiza la suma y se obtiene el resultado final de 71 Los parntesis se pueden utilizar para cambiar el orden usual de evaluacin de una expresin determinada por su prioridad y asociatividad. Las subexpresiones entre parntesis se evalan en primer lugar segn el modo estndar y los resultados se combinan para evaluar la expresin completa. Si los parntesis estn anidados -es decir, un conjunto de parntesis contenido en otro- se ejecutan en primer lugar los parntesis ms internos. Por ejemplo, considrese la expresin (7 * (10 - 5) % 3)* 4 + 9 La subexpresin (10 - 5) se evala primero, produciendo -~ (7 * 5 % 3) * 4 + 9

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

A continuacin se evala de izquierda a derecha la subexpresin (7 * 5 % 3) (35 % 3) * 4 + 9 seguida de 2*4+9 Se realiza a continuacin la multiplicacin, obteniendo 8+9 y la suma produce el resultado final 17 Prctica 21
Suponiendo los siguientes valores para las variables: X=2; y=6; z=9; r=100; s=10; a=15; b=3; Cuales son los valores correctos de cada expresin? o o o b) o o o c) o o o d) o o o e) o o o a) x += 10; 12 10 11 s *= b; 9 13 30 r /= 0; infinito 1 error y += x + 10; 8 12 18 z -= a*b; -36 -18 36 Usar expresiones para las siguientes, usando operadores mixtos. a) o o o b) o o o c) o o o d) o o o x = 10 + x y; x += 10 y x -= y + 10 x += 10 + y r = 100* r; r *= 100* r r *= 100 r += 100 y = y/ (10+x); y /= 10*x y /= 10 + y/x y/= 10+x z = 3 * x + 6; z +=6 z *=3 no es posible e) Evaluar las siguientes expresiones. Siendo: x = 10; y = 20; z = 30; a) o o o b) o o c) o o d) o o z = x y, t = z y; z =- 10, t=-30 t = 10 z = 30, t=-30 (x < 10) && (y > 15) true false (x <= z) | | (z <= y) true false (x+y < z) true false

(x+y != z) && (1/ (z-x-y) != 1) o o o true false error

4.5 Estructura bsica de un programa.


Un programa en C se compone de una o mas funciones. Una de las funciones debe ser obligatoriamente main. Una funcin en C es un grupo de instrucciones que realizan una o mas acciones. Asimismo, un programa contendr una serie de directivas #include que permitir incluir en el mismo
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

archivos de cabecera que a su vez constar de funciones y datos predefinidos en ellos. La estructura tpica completa de un programa en C: #include preprocesador #define procesador declaraciones globales Prototipos de funciones Variables Funcin principal main void main ( ) { declaraciones locales sentencias } definiciones de otras funciones tipo1 func1 () { .. } De un modo ms explcito, un programa C puede incluir: Directivas de preprocesador Declaraciones globales La funcin main ( ) Funciones definidas por el usuario Comentarios del programa (utilizados en su totalidad). Directivas del Macros del

Un ejemplo de un programa sencillo en C. /* Listado DEMO_UNO.C. Programa de saludo*/ #include <iostream.h> /*Este programa imprime: Bienvenido a la Programacin en C*/
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

void main( ) { cout<<Bienvenido a la Programacin en C/n; } La directiva #include de la primera lnea es necesaria para que el programa tenga salida. Se refiere a un archivo externo denominado iostream.h en el que se proporciona la informacin relativa a la funcin cout. Los signos < y > no son parte del nombre del archivo; se utilizan para indicar que el archivo es un archivo de biblioteca estndar C++. La segunda lnea es comentario, identificado por los caracteres /* y */. Los comentarios se incluyen en los programas para proporcionar explicaciones a los usuarios. Este tipo de lnea es ignorada por el compilador. La tercera lnea contiene la cabecera de la funcin main( ), obligatoria en cada programa de C. Indica el comienzo del programa y requieren los parntesis ( ) a continuacin de main ( ). La cuarta y la sptima lnea slo contiene las llaves { y } que encierran el cuerpo de la funcin main ( ) y son necesarias en todos los programas C. La quinta lnea contiene la sentencia cout<<(bienvenidos.................; que indica al sistema que escriba el mensaje Bienvenidos a la programacin en C\n. cout es la funcin ms utilizada para dar salida de datos por el dispositivo estndar, la pantalla. La salida ser: Bienvenido a la programacin en C

El smbolo \n es el smbolo de nueva lnea. Poniendo este smbolo al final de la cadena entre comillas, indica al sistema que comience una nueva lnea despus de imprimir los caracteres precedentes, terminando, por consiguiente, la lnea actual. El punto y coma (;) al final de la quinta y sexta lnea significa que C requiere que cada sentencia termine con un punto y coma. No es necesario que este al final de una lnea. Se pueden poner varias sentencias en la misma lnea y se puede hacer que una sentencia se extienda sobre varias lneas.

4.7 Proceso de creacin de un ejecutable.


Para crear un programa ejecutable, es necesario nicamente cambiar el destino de compilacin, en lugar de que sea a memoria, se genere a disco, y por consiguiente, se genera un archivo .EXE.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Prcticas 22 a 31.
CODIFICAR EN LENGUAJE C LOS SIGUIENTES ENUNCIADOS 21. Escribir un algoritmo que sume dos nmeros: a=4 b=3 22. Escribir un algoritmo que sume, reste, multiplique y divida dos nmeros: x = 10 y=2 23. Escribir un algoritmo que calcule el rea de un rectngulo: lado1 = 3 lado2 = 4 rea del rectngulo=lado1 * lado2 24. Escribir un algoritmo que calcule el rea de un tringulo: base = 7 altura = 4 rea del tringulo = (base * altura)/2 25. Escribir un algoritmo que calcule la longitud y el rea de una circunferencia: radio = 4 longitud de la circunferencia = 2 * PI * radio rea de la circunferencia = PI * radio2 26. Escribir un algoritmo que calcule la velocidad de un proyectil que recorre 2 Km en 5 minutos. Expresar el resultado en metros y segundo. Velocidad = espacio/tiempo 27. Escribir un algoritmo que calcule el volumen de una esfera: radio = 3 volumen de la esfera = 4/3 * PI * radio3 28. Escribir un algoritmo que evale la siguiente expresin: (a+7*c)/(b+2-a)+2*b a = 3,b = 6,c = 4 29. Escribir un algoritmo que evale la siguiente expresin: (a+5) * 3 / 2 * b - b a = 3,b = 6 30. Escribir un algoritmo que evale la siguiente expresin: (-b + razcuadrada(b2-4*a*c)/(2*a) (es la solucin positiva de una ecuacin de 2 grado)

MCC Virginia Lagunes Barradas

Prcticas 32 41.

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

CODIFICAR EN LENGUAJE C LOS SIGUIENTES ENUNCIADOS 32. Escribir un algoritmo que calcule el rea y el volumen de un cilindro: A = (2 * (PI * r2)) + ((2 * PI * r) * h) V = (PI * r2) * h 33. Escribir un algoritmo que calcule el rea y el volumen de un hexaedro A = (l*l) * 6 V = l3 34. Escribir un algoritmo que calcule el rea y el volumen de un prisma A = (2 *(l1 * l2)) + (2 * (l1 * l3)) + (2*(l2 * l3)) V = l1 * l2 * l3 35. Escribir un algoritmo que calcule el rea y el volumen de un tetraedro A = a2 * razcuadrada(3) V = (a3/12) * razcuadrada (2) 36. Escribir un algoritmo que calcule el rea y el volumen de un octaedro A = 2 * a2 * razcuadrada(3) V=(a3/3) * razcuadrada(2) 37. Escribir un algoritmo que calcule el rea y el volumen de un cono A = (PI * r * l)+ (PI * r2) V = (PI * r2 * h)/3 38. Escribir un algoritmo que calcule el volumen e un elipsoide V = (4/3) * PI * a * b *c 39. Escribir un algoritmo que calcule una ecuacin de 2 grado 40. Escribir un algoritmo que calcule el rea y el volumen de un cilindro: radio = 3 altura = 4 41. Escribir un algoritmo que calcule la hipotenusa de un tringulo rectngulo cateto 1 = 5 cateto 2 = 5

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

UNIDAD III.Estructuras secuenciales y selectivas.


Objetivo Educacional
Comprender el uso y funcionamiento de las estructuras secuenciales y selectivas y las implementar en el desarrollo de aplicaciones.

Actividades de Aprendizaje
Realizar una sntesis sobre el funcionamiento y aplicacin de las estructuras secuenciales y selectivas. Implementar clases que impliquen el diseo de algoritmos que requieran estructuras secuenciales y selectivas para probarlas en una aplicacin.

Fuentes de Informacin
Luis Joyanes Aguilar. Programacin en C++, un enfoque prctico. Mc Graw Hill. Espaa 2006. Francisco Javier Ceballos. Programacin Orientara a Objetos C++. Ed. Alfaomega. 3a edicin. Mxico, 2004. Luis Joyanes Aguilar. Fundamentos de Programacin, Algoritmos, Estructuras de datos y Objetos. Mc Graw Hill. Espaa 2003.

6.1 Estructuras selectivas.


6.1.1 PROPOSICION IF - ELSE Esta proposicin sirve para ejecutar ciertas sentencias de programa , si una expresin resulta CIERTA otro grupo de sentencias, si aquella resulta FALSA. Su interpretacin literal sera : SI es CIERTA tal cosa , haga tal otra , si no lo es saltela . El caso ms sencillo sera : if(expresin) sentencia ;
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

if(expresin) sentencia ; Cuando la sentencia que sigue al IF es nica, las dos formas de escritura expresadas arriba son equivalentes . La sentencia slo se ejecutar si el resultado de "expresin" es distinto de cero (CIERTO) , en caso contrario el programa saltear dicha sentencia , realizando la siguiente en su flujo. Veamos unos ejemplos de las distintas formas que puede adoptar la "expresin" dentro de un IF :

if( a > b )

if( (a > b) != 0 )

las dos expresiones son idnticas, aunque a veces resulta ms claro expresarla de la segunda manera, sobre todo en los primeros contactos con el lenguaje. Las dos superiores son idnticas entre s , al igual que las dos inferiores Obsrvese que (!a) dar un valor CIERTO slo cuando a sea FALSO. (ver operador NEGACION en el captulo anterior ) La primera es una expresin correcta , el IF se realizar slo si a es igual a b. En cambio la segunda es un error , ya que no se est comparando a con b , sino ASIGNANDO el valor de esta a aquella . Sin embargo, a veces puede usarse como un truco (un poco sucio) de programacin , ya que primero se realiza la asignacin y luego se evala el resultado de esta para realizar el IF , es entonces equivalente a escribir : a=b; con el ahorro de una lnea de programa ( a costa de la legibilidad del mismo ).

if(a) if(!a)

if(a != 0) if(a == 0 )

if( a == b ) if( a = b )

/* Error */

if(a)

....................

En casos ms complejos que los anteriores , la proposicin IF puede estar seguida por un bloque de sentencias : if(expresin) { sentencia 1 ; sentencia 2 ; if(expresin) { sentencia 1 ; sentencia 2 ; ...............
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

............. }

Las dos maneras son equivalentes , por lo que la posicin de la llave de apertura del bloque queda librada al gusto del programador . El indentado de las sentencias (sangra) es tambin optativo , pero sumamente recomendable ,sobre todo para permitir la lectura de proposiciones muy complejas anidadas , como se ver luego. El bloque se ejecutar en su conjunto si la expresin resulta CIERTA. El uso del ELSE es optativo , y su aplicacin resulta en la ejecucin de una , una serie de sentencias en el caso de que la expresin del IF resulta FALSA. Su aplicacin puede verse en el ejemplo siguiente : if(expresin) { sentencia 1 ; sentencia 2 ; } sentencia 3 ; sentencia 4 ; sentencia 5 ; if(expresin) { sentencia 1 ; sentencia 2 ; } else { sentencia 3 ; sentencia 4 ; } sentencia 5 ;

En el ejemplo de la izquierda no se usa el ELSE y por lo tanto las sentencias 3 , 4 y 5 se ejecutan siempre . En el segundo caso , las sentencias 1 y 2 se ejecutan solo si la expresin es CIERTA , en ese caso las 3 y 4 NO se ejecutarn para saltarse directamente a la 5 , en el caso de que la expresin resulte FALSA se realizarn las 3 y 4 en lugar de las dos primeras y finalmente la 5 La proposicin ELSE queda siempre asociada al IF ms cercano , arriba de l. Es comn tambin , en caso de decisiones mltiples , el uso de anidamientos ELSE-IF de la forma indicada abajo: if(exp.1) sentencia1 ; else if(exp.2) sentencia2 ; else if(exp.3) sentencia3 ; else sentencia5 ; if(exp.1) sentencia1 ; else if(exp.2) sentencia2 ; else if(exp.3) sentencia3 ; else sentencia5 ;

Si bien se suele escribir segn la modalidad de la izquierda , a la derecha hemos expresado las asociaciones entre los distintos ELSE IF por medio del indentado del texto. 6.1.2 PROPOSICION SWITCH

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

El SWITCH es una forma sencilla de evitar largos , tediosos y confusos anidamientos de ELSE-IF Supongamos que estamos implementando un Men , con varias elecciones posibles . El esqueleto de una posible solucin al problema usando if-else podra ser el siguiente :

#include <<stdio.h>> main() { int c ; printf("\nMENU :") ; printf("\n A = ADICIONAR A LA LISTA ") ; printf("\n B = BORRAR DE LA LISTA ") ; printf("\n O = ORDENAR LA LISTA ") ; printf("\n I = IMPRIMIR LA LISTA ") ; printf("\n\nESCRIBA SU SELECCION , Y LUEGO <<ENTER>> : ") ; if( (c = getchar()) != '\n' ) { if( c == 'A') printf("\nUD. SELECCIONO AGREGAR") ; else if( c == 'B') printf("\nUD. SELECCIONO BORRAR") ; else if( c == 'O' ) printf("\nUD. SELECCIONO ORDENAR") ; else if( c == 'I' ) printf("\nUD. SELECCIONO IMPRIMIR") ; else printf("\n\a\aUD. APRETO UN CARACTER ILEGAL" ) ; } else printf("\n UD. NO HA SELECCIONADO NADA !" ) ; } Como es fcil de ver , cuando las opciones son muchas, el texto comienza a hacerse difcil de entender y engorroso de escribir El mismo programa, utilizando un SWITCH , quedara mucho ms claro de leer, y sencillo de escribir, como se aprecia en el EJEMPLO siguiente. #include <stdio.h> #include <conio.h> main() { int c ; printf("\nMENU :") ;
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

printf("\n A = ADICIONAR A LA LISTA ") ; printf("\n B = BORRAR DE LA LISTA ") ; printf("\n O = ORDENAR LA LISTA ") ; printf("\n I = IMPRIMIR LA LISTA ") ; printf("\n\nESCRIBA SU SELECCION , Y LUEGO <<ENTER>> : ") ; c = getchar() ; switch (c) { case 'A' : printf("\nUD. SELECCIONO AGREGAR") ; break ; case 'B' : printf("\nUD. SELECCIONO BORRAR") ; break ; case 'O' : printf("\nUD. SELECCIONO ORDENAR") ; break ; case 'I' : printf("\nUD. SELECCIONO IMPRIMIR") ; break ; case '\n': printf("\n UD. NO HA SELECCIONADO NADA !" ) ; break ; default : printf("\n\a\aUD. APRETO UN CARACTER ILEGAL" ) ; break ; } } El SWITCH empieza con la sentencia : switch (expresin) . La expresin contenida por los parntesis debe ser ENTERA , en nuestro caso un carcter ; luego mediante una llave abre el bloque de las sentencias de comparacin . Cada una de ellas se representa por la palabra clave "case" seguida por el valor de comparacin y terminada por dos puntos . Seguidamente se ubican las sentencias que se quieren ejecutar , en el caso que la comparacin resulte CIERTA . En el caso de resultar FALSA , se realizar la siguiente comparacin , y as sucesivamente Prestemos atencin tambin a la sentencia BREAK con la que se termina cada CASE. Una caracterstica poco obvia del SWITCH , es que si se eliminan los BREAK del programa anterior , al resultar CIERTA una sentencia de comparacin, se ejecutarn las sentencias de ese CASE particular pero TAMBIEN la de todos los CASE por debajo del que ha resultado verdadero. Quizs se aclare esto diciendo que , las sentencias propias de un CASE se ejecutarn si su comparacin otra comparacin ANTERIOR resulta CIERTA . La razn para este poco "juicioso" comportamiento del SWITCH es que as se permite que varias comparaciones compartan las mismas sentencias de programa , por ejemplo : .................
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

case 'X' : case 'Y' : case 'Z' : printf(" UD. ESCRIBIO X , Y , Z ") ; break ; .................. La forma de interrumpir la ejecucin luego de haber encontrado un CASE cierto es por medio del BREAK , el que da por terminado el SWITCH Al final del bloque de sentencias del SWITCH , aparece una optativa llamada DEFAULT , que implica : si no se ha cumplido ningn CASE , ejecute lo que sigue. Es algo superfluo poner el BREAK en este caso , ya que no hay ms sentencias despus del DEFAULT , sin embargo , como el orden en que aparecen las comparaciones no tiene importancia para la ejecucin de la instruccin, puede suceder que en futuras correcciones del programa se agregue algn nuevo CASE luego del DEFAULT , por lo que es conveniente preverlo , agregando el BREAK , para evitar errores de laboriosa ubicacin Ms adelante volveremos sobre otros usos del BREAK. 4. LA ITERACION WHILE El WHILE es una de las tres iteraciones posibles en C . Su sintaxis podra expresarse de la siguiente forma : while(expresion) proposicin 1 ; while(expresin) { proposicin 1 ; proposicin 2 ; ............... proposicin n ; }

Esta sintaxis expresada en palabras significara: mientras (expresin) d un resultado CIERTO ejectese la proposicin 1 , en el caso de la izquierda ejectese el bloque de sentencias , en el caso de la derecha Por lo general , dentro de la proposicin del bloque de ellas , se modifican trminos de la expresin condicional , para controlar la duracin de la iteracin .

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

EJERCICIOS DE ESCTRUCTURAS DE CONTROL SELECTIVAS 50 al 60 50. Escribir un programa que introduzca el nmero de un mes (1 a 12) y el ao y visualice el nmero de das del mes. 51. Cuatro enteros entre 0 y 100 presentan las puntuaciones de un estudiante de un curso de informtica. Escribir un programa para encontrar la media de estas puntuaciones y visualizar una tabla de notas de acuerdo al siguiente cuadro: Media 90-100 80-90 70-80 60-70 Puntuacin A B C D

0-60 E 52. Escribir un programa que lea dos nmeros enteros y visualice el menor de los dos. 53. Escribir un programa que resuelva la ecuacin cuadrtica (ax2 + bx + c = 0). 54. Escribir un programa que lea tres enteros y emita un mensaje que indique si estn o no en orden numrico. 55. Escribir y ejecutar un programa que simule un calculador simple. Lee dos enteros y un carcter. Si el carcter es un +, se visualiza la suma; si es un -, se visualiza la diferencia; si es un * se visualiza el producto; si es un /, se visualiza el cociente; si es un % se imprime el resto. 56. Construir un programa que indique si el nmero introducido por teclado es positivo, igual a cero o negativo. 57. Se desea leer las edades de 3 hijos de un matrimonio y escribir la edad mayor, la menor y la media de las 3 edades. 58. Escribir un programa que acepte fechas escritas de modo usual y las visualice como 3 nmeros. Por ejemplo, la entrada 15, de febrero 1989 producir la salida 15 02 1989. EJERCICIOS DE ESTRUCTURAS DE CONTROL SELECCIN MLTIPLE 59. Escribir un programa que visualice un men con las siguientes opciones : 1. Crculo (radio) 2. Cuadrado (lado) 3. Rectngulo (base y altura) 4. Tringulo equiltero (lado) 5. Salir Leer nicamente los datos que se te indican en cada opcin y para todos calcular el permetro y rea. El men no debe aceptar otras opciones que no sean del 1 al 5 y debe regresar al mismo men despus de ejecutar cada opcin exceptuando la de salir. 60. Escribir un programa que visualice un men con las siguientes opciones : 1. Leer 2 nmeros 2. Sumarlos 3. Restarlos 4. Multiplicarlos 5. Dividirlos 6. Intercambiarlos 7. Salir Si no se elige la opcin 1 primero que las dems, al ejecutarse las otras se desplegaran resultados basura.El men no debe aceptar otras opciones que no sean del 1 al 7 y debe regresar al mismo men despus de ejecutar cada opcin exceptuando la de salir. 61.
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

UNIDAD IV.Estructuras de repeticin.

Objetivo Educacional
Comprender el uso y funcionamiento de las estructuras de repeticin y las implementar en el desarrollo de aplicaciones.

Actividades de Aprendizaje
Realizar una sntesis sobre el funcionamiento y aplicacin de las estructuras de repeticin. Implementar clases que impliquen el diseo de algoritmos que requieran estructuras de repeticin para probarlas en una aplicacin.

Fuentes de Informacin
Luis Joyanes Aguilar. Programacin en C++, un enfoque prctico. Mc Graw Hill. Espaa 2006. Francisco Javier Ceballos. Programacin Orientara a Objetos C++. Ed. Alfaomega. 3a edicin. Mxico, 2004. Luis Joyanes Aguilar. Fundamentos de Programacin, Algoritmos, Estructuras de datos y Objetos. Mc Graw Hill. Espaa 2003.

7.1 Repetir mientras Selectiva simple (si). LA ITERACION WHILE (MIENTRAS) El WHILE es una de las tres iteraciones posibles en C . Su sintaxis podra expresarse de la siguiente forma : while(expresion) proposicin 1 ; while(expresin) { proposicin 1 ; proposicin 2 ; ............... proposicin n ; }

Esta sintaxis expresada en palabras significara: mientras (expresin) d un resultado CIERTO ejectese la proposicin 1 , en el caso de la izquierda ejectese el bloque de sentencias , en el caso de la derecha
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Por lo general , dentro de la proposicin del bloque de ellas , se modifican trminos de la expresin condicional , para controlar la duracin de la iteracin .

7.2 Repetir hasta.


LA ITERACION DO WHILE (REPETIR HASTA) Su sintaxis ser :
do { proposicin 1 ; proposicin 2 ; ............... } while (expresin) ;

Expresado en palabras , esto significa : ejecute las proposiciones , luego repita la ejecucin mientras la expresin d un resultado CIERTO . La diferencia fundamental entre esta iteracin y la anterior es que el DO-WHILE se ejecuta siempre AL MENOS una vez , sea cual sea el resultado de expresin.

7.3 Repetir desde.


ITERACION FOR (REPETIR DESDE) El FOR es simplemente una manera abreviada de expresar un WHILE , veamos su sintaxis :
for ( expresin1 ; expresin2 ; expresion3 ) { proposicin1 ; proposicin2 ; .............. } Esto es equivalente a : expresin1 ; while ( expresin2 ) { proposicin1 ; proposicin2 ; .............. expresion3 ; }

La expresin1 es una asignacin de una ms variables , (equivale a una inicializacin de las mismas ) , la expresin2 es una relacin de algun tipo que , mientras d un valor CIERTO , permite la iteracin de la ejecucin y expresin3 es otra asignacin , que comnmente vara alguna de las variables contenida en expresin2 Todas estas expresiones , contenidas en el parntesis del FOR deben estar separadas por PUNTO Y COMA y NO por comas simples.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

No es imprescindible que existan TODAS las expresiones dentro del parntesis del FOR , pudindose dejar en blanco algunas de ellas , por ejemplo :
for ( ; exp2 ; exp3) for (exp1 ; ; ) for ( ; ; )

Estas dos ltimas expresiones son interesantes desde el punto de vista de su falta de trmino relacional , lo que implica que el programador deber haber previsto alguna manera alternativa de salir del lazo ( probablemente mediante BREAK RETURN como veremos ms adelante ) ya que sino , la ejecucin del mismo es infinita ( tan larga como se mantenga encendida la computadora ) . LA SENTENCIA BREAK El BREAK , ya brevemente descrito con el SWITCH , sirve tambin para terminar loops producidos por WHILE , DO-WHILE y FOR antes que se cumpla la condicin normal de terminacin . En el EJEMPLO siguiente vemos su uso para terminar un WHILE indeterminado.
#include <stdio.h> #include <conio.h> main() { char c ; printf("ESTE ES UN LOOP INDEFINIDO ") ; while(1) { printf( "DENTRO DEL LOOP INDEFINIDO (apriete una tecla):" ) ; if( (c = getch()) == 'Q' ) break ; printf( "\nNO FUE LA TECLA CORRECTA PARA ABANDONAR EL LOOP ") ; } printf("\nTECLA CORRECTA : FIN DEL WHILE ") ; }

Obsrvese que la expresin while(1) SIEMPRE es cierta , por lo que el programa correr imparable hasta que el operador oprima la tecla "secreta" Q . Esto se consigue en el IF , ya que cuando c es igual al ASCII Q se ejecuta la instruccin BREAK ,dando por finalizado el WHILE El mismo criterio podra aplicarse con el DO-WHILE con FOR , por ejemplo haciendo
for (;;) { /* loop indefinido */ ............ if( expresin ) break ; /* ruptura del loop cuando expresin sea verdadera */ }

LA SENTENCIA CONTINUE
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

La sentencia CONTINUE es similar al BREAK con la diferencia que en vez de terminar violentamente un loop , termina con la realizacin de una iteracin particular y permitiendo al programa continuar con la siguiente.

EJERCICIOS DE ESTRUCTURAS DE CONTROL REPETITIVAS 61 AL 66


52. Escriba un programa que calcule y visualice 1+2+3+.+(n-1)+n, en donde n es un valor de un dato positivo. 53. Escribir un programa que visualice la siguiente salida: 1 2 1 1 1 2 2 2 3 3 3 4

2 1 54. Disear e implementar u n programa que lea un total de 10 nmeros y cuente el nmero de sus entradas que son positivos. 55. Disear e implementar un programa que solicite al usuario un valor no negativo n y visualice la siguiente salida (ejemplo n=6): 23456 12345 234 123 2 1 56. Escribir un programa que lea un lmite mximo entero positivo y visualice todas las potencias de la base, menores que el valor especificado lmite mximo. 57. Disear un programa que sume los m=30 primero nmeros pares.

INTRODUCCIN A ARREGLOS UNIDIMENSIONALES Y BIDIMENSIONALES

Arreglos Unidimensionales
Un arreglo unidimensional es un tipo de datos estructurado que est formado de una coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un ndice para cada elemento del arreglo que nos da su posicin relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la direccin base del arreglo, la cota superior y la inferior. REPRESENTACION EN MEMORIA
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Los arreglos se representan en memoria de la forma siguiente: x : array[1..5] of integer

Para establecer el rango del arreglo (nmero total de elementos) que componen el arreglo se utiliza la siguiente formula: RANGO = Ls - (Li+1) donde: ls = Lmite superior del arreglo li = Lmite inferior del arreglo Para calcular la direccin de memoria de un elemento dentro de un arreglo se usa la siguiente formula: A[i] = base(A) + [(i-li) * w] donde : A = Identificador nico del arreglo i = Indice del elemento li = Lmite inferior w = Nmero de bytes tipo componente Si el arreglo en el cual estamos trabajando tiene un ndice numerativo utilizaremos las siguientes frmulas: RANGO = ord (ls) - (ord (li)+1) A[i] = base (A) + [ord (i) - ord (li) * w]

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Arreglos Bidimensionales
Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogneo. El acceso a ellos tambin es en forma directa por medio de un par de ndices. Un arreglo bidimensional es un conjunto de datos homogneos, finito y ordenado, donde se hace referencia a cada elemento por medio de dos ndices. El primero se utiliza generalmente para indicar rengln, y el segundo para indicar columna. Un arreglo bidimensional tambin puede definirse como un arreglo de arreglos. Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas. La primera dimensin del arreglo representa las columnas, cada elemento contiene un valor y cada dimensin representa una relacin La representacin en memoria se realiza de dos formas : almacenamiento por columnas o por renglones. Para determinar el nmero total de elementos en un arreglo bidimensional usaremos las siguientes frmulas: RANGO DE RENGLONES (R1) = Ls1 - (Li1+1) RANGO DE COLUMNAS (R2) = Ls2 - (Li2+1) No. TOTAL DE COMPONENTES = R1 * R2 REPRESENTACION EN MEMORIA POR COLUMNAS

x : array [1..5,1..7] of integer Para calcular la direccin de memoria de un elemento se usan la siguiente formula: A[i,j] = base (A) + [((j - li2) R1 + (i + li1))*w]

REPRESENTACION EN MEMORIA POR RENGLONES


MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

x : array [1..5,1..7] of integer Para calcular la direccin de memoria de un elemento se usan la siguiente formula: A[i,j] = base (A) + [((i - li1) R2 + (j + li2))*w] donde: i = Indice del rengln a calcular j = Indice de la columna a calcular li1 = Lmite inferior de renglones li2 = Lmite inferior de columnas w = Nmero de bytes tipo componente Operaciones Con Arreglos Las operaciones en arreglos pueden clasificarse de la siguiente forma:

Lectura Escritura Asignacin Actualizacin Ordenacin Bsqueda

a) LECTURA Este proceso consiste en leer un dato de un arreglo y asignar un valor a cada uno de sus componentes.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

La lectura se realiza de la siguiente manera:


para i desde 1 hasta N haz x<--arreglo[i]

b) ESCRITURA Consiste en asignarle un valor a cada elemento del arreglo. La escritura se realiza de la siguiente manera:
para i desde 1 hasta N haz arreglo[i]<--x

c) ASIGNACION No es posible asignar directamente un valor a todo el arreglo, por lo que se realiza de la manera siguiente:
para i desde 1 hasta N haz arreglo[i]<--algn_valor

d) ACTUALIZACION Dentro de esta operacin se encuentran las operaciones de eliminar, insertar y modificar datos. Para realizar este tipo de operaciones se debe tomar en cuenta si el arreglo est o no ordenado. Para arreglos ordenados los algoritmos de insercin, borrado y modificacin son los siguientes: 1.- Insertar.
Si i< mensaje(arreglo contrario caso En arreglo[i]<--valor i<--i+1 entonces>

2.- Borrar.
Si N>=1 entonces inicio i<--1 encontrado<--falso mientras i<=n y encontrado=falso inicio si arreglo[i]=valor_a_borrar entonces inicio encontrado<--verdadero N<--N-1 para k desde i hasta N haz arreglo[k]<--arreglo[k-1] fin en caso contrario i<--i+1 fin fin Si encontrado=falso entonces mensaje (valor no encontrado)

3.- Modificar.
Si N>=1 entonces inicio i<--1 encontrado<--falso mientras i<=N y encontrado=false haz
MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

inicio Si arreglo[i]=valor entonces arreglo[i]<--valor_nuevo encontrado<--verdadero En caso contrario i<--i+1 fin fin

Uso de Clases con Arreglos


Las clases nos pueden ayudar a mejorar el manejo de un arreglo. De la siguiente forma. prog1
#include "iostream.h" class Vector { int vector[50]; public: Vector(); void entrarDato (int valor, int posicion) { vector[posicion] = valor; } int verDato (int posicion) { return vector[posicion]; } void mostrarVector(); }; Vector::Vector() { for (int i=0; i<50; i++) vector[i] = -1; } void Vector::mostrarVector() { for (int i=0; i<50; i++) cout << "vector [" << i << "] = " << vector[i] << endl; cout << endl; } main() { Vector mivector; mivector.entrarDato(345,43); mivector.entrarDato(23,47); mivector.entrarDato(5,35); mivector.entrarDato(8,38); mivector.entrarDato(10,39); mivector.entrarDato(23,40); mivector.mostrarVector(); cout << "********************" << endl; cout << "Posicion 23 : " << mivector.verDato(23) << endl; }

Se puede observar que el manejo desde el main se hace mucho ms sencillo. Se crea la variable que en este caso se llama mivector y luego se usan sus mtodos de entrarDato, verDato y mostrarVector, de manera muy sencilla. Ejercicio Haga una clase que contenga un vector de 10, que contenga los factoriales de los primeros 10 nmeros. Estos valores deben ser calculados y guardados en el constructor de la clase y luego para consulta no se deben calcular sino leer del vector interno. Si el usuario da un nmero mayor a 9 se le informar que no es posible hacer su operacin. Elabore la clase y el programa que permita probar su funcionamiento.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Solucin prog2
#include "iostream.h" class Factorial { int vector[10]; public: Factorial (); int verFactorial(int dato) { if (dato < 10) return vector[dato]; else { cout << "El valor de " << dato << " no esta presente" << endl; return -1; } } }; Factorial::Factorial() { int i,prodacumulado=1; for (i = 0; i<10; i++) if (i == 0) vector[i] = 1; else { prodacumulado *= i; vector[i] = prodacumulado; } } main () { cout << "Bienvenido al programa factorial" << endl; Factorial miFactorial; cout << "5! = "<< miFactorial.verFactorial(5) << endl; cout << "9! = "<< miFactorial.verFactorial(9) << endl; cout << "2! = "<< miFactorial.verFactorial(2) << endl; cout << "1! = "<< miFactorial.verFactorial(1) << endl; cout << "15! = "<< miFactorial.verFactorial(15) << endl; }

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

Ejercicios arreglos unidimensionales del 67 al 103: 67. Se tienen calificaciones de un grupo de 50 alumnos. Se necesita saber cuantos alumnos tienen una calificacin superior al promedio del grupo? 68. En un arreglo se ha almacenado el nmero total de toneladas de cereales cosechadas durante cada mes del ao anterior. Se desea la siguiente informacin: a. El promedio anual de toneladas cosechadas b. Cuntos meses tuvieron una cosecha superior al promedio anual? c. Cuntos meses tuvieron una cosecha inferior al promedio anual? 69. En un arreglo se almacenan las calificaciones finales de N alumnos. Escriba un programa que calcule e imprima: d. El promedio general del grupo e. Nmero de alumnos aprobados y nmero de alumnos reprobados f. Porcentaje de alumnos aprobados y porcentaje de alumnos reprobados g. Nmero de alumnos cuya calificacin fue mayor o igual a 8 70. Dada una cadena de caracteres como dato, se desea saber el nmero de veces que aparecen las letras a, b,, z y A, B,Z en dicha cadena. h. Escriba un programa que resuelva el problema i. Si uso arreglos Cuntos necesito? Por qu? j. Existe otra forma de resolverlo? 70. Calcular el promedio de 50 valores almacenados en un vector. Determinar adems cuantos son mayores que el promedio, imprimir el promedio, el numero de datos mayores que el promedio y una lista de valores mayores que el promedio. 71. Llenar dos vectores A y B de 45 elementos cada uno, sumar el elemento uno del vector A con el elemento uno del vector B y as sucesivamente hasta 45, almacenar el resultado en un vector C, e imprimir el vector resultante. 72. Llenar un vector de 20 elementos, imprimir la posicin y el valor del elemento mayor almacenado en el vector. Suponga que todos los elementos del vector son diferentes. 73. Almacenar 500 nmeros en un vector, elevar al cuadrado cada valor almacenado en el vector, almacenar el resultado en otro vector. Imprimir el vector original y el vector resultante. 74. Almacenar 300 nmeros en un vector, imprimir cuantos son ceros, cuantos son negativos, cuantos positivos. Imprimir adems la suma de los negativos y la suma de los positivos. 75. Almacenar 150 nmeros en un vector, almacenarlos en otro vector en orden inverso al vector original e imprimir el vector resultante.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

76. Se tienen almacenados en la memoria dos vectores M y N de cien elementos cada uno. Hacer un algoritmo que escriba la palabra Iguales si ambos vectores son iguales y Diferentes si no lo son. 77. Sern iguales cuando en la misma posicin de ambos vectores se tenga el mismo valor para todos los elementos. 78. Se tiene el vector A con 100 elementos almacenados. Disee un algoritmo que escriba SI si el vector esta ordenado ascendentemente o NO si el vector no esta ordenado 79. Disee un algoritmo que lea un numero cualquiera y lo busque en el vector X, el cual tiene almacenados 80 elementos. Escribir la posicin donde se encuentra almacenado el numero en el vector o el mensaje NO si no lo encuentra. Bsqueda secuencial. 80. Disee un algoritmo que lea dos vectores A y B de 20 elementos cada uno y multiplique el primer elemento de A con el ultimo elemento de B y luego el segundo elemento de A por el diecinueveavo elemento de B y as sucesivamente hasta llegar al veinteavo elemento de A por el primer elemento de B. El resultado de la multiplicacin almacenarlo en un vector C. 81. Disee un algoritmo que almacene en un vector llamado FIB[100] los 100 primeros nmeros de la serie fibonacci. 82. Hacer un algoritmo que almacene nmeros en una matriz de 5 * 6. Imprimir la suma de los nmeros almacenados en la matriz. 83. Hacer un algoritmo que llene una matriz de 10 * 10 y determine la posicin [renglon ,columna] del numero mayor almacenado en la matriz. Los nmeros son diferentes. 84. Hacer un algoritmo que llene una matriz de 7 * 7. Calcular la suma de cada rengln y almacenarla en un vector, la suma de cada columna y almacenarla en otro vector. 93. Hacer un algoritmo que llene una matriz de 20 * 20. Sumar las columnas e imprimir que columna tuvo la mxima suma y la suma de esa columna. 94. Hacer un algoritmo que llene una matriz de 5 * 5 y que almacene la diagonal principal en un vector. Imprimir el vector resultante. 95. Hacer un algoritmo que llene una matriz de 10 * 10 y que almacene en la diagonal principal unos y en las dems posiciones ceros. 96. Hacer un algoritmo que llene una matriz de 6 * 8 y que almacene toda la matriz en un vector. Imprimir el vector resultante.

MCC Virginia Lagunes Barradas

INSTITUTO TECNOLGICO SUPERIOR DE XALAPA

97. Hacer un algoritmo que llene una matriz de 8 * 8, que almacene la suma de los renglones y la suma de las columnas en un vector. Imprimir el vector resultante. 98. Hacer un algoritmo que llene una matriz de 5 * 6 y que imprima cuantos de los nmeros almacenados son ceros, cuantos son positivos y cuantos son negativos. 99. Disee un pseudocdigo que escriba el numero de la hilera cuya suma sea mayor que las dems hileras. Suponga que todas las hileras suman diferente cantidad. 100. El dueo de una cadena de tiendas de artculos deportivos desea controlar sus ventas por medio de una computadora . Los datos de entrada son : El numero de la tienda (1 a 50) Un numero que indica el deporte del articulo (1 a 20) El costo del articulo. Hacer un pseudocdigo que escriba al final del da lo siguiente Las ventas totales en el da para cada tienda Las ventas totales para cada uno de los deportes. Las ventas totales de todas las tiendas. 101. El departamento de polica de la ciudad de Tuxtepec ha acumulado informacin referente a las infracciones de los lmites de velocidad durante un determinado periodo de tiempo. El departamento ha dividido la ciudad en cuatro cuadrantes y desea realizar una estadstica de las infracciones a los lmites de velocidad en cada uno de ellos. Para cada infraccin se ha preparado una tarjeta que contiene la siguiente informacin: Numero de registro del vehculo; cuadrante en el que se produjo la infraccin limite de velocidad en milla por hora 102. Disee un diagrama para producir 2 informes; el 1o. Que contiene una lista de la multa de velocidad recolectadas, donde la multa se calcula como la suma del costo de la corte ($20,000) mas $ 1,250 por cada mph que exceda la velocidad limite. Prepare una tabla con los siguientes resultados: INFRACCIONES A LOS LIMITES DE VELOCIDAD Registro del Vehculo Lmite Multa Velocidad Registrada (MPH) Velocidad

Este informe debe ser seguido de un segundo en el cual se proporcione un anlisis de las infracciones por cuadrante. Para cada uno de los 4 cuadrantes mencionados, debe darse el numero de infracciones y la multa promedio. 103. Se tiene almacenada la matriz M (50,5) la cul contiene la informacin sobre las calificaciones de la materia de LENGUAJES ALGORITMICOS . Disee un pseudocdigo que imprima: a. Cantidad de alumnos que aprobaron la materia. b. Cantidad de alumnos que tienen derecho a nivelacin. c. El (o los) numero (s) de control de lo(s) alumno(s) que haya (n) obtenido la mxima calificacin final.

MCC Virginia Lagunes Barradas

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