Vous êtes sur la page 1sur 60

UNIVERSIDAD NACIONAL DE INGENIERÍA

Facultad de Ingeniería Industrial y de Sistemas

UNIVERSIDAD NACIONAL DE INGENIERÍA Facultad de Ingeniería Industrial y de Sistemas Proyecto CURSO: LENGUAJE DE PROGRAMACION

Proyecto

CURSO:

LENGUAJE DE PROGRAMACION ESTRUCTURADO

DOCENTE:

GILBERTO A. SALINAS

INTEGRANTES:

  • - DIAZ HERNANDEZ, JOSEEDUARDO

20110031B

  • - ROQUE RUIZ, JOHANA LIZETH

20111189I

02 de julio de 2013

INDICE

  • 1. INTRODUCCIÓN .......................................................................

  • 2. ..............................................................................

OBJETIVOS

Error! Bookmark not defined. Error! Bookmark not defined.

MARCO TEÓRICO

  • 3. ...............................................................................................................

5

  • 3.1 CONCEPTOS PREVIOS

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

5

  • 3.1.1 FUNCIONAMIENTO DE UN ORDENADOR

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

5

  • 3.1.2 ALGORITMO

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

7

  • 3.1.3. LENGUAJE DE PROGRAMACIÓN

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

9

  • 3.2. PROGRAMACIÓN

ESTRUCTURADA............................................................................

19

  • 3.3. EL LENGUAJE C Y C++

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

22

  • 3.4. BASE DE DATOS

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

24

  • 3.4.1. MODELOS DE BASE DE DATOS

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

25

  • 3.5. VENTAJAS DEL USO DE BASE DE DATOS

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

29

  • 3.5.1. ADMINISTRADOR

DE UNA BASE DE DATOS ........................................................

30

  • 3.5.2. USUARIOS DE UNA BASE DE DATOS

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

31

  • 4. PROYECTO DE FIN DE CURSO

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

33

  • 4.1 DESCRIPCIÓN

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

33

  • 4.2 MODELO RELACIONAL DEL

SISTEMA.............................................................................

35

  • 4.3 PANTALLAS PRINCIPALES

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

36

  • 4.4 CÓDIGO FUENTE

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

Error! Bookmark not defined.

  • 5. INFORMACIÓN BÁSICA DEL EQUIPO Y EL COMPILADOR ....................................................

56

CONCLUSIONES

  • 7. ...............................................................................................................

59

BIBLIOGRAFÍA

  • 8. .........................................................................

Error! Bookmark not defined.

INDICE 1. INTRODUCCIÓN ....................................................................... 2. .............................................................................. OBJETIVOS Error! Bookmark not defined. Error! Bookmark not defined. MARCO

INTRODUCCION

En muchas ocasiones, nos topamos con algunas tareas que requieren ser ejecutadas frecuentemente pero con diferentes datos que procesar. Particularmente en una universidad, donde el alumno necesita por ejemplo reservar, cancelar y consultar turnos para un curso en especial y a través de estos datos realizar cuadros estadísticos que nos permita saber las horas llevadas por cada alumno, por cada curso así como también las horas, días y meses puntas, los cuales ayudarán a la universidad a mejorar sus procesos y brindar un mejor servicio al alumno. En este proyecto se desarrollará justamente un sistema informático para el manejo de turnos haciendo uso del lenguaje de programación C, que es objeto de estudio de nuestro curso.

INTRODUCCION En muchas ocasiones, nos topamos con algunas tareas que requieren ser ejecutadas frecuentemente pero con

OBJETIVOS

Implementar en el lenguaje C un sistema informático para el manejo de turnos, que realice las siguientes operaciones:

  • - Reservar un turno para un alumno.

  • - Cancelar una reserva de un turno de un alumno: dado el carnet de alumno y la hora de turno, el sistema anula el mencionado turno.

  • - Consultar turno a una hora determinada: dado el carnet del alumno y el turno, el sistema informa el aula, número de la Pc y el turno que el alumno tiene.

  • - Persistencia. Estadísticas

  • - Informar sobre las horas punta, días punta y mes punta().

  • - Horas de uso por cada alumno.

  • - Horas de uso por curso.

  • - Influye en el aprovechamiento el mayor uso del laboratorio.

OBJETIVOS Implementar en el lenguaje C un sistema informático para el manejo de turnos, que realice

MARCO TEORICO

  • 3.1 Conceptos previos

    • 3.1.1 Funcionamiento de un ordenador

Durante los siglos XVI, XVII y XVIII hubo varios diseños (e implementaciones)

de mecanismos que permitían realizar operaciones aritméticas; tales mecanismos constituyeron un primer paso hacia máquinas multipropósito, como los dispositivos de Babbage que aún eran puramente mecánicos, no electrónicos. A fines del siglo XIX se desarrollaron máquinas parcialmente inspiradas por las ideas de Babbage pero que añadían elementos para introducir información (las famosas tarjetas perforadas) y durante el siglo XX se impuso la utilización de elementos electromecánicos (relés) y, finalmente, electrónicos (válvulas, transistores y chips) en la construcción de tales máquinas. Durante la Segunda Guerra Mundial ambos bandos dedicaron importantes esfuerzos al desarrollo de máquinas electrónicas que permitieran llevar a cabo cálculos más veloces y decodificar mensajes cifrados; en 1944 John von Neumann, que participaba en el Proyecto Manhattan, percibiendo la importancia que tendrían las computadoras en el desarrollo de armas nucleares escribió un artículo en el que describía una arquitectura, inspirada por las ideas de Babbage, que perdura aún hoy.

MARCO TEORICO 3.1 Conceptos previos 3.1.1 Funcionamiento de un ordenador Durante los siglos XVI, XVII y

Arquitectura Von Neumann

La

arquitectura

Von

Neumann divide

el

ordenador

en cuatro

partes

principales:

 
  • 1. Unidad Aritmética (UA).

  • 2. Unidad de Control (UC).

  • 3. Memoria (M).

  • 4. Dispositivos de entrada/salida (E/S).

Arquitectura Von Neumann La arquitectura Von Neumann divide el ordenador en cuatro partes principales: 1. Unidad

Grafico 1. Componentes de un ordenador

La Unidad Aritmética es la encargada de realizar las operaciones aritméticas básicas y, quizá, funciones más compleja como raíces, logaritmos y funciones trigonométricas. La Unidad de Control controla la ejecución de las operaciones de forma apropiada y dirige el funcionamiento del resto de unidades de tal forma que el trabajo conjunto de todas conduzca a la consecución de las tareas específicas programadas en el sistema. La Unidad de Control realiza las siguientes operaciones:

Arquitectura Von Neumann La arquitectura Von Neumann divide el ordenador en cuatro partes principales: 1. Unidad

1.

Recupera de memoria la siguiente instrucción a ejecutar.

  • 2. Decodifica la instrucción y determina las acciones que debe llevar a

cabo.

  • 3. Envía órdenes a la memoria para recuperar o almacenar datos, a la

UA para llevar a cabo operaciones y a los dispositivos de E/S para

recibir o enviar datos al usuario. La Memoria almacena tanto datos numéricos como instrucciones (también codificadas de forma numérica); la memoria está dividida en celdas, cada una con una dirección única que permite el acceso a su contenido (datos o instrucciones). Por último, los dispositivos de entrada/salida facilitan la interacción de los usuarios con la máquina.

3.1.2 Algoritmo

La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi que vivió entre los siglos VIII y IX. Podemos encontrar muchas definiciones completas o

formales de algoritmo en los textos de algorítmica y programación, todas ellas muy similares:

Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones que un ordenador debe realizar para llevar a cabo una tarea en un tiempo finito. [Donald E. Knuth, 1968] Descripción de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones

1. Recupera de memoria la siguiente instrucción a ejecutar. 2. Decodifica la instrucción y determina lasalgoritmo proviene del nombre del matemático llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi que vivió entre los siglos VIII y IX. Podemos encontrar muchas definiciones completas o formales de algoritmo en los textos de algorítmica y programación, todas ellas muy similares: Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones que un ordenador debe realizar para llevar a cabo una tarea en un tiempo finito. [Donald E. Knuth, 1968]  Descripción de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones  Proyecto de Fin de Curso Página 7 " id="pdf-obj-6-35" src="pdf-obj-6-35.jpg">

elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomina léxico [Pierre Scholl, 1988] Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004]

Características:

Las

características

todo algoritmo son:

fundamentales

que

debe

cumplir

Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación. Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos. Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende. Tener una o más salidas: Debe siempre devolver un resultado; de

nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente

“verlos” en forma impresa o en pantalla, como ocurre con las

computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o

elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomina léxico [Pierre Scholl, 1988]algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004] Características: Las características todo algoritmo son: fundamentales que debe cumplir Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación. Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos. Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.  Tener una o más salidas: Debe siempre devolver un resultado; de    nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o Proyecto de Fin de Curso Página 8 " id="pdf-obj-7-42" src="pdf-obj-7-42.jpg">

canal por el cual es posible apreciar los efectos de las acciones del algoritmo. Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.

  • 3.1.3. Lenguaje de programación

Las personas para comunicarse entre sí necesitan un lenguaje que puede ser oral o escrito. En general para comunicar algo siempre se necesita un lenguaje, ya que estos son la manera de especificar las

acciones que se (ordenador).

desea

sean

realizadas

por

la

computadora

En otras palabras, son la interface ente el programador y la computadora. A través de ellos podemos desarrollar programas o aplicaciones, que se componen por un conjunto de instrucciones que luego se ejecutaran en la computadora haciendo uso de sus recursos (memoria, PCU, discos, etc.). Los lenguajes de programación están destinados a distintos ámbitos, dependiendo de sus características que simplifican algunas tareas.

Pueden estar destinados a aplicaciones científicas, de negocios, inteligencia artificial, programación de sistemas e incluso lenguajes de programación con propósitos especiales. Los lenguajes de programación tiene una estructura compleja que se compone de varias partes: sintaxis, semántica, elementos del lenguaje, nivel de abstracción, paradigma estructuras de control, para ordenar la

 canal por el cual es posible apreciar los efectos de las acciones del <a href=algoritmo. Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución. 3.1.3. Lenguaje de programación Las personas para comunicarse entre sí necesitan un lenguaje que puede ser oral o escrito. En general para comunicar algo siempre se necesita un lenguaje, ya que estos son la manera de especificar las acciones que se (ordenador). desea sean realizadas por la computadora En otras palabras, son la interface ente el programador y la computadora. A través de ellos podemos desarrollar programas o aplicaciones, que se componen por un conjunto de instrucciones que luego se ejecutaran en la computadora haciendo uso de sus recursos (memoria, PCU, discos, etc.). Los lenguajes de programación están destinados a distintos ámbitos, dependiendo de sus características que simplifican algunas tareas. Pueden estar destinados a aplicaciones científicas, de negocios, inteligencia artificial, programación de sistemas e incluso lenguajes de programación con propósitos especiales. Los lenguajes de programación tiene una estructura compleja que se compone de varias partes: sintaxis, semántica, elementos del lenguaje, nivel de abstracción, paradigma estructuras de control, para ordenar la Proyecto de Fin de Curso Página 9 " id="pdf-obj-8-30" src="pdf-obj-8-30.jpg">

ejecución delos programas, tipos de datos (números, letras, etc.), y funciones y procedimientos que contiene un conjunto de instrucciones, entre otras.

  • 3.1.3.1. Historia de los lenguajes de programación

El hombre a través de su historia siempre ha buscado inventar diversas herramientas que le permitan simplificar sus quehaceres y tener una mejor calidad de vida. La computadora es uno de estos inventos; aunque se puede decir puede decir que las tecnologías para su fabricación y explotación han tenido un desarrollo impresionante a partir de la segunda mitad del siglo XX, la computadora por si sola no es capaz de efectuar ninguna tarea, es tan solo un conjunto de cables y circuitos dentro de una caja que necesitan recibir instrucciones de los humanos para realizar alguna tarea. Entonces el problema aquí es lograr que un conjunto de cables y circuitos metidos en una caja realicen alguna tarea y nos den las soluciones que esperamos de estas; el problema aquí es, cómo hacer para que un conjunto de cables y circuitos metidos en una caja nos pueda entender ¿cómo nos comunicamos con la computadora? El hombre ha desarrollado una forma de transmitir nuestros deseos a la computadora, los Lenguajes de Programación.

Por otro lado, como se sabe, un conjunto de circuitos no entendería ningún lenguaje que nosotros conozcamos, por más sencillo que éste parezca. Los circuitos en todo caso, sólo reconocen presencia o ausencia de energía, es decir que debemos hablarle a la máquina en su

ejecución delos programas, tipos de datos (números, letras, etc.), y funciones y procedimientos que contiene un

propio lenguaje (presencia y ausencia de energía, 0 y 1), o nuestro lenguaje deberá de ser traducido a un lenguaje binario cuyo alfabeto es el 0 y el 1, mediante las herramientas desarrolladas para llevar a cabo esta tarea, las cuales reciben el nombre de traductores, y como veremos más adelante, los hay de muchos tipos, dependiendo de características más específicas del lenguaje a traducir y de la manera de llevar a cabo su traducción.

Como ya habréis entendido, para crear un lenguaje de programación, deberemos crear la herramienta que lo traduce, y es justamente de ellas, de las que hablaremos a continuación, para describir como han ido evolucionando en los últimos 50 años.

1946: Konrad Zuse, un ingeniero Alemán mientras trabajaba en los Alpes de Bavaria, desarrolló el lenguaje Plankalkul, el cual, fue aplicado entre otras cosas para jugar al ajedrez.

• 1949: Aparece Short Code, que viene a ser el primer lenguaje que

fue usado en un dispositivo de cómputo electrónico, aunque se debe decir que se trata de un lenguaje traducido a mano.

• 1951: Grace Hopper, trabajando para Remington Rand, comenzó el

trabajo de diseño del primer compilador conocido ampliamente, el A- 0, el cual, al ser liberado por la compañía en 1957, lo hizo con el nombre de MATH-MATIC.

propio lenguaje (presencia y ausencia de energía, 0 y 1), o nuestro lenguaje deberá de ser

• 1952: Alick E. Glennie, durante su tiempo libre en la Universidad de

Manchester, concibe un sistema de programación llamado AUTOCODE, que viene a ser un compilador muy rudimentario.

• 1957: aparece FORTRAN (FORmula TRANslating) sistema traductor

de fórmulas matemáticas. Fue desarrollado por un equipo, al frente del cual se encontraba John Backus quien después vendría a contribuir en el desarrollo del compilador para el lenguaje ALGOL y de

la notación usada para la especificación sintáctica de los lenguajes, conocida como BNF (Backus Naur Form).

A partir de los años sesenta, empiezan a surgir diferentes lenguajes de programación, atendiendo a diversos enfoques, características y propósitos, que más adelante describiremos. Por lo pronto, puede decirse, que actualmente existen alrededor de 2000 lenguajes de programación y continuamente, están apareciendo otros más nuevos, que prometen hacer mejor uso de los recursos computacionales y facilitar el trabajo de los programadores.

• 1952: Alick E. Glennie, durante su tiempo libre en la Universidad de Manchester, concibe un
Gráfico 2. Evolución de los Lenguajes Imperativos y Orientados a Objetos Proyecto de Fin de Curso

Gráfico 2. Evolución de los Lenguajes Imperativos y Orientados a Objetos

Gráfico 2. Evolución de los Lenguajes Imperativos y Orientados a Objetos Proyecto de Fin de Curso
  • 3.1.3.2. Clasificación de los lenguajes de programación

Los lenguajes de programación se clasifican de acuerdo a varios

criterios:

  • Según su “nivel”. Hace referencia a lo próxima al hombre que

esté la forma de expresar las sentencias

Lenguaje Máquina

Están escritos en lenguajes directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas. Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores.

Lenguajes de bajo nivel

Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina. En general se utiliza este tipo de lenguaje para programar controladores (drivers). La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas:

3.1.3.2. Clasificación de los lenguajes de programación Los lenguajes de programación se clasifican de acuerdo a
  • Mayor adaptación al equipo.

  • Posibilidad de obtener la máxima velocidad con mínimo uso de

memoria.

Pero también tiene importantes inconvenientes:

Imposibilidad de escribir código independiente de la máquina.

Mayor

dificultad en la programación y

en

la

comprensión de los

programas.

Características

  • Se

trabaja

a

nivel

de

Microinstrucciones,

programación es al más fino detalle.

  • Está orientado a la máquina.

es

decir,

su

Lenguajes de alto nivel (cercanos al hombre)

Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan al lenguaje natural. Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.

Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con posterioridad a los anteriores, con los siguientes objetivos, entre otros:

 Mayor adaptación al equipo.  Posibilidad de obtener la máxima velocidad con mínimo uso de

Lograr independencia de la máquina, pudiendo utilizar un mismo programa en diferentes equipos con la única condición de disponer de un programa traductor o compilador, que lo suministra el fabricante, para obtener el programa ejecutable en lenguaje binario de la máquina que se trate. Además, no se necesita conocer el hardware específico de dicha máquina.

Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla, eliminando muchas de las posibilidades de cometer errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en inglés) en lugar de cadenas de símbolos sin ningún significado aparente.

Incluir rutinas de uso frecuente como son las de entrada/salida, funciones matemáticas, manejo de tablas, etc, que figuran en una especie de librería del lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin necesidad de programarlas cada vez.

Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL, COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos.

Lograr independencia de la máquina, pudiendo utilizar un mismo programa en diferentes equipos con la única
Gráfico 3. Evolución de los Lenguajes de Programación  Según la relación traducción-ejecución.  Compiladores. 

Gráfico 3. Evolución de los Lenguajes de Programación

  • Según la relación traducción-ejecución. Compiladores. Intérpretes.

  • Según su campo de aplicación: Aplicaciones Científicas. Predominan los algoritmos de cálculo numérico y matrices. Aplicaciones de Procesamiento de Datos. Sobresalen las tareas relativas a la creación, mantenimiento, consulta y listado de datos. Estos datos se organizan en registros, ficheros y bases de datos. Aplicaciones de Tratamiento de Textos. Llevan a cabo la manipulación de textos en lenguaje natural.

Gráfico 3. Evolución de los Lenguajes de Programación  Según la relación traducción-ejecución.  Compiladores. 

Aplicaciones en Inteligencia Artificial. Están constituidas por programas que emulan un comportamiento inteligente. Ej. Juegos

inteligentes (ajedrez, tres en raya,

...

),

robótica, sistemas

Aplicaciones de Programación de Sistemas. Como por ejemplo aquéllos que se utilizan para desarrollar los módulos de un Sistema Operativo, traductores de lenguajes, ...

  • Según el estilo de programación: Imperativos Son aquellos lenguajes, que basan su funcionamiento en un conjunto de instrucciones secuenciales, las cuales, al ejecutarse van alterando las regiones de la memoria donde residen todos los valores de las variables involucradas en el problema que se plantea resolver. Es decir, se camia progresivamente el estado del sistema, hasta alcanzar la solución del problema. Declarativos En este paradigma, más que el ¿cómo? Desarrollar paso a paso un proceso, nos interesa el ¿Qué? deseamos obtener a través del programa. Quizás el lenguaje declarativo que nos sea mas familiar es el SQL, el cual es utilizado para interactuar con la información de bases de datos, concentrándose solo en los resultados que van a ser obtenidos, dejándole al traductor la tarea de cómo llegar a ellos y mostrárnoslo.

 Aplicaciones en Inteligencia Artificial. Están constituidas por programas que emulan un comportamiento inteligente. Ej. Juegos

3.2.

Programación estructurada

3.2.1.

Orígenes

La programación estructurada es una técnica para escribir programas.

Hoy en día los requerimientos y las aplicaciones informáticas son mucho más complejos que las necesidades de programación que se tenían en los años 1960, por lo que las técnicas de programación estructurada ya no son suficientes. Ello ha llevado al desarrollo de nuevas metodologías, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones y sistemas.

La primera programadora de computadora reconocida fue Ada Lovelace (1815-1852), hija de Anabella Milbanke Byron y el poeta Lord

Byron. A principios del siglo XIX conoció a Charles Babbage, un inventor inglés y profesor matemático de la universidad de Cambridge, que diseñó pero nunca construyóla máquina analítica para ejecutar programas de tabulación, por lo que se lo considera como el “padre”

de la computación.

Fue Ada Lovelace quien predijo muchas de las teorías actuales al traducir y ampliar una descripción de la máquina analítica de Babbage, uno de los antecedentes más directos de lo que conocemos como computadora. Como la máquina no llegó nunca a construirse, los programas de Ada lógicamente tampoco llegaron a ejecutarse, pero sí suponen un punto de partida de la programación. El trabajo que Ada realizó le hizo ganarse el título de primera programadora de

3.2. Programación estructurada 3.2.1. Orígenes La programación estructurada es una técnica para escribir programas. Hoy en

computadoras del mundo. El nombre del Lenguaje de programación Ada, utilizado principalmente en aeronáutica, fue escogido en su homenaje.

Según la programación estructurada se deben utilizar únicamente tres estructuras: secuencial, selección e iteración; considerando innecesario el uso de la instrucción de transferencia incondicional (básicamente, el GOTO).

  • 3.2.2. Estructuras secuenciales

La estructura secuencial es aquella en la que una instrucción (acción) sigue a otra secuencia. Las tareas a realizar en cada instrucción se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el final del proceso.

  • 3.2.3. Estructuras selectivas

Estructura selectiva simple

La estructura repetitiva simple ejecuta una determinada acción o acciones cuando se cumple una determinada condición, es decir, tenemos la opción de realizar una actividad o varias si la condición es verdadera o si es falsa no se realiza ninguna actividad.

Estructura selectiva doble

La estructura selectiva doble permite elegir entro dos opciones o alternativas, en función del cumplimiento de una determinada condición, de tal forma que, si se cumple, se ejecutan las acciones del

computadoras del mundo. El nombre del Lenguaje de programación Ada , utilizado principalmente en aeronáutica, fue

primer bloque; si no se cumple, se ejecutan las acciones del segundo bloque.

Estructura selectiva múltiple

Se utiliza porque con frecuencia en a practica se presentan mas de dos elecciones posibles de una cierta condición. La estructura

selectiva múltiple evaluará una expresión que podrá tomar ‘n’ valores

distintos; según se elija uno de estos valores en la condición, se

realizará una de las ‘n’ acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los ‘n’ posibles.

  • 3.2.4. Estructuras repetitivas

Las computadoras están diseñadas para aquellas aplicaciones en las cuales una operación o conjunto de ellas deben repetirse muchas veces. Un tipo muy importante de estructura es el algoritmo necesario para repetir una o varias acciones por un número determinado de veces, a está estructura se la llama Estructura Repetitiva. Las estructuras repetitivas se utilizan cuando se desea que una instrucción o bloque de instrucciones se repita un número determinado de veces o hasta que una condición de terminación se cumpla. Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan bucles, y se llama iteración al hecho de repetir la ejecución de una secuencia de acciones. Iterar es repetir una vez el bucle.

primer bloque; si no se cumple, se ejecutan las acciones del segundo bloque.  Estructura selectiva

3.3.

El lenguaje C y C++

La historia de C, y su versión ampliada, C++, la explicaremos más

detenidamente, justo porque son los lenguajes de programación que nosotros utilizamos para el sistema de ventas, además de su enorme importancia hoy en día en todos los ámbitos de la computación. C evolucionó a partir de dos lenguajes previos, BCPL y B. BCPL fue desarrollado en 1967 por Martin Richards, como un lenguaje para

escribir software y compiladores de sistemas operativos. En el lenguaje B, muchas características de BCPL fueron modeladas y se utilizó para crear versiones iniciales de lo que se llegó a denominar

UNIX. Ambos lenguajes, BCPL y B eran lenguajes “sin tipo”. Cada

elemento de datos ocupaba una palabra en memoria y quedaba a cargo del programador el tratar un elemento de datos como si se tratara de un número entero o de un número real. El lenguaje C fue derivado de B por Dennis Ritchie de los Laboratorios Bell, implantándose por primera vez en 1972. C al inicio se popularizó como lenguaje de desarrollo del sistema operativo UNIX. Hoy día, virtualmente todos los sistemas están escritos en C y/o C++. C,

independiente del hardware, se ha hecho disponible para la mayor parte de las computadoras a lo largo de las últimas décadas. Es posible incluso escribir programas en C que sean portátiles hacia la

mayor parte de las computadoras. Hacia finales de los 70, C había

evolucionado a lo que hoy se conoce como C “tradicional”. La

expansión rápida de C sobre varios tipos de computadoras trajo consigo muchas variantes. Estas eran similares, pero no siempre

3.3. El lenguaje C y C++ La historia de C, y su versión ampliada, C++, la

compatibles. Esto provocaba un problema para los programadores, que necesitaban escribir códigos que pudieran funcionar con distintas máquinas. Así se vieron ante la necesidad de una versión estándar de C, que se aprobó en 1989. El documento se conoce como ANSI / ISO 9899: 1990. Más tarde, apareció C++, una mejoría sobre muchas de las características de C, y que proporciona capacidades de programación orientada a objetos que promete mucho para incrementar la productividad, calidad y reutilización del software. Los diseñadores de C y los responsables de sus primeras puestas en práctica nunca anticiparon que este lenguaje resultaría en un fenómeno como éste. Cuando un lenguaje de programación se torna tan arraigado como C, nuevas necesidades demandan que el lenguaje evolucione, en lugar de que sólo sea remplazado por un nuevo lenguaje, como ya había ocurrido con muchos otros lenguajes, tal y como comentamos antes. C++ fue desarrollado por Bjarne Stroustrup

en los Laboratorios Bell y originalmente fue llamado C “con clases”. El

nombre C++ incluye el operador de incremento (++) de C, para indicar que C++ es una versión mejorada de C. C++ es un conjunto de C, por

lo que, para compilar los programas existentes de C, los programadores pueden utilizar un compilador C++ y posteriormente modificar estos programas a C++. A mediados de los años noventa, la mayor parte de los entornos de programación C se convirtieron a C++.

compatibles. Esto provocaba un problema para los programadores, que necesitaban escribir códigos que pudieran funcionar con

3.4.

Base de datos

Una base de datos (cuya abreviatura es BD) es una entidad en la cual se

pueden almacenar datos de manera estructurada, con la menor redundancia posible. Diferentes programas y diferentes usuarios deben poder utilizar estos datos. Por lo tanto, el concepto de base de datos generalmente está relacionado con el de red ya que se debe poder compartir esta información. De allí el término base. "Sistema de información" es el término general utilizado para la estructura global que incluye todos los mecanismos para compartir datos que se han instalado.

Los sistemas de base de datos se diseñan para manejar grandes cantidades de información, la manipulación de los datos involucra tanto la definición de las estructuras para el almacenamiento de la información como la provisión de mecanismos para la manipulación de la información, además un sistema de base de datos debe de tener implementados mecanismos de seguridad que garanticen la seguridad de la información, a pesar de las caídas de sistema o intentos de acceso no autorizado.

Un objetivo principal de un sistema de base de datos es proporcionar a los usuarios finales una visión abstracta de los datos, esto se logra escondiendo ciertos detalles de como se almacena y mantienen los datos.

3.4. Base de datos Una base de datos (cuya abreviatura es BD) es una entidad enred ya que se debe poder compartir esta información. De allí el término base. "Sistema de información" es el término general utilizado para la estructura global que incluye todos los mecanismos para compartir datos que se han instalado. Los sistemas de base de datos se diseñan para manejar grandes cantidades de información, la manipulación de los datos involucra tanto la definición de las estructuras para el almacenamiento de la información como la provisión de mecanismos para la manipulación de la información, además un sistema de base de datos debe de tener implementados mecanismos de seguridad que garanticen la seguridad de la información, a pesar de las caídas de sistema o intentos de acceso no autorizado. Un objetivo principal de un sistema de base de datos es proporcionar a los usuarios finales una visión abstracta de los datos, esto se logra escondiendo ciertos detalles de como se almacena y mantienen los datos. Proyecto de Fin de Curso Página 24 " id="pdf-obj-23-17" src="pdf-obj-23-17.jpg">
Gráfico 4. Base de Datos 3.4.1. Modelos de Base de Datos Bajo la estructura de la

Gráfico 4. Base de Datos 3.4.1. Modelos de Base de Datos

Bajo la estructura de la base de datos se encuentra el modelo de datos:

una colección de herramientas conceptuales para describir los datos,

las relaciones, la semántica y las restricciones de consistencia. Para ilustrar el concepto de un modelo de datos, describimos dos modelos de datos en este apartado: el modelo entidad-relación y el modelo relacional. Los diferentes modelos de datos que se han propuesto se

clasifican en tres grupos diferentes: modelos lógicos basados en

objetos, modelos lógicos basados en registros y modelos físicos.

  • 3.4.1.1. Modelo entidad-relación

El modelo de datos entidad-relación (E-R) está basado en una percepción del mundo real que consta de una colección de objetos básicos, llamados entidades, y de relaciones entre estos objetos. Una entidad es una «cosa» u «objeto» en el mundo real que es distinguible

Gráfico 4. Base de Datos 3.4.1. Modelos de Base de Datos Bajo la estructura de la

de otros objetos. Por ejemplo, cada persona es una entidad, y las cuentas bancarias pueden ser consideradas entidades. Las entidades se describen en una base de datos mediante un conjunto de atributos. Por ejemplo, los atributos número-cuenta y saldo describen una cuenta particular de un banco y pueden ser atributos del conjunto de entidades cuenta. Análogamente, los atributos nombre-cliente, calle- cliente y ciudad-cliente pueden describir una entidad cliente. Un atributo extra, id-cliente, se usa para identificar unívocamente a los clientes (dado que puede ser posible que haya dos clientes con el mismo nombre, dirección y ciudad. Se debe asignar un identificador

único de cliente a cada cliente. En los Estados Unidos, muchas empresas utilizan el número de la seguridad social de una persona (un número único que el Gobierno de los Estados Unidos asigna a cada

persona en los Estados Unidos) como identificador de cliente.

Una relación es una asociación entre varias entidades. Por ejemplo, una relación impositor asocia un cliente con cada cuenta que tiene. El conjunto de todas las entidades del mismo tipo, y el conjunto de todas las relaciones del mismo tipo, se denominan respectivamente conjunto de entidades y conjunto de relaciones. La estructura lógica general de

una base de datos se puede expresar gráficamente mediante un

diagrama ER, que consta de los siguientes componentes:

• • Rectángulos, que representan conjuntos de entidades. Elipses, que representan atributos.
Rectángulos, que representan conjuntos de entidades.
Elipses, que representan atributos.

Rombos,

que

representan

relaciones

entre

conjuntos

de

entidades. Líneas, que unen los atributos con los conjuntos de entidades y los conjuntos de entidades con las relaciones.

Cada componente se etiqueta con la entidad o relación que representa. Además de entidades y relaciones, el modelo E-R representa ciertas restricciones que los contenidos de la base de datos deben cumplir. Una restricción importante es la correspondencia de cardinalidades, que expresa el número de entidades con las que otra entidad se puede asociar a través de un conjunto de relaciones. Por ejemplo, si cada cuenta puede pertenecer sólo a un cliente, el modelo puede expresar esta restricción.

  • 3.4.1.2. Modelo Relacional

En el modelo relacional se utiliza un grupo de tablas para representar los datos y las relaciones entre ellos. Cada tabla está compuesta por varias columnas, y cada columna tiene un nombre único. El modelo relacional es un ejemplo de un modelo basado en registros. Los modelos basados en registros se denominan así porque la base de datos se estructura en registros de formato fijo de varios tipos. Cada tabla contiene registros de un tipo particular. Cada tipo de registro

define un número fijo de campos, o atributos.

Las columnas de la tabla corresponden a los atributos del tipo de registro.
Las columnas
de
la
tabla corresponden a los
atributos del tipo
de
registro.

No es difícil ver cómo se pueden almacenar las tablas en archivos. Por ejemplo, un carácter especial (como una coma) se puede usar para delimitar los diferentes atributos de un registro, y otro carácter especial (como un carácter de nueva línea) se puede usar para delimitar registros. El modelo relacional oculta tales detalles de implementación de bajo nivel a los desarrolladores de bases de datos y usuarios.

El modelo de datos relacional es el modelo de datos más ampliamente usado, y una amplia mayoría de sistemas de bases de datos actuales se basan en el modelo relacional.

El modelo relacional se encuentra a un nivel de abstracción inferior al modelo de datos E-R. Los diseños de bases de datos a menudo se realizan en el modelo E-R, y después se traducen al modelo relacional.

  • 3.1.4.3. Otros modelos de Base de Datos

El modelo de datos orientado a objetos es otro modelo de datos que

está recibiendo una atención creciente. El modelo orientado a objetos se puede observar como una extensión del modelo E-R con las nociones de encapsulación, métodos (funciones) e identidad de objeto.

El modelo de datos relacional orientado a objetos

combina las

características del modelo de datos orientado a objetos y el modelo de datos relacional.

No es difícil ver cómo se pueden almacenar las tablas en archivos. Por ejemplo, un carácter

Los modelos de datos semi-estructurados permiten la especificación de datos donde los elementos de datos individuales del mismo tipo pueden tener diferentes conjuntos de atributos. Esto es diferente de los modelos de datos mencionados anteriormente, en los que cada elemento de datos de un tipo particular debe tener el mismo conjunto de atributos. El lenguaje de marcas extensible (XML, eXtensible Markup Language) se usa ampliamente para representar datos semiestructurados.

Históricamente, otros dos modelos de datos, el modelo de datos de red y el modelo de datos jerárquico, precedieron al modelo de datos relacional. Estos modelos estuvieron ligados fuertemente a la implementación subyacente y complicaban la tarea del modelado de datos. Como resultado se usan muy poco actualmente, excepto en el código de bases de datos antiguo que aún está en servicio en algunos lugares.

  • 3.5. Ventajas del uso de Base de Datos

La utilización de bases de datos como plataforma para el desarrollo de sistemas de Aplicación en las Organizaciones se ha incrementado notablemente en los últimos años, se debe a las ventajas que ofrece su

utilización, algunas de ellas son:

Globalización de la información: permite a los diferentes usuarios considerar la información como un recurso corporativo que carece de dueños específicos.

Los modelos de datos semi-estructurados permiten la especificación de datos donde los elementos de datos individuales

Eliminación de la información inconsistente: si existen dos o más archivos con la misma información, los cambios que se hagan a estos deberán hacerse a todas las copias del archivo. Permite compartir información. Permite mantener la integridad en la información: esta es una de sus cualidades altamente deseables y tiene por objetivo que solo se almacena la información correcta. Independencia de datos: es quizá el que más ha ayudado a la proliferación del desarrollo de Sistemas de Bases de Datos. La independencia de datos implica un divorcio entre programas y datos.

  • 3.5.1. Administrador de una Base de Datos

El administrador de la base de datos (DBA) es la persona que está

encargada del control general del sistema de base de datos. Entre sus muchas funciones están:

• Decidir el contenido de la información en la base de datos: debe identificar las entidades y la información importante. Tiene que realizar el esquema conceptual, a este proceso se le denomina diseño lógico. A partir de un estudio de las necesidades de la empresa, obtiene items, atributos y relaciones entre items. El esquema conceptual se escribe utilizando el DDL.

• Decidir la estructura de almacenamiento y la estrategia de acceso:

decide cómo se almacenan los datos y define su representación interna. A esta fase se le denomina diseño físico de la base de datos. También tiene que decidir la correspondencia conceptual/interna.

 Eliminación de la información inconsistente: si existen dos o más archivos con la misma información,

• Conexión con los usuarios: debe diseñar los esquemas externos y las

correspondencias externa/conceptual que sean necesarias, tanto para usuarios terminales como para programadores de aplicaciones.

• Definir aspectos de seguridad e integridad: control de acceso e

integridad de la información.

• Definir procedimientos

de

copias

de

respaldo

(backups)

y

recuperación: se suelen tener copias de seguridad de la base de datos de manera que si se produce alguna pérdida importante de información se pueda recuperar el sistema a partir de la última copia.

• Control de transacciones (unidades de programa cuya ejecución debe

ser atómica).

• Optimización del rendimiento de la base de datos: es responsable de que la base de datos funcione de la mejor forma posible, realizando para ello los ajustes que vayan siendo necesarios.

Para realizar todas estas funciones, el DBA dispone de una serie de herramientas software y estructuras de información acerca de la base (ej.: diccionario de datos, procedimientos estadísticos de medida de

rendimiento, ...

).

3.5.2. Usuarios de una Base de Datos

Son usuarios no sofisticados que interactúan con el sistema mediante

la invocación de alguno de los programas de aplicación permanentes que se ha escrito previamente. Por ejemplo, un cajero bancario que

• Conexión con los usuarios: debe diseñar los esquemas externos y las correspondencias externa/conceptual que sean

necesita transferir S/. 50

de

la

cuenta A

a

la

cuenta B invoca un

programa llamado transferir. Este programa pide al cajero el importe de dinero a transferir, la cuenta de la que el dinero va a ser transferido y la cuenta a la que el dinero va a ser transferido.

Como otro ejemplo, considérese un usuario que desee encontrar su saldo de cuenta en World Wide Web. Tal usuario podría acceder a un formulario en el que introduce su número de cuenta. Un programa de aplicación en el servidor Web recupera entonces el saldo de la cuenta, usando el número de cuenta proporcionado, y pasa la información al usuario.

La interfaz de usuario normal para los usuarios normales es una interfaz de formularios, donde el usuario puede rellenar los campos apropiados del formulario. Los usuarios normales pueden también simplemente leer informes generados de la base de datos.

necesita transferir S/. 50 de la cuenta A a la cuenta B invoca un programa llamado

PROYECTO DE FIN DE CURSO

4.1. DESCRIPCIÓN

El laboratorio académico de la FIIS cuenta con seis aulas y un número variables de PCs en cada una. Se desea desarrollar un sistema informático para el manejo de turnos. El laboratorio funcionan de 08:00 a 22:00 horas; las PCs de cada aula esta numeradas de 0 en adelante, cada curso tiene asignada un aula y solo los estudiantes inscritos pueden practicar en ellas, en el momento de reservar un turno, el sistema debe de verificar con el carnet del estudiante sea parte de un curso valido. El estudiante debe pedir turno el mismo día que se desea trabajar. Las operaciones a tener en cuenta son:

  • - Reservar un turno para un alumno.

  • - Cancelar una reserva de un turno de un alumno: dado el carnet de alumno y la hora de turno, el sistema anula el mencionado turno.

  • - Consultar turno a una hora determinada: dado el carnet del alumno y el turno, el sistema informa el aula, número de la Pc y el turno que el alumno tiene.

  • - Persistencia. Estadísticas

  • - Informar sobre las horas punta, días punta y mes punta().

  • - Horas de uso por cada alumno.

  • - Horas de uso por curso.

  • - Influye en el aprovechamiento el mayor uso del laboratorio.

PROYECTO DE FIN DE CURSO 4.1. DESCRIPCIÓN El laboratorio académico de la FIIS cuenta con seis

Para el desarrollo del sistema se planteara el diseño n° 2 el cual modela la información importante del problema:

Diseño 2:

struct TURNO{ int hora; int aula; int nPcs; TURNO*sgte;

};

struct CURSO{ int codCurso; int nAula; CURSO*sgte;

};

struct NODO{ int codAlu; CURSO*scurso; TURNO*sturno; NODO*sgte;

};

//hora de turno //Aula en el cual tiene asignado el turno //Número de PC que tiene asigana // Apuntador al nodo(turno) siguiente

// Código del curso // Sala asignada al curso // Apuntador al nodo(curso) siguiente

//Carnet del estudiante //Listas de curso del alumno //Lista de turnos reservados por el alumno //Siguiente nodo(alumno) en la lista

Para el desarrollo del sistema se planteara el diseño n° 2 el cual modela la información

4.2.

MODELO RELACIONAL DEL SISTEMA

4.2. MODELO RELACIONAL DEL SISTEMA Proyecto de Fin de Curso Página 35
4.2. MODELO RELACIONAL DEL SISTEMA Proyecto de Fin de Curso Página 35

PANTALLAS PRINCIPAL

MENU DE OPCIONES

PANTALLAS PRINCIPAL MENU DE OPCIONES RESERVA TURNO Proyecto de Fin de Curso Página 36

RESERVA TURNO

PANTALLAS PRINCIPAL MENU DE OPCIONES RESERVA TURNO Proyecto de Fin de Curso Página 36
PANTALLAS PRINCIPAL MENU DE OPCIONES RESERVA TURNO Proyecto de Fin de Curso Página 36

CANCELAR TURNO

CANCELAR TURNO CONSULTAR TURNO Proyecto de Fin de Curso Página 37

CONSULTAR TURNO

CANCELAR TURNO CONSULTAR TURNO Proyecto de Fin de Curso Página 37
CANCELAR TURNO CONSULTAR TURNO Proyecto de Fin de Curso Página 37

CODIGO FUENTE

/* *nomprog:PROYECTO *descripcion:Proyecto para la 4ta y 5ta PC *autores: DIAZ HERNANDEZ, JoseEduardo, ROQUE RUIZ, Johana Lizeth

*fecha:13/06/13

*/ #include <iostream> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <iomanip> #include <math.h> #define max 6 #define line1 "\t\t----" #define line2 "==========================================" using namespace std;

struct ALUMNO{ int cod; int curso[max]; int sec[max];

}

CODIGO FUENTE /* *nomprog:PROYECTO *descripcion:Proyecto para la 4ta y 5ta PC *autores: DIAZ HERNANDEZ, JoseEduardo, ROQUE

struct TURNAR{ int cod; int hora; int aula; int nPcs;

};

struct TURNO{ int hora; int aula; int nPcs; TURNO*sgte;

};

struct CURSO{ int codCurso; int nAula; CURSO*sgte;

};

struct NODO{ int codAlu; CURSO*scurso; TURNO*sturno;

struct TURNAR{ int cod; int hora; int aula; int nPcs; }; struct TURNO{ int hora; int

NODO*sgte;

};

int usuario(); int reservaTurno(NODO*nodi); int cancelaTurno(NODO*nodi); int consultaTurno(NODO*nodi); int menu(); void crearListaTurno(TURNO**turni); void crearListaCurso(CURSO**cursi); void crearListaNODO(NODO**nodi); void insertaNodoIni(NODO**nodi,CURSO**cursi,TURNO**turni); void mostrarNodoIni(NODO*nodi);

int main()

{

int op;

int r;

//usuario();

do{

NODO*nod;

NODO*sgte; }; int usuario(); int reservaTurno(NODO*nodi); int cancelaTurno(NODO*nodi); int consultaTurno(NODO*nodi); int menu(); void crearListaTurno(TURNO**turni); void crearListaCurso(CURSO**cursi);

TURNO*turn; CURSO*curs; crearListaTurno(&turn); crearListaCurso(&curs); crearListaNODO(&nod); insertaNodoIni(&nod,&curs,&turn); //mostrarNodoIni(nod); op=menu(); switch(op){ case 1: {r=reservaTurno(nod); break;} case 2: {r=cancelaTurno(nod); break;} case 3: {r=consultaTurno(nod); break;} case 4: {exit(0); break;}

}

}while (r==1);

return(0);

} void crearListaTurno(TURNO**turni){ *turni=NULL;

} void crearListaCurso(CURSO**cursi){ *cursi=NULL;

} void crearListaNODO(NODO**nodi){

TURNO*turn; CURSO*curs; crearListaTurno(&turn); crearListaCurso(&curs); crearListaNODO(&nod); insertaNodoIni(&nod,&curs,&turn); //mostrarNodoIni(nod); op=menu(); switch(op){ case 1: {r=reservaTurno(nod); break;} case 2: {r=cancelaTurno(nod);

*nodi=NULL;

} void insertaNodoIni(NODO**nodi,CURSO**cursi,TURNO**turni){ system("cls"); //Busca el codigo del alumno en el archivo alumnos.txt FILE *F; FILE *G; ALUMNO a; TURNAR b; F=fopen("alumnos.txt","a+"); //chequea si ha habido exito en la apertura if(F==NULL){

printf("No se puede crear file system("pause");

. .

.\n");

exit(0);

} //leer el archivo alumno

fread(&a,sizeof(ALUMNO),1,F);

while(!feof(F)){ NODO*p; CURSO*q=NULL; TURNO*r=NULL; //TURNO*r; int codal,codcur,nau,hor,ausep,npc,enc=1,i;

*nodi=NULL; } void insertaNodoIni(NODO**nodi,CURSO**cursi,TURNO**turni){ system("cls"); //Busca el codigo del alumno en el archivo alumnos.txt FILE *F;

p=(NODO*)malloc(sizeof(NODO));

p->codAlu=a.cod;

//----------------------------------------------------------

//q=(CURSO*)malloc(sizeof(CURSO));

for(i=0;i<max;i++){

if(a.curso[i]!=0){

CURSO*m=NULL;

m=(CURSO*)malloc(sizeof(CURSO));

m->codCurso=a.curso[i];

m->nAula=a.sec[i];

 

m->sgte=q;

q=m;

}

}

G=fopen("turno.txt","a+");

//chequea si ha habido exito en la apertura if(G==NULL){

printf("No se puede crear file system("pause");

. .

.\n");

exit(0);

}

fread(&b,sizeof(TURNAR),1,G);

while(!feof(G)){

if(a.cod==b.cod){

p=(NODO*)malloc(sizeof(NODO)); p->codAlu=a.cod; //---------------------------------------------------------- //q=(CURSO*)malloc(sizeof(CURSO)); for(i=0;i<max;i++){ if(a.curso[i]!=0){ CURSO*m=NULL; m=(CURSO*)malloc(sizeof(CURSO)); m->codCurso=a.curso[i]; m->nAula=a.sec[i]; m->sgte=q; q=m; } } G=fopen("turno.txt","a+"); //chequea

TURNO*n=NULL;

n=(TURNO*)malloc(sizeof(TURNO));

n->aula=b.aula;

n->hora=b.hora;

n->nPcs=b.nPcs;

n->sgte=r;

r=n;

}

fread(&b,sizeof(TURNAR),1,G);

}

//----------------------------------------------------------

/* r=(TURNO*)malloc(sizeof(TURNO)); cout<<"Ingrese hora de separacion: "; cin>>hor; r->hora=hor; cout<<"Ingrese aula de sep: "; cin>>ausep; r->aula=ausep;

cout<<"Ingrese numero de Pc: "; cin>>npc; r->nPcs=npc; */

TURNO*n=NULL; n=(TURNO*)malloc(sizeof(TURNO)); n->aula=b.aula; n->hora=b.hora; n->nPcs=b.nPcs; n->sgte=r; r=n; } fread(&b,sizeof(TURNAR),1,G); } //---------------------------------------------------------- /* r=(TURNO*)malloc(sizeof(TURNO)); cout<<"Ingrese hora de

if(*nodi==NULL){ //SI LA LISTA ESTA VACIA ... p->sgte=*nodi; *nodi=p; //q->sgte=*cursi; *cursi=q; p->scurso=*cursi; //r->sgte=*turni; *turni=r; p->sturno=*turni;

}

else{

p->sgte=*nodi;

*nodi=p;

//q->sgte=*cursi;

*cursi=q;

p->scurso=*cursi;

//r->sgte=*turni;

*turni=r;

p->sturno=*turni;

}

fread(&a,sizeof(ALUMNO),1,F);

}

fclose(F);

}

if(*nodi==NULL){ //SI LA LISTA ESTA VACIA ... p->sgte=*nodi; *nodi=p; //q->sgte=*cursi; *cursi=q; p->scurso=*cursi; //r->sgte=*turni; *turni=r; p->sturno=*turni; }

void mostrarNodoIni(NODO*nodi){ system("cls"); NODO*p=nodi;

while(p){ CURSO*q=p->scurso; TURNO*r=p->sturno; cout<<p->codAlu<<"->"; while(q){ cout<<q->codCurso<<", "; cout<<q->nAula<<"->"; q=q->sgte;

}

cout<<"\n";

cout<<"

->";

while(r){ cout<<r->hora<<", ";

cout<<r->aula<<", "; cout<<r->nPcs<<"->"; r=r->sgte;

}

p=p->sgte;

void mostrarNodoIni(NODO*nodi){ system("cls"); NODO*p=nodi; while(p){ CURSO*q=p->scurso; TURNO*r=p->sturno; cout<<p->codAlu<<"->"; while(q){ cout<<q->codCurso<<", "; cout<<q->nAula<<"->"; q=q->sgte; } cout<<"\n"; cout<<"

cout<<"\n";

}

cout<<"\n";

system("pause");

}

int reservaTurno(NODO*nodi){ system("cls"); system("color 8b"); FILE *F; TURNAR a; int z; //abre un archivo de texto llamado alumnos F=fopen("turno.txt","a");

//cheque si ha habido exito en la apertura if(F==NULL){

printf("No se puede crear file system("pause");

. .

.\n");

exit(0);

} NODO*p=nodi; int cod; int enc1=0,enc2=0; int codCurso;

cout<<"\n"; } cout<<"\n"; system("pause"); } int reservaTurno(NODO*nodi){ system("cls"); system("color 8b"); FILE *F; TURNAR a; int z;

int naula; int hora; int npc; cout<<"Ingrese el codigo del ALUMNO: "; cin>> cod; while(p){ if(cod==p->codAlu){ CURSO*r=p->scurso; cout<<"CURSOS: "<<r->codCurso; r=r->sgte; while(r){ cout<<", "<<r->codCurso; r=r->sgte;

} cout<<"\nIngrese Codigo del Curso: "; cin>>codCurso; CURSO*q=p->scurso;

while(q){ if(codCurso==q->codCurso){ cout<<"Ingrese HORA: "; do{ cin>>hora;

int naula; int hora; int npc; cout<<"Ingrese el codigo del ALUMNO: "; cin>> cod; while(p){ if(cod==p->codAlu){

}while(hora<8 || hora>21); cout<<"Ingrese NUMERO DE PC: "; do{ cin>>npc;

}while(npc<0);

enc2=1;

a.cod=cod; a.aula=q->nAula; a.hora=hora; a.nPcs=npc;

fwrite(&a,sizeof(TURNAR),1,F);

fclose(F);

}

q=q->sgte;

}

if(enc2==0){

system("cls"); cout<<"El alumno NO LLEVA EL CURSO\n\n";

}

enc1=1;

}

p=p->sgte;

}

if(enc1==0){

}while(hora<8 || hora>21); cout<<"Ingrese NUMERO DE PC: "; do{ cin>>npc; }while(npc<0); enc2=1; a.cod=cod; a.aula=q->nAula; a.hora=hora; a.nPcs=npc;

system("cls"); cout<<"ALUMNO NO ENCONTRADO\n\n";

}

} cout<< "DESEA REALIZAR OTRA OPERACION??? do{ cin>>z; }while(z!=1 && z!=0); return(z);

...

(SI

= 1 / NO = 0): ";

int cancelaTurno(NODO*nodi){ FILE *F; FILE *G; TURNAR a; TURNAR aux; int z;

system("cls"); system("color 8b"); NODO*p=nodi;

//abre un archivo de texto llamado alumnos G=fopen("turno.txt","a");

system("cls"); cout<<"ALUMNO NO ENCONTRADO\n\n"; } } cout<< "DESEA REALIZAR OTRA OPERACION??? do{ cin>>z; }while(z!=1 && z!=0);

//cheque si ha habido exito en la apertura if(G==NULL){

printf("No se puede crear file system("pause");

. .

.\n");

exit(0);

} //abre un archivo de texto llamado alumnos

F=fopen("temporal.txt","a"); //cheque si ha habido exito en la apertura if(F==NULL){

printf("No se puede crear file system("pause");

. .

.\n");

exit(0);

}

int cod,enc1=0,aula,hora,w,v;

cout<<"Ingrese Codigo del Alumno: "; cin>>cod; while(p){

if(cod==p->codAlu){

system("cls");

TURNO*q=p->sturno;

//cheque si ha habido exito en la apertura if(G==NULL){ printf("No se puede crear file system("pause"); .

TURNO*q2=p->sturno;

cout<<"ELIMINAR TURNO\n"; cout<<"--------------\n\n"; cout<<"=================================================\n"; cout<<" CODIGO: "<<cod<<"\n"; cout<<"=================================================\n"; cout<<" AULA HORA N.PC\n"; cout<<"=================================================\n"; while(q){

cout<<"

"<<q->aula<<"

"<<q->hora<<"

"<<q->nPcs<<"\n";

q=q->sgte;

}

cout<<"=================================================\n";

cout<< "Ingrese AULA: "; cin>> aula; cout<< "Ingrese HORA: "; cin>> hora;

while(q2){

if(q2->aula!=aula && q2->hora!=hora){ aux.cod=cod;

aux.aula=q2->aula;

aux.hora=q2->hora;

aux.nPcs=q2->nPcs;

fwrite(&aux,sizeof(TURNAR),1,F);

TURNO*q2=p->sturno; cout<<"ELIMINAR TURNO\n"; cout<<"--------------\n\n"; cout<<"=================================================\n"; cout<<" CODIGO: "<<cod<<"\n"; cout<<"=================================================\n"; cout<<" AULA HORA N.PC\n"; cout<<"=================================================\n"; while(q){ cout<<"

}

q2=q2->sgte;

}

enc1=1;

} else{

TURNO*q3=p->sturno;

while(q3){

aux.cod=p->codAlu;

aux.aula=q3->aula;

aux.hora=q3->hora;

aux.nPcs=q3->nPcs;

fwrite(&aux,sizeof(TURNAR),1,F);

q3=q3->sgte;

}

}

p=p->sgte;

}

if(enc1==1){

fclose(G);

fclose(F);

w=remove("turno.txt");

v=rename("temporal.txt","turno.txt");

cout<<w<<" "<<v<<"\n";
cout<<w<<"
"<<v<<"\n";

cout<<" TURNO ELIMINADO\n"; cout<< "DESEA REALIZAR OTRA OPERACION??? do{ cin>>z; }while(z!=1 && z!=0); return(z);

(SI

= 1 / NO = 0): ";

} cout<<"ALUMNO NO ENCONTRADO

...

!!!\n\n";

fclose(G); fclose(F); cout<< "DESEA REALIZAR OTRA OPERACION??? do{ cin>>z;

(SI

= 1 / NO = 0): ";

}while(z!=1 && z!=0); return(z);

}

int consultaTurno(NODO*nodi){ system("cls"); system("color 0b"); NODO*p=nodi;

int cod,enc1=0,z;

cout<<" TURNO ELIMINADO\n"; cout<< "DESEA REALIZAR OTRA OPERACION??? do{ cin>>z; }while(z!=1 && z!=0); return(z); (SI =

cout<<"Ingrese Codigo del Alumno: "; cin>>cod; while(p){ if(cod==p->codAlu){ system("cls"); TURNO*q=p->sturno; cout<<"CONSULTA TURNO\n"; cout<<"--------------\n\n"; cout<<"=================================================\n"; cout<<" CODIGO: "<<cod<<"\n"; cout<<"=================================================\n"; cout<<" AULA HORA N.PC\n"; cout<<"=================================================\n"; while(q){

cout<<"

"<<q->aula<<"

q=q->sgte;

}

"<<q->hora<<"

"<<q->nPcs<<"\n";

cout<<"=================================================\n\n";

enc1=1;

}

p=p->sgte;

}

if(enc1==1){

cout<<"Ingrese Codigo del Alumno: "; cin>>cod; while(p){ if(cod==p->codAlu){ system("cls"); TURNO*q=p->sturno; cout<<"CONSULTA TURNO\n"; cout<<"--------------\n\n"; cout<<"=================================================\n"; cout<<" CODIGO:

cout<< "DESEA REALIZAR OTRA OPERACION??? do{ cin>>z; }while(z!=1 && z!=0); return(z);

(SI

= 1 / NO = 0): ";

} cout<<"ALUMNO NO ENCONTRADO

...

!!!\n\n";

cout<< "DESEA REALIZAR OTRA OPERACION??? do{ cin>>z; }while(z!=1 && z!=0); return(z);

(SI

= 1 / NO = 0): ";

}

int menu(){

system("cls"); char menuOpc[]="M E N U D E

O P C I O N E S";

char lin[]="--------------------------------------------------------------------------------"; int opc;

printf("\n\n%s\n\t\t%37s\n%s\n\n",lin,menuOpc,lin);

printf(" \t\t\t1. RESERVAR TURNO\n"); printf(" \t\t\t2. CANCELAR TURNO\n"); printf(" \t\t\t3. CONSULTAR TURNO\n"); printf(" \t\t\t4. SALIR\n");

cout<< "DESEA REALIZAR OTRA OPERACION??? do{ cin>>z; }while(z!=1 && z!=0); return(z); (SI = 1 / NO

printf("\n\n"); printf(" \t\t\t\t\t\tDigite su opcion : "); scanf("%d",&opc);

while(!(0<=opc&&opc<=4)){

printf(" \t\t\t\tRango<0,4>\tDigite su opcion : "); scanf("%d",&opc);

}

return(opc);

} int usuario(){ int usu,pass; cout<<"\n\n"; cout<<"\t\t\tLOGIN\n"; cout<<"\t\t\t-----\n\n";

cout<<"=======================================================\n

";

 

cout<<"\tCODIGO: ";cin>> usu; cout<<"\tCLAVE: ";cin>>pass;

system("pause");

}

printf("\n\n"); printf(" \t\t\t\t\t\tDigite su opcion : "); scanf("%d",&opc); while(!(0<=opc&&opc<=4)){ printf(" \t\t\t\tRango<0,4>\tDigite su opcion : "); scanf("%d",&opc);

Información básica del equipo

Sistema operativo:

Windows 7 Home Basic

Fabricante:

Samsung Eletronics

Procesador:

Intel(R) Core(TM)i5-2410M CPU

Memoria instalada (RAM):

4.00 GB

Tipo de sistema:

Sistema operativo de 64bits

Nombre del equipo:

JOHANA-PC

Compilador:

Codeblocks 12.11

Información básica del equipo Sistema operativo: Windows 7 Home Basic Fabricante: Samsung Eletronics Procesador: Intel(R) Core(TM)i5-2410M

CONCLUSIONES

Al concluir el proyecto sobre un sistema informático para el manejo de turnos hemos apreciado la gran utilidad de la programación estructurada en problemas reales y la relevancia que tiene en la optimización de procesos de cualquier tipo.

Para esto, debemos tener un dominio de la programación estructurada lo que a su vez implica tener alto sentido de pensamiento lógico y abstracto, ya que este nos permite manejar adecuadamente los temas de algoritmos, hay que declarar en forma correcta, secuenciar, relacionar y modelar sistemas mediante el uso de un sistema gestor de base de datos.

Así mismo, el mantener un orden adecuado a la hora de programar nos ayuda enormemente a evitar confusiones y en caso se diera el error encontrarlo más fácilmente y así evitar una pérdida de tiempo innecesaria.

Finalmente, podemos afirmar categóricamente que gracias a la programación podemos dar soluciones a problemas que se presentan en la realidad y con esto ayudar a la sociedad.

CONCLUSIONES Al concluir el proyecto sobre un sistema informático para el manejo de turnos hemos apreciado

BIBLIOGRAFIA

  • - JOYANES AGUILAR, Luis, ZAHONERO MARTÍNEZ, Ignacio - segunda edición 2005 PROGRAMACION EN C: Metodología, algoritmos y estructura de datos. Mc Graw Hill, Madrid, 719p.

  • - García-Bermejo Giner, José Rafael (2 de 2008) (en español). Programación estructurada en C (1 edición). Pearson Prentice Hall.

  • - Valls Ferrán, José María; Camacho Fernández, David (9 de 2004) (en español). Programación estructurada y algoritmos en Pascal (1 edición). Pearson Alhambra.

McGraw-Hill, Madrid, 895p.

BIBLIOGRAFIA - JOYANES AGUILAR, Luis, ZAHONERO MARTÍNEZ, Ignacio - segunda edición 2005 PROGRAMACION EN C: Metodología,