Está en la página 1de 45

La Academia de Programación Básica

en colaboración con

El cuerpo académico de Tecnologías de la


Información Aplicadas

El cuerpo académico de Tecnologías Móviles

Presentan las siguientes:

NOTAS DE PROGRAMACIÓN ESTRUCTURADA

Para la materia de Programación Estructurada

del Programa Educativo de

Tecnologías de la Información

de la

Universidad Politécnica de Tlaxcala

2019
1

Í N D I C E

Paradigmas de programación 3

Otra clasificación de lenguajes de programación 4

El lenguaje C. 4
Elementos del lenguaje C 5
Identificadores, variables y constantes 7
Caso Sensitivo 7
Snake Case y Camel Case 7
Entrada y salida estándar 7
Sentencia if - else 7
Sentencia Switch 9

Ciclos 10
Ciclo while. 10
Ciclo For 11

Arreglos 12
Cadenas 13
Matrices 14

Funciones 15
Paso de parámetros por copia 17
Paso de parámetros por referencia 17

Archivos 18
Clasificación de archivos por tipo de contenido 18

Miscelánea: 20

Ejercicios resueltos: 21

Ejercicios sin resolver: 31

Proyectos: 34
Gestor de aeropuerto 34
INSTRUMENTO DE EVALUACIÓN 36
Gestor de terminal de autobuses 37
INSTRUMENTO DE EVALUACIÓN 39
Gestor de cárcel 39
INSTRUMENTO DE EVALUACIÓN 42

Bibliografía. 43

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
2

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
3

Paradigmas de programación

Un paradigma de programación consiste en un método para llevar a cabo


cómputos y la forma en la que deben estructurarse y organizarse las tareas que
debe realizar un programa.2​ Se trata de una propuesta tecnológica adoptada por
una comunidad de programadores, y desarrolladores cuyo núcleo central es
incuestionable en cuanto que únicamente trata de resolver uno o varios
problemas claramente delimitados; la resolución de estos problemas debe
suponer consecuentemente un avance significativo en al menos un parámetro que
afecte a la ingeniería de software. Representa un enfoque particular o
filosofía para diseñar soluciones. Los paradigmas difieren unos de otros, en
los conceptos y la forma de abstraer los elementos involucrados en un
problema, así como en los pasos que integran su solución del problema, en
otras palabras, el cómputo. Tiene una estrecha relación con la formalización
de determinados lenguajes en su momento de definición. Es también un estilo de
programación empleado. [5]

En la siguiente tabla se muestran algunos paradigmas de programación, su


definición y lenguajes ejemplos.

Paradigma Definición Ejemplos

Programación Es el más usado en general, se basa en dar C,Basic,


imperativa o instrucciones al ordenador de como hacer las cosas Pascal
por en forma de algoritmos, en lugar de describir el
procedimientos problema o la solución​.

Programación Está basada en describir el problema declarando Lisp,


declarativa propiedades y reglas que deben cumplirse, en lugar Prolog
de instrucciones.

Programación Basado en la definición de relaciones lógicas, está Prolog


lógica representado por ​Prolog​.

Programación Basada en la definición los predicados y es de Lisp,


funcional corte más matemático, está representado por Haskell,
Scheme (una variante de ​Lisp​) o ​Haskell​. ​Python Python.
también representa este paradigma.

Programación está basada en el imperativo, pero encapsula C++,C#,


orientada a elementos denominados objetos que incluyen tanto Java,
objetos variables como funciones. Está representado por Python
C++​, ​C#​, ​Java o ​Python entre otros, pero el más
representativo sería el ​Smalltalk que está
completamente orientado a objetos.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
4

Otra clasificación de lenguajes de programación


Los lenguajes pueden clasificarse también de la siguiente manera:

● Clasificación histórica
A medida que surgían nuevos lenguajes que permitían nuevos estilos de
programación más expresiva, se distinguieron dichos estilos en una serie de
generaciones, cada una representando lenguajes de programación surgidos en una
época similar y con características genéricas comunes.
● Lenguajes de alto y de bajo nivel
Los lenguajes de programación se suelen clasificar dentro de dos amplias
categorías que se refieren a su "nivel de abstracción", es decir, en cuanto a
lo específico o general que es respecto a la arquitectura de computación
inherente al sistema que se está utilizando.
● Clasificación por paradigmas
Los paradigmas de programación distinguen distintos modelos de cómputo y
de estilos de estructurar y organizar las tareas que debe realizar un
programa. Un lenguaje de programación puede ofrecer soporte a uno o varios
paradigmas de programación, total o parcialmente.
● Clasificación por propósito
Se distinguen los lenguajes de programación de propósito general de
aquellos de propósito específico.

El lenguaje C.

C es un lenguaje de programación de propósito general que ofrece como


ventajas economía de expresión, control de flujo y estructuras de datos
modernos y un rico conjunto de operadores. Además, C no es un lenguaje de “muy
alto nivel” ni “grande” y no está especializado en alguna área especial de
aplicación. Pero su ausencia de restricciones y su generalidad lo hacen más
conveniente y efectivo para muchas tareas que otros lenguajes supuestamente
más poderosos. Fue diseñado para el sistema operativo UNIX por Dennis Ritchie.
El lenguaje C no está ligado a ningún hardware o sistema en particular y es
fácil escribir programas que correrán sin cambios en cualquier máquina que
maneje C.[1]

C mantiene la filosofía básica de que los programadores saben lo que


están haciendo; sólo requiere que establezcan sus intenciones en forma
explícita.

La única forma de aprender un nuevo lenguaje de programación es


escribiendo programas con él.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
5

Ejercicio o tarea: Investigar los elementos de un compilador y un


intérprete, de preferencia un diagrama.

Elementos del lenguaje C

C es un lenguaje pequeño y como tal da las siguientes herramientas para


crear programas en él:

- Operadores

Operación Operador Uso

Aritméticos

Suma + a+b, 5+6

Resta - a-b, 5-6

Multiplicación * a*b, 5*6

División / a/b, 6/2

Lógicos

and && a&&b, 0&&1

or || a||b, 0||1

and (bit a bit) & a&b, 000&001

or (bit a bit) | a|b, 000|001

not ! !a, !0

Comparación

Igualdad == a==b

Menor que < a<b

Mayor que > a>b

Menor o igual que <= a>=b

Mayor o igual que >= a<=b

Diferencia != a!=b

Asignación

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
6

Asignación = a<-b
Nota: Es importante resaltar la diferencia entre asignación e igualdad, no son lo mismo y
cada uno devuelve un valor de verdad, por lo que el programa puede tener errores en tiempo
de ejecución.
- Sentencias de flujo

Decisión

if Decisión simple Recibe como


argumento un valor
if-else Decisión doble de verdad.

switch Decisión múltiple Recibe como


argumento un valor
entero y de acuerdo
a este ejecuta una
de sus opciones.

Ciclos

for ciclo cerrado Se debe de conocer


el número exacto de
repeticiones.
Necesita definir un
inicio, una
condición de paro y
un incremento o
decremento.

while ciclo abierto con Ideal para repetir


condición de paro al un bloque de
inicio proposiciones tantas
veces como el
usuario desee.Es
posible que el
bloque de
proposiciones no se
ejecute.

do while ciclo abierto con Ideal para repetir


condición de paro al un bloque de
final proposiciones tantas
veces como el
usuario desee.El
bloque de
proposiciones se
ejecuta por lo menos
una vez.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
7

Nota: Los parámetros son aquellos que se utilizan en la definición de las


funciones, mientras que los argumentos son los valores que se le aplican
a la función en tiempo de ejecución.

Identificadores, variables y constantes

Caso Sensitivo

Snake Case y Camel Case

Entrada y salida estándar

C contiene la librería “stdio.h” (standard input output), la cual


contiene funciones de entrada y salida.
Se entiende por entrada estándar al teclado y salida estándar al monitor.
Una de las funciones para entrada estándar es:
scanf();
y para salida estándar es:
printf();

La sintaxis de estas funciones es la siguiente:


printf(cadena,variables);

scanf(cadena, &variable);

en ambos casos se utilizan modificadores que permiten formatear la


entrada o salida de datos:

%c Caracter

%d Entero

%f Flotante

%s Cadena

Estos no son los únicos modificadores pero son de los más utilizados.

*Ver ejercicio 1 de la sección de ejercicios resueltos.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
8

Sentencia if - else

La sentencia if - else se utiliza para expresar decisiones. Formalmente


la sintaxis es:

if(expresión)
proposición;
else
proposición;

Donde la parte del else es optativa. La expresión se evalúa, si es


verdadera (valor distinto de cero), proposición se ejecuta, si es falsa (valor
igual a cero) y si existe una parte de else, la proposición se ejecuta en su
lugar.
Puesto que un if simplemente prueba el valor numérico de una expresión,
son posibles ciertas abreviaciones de código. Lo más obvio es escribir

if(expresión)

en lugar de

if(expresión != 0)

Algunas veces esto es claro y natural, otras puede ser misterioso.

Debido a que la parte else de un if-else es optativa, existe una


ambigüedad cuando un else se omite de una secuencia if anidada. Esto se
resuelve al asociar el else con el if anterior sin ​else ​más cercano. Por
ejemplo en:

if(n>0)
if(a>b)
z=a;
else
z=b;
el ​else ​va con el if más interno, como se muestra con el sangrado. Si eso no
es lo que se desea, se deben utilizar llaves para reforzar la asociación
correcta. [1]

if(n>0)

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
9

{
if(a>b)
z=a;
}
else
z=b;

Tenga en cuenta que la ambigüedad puede ser muy peligrosa y perniciosa en


casos extremos, por lo que se le aconseja utilizar llaves en códigos muy
largos.

*Ver ejercicio 2 de la sección de ejercicios resueltos.

Sentencia Switch

La sentencia switch es una selección múltiple, permite evaluar una


sentencia o condición y a partir de esta realizar una de múltiples opciones
posibles.

Normalmente se utiliza esta sentencia para crear menús, es ideal para


ellos. Sin embargo, al utilizarla se debe tener en cuenta que cada uno de los
casos debe contar con la sentencia break, la cual interrumpe el flujo normal
del programa y salta a la siguiente instrucción después de la sentencia
switch.

La sintaxis es la siguiente:

switch (sentencia)
{
case a:
sentencias;
break;
case b:
sentencias;
break;
case c:
sentencias;
break;

default:
sentencias;
break;
}

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
10

Note que se debe crear un caso para cada una de las opciones que sean
necesarias, también dese cuenta que existe un caso llamado default, este sirve
para el caso donde no todas las opciones de la condición son opciones válidas.
También debe observar que cada uno de los casos tiene la sentencia break,
si no se utiliza ésta, el programa ejecutará todas las opciones hasta que
encuentre un break.

* Ver ejercicio 3 de la sección de ejercicios resueltos.

Ciclos

Un ciclo es un conjunto de instrucciones que se repite tantas veces como


sea necesario, estas instrucciones normalmente tienen un fin, aunque el ciclo
puede ser tan pequeño o tan grande como sea necesario.

Los ciclos pueden clasificarse en dos grupos, dependiendo de su uso y


estructura, estos grupos son:

● cerrado: cuando se sabe a priori la cantidad de veces que el ciclo se


va a repetir. Ejemplo: for().
● abierto: cuando no se sabe a priori la cantidad de veces que el ciclo
se va a repetir. Ejemplo: while(), do...while().
La clasificación anterior no es tan fuerte, ya que siempre es posible
determinar las repeticiones de cualquier ciclo.

Todo ciclo cuenta con una ​condición de paro​, es decir, una sentencia que
determina en qué momento se detendrá el ciclo, adicionalmente, todo ciclo
cuenta con una variable contador, y la inicialización de esta variable.

Un ejemplo claro de un ciclo en la vida real es: ir a la escuela. Uno irá


a la escuela hasta que me gradúe.

Comenzaremos con el ciclo más fácil de todos.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
11

Ciclo while.

La sintaxis del ciclo while es la siguiente:

while(condicion)
{
sentencias
}

donde el ciclo se repetirá hasta que la condición deje de ser verdad.

Ciclo For

For es un ciclo cerrado, es decir, se sabe a priori el número de veces


que va a repetir las instrucciones.
For tiene asociado una variable contador que permite saber cuántas veces
se repetirá el ciclo.

Contador: ​Es una variable que se incrementa cada vez que se cumple una
condición o cada vez que se pasa por una parte del código.

Bandera: ​Es una variable que toma dos valores (0,1) dependiendo de una
condición, esta bandera permite detener un ciclo.

La sintaxis de for es la siguiente:

for(inicialización;condición de paro;incremento)
{
Instrucciones;
}

Donde la inicialización puede ser en un valor pequeño o muy grande, la


condición de paro es similar a la que se utiliza en el ciclo while o en un if
y el incremento se realiza normalmente de 1 en 1 pero nada impide que el
incremento sea más grande.

Entonces, un ciclo for es equivalente a un ciclo while o do while.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
12

while for

… …
inicialización; for(inicialización;condición de paro;
while(condición de paro) incremento)
{ {
instrucciones; instrucciones;
incremento; }
} …

Arreglos

Un arreglo es un tipo no primitivo de dato, se compone de elementos y


cada uno de ellos tiene asociado una dirección, a través de esta dirección se
puede acceder al elemento del arreglo.

int arreglo:
elemento 0 0 0 0 0 0 0 0 0
arreglo[
i]

posición 0 1 2 3 4 5 6 7 8
(i)

La primera posición de todos los arreglos en C comienzan en 0.


Para declarar un arreglo se utiliza la siguiente nomenclatura:

tipoDato nombreArreglo[tamaño];

Los métodos básicos en un arreglo son:


- Recorrido: pasar por todos los elementos de un arreglo, desde el primero
hasta el último o desde un índice inferior hasta un índice superior o
máximo y se puede realizar con el siguiente código


for(i=0;i<=100;i++)
{
arreglo[i]
}
...

Recorre un arreglo

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
13

desde la posición 0
hasta la 100.


for(i=a;i<=b;i++)
{
arreglo[i]
}
...

Recorre un arreglo
desde la posición a
hasta la b. Donde a y
b son enteros
- Inicialización: es darle un valor a cada uno de los elementos antes de
utilizar el arreglo, se compone de un recorrido y una asignación para
cada elemento del arreglo.


for(i=0;i<=b;i++)
{
arreglo[i]=0;
}
...

Inicializa un arreglo
a 0. Desde la posición
0 hasta la posición b,
donde b es entero

Cadenas
Uno de los usos más empleados para los arreglos son las cadenas. Las
cadenas son arreglo de tipo char, formalmente, una cadena es una secuencia de
caracteres. Estos caracteres son normalmente guardados en un arreglo y como
cadena tiene operaciones básicas que se les pueden emplear.

A una cadena se le puede:


- Saber su tamaño.
- Cambiar a minúsculas.
- Cambiar a mayúsculas.
- Truncar su longitud.
entre otras.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
14

Entre dos cadenas se puede:


- Copiar una en otra.
- Compararlas.
- Concatenarlas.
- Imprimirlas.
Etcétera

Para estas acciones se tiene la librería “string.h” donde existen


funciones para realizar las mismas. Se recomienda investigar.

Matrices

Una matriz es una colección de datos ordenados por filas y columnas


(definción poco exacta), dicho de otra manera, una matriz es un arreglo
bidimensional, es decir, el arreglo cuenta con dos dimensiones: altura y
anchura; por lo que también se le puede considerar un arreglo bidimensional.
De manera general, una matriz puede tener tantas dimensiones como se requiera.

0 1 2 3

Matriz de 4x4.

Ya que una matriz tiene dos dimensiones, es necesario contar con dos
variables que permitan recorrer la matriz, una por cada dimensión. Igual que
con los arreglos, existen dos funciones básicas para una matriz.

Los métodos básicos para una matriz son:


- Recorrido: pasar por todos los elementos de una matriz, desde el primero
hasta el último o desde un índice inferior hasta un índice superior o
máximo y se puede realizar con el siguiente código


for(i=0;i<=100;i++)
{
for(j=0;j<=100;j++)
{
matriz[i][j]

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
15

}
}
...

Recorre una matriz


desde la posición 0
hasta la 100.


for(i=a;i<=b;i++)
{
for(j=a;j<=b;j++)
{
matriz[i][j]
}
}
...

Recorre una matriz


desde la posición a
hasta la b. Donde a y
b son enteros

- Inicialización: es darle un valor a cada uno de los elementos antes de


utilizar la matriz, se compone de un recorrido y una asignación para cada
elemento del arreglo.


for(i=0;i<=a;i++)
{
for(j=0;j<=a;j++)
{
matriz[i][j]= 0;
}
}
...

Inicializa un arreglo
a 0. Desde la posición
0 hasta la posición b,
donde b es entero

Funciones

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
16

Una función es una porción de código referenciada por medio de un nombre,


un ejemplo de función que ya se ha utilizado es printf() o scanf(). Una
función se escribe una vez y se puede utilizar tantas veces como se requiera
en el código, de hecho, se puede hacer un archivo con funciones y después
utilizarlas en otro programa, esto es llamado librerías.
Una función casi siempre devuelve un valor y también recibe parámetros
con los cuales trabaja.
Una función se ejecuta en su propio espacio de memoria y no comparte las
variables del programa principal.

Existe algo importante sobre las funciones que debe saber y es que éstas
se ejecutan en su propio espacio de memoria y no comparte las variables del
programa principal o de otras funciones, es decir, las funciones tienen su
propio espacio de memoria. A continuación se muestra como funciona esto.

Datos Llamado a Función1 Función2


función 1

Programa completo

Direcció 1001 1002 1003 1004 ... 2001 2002 2003 ...
n de
memoria

A continuación un ejemplo en C.


int suma(int a, int b)
{
return a+b;
}

main()
{
printf(“5+4=%d”,suma(5,4);
}

Definición de la función suma


y uso de la misma en main().

Una función puede ser llamada utilizando sus parámetros mediante


argumentos. Un parámetro es la definición de las variables de entrada a la
función, mientras que un argumento es el valor que toma el parámetro al
ejecutar a la función.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
17

Por lo que, al llamar a una función, se puede realizar de dos formas


distintas:
- Paso de parámetros por copia (valor): Cuando los valores de los
argumentos se copian en el espacio de la función.
- Paso de parámetros por referencia: Cuando los valores de los
argumentos representan una dirección de alguna variable.

Paso de parámetros por copia

En este tipo de llamado a función lo que sucede es que los valores que se
le pasan a la función son copiados en el espacio de memoria de la nueva
función y las operaciones que se les efectúen a estos valores solo tendrán
efecto dentro del espacio de memoria de la función. Cuando se tiene un
resultado a partir de los valores de los parámetros este resultado debe
devolverse al programa principal o a la parte de código que haya llamado a la
función.

Ejemplo:

int suma(int a, int b)
{
return a+b;
}

main()
{

printf(“5+4=%d”,suma(5,4));
}

Paso de parámetros por copia


(valor).

Paso de parámetros por referencia

En este tipo de paso de parámetros, los valores que se le pasan a la


función son direcciones en memoria de las variables que contienen los valores
que queremos operar, es decir, la función va a trabajar a distancia con estos

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
18

valores. Algo importante con esta forma de llamar a las funciones es que
permite modificar valores desde la función misma y no tener que devolver el
resultado, sino que se pueden tener los resultados en alguna variable dentro
del programa principal o de quien invocó a la función.

Ejemplo:


int suma(int *a, int *b)
{
*a = *a + *b;
}

main()
{
int x,y;
x= 7;
y= 10;
suma(x,y);
printf(“7+10=%d”,x);
}

Paso de parámetros por


referencia

Para ejemplificar un poco los dos tipos de paso de parámetros tomemos el


siguiente ejemplo:

Suponga que se quiere trabajar en una tarea y para esto se debe hacer un
documento, la tarea es entre dos personas por lo que se reparten el trabajo

Caso 1: Paso por copia, una vez que alguien ha terminado su parte de la
tarea tiene que hacer una copia del trabajo y llevárselo a su compañero a su
casa, este compañero lo revisa, le pone su parte y lo lleva de regreso a la
casa de quien hizo la primera parte del trabajo, esta persona tiene que copiar
el resultado de su compañero al documento original y así tener el resultado.

Caso 2: Paso por referencia, una vez que alguien ha terminado su parte
del trabajo le dice a su compañero que el trabajo está en la nube (google
drive) y que debe poner su parte, este segundo compañero trabaja en su parte
dentro del drive y cuando termina le avisa al primer compañero que ya terminó
su parte; así el primer compañero revisa el drive y ya tiene el trabajo
completo.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
19

Archivos

Un archivo es una estructura no volátil donde se pueden guardar datos. Un


archivo se encuentra almacenado en un dispositivo de almacenamiento masivo,
por lo que puede durar mucho más tiempo que los datos que se encuentren en la
memoria RAM.

Clasificación de archivos por tipo de contenido

Archivos de texto
Los datos en un archivo de texto se almacenan usando el código ASCII, en
el cual cada carácter es representado por un simple byte. En este tipo de
archivos, todos sus datos se almacenan como cadenas de caracteres, es decir,
los números se almacenan con su representación ASCII y no su representación
numérica.
Archivos Binarios
Este tipo de archivos almacenan los datos numéricos con su representación
binaria.

Los pasos generales para manejar archivos son los siguientes:


● Abrir el archivo.
● Realizar las operaciones de entrada/salida (lectura y/o escritura de
datos en el archivo).
● Cerrar el fichero.

Apertura del archivo (Función fopen)


Se usa la función ​fopen para abrir un archivo, determinar el modo de
apertura y establecer la vía de comunicación mediante su alias
correspondiente. Los archivos se manejan utilizando variables de tipo FILE *

​FILE *fopen( char nombre[], char modo[] );


Parámetros:
nombre: Es una cadena de caracteres que contiene el nombre del
archivo( Puede contener la ruta)
​modo: Es una cadena de caracteres que indica el modo de apertura
del fichero. Puede contener los siguientes valores:

Modo de Modo Operación


apertura de apertura
(archivo (archivos
s de binarios)
texto)

“r” “rb” Apertura sólo lectura. El archivo debe existir.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
20

“w” “wb” Apertura en sólo escritura. Si el archivo existe, se


reescribirá (pierde el contenido anterior). Si el
archivo no existe, lo crea.

“a” “ab” Apertura en sólo escritura. Si el archivo existe, se


reescribirá (pierde el contenido
anterior). Si el archivo no existe, se crea

“r+” “rb+” Apertura de lectura/escritura. El archivo debe


existir.

“w+” “wb+” Apertura de lectura/escritura. Si el archivo existe,


se reescribirá (pierde el contenido anterior).

“a+” “ab+” Apertura de lectura/agregar. Si el archivo no existe


lo crea.

Cierre de archivos (Función fclose)


Para cerrar un archivo es necesario indicar el alias del archivo que se desea
cerrar.La función fclose retorna cero si el archivo fue cerrado con éxito. Si
se detectaron errores, entonces retorna ​EOF​.

int fclose(FILE *​char nombre[]​);

Lectura y escritura en archivos

Las funciones que se pueden utilizar para escribir o leer en un archivo son:

fprintf() y fscanf(), estas funciones se parecen mucho a las que ya se han


utilizado para leer del teclado y escribir a la pantalla, la diferencia radica
en que para fprintf y fscanf se debe utilizar el apuntador que nos devolvió la
función fopen().

...
int x,y;

fscanf(ap,“%d %d”,&x,&y);
...

Lectura de un archivo

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
21

...
int x,y;

fprintf(ap,“%d %d”,&x,&y);
...

Escritura a un archivo.

Recuerde que la mejor manera de aprender algo es haciéndolo, como dice el


refrán: “la práctica hace al maestro”.

Miscelánea:

clrscr()
borra la pantalla, está en conio.h, solo funciona en windows.

sleep(float ms)
detiene la ejecución del programa ms milisegundos, está en stdlib.h

system(char *comando)
envía un comando a la consola de comandos, está en stdlib.h

int kbhit()
Verifica si alguna tecla ha sido presionada, está en conio.h

char getch()
Lee un caracter desde el teclado y lo devuelve, está en stdio.h

Ejercicios resueltos:

1. Hacer un programa que lea dos valores, los sume e imprima en pantalla el
resultado

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
22

#include <stdio.h>

int main()
{
int Sumando1, Sumando2, Suma;

printf(“Dame dos valores para sumarlos: “);


scanf(“%d %d”, &Sumando1, &Sumando2);

Suma=Sumando1+Sumando2;

printf(“El resultado de la suma es: %d”,Suma);

return 0;
}

1.1. Hacer un programa que dados x grados sexagesimales los convierta a


radianes

#include <stdio.h>

int main()
{
float GradosS, Radianes,Pi;

Pi=3.14;

printf(“Dame los grados sexagesimales: “);


scanf(“%f”, &GradosS);

Radianes = (GradosS/180)*Pi;

printf(“%f son %f radianes”,GradosS,Radianes);

return 0;
}

2. Hacer un programa que dados dos síntomas determine si el usuario tiene


gripe.

#include <stdio.h>
Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
23

int main()
{
int Sintoma1, Sintoma2;

printf(“¿Tienes el cuerpo cortado? 0/1: “);


scanf(“%d”, &Sintoma1);

if(Sintoma1)
{
printf(“¿Tienes fluido nasal? 0/1: “);
scanf(“%d”,&Sintoma2);

if(Sintoma2)
{

printf(“Tienes gripe, ve con el doctor.\n”);


}
else
{
printf(“Tienes algo pero no es seguro que sea gripe”);
}
else
{
printf(“No tienes gripe”);
}
return 0;
}

3. Hacer un programa que imprima un menú en pantalla y a partir de una opción


dada por el usuario, se imprima un letrero distinto.

4. Hacer un programa que calcule la suma de los primeros ‘n’ números


naturales.

#include <stdio.h>

int main(int argc, char *argv[])


{

printf("\n\nDame el valor de n: ");


scanf("%d",&n);

suma=0;
for(i=1;i<=n;i++)
{
suma=suma+i;

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
24

printf("El resultado de la suma de los primeros %d naturales es:


%d",n,suma);

return 0;
}

5. Programa, los ciclos for y while son equivalentes.

#include <stdio.h>

int main(int argc, char *argv[])


{
int i,suma,n;
char c;
FILE *ap;

i=0;
while(i<=10)
{
printf("%d ",i);

i++;
}

printf("\n");
for(i=0;i<=10;i++)
{
printf("%d ",i);
}

printf("\n");

i=10;
while(i>=0)
{
printf("%d ",i);

i--;
}

printf("\n");
for(i=10;i>=0;i--)
{

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
25

printf("%d ",i);
}

return 0;
}

6. Hacer un programa que cuente las vocales minúsculas dentro de una cadena

#include <stdio.h>

int main(int argc, char *argv[])


{
int i,vocMin;
char nombre[100];

vocMin=0;

printf("Dame tu nombre: ");


scanf("%s", &nombre);

i=0;
while(nombre[i] != '\0')
{
if(nombre[i] == 'a' || nombre[i] == 'e' || nombre[i] == 'i' ||
nombre[i] == 'o' || nombre[i] == 'u')
{
vocMin++;
printf("\n%c",nombre[i]);
}
i++;
}

printf("\nEl numero de vocales minusculas es: %d", vocMin);

return 0;
}

7. Hacer un programa que obtenga el promedio de las calificaciones de un


alumno.

#include <stdio.h>

int main(int argc, char *argv[])


{
int arreglo[100];

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
26

int i;
float suma,promedio;
int numMax;
char nombre[100];

numMax=7;

for(i=0;i<=numMax;i++)
arreglo[i] = 0;

printf("Dame tu nombre: ");


scanf("%s",&nombre);

for(i=0;i<numMax;i++)
{
printf("Dame la calificación %d: ",i+1);
scanf("%d",&arreglo[i]);
}

suma = 0;
for(i=0;i<numMax;i++)
{
suma = suma+arreglo[i];
}

promedio = suma/i;
printf("\n%s tu promedio es el siguiente:\n",nombre);
printf("suma: %f\npromedio: %f",suma,promedio);

return 0;
}

8. Hacer un programa que imprima triángulos con asteriscos.

#include <stdio.h>

int main(int argc, char *argv[])


{
int n,i,j;

printf("De qué tamaño quieres la piramide?: ");


scanf("%d",&n);

for(j=1;j<=n;j++)
{
for(i=1;i<=j;i++)

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
27

{
printf("*");
}
printf("\n");
}

printf("\n");

for(j=n;j>=1;j--)
{
for(i=j;i>=1;i--)
{
printf("*");
}
printf("\n");
}

return 0;
}

9. Hacer un programa que simule la animación de un carrito.

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main(int argc, char *argv[])


{

int i,n;

n=1;

while(1)
{
for(i=0;i<=n;i++)
{
printf(" ");
}
printf(" %c%c%c%c%c\n",218,196,196,196,191);
for(i=0;i<=n;i++)
{
printf(" ");
}
printf(" -%c%c%c%c%c-\n",229,196,196,196,229);

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
28

Sleep(500);
system("cls");
n=(n+1)%50;
}

return 0;

10. Hacer un programa que simule el juego de pacman(versión muy simple)

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>

int main(int argc, char *argv[])


{
int tablero[100][100];
int mX,mY,i,j,posX,posY;
int fx,fy;
char Movimiento;

int fila[20];

mX=20;
mY=20;

fx=10;
fy=10;

posX = 3;
posY = 3;

srand(time(NULL));

for(i=0;i<mY;i++)
{
for(j=0;j<mX;j++)
{
tablero[i][j] = 0;
}
}

while(1)
{

tablero[posY][posX] = 1;
tablero[fx][fy] = 3;

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
29

//Imprime tablero
for(i=0;i<mY;i++)
{
for(j=0;j<mX;j++)
{
if(tablero[i][j]==0)
{
printf(".");
}
else
{
if(tablero[i][j] == 1)
{
printf("o");
}
else
{
if(tablero[i][j] == 3)
{
printf("f");
}
else
printf(" ");
}

}
}
printf("\n");
}

if(kbhit())
{
Movimiento = getch();
}

tablero[posY][posX] = 2;

if(Movimiento == 'w')
{
posY--;
}
if(Movimiento == 's')
{
posY++;
}
if(Movimiento == 'a')
{
posX--;
}
if(Movimiento == 'd')
{

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
30

posX++;
}

///////////////////////////Movimiento fantasma
Movimiento = rand()%4;

tablero[fx][fy]=0;

if(Movimiento == 0)
{
fy--;
}
if(Movimiento == 1)
{
fy++;
}
if(Movimiento == 2)
{
fx--;
}
if(Movimiento == 3)
{
fx++;
}

tablero[fx][fy]=3;

/////////////////////////////////

Movimiento = ' ';

Sleep(200);
system("cls");

}//fin de while

return 0;
}

10. Hacer un programa que imprima con asteriscos un histograma.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])


{

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
31

int histo[100];
int i,j,dado,numax,veces;

veces=1500;
numax=25;

srand(time(NULL));

for(i=0;i<numax;i++)
histo[i]=0;

for(i=1;i<=veces;i++) //Agrega valores al arreglo entre 0 y 9


{
dado = rand()%numax;
histo[dado]++;
}

for(i=0;i<numax;i++) //Imprime el histograma


{
printf("%2d: ",histo[i]);
for(j=1;j<=histo[i];j++)
{
printf("*");
}
printf("\n");
}

return 0;
}

Ejercicios sin resolver:

1. Realice un programa que tome dos valores, los reste e imprima el


resultado en pantalla.
2. Realice un programa que tome dos valores, los multiplique e imprima el
resultado en pantalla.
3. Realice un programa que tome dos valores, los divida e imprima el
resultado en pantalla.
4. Realice un programa que tome dos valores, obtenga el residuo de la
división e imprima el resultado en pantalla.
5. Realice un programa que determine si dada la calificación de un alumno,
éste aprueba la materia o no.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
32

6. Realice un programa que determine si dados 5 síntomas el paciente tiene


gripe.
7. Realice un programa que determine en que etapa de la vida se encuentra un
sujeto. El dato de entrada es la edad del sujeto. Las etapas de la vida
son:
Bebe - [0,3]
Niño - [4,11]
Adolescente - [12,17]
Joven - [18,25]
Joven Adulto - [26,30]
Adulto - [31,60]
Anciano - [61,...]
8. Realice un programa que determine:
El salario de un trabajador:
- Semanalmente
- Quincenalmente
- Mensualmente
- Aguinaldo
En este cálculo debe incluir los retardos o faltas que tenga el
trabajador, descontando 30 centavos por retardo o falta.
También recuerde calcular el ISR que es del 11% y debe calcularse
mensualmente.
Los datos no proporcionados en este problema puede resolverlos a
discreción.
9. Realice un programa que lea 4 datos desde el teclado, estos datos deben
ser de tipo char, int, float y double correspondientemente.
Los datos leídos deben ser impresos en la pantalla de la siguiente
manera:

Tipo de dato Imprimir como

char char, entero

int char, entero

float flotante, flotante con 2


decimales.

double doble, exponencial.

10. Realice un programa que lea 3 enteros positivo y muestre el mínimo


común múltiplo de esos tres números.

11. Realice un programa que juegue a "adivina un número", de la siguiente


forma: El programa genera un número aleatorio que debe adivinarse, el
jugador debe ingresar su intento. Si la opción del jugador es incorrecta,

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
33

debe repetirse hasta que el jugador obtenga el número correcto. El


programa debe continuar diciendo al jugador "Demasiado alto" o "Demasiado
Bajo", para ayudar al jugador a acertar en la respuesta.
12. Hacer un programa que imprima los números desde el 0 hasta el 100.
13. Hacer un programa que imprima los números desde el 100 hasta el 25.
14. Hacer un programa que imprima la suma de los primeros 10 números
naturales.
15. Hacer un programa que pida al usuario un valor ‘n’, calcule la
sumatoria de los primeros ‘n’ números naturales e imprima el resultado en
pantalla.
16. Hacer un programa que imprima los números del 0 hasta el 100 de 2 en
2.
17. Hacer un programa que imprima los números impares entre el 0 y el 100.
18. Hacer un programa que encuentre el factorial de un número. Es decir,
multiplique los ‘n’ primeros números naturales.
19. Hacer un programa que dados 1000 valores entre 0 y 100 encuentre:
- Promedio
- Media
- Moda
Debe leer los datos desde un archivo.

20. Hacer un programa que cuente las ‘a’ de una cadena.


21. Hacer un programa que cuente las vocales de una cadena.
22. Hacer un programa que cuente las consonantes de una cadena.
23. Hacer un programa que cuente las mayúsculas y minúsculas de una
cadena.
24. Hacer un programa que cuente todo lo de arriba.

25. Una empresa transportista desea un sistema que le permita:


a. Vender boletos para sus corridas.
b. Saber qué asientos en el autobús están vendidos para no venderlos
nuevamente.
c. Saber cuántos boletos ha vendido y así saber sus ganancias.
d. Saber a qué destino van más los viajeros.
e. Tener una interfaz fácil de utilizar para sus empleados
principiantes.
26. Hacer un juego estilo pacman donde exista un objeto que pueda ser
manejado por el usuario y varias monedas u objetos que puedan ser
recogidos por el usuario. El juego es tán fácil que el usuario gana si
recoge todos los elementos y pierde si toca algunas de las paredes del
juego.
a. Implemente el juego utilizando matrices
27. Hacer un programa que imite un par de dados, utilice funciones para
esto y la función random.
28. Hacer un programa que simule el juego de 21.
En el juego 21, hay al menos 2 jugadores, estos reciben cartas del
mazo principal de cartas, van sumando los puntos que vale cada carta
Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
34

y en algún momento, cuando suponen que están más cerca de 21 puntos


deciden dejar de tomar cartas.
Las cartas del 2 al 9 valen los puntos según su número
Las cartas: ‘J’, ‘Q’, ‘K’ valen 10 puntos
El As puede valer 1 o 11 puntos según le convenga al jugador.
Aquel jugador que se encuentre más cerca de 21 puntos gana.
Aquel jugador que se pase de 21, pierde.

29. Hacer un programa que simule el juego de batalla naval; en este juego,
la computadora tiene un tablero (matriz) donde coloca 4 barcos: dos de
tamaño 3, 1 de tamaño 2 y uno de tamaño 1. El usuario debe intentar
hundir a todos los barcos de la computadora.
x x x

x x x

x x x

30.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
35

Proyectos:

Gestor de aeropuerto

El objetivo de este proyecto es construir un programa que sea capaz de


leer desde un archivo las instrucciones que simulan el comportamiento de los
aviones en un aeropuerto, es decir, permitir que los aviones despeguen o
aterricen. Para este fin, se deben considerar varias cosas, por ejemplo:

Archivos
- Leer desde un archivo la instrucción de los aviones y dependiendo de la
opción, hacer que el avión aterrice o despegue.
- El formato del archivo es parecido al siguiente, donde cada columna es un
dato del vuelo

Instrucción ID vuelo Tiempo Pasajeros Aterriza o


Despega

1 523 3 50 0

2 548 2 50 1
Este archivo cambiará cada cierto tiempo.

Pistas
- El aeropuerto puede tener una o más pistas.
- Llevar una lista que permita saber qué aviones han despegado o aterrizado
y en qué pista lo hicieron.
- Cada avión tiene un tiempo determinado en el cual puede aterrizar o
despegar, por lo que ocupará la pista ese tiempo; en este tiempo no puede
utilizarse la pista por lo que si algún otro avión intenta aterrizar o
despegar tiene que ponerse en una lista de espera y mantenerse en el aire
mientras se desocupa la siguiente pista.

Interfaz
- Hablando de la interfaz, esta debe ser intuitiva y fácil de leer, debe
estar implementada en la interfaz de texto del sistema, por lo que debe
utilizar su ingenio para hacer que el operador del sistema entienda que
es lo que está pasando.
- También se debe implementar una interfaz gráfica donde se muestre la
actividad del aeropuerto.

Comandos extra
- El sistema debe ser capaz de realizar reportes y ponerlos en archivos
para su posterior revisión.
- Estos reporte pueden ser:

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
36

- Total de aviones que han despegado y aterrizado


- Total de aviones que han despegado o aterrizado
- Total de aviones en la pista n-ésima
- Aproximado de pasajeros que han usado el aeropuerto
- Aviones no atendidos
- Eficiencia del aeropuerto.
- También debe ser capaz de cambiar de interfaces, es decir, con una tecla
cambiaría de interfaz de texto a interfaz gráfica y debería haber al
menos 2 interfaces gráficas distintas.
- Otro comando extra sería que con una tecla cambie la velocidad de
respuesta del sistema.
- Algo interesante y divertido por implementar serían las colisiones, si
por alguna razón no se puede poner un avión en espera, este chocaría.

Documentación

- Debe crear dos manuales


- Manual de usuario, donde explicará cómo utilizar su sistema.
- Manual técnico, donde explicará cómo creó el sistema.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
37

INSTRUMENTO DE EVALUACIÓN
 
Alumnos: Fecha:
Grado y grupo:

Escala estimativa – Proyecto Final

No. Indicador 10 8 6 4 0
pts. pts. pts pts. pts.
.

1 El programa está bien documentado


(Encabezado y comentarios, nombre
de las variables)

2 El programa tiene la indentación


adecuada.

3 Los datos de entrada son leídos


desde un archivo de texto

4 Se muestran los aviones que han


llegado o salido y la pista en que
lo hicieron.

5 La interfaz es fácil de entender e


interpretar.

6 Los alumnos identifican de manera


correcta donde se leen los datos
desde el archivo

7 Los alumnos identifican de manera


correcta donde se determina si los
aviones pueden aterrizar o
despegar.

8 Los alumnos identifican de manera


correcta donde se implementa la
interfaz del programa.

9 El manual de usuario está bien


escrito y está completo

10 El manual técnico está bien escrito


y está completo.

Total:

 
Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
38

Gestor de terminal de autobuses

El objetivo de este proyecto es construir un programa que sea capaz de


leer desde un archivo las instrucciones que simulan el comportamiento de los
autobuses en una terminal, es decir, permitir que los autobuses descarguen
pasajeros o carguen pasajeros. Para este fin, se deben considerar varias
cosas, por ejemplo:

Archivos
- Leer desde un archivo la instrucción de los autobuses y dependiendo de la
opción, hacer que el autobús se llene o se vacíe.
- El formato del archivo es parecido al siguiente, donde cada columna es un
dato del vuelo

Instrucción ID autobús Tiempo Pasajeros Llega o sale

1 523 3 50 0

2 548 2 50 1
Este archivo cambiará cada cierto tiempo.

Andenes
- La terminal puede tener uno o dos andenes.
- Llevar una lista que permita saber qué autobuses han llegado o salido y
en que anden lo hicieron.
- Cada autobús tiene un tiempo determinado en el cual puede cargar o
descargar, por lo que ocupará el andén ese tiempo; en este tiempo no
puede utilizarse el andén por lo que si algún otro autobús intenta llegar
o salir tiene que ponerse en una lista de espera y mantenerse en espera
mientras se desocupa el siguiente andén.

Interfaz
- Hablando de la interfaz, esta debe ser intuitiva y fácil de leer, debe
estar implementada en la interfaz de texto del sistema, por lo que debe
utilizar su ingenio para hacer que el operador del sistema entienda que
es lo que está pasando.
- También se debe implementar una interfaz gráfica donde se muestre la
actividad de la terminal.

Comandos extra
- El sistema debe ser capaz de realizar reportes y ponerlos en archivos
para su posterior revisión.
- Estos reporte pueden ser:
- Total de autobuses que han llegado o salido
- Total de autobuses en el andén n-ésima

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
39

- Aproximado de pasajeros que han usado la terminal


- Autobuses no atendidos
- Eficiencia de la terminal.

- También debe ser capaz de cambiar de interfaces, es decir, con una tecla
cambiaría de interfaz de texto a interfaz gráfica y debería haber al
menos 2 interfaces gráficas distintas.
- Otro comando extra sería que con una tecla cambie la velocidad de
respuesta del sistema.
- Algo interesante y divertido por implementar serían los choques, si por
alguna razón no se puede poner un autobús en espera, este chocaría.

Documentación

- Debe crear dos manuales


- Manual de usuario, donde explicará cómo utilizar su sistema.
- Manual técnico, donde explicará cómo creó el sistema.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
40

INSTRUMENTO DE EVALUACIÓN
 
Alumnos: Fecha:
Grado y grupo:

Escala estimativa – Proyecto Final

No. Indicador 10 8 6 4 0
pts. pts. pts pts. pts.
.

1 El programa está bien documentado


(Encabezado y comentarios, nombre
de las variables)

2 El programa tiene la indentación


adecuada.

3 Los datos de entrada son leídos


desde un archivo de texto

4 Se muestran los autobuses que han


llegado o salido y el andén en el
que lo hicieron.

5 La interfaz es fácil de entender e


interpretar.

6 Los alumnos identifican de manera


correcta donde se leen los datos
desde el archivo

7 Los alumnos identifican de manera


correcta donde se determina si los
autobuses pueden llegar o salir.

8 Los alumnos identifican de manera


correcta donde se implementa la
interfaz del programa.

9 El manual de usuario está bien


escrito y está completo

10 El manual técnico está bien escrito


y está completo.

Total:

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
41

Gestor de cárcel

El objetivo de este proyecto es construir un programa que sea capaz de


leer desde un archivo las instrucciones que simulan el comportamiento de los
presos que llegan a una cárcel, es decir, permitir que los presos lleguen a la
cárcel o salgan de ella. Para este fin, se deben considerar varias cosas, por
ejemplo:

Archivos
- Leer desde un archivo la instrucción de los presos y dependiendo de la
opción, hacer que el preso entre a la cárcel y en su nivel de
peligrosidad.
- El formato del archivo es parecido al siguiente, donde cada columna es un
dato del vuelo

Instrucción Nombre del preso Tiempo/condena Nivel de


peligrosidad

1 Alberto 360 3

2 Federico 254 2
Este archivo cambiará cada cierto tiempo.

Niveles de la cárcel
- La cárcel debe tener 3 niveles.
- Llevar una lista que permita saber qué presos han llegado y en que nivel
les toca estar.
- Cada preso tiene una condena que debe estar en la cárcel, por lo que
ocupará una celda en ese nivel; en este tiempo no puede utilizarse la
celda por lo que si algún otro preso intenta entrar y el nivel y las
celdas están todas ocupadas generará un motín y los presos morirán, de
tal forma que la cárcel puede tener espacio de nuevo.

Interfaz
- Hablando de la interfaz, esta debe ser intuitiva y fácil de leer, debe
estar implementada en la interfaz de texto del sistema, por lo que debe
utilizar su ingenio para hacer que el operador del sistema entienda que
es lo que está pasando.
- También se debe implementar una interfaz gráfica donde se muestre la
actividad de la terminal.

Comandos extra
- El sistema debe ser capaz de realizar reportes y ponerlos en archivos
para su posterior revisión.
- Estos reporte pueden ser:
- Total de presos que llegan y salen.
Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
42

- Total de presos por nivel.


- Aproximado de presos que han estado en la cárcel.
- Presos muertos en motines.
- Eficiencia de la cárcel.

- También debe ser capaz de cambiar de interfaces, es decir, con una tecla
cambiaría de interfaz de texto a interfaz gráfica y debería haber al
menos 2 interfaces gráficas distintas.
- Otro comando extra sería que con una tecla cambie la velocidad de
respuesta del sistema.
- Algo interesante y divertido por implementar serían los motines, si por
alguna razón ya no hay espacio en la cárcel, se detonará el motín.

Documentación

- Debe crear dos manuales


- Manual de usuario, donde explicará cómo utilizar su sistema.
- Manual técnico, donde explicará cómo creó el sistema.

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
43

INSTRUMENTO DE EVALUACIÓN
 
Alumnos: Fecha:
Grado y grupo:

Escala estimativa – Proyecto Final

No. Indicador 10 8 6 4 0
pts. pts. pts pts. pts.
.

1 El programa está bien documentado


(Encabezado y comentarios, nombre
de las variables)

2 El programa tiene la indentación


adecuada.

3 Los datos de entrada son leídos


desde un archivo de texto

4 Se muestran los presos que han


llegado o salido y en qué nivel han
estado.

5 La interfaz es fácil de entender e


interpretar.

6 Los alumnos identifican de manera


correcta donde se leen los datos
desde el archivo

7 Los alumnos identifican de manera


correcta donde se determina en qué
nivel van los presos.

8 Los alumnos identifican de manera


correcta donde se implementa la
interfaz del programa.

9 El manual de usuario está bien


escrito y está completo

10 El manual técnico está bien escrito


y está completo.

Total:

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.
44

Bibliografía.

1. El lenguaje de programación C, Kernighan & Ritchie, Pearson Education.


2. Cómo plantear y resolver problemas, G. Polya, Trillas.
3. Cómo programar en C, Deitel & Deitel, Prentice Hall.
4. Diseño de algoritmos y su programación en C, Alejandra Margarita Méndez
Girón, Alfaomega.
5. https://es.wikipedia.org/wiki/Lenguaje_de_programación

Academia de Programación Básica, CATIA, CATM Verano 2019 JEXA. NTM. MARD. AMT. LCAR. AJG.

También podría gustarte