You are on page 1of 20

UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA

CENTRO UNIVERSITARIO DE QUETZALTENANGO

FACULTAD DE INGENIERIA

DESARROLLO DE LA PROGRAMACION EN EL LENGUAJE C

EMANUEL ALEXANDER OROZCO ZÚÑIGA

SELVYN GABRIEL ESCOBAR ZUÑIGA

DANIEL ALBERTO CASTELLANOS VEGA

EMANUEL FERNANDO LOPEZ VARGAS

ISIDRO RODELBÍ RAMIREZ DOMINGUEZ

QUETZALTENANGO MAYO DE 2019.


UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA

CENTRO UNIVERSITARIO DE QUETZALTENANGO

FACULTAD DE INGENIERIA

DESARROLLO DE LA PROGRAMACION EN EL LENGUAJE C

TRABAJO DE TESIS PRESENTADO POR:

EMANUEL ALEXANDER OROZCO ZÚÑIGA

SELVYN GABRIEL ESCOBAR ZUÑIGA

DANIEL ALBERTO CASTELLANOS VEGA

EMANUEL FERNANDO LOPEZ VARGAS

ISIDRO RODELBÍ RAMIREZ DOMINGUEZ

PREVIO A OPTAR AL GRADO ACADEMICO DE

LICENCIADOS EN INGENIERIA EN SISTEMAS DE INFORMACION Y C. C.

Y EL TITULO PROFESIONAL DE INGENIEROS

QUETZALTENANGO MAYO DE 2019


AUTORIDADES
Hoja de Autorización
Reglamento de tesis

Artículo 8. Responsabilidad

Solamente el autor es responsable de los conceptos expresados en el trabajo de tesis. Su


aprobación de manera alguna implica responsabilidad para la universidad.
Índice
Resumen
Capítulo 1

Marco conceptual

La comunicación es muy importante ya que por medio de ella entendemos lo que tenemos que
realizar, así como nosotros las personas tendemos a comunicarnos así mismo pasan con el lenguaje
de la programación es una comunicación entre el software y el usuario (persona) a través del tiempo
el lenguaje de la programación ha ido cambiando para la facilidad de la interacción del hombre y el
computador. Esto vino a cambiar el mundo ya que ahora la mayor parte de los artículos electrónicos
son programados o destinados hacer una actividad, el lenguaje c tiene sucesores como lo son C++,
C#, Java entre otros, este lenguaje es el que desarrolla los juegos para darle movimiento a las
imágenes realizar diferentes movimientos, fondos o pistas del juego como anteriormente lo
decíamos cambio el mundo hay cierta ventaja ya que nos facilita hacer ciertas actividades pero así
como hay ventajas también desventajas la cual es que el ser humana se está poniendo muy
perezoso. El lenguaje de la programación no solo se basa en juegos sino también en sistemas
operativos que ayudan a el control de las grandes industrias como el proceso de lo que venden,
cuántos empleados hay, cuánto dinero ingresa, las ganancias que quedan e incluso la prevención de
ciertos fallos, programan a los dispositivos para que avisen si ya se pasaron del tiempo destinado a
su ejecución y darle su mantenimiento y así poder evitar cualquier tipo de daño que afecte la
producción de la empresa es una manera en que las actuales empresas manejan para evitarse la
pérdida de tiempo y de ganancia.
Antecedentes
Pilligua (2013), se interesó en interfaces gráficas para el desarrollo de aplicaciones JAVA
en BlackBerry, y complejidad del desarrollo y propuestas de ambiente de desarrollo gráfico.
Su objetivo fue brindar una herramienta de desarrollo amigable para los programadores que
vean afinidad a realizar aplicaciones para dispositivos móviles BlackBerry. La muestra que
obtuvo fue de aplicaciones sobre J2ME se ve complicado por las limitantes que ofrece el
dispositivo. El instrumento que se utilizo fue el estudio a los Smartphone de BlackBerry con
sistema operativo BlackBerry OS que se ejecuta bajo el lenguaje nativo de java j2me (Micro
Edition). Metodología utilizada para el desarrollo del trabajo fue el desarrollo de aplicaciones
sobre J2ME que se ve truncado por las limitantes que ofrece el dispositivo, así como el poco
conocimiento que se tiene en el desarrollo de estas aplicaciones. Obteniendo como
resultados los diferentes objetos que se pueden implementar en una aplicación, los
diferentes eventos con los cuales se pueden interactuar. Concluyo que BlackBerry brindan
solo interacción con el código fuente y no brindan un entorno amigable que facilite estas
aplicaciones. Recomendó que con ayuda para el desarrollo de aplicaciones lo cual reducirá
considerablemente el tiempo de desarrollo así como mejora en la interfaz de usuario a
entregarse a los propietarios de los dispositivos.

Gómez (2016), Estrategia de evaluación basada en juegos. Su objetivo fue la evaluación


formativa, integral y cualitativa, centrada en el desarrollo de las habilidades de los
estudiantes más que en los contenidos de enseñanza. La muestra que se obtuvo fue con
estudiantes. El instrumento utilizado fue la motivación al estudiante y para propiciar
espacios que disminuyan el estrés que generan las actividades evaluativas. Metodología
utilizada para el desarrollo fue la evaluación es un elemento fundamental del proceso de
enseñanza-aprendizaje, ya que permite valorar la evolución de los estudiantes. Obteniendo
como resultado la utilización de un videojuego/juego de computadora como actividad
evaluativa en una asignatura del programa de pregrado en Ingeniería de Sistemas.
Concluyo que la incorporación de videojuegos/juegos de computadora en el proceso
evaluativo fomenta el trabajo en equipo y un mayor compromiso de los estudiantes frente a
su proceso de aprendizaje. Recomendó que es mejor hacer las evaluaciones a través de
videojuegos/juegos y así el estudiante no sufrirá de estrés.

Ortiz (2011), Desarrollo de un lenguaje de programación grafica para microcontroladores


su objetivo fue analizar conceptos básicos de la programación en general tales como
autónomas, estructuras condicionales, estructuras interactivas (bucles) y los tipos de
variables. La muestra que se obtuvo fue de los principios paradigmas tradicionales de
programación los cuales están basados en líneas de código e instrucciones, a diferencia de
la programación grafica que se basa en sistemas visuales. El instrumento que se utilizo fue
el estudio a los estudio de herramientas para interfaz gráfica basado en Windows forms..
La metodología que se utilizó para el desarrollo del trabajo fue los procesos de compilación
para sistemas gráficos basados tanto en sistemas tradicionales de programación como los
paradigmas modernos, basados en aspectos visuales y representación de los mecanismos
de diseño y pensamiento de usuarios. Obtenido como resultado la diferencia entre los
lenguajes de alto nivel y bajo nivel su relación con la abstracción del hardware y con la
forma de interpretar la información para los usuarios. Concluyo que la que la planificación
para el proyecto es bastante alto se requiere fácilmente al máximo la ocultación del
hardware del microcontrolador. Recomendó que el usuario tenga conocimientos
elementales de programación y fundamentos básicos de un microcontrolador.

https://dspace.ups.edu.ec/bitstream/123456789/1430/15/UPS-CT002159.pdf
Gómez (2010) Arquitectura y metodología para el desarrollo de sistemas educativos
Basados en videojuegos. Su objetivo fue Minimizar la dependencia entre el conocimiento
específico del dominio que se enseña y el resto del sistema. La muestra que se obtuvo fue
de JV2M, un sistema educativo para enseñar la compilación de un lenguaje de C orientado
a objetos como es Java. El instrumento que se utilizo fue Permitir que los distintos
profesionales que entran en juego durante el periodo de desarrollo puedan trabajar sin
solaparse unos con otros, La. Metodología para el desarrollo del trabajo fue propuesta
aboga por una clara división entre los contenidos pedagógicos y los contenidos lúdicos que
los rodean Para poderla hacer efectiva, la arquitectura software subyacente divide la
aplicación en módulos con unas responsabilidades claras y no solapadas. Obteniendo
como resultado fue Permitir que en desarrollos posteriores sean fácilmente sustituibles
algunos módulos. Principalmente se persigue poder intercambiar fácilmente aquellos
módulos susceptibles de quedar obsoletos con el avance Tecnológico. Concluyó que
Durante años una inmensa colección de programas educativos han visto
La luz, gracias a estas herramientas que permiten generar contenidos en formatos
determinados que luego son presentados por visores genéricos. Recomendó que de las
aplicaciones educativas. Dentro de este amplio campo encontramos tanto aquellas
aplicaciones de enseñanza tradicionales.
https://eprints.ucm.es/8198/
DANIEL TE FALTAN DOS LOS RESULTADOS QUE SE OBTUBIERON Y LO QUE
RECOMENDO

Aquino, (2010), se interesó en tecnología Cloud Computing. Su objetivo fue incorporar


tecnología a las empresas para realizar o automatizar sus procesos o actividades, lo cual
les permite brindar un mejor servicio y ser más competitivos, la muestra estuvo conformada
por diferentes empresas que tienen la necesidad de implementar la tecnología para agilizar
su manera de trabajo, el instrumento que se utilizo fue entrevistas a personas que laboraban
en empresas que no poseían los equipos electrónicos y aun trabajaban con documentos
archivados, la metodología utilizada fue hipotético-deductivo, se recomendó antes de tomar
una decisión sobre adquirir algún servicio que ofrezca cloud computing, realizar un análisis
profundo evaluando las ventajas y desventajas que presenta dicha tecnología y se concluyó
Cloud computing es un conjunto de computadoras y aplicaciones informáticas ubicadas y
administradas desde grandes datacenters remotos, que brindan servicio a múltiples
usuarios que acceden a ellos con un navegador a través de Internet. Las empresas o
personas usuarias de estos servicios únicamente pagan por el uso que realizan de ellos y
no tienen que preocuparse de adquirir hardware y software necesario; tampoco necesitan
ocuparse de su administración directa, mantenimiento y evolución.
DANIEL TE FALTARON LOS RESULTADOS OBTENIDOS Y QUE FUE LO QUE
RECOMENDO
Ovalle (2010), se interesó en Juego de Programación. Su objetivo fue construir una
herramienta de software que apoye el aprendizaje de la programación de computadoras,
por medio de la representación visual de un algoritmo. La muestra estuvo conformada por
jóvenes de entre 15 y 20 años, el instrumento que se utilizo fue un cuestionario de las
necesidades que tienen y lo que les gustaría a los jóvenes, la metodología que se utilizó
fue histórico donde en un proceso no tan largo se realizó varias encuestas y observaciones
de las necesidades y oportunidades de los jóvenes, se concluyó que Es posible construir
software que apoye el aprendizaje de la programación de computadoras. Una herramienta
informática puede simular entornos virtuales que facilitan un aprendizaje por medio del
descubrimiento y la experimentación. El software puede disminuir la carga de memorización
de sintaxis por medio del uso de plantillas para construir estructuras gramaticales del
lenguaje, y se recomienda capacitar a los educadores para que puedan aprovechar las
ventajas que ofrece la herramienta desarrollada en este proyecto.
Estrada (2011) Se interesó en ayudar a los desarrolladores independientes, a los gerentes
de proyectos, a las organizaciones, entre otros, en la elección del lenguaje de programación
para cada uno de los proyectos que emprendan. Con el objetivo de introducir al lector en el
concepto de lenguaje de programación, también mostrar su evolución y desarrollo. La
muestra consta de un estudio de campo realizado, por medio del cual se dio a conocer el
porcentaje de personas que utilizan un lenguaje de programación respecto a otro en
Guatemala. El estudio fue de tipo descriptivo y comparativo con procedimiento estadístico.
Concluyo que los lenguajes más utilizados se muestran su historia, beneficios y
vulnerabilidades, así como un conjunto de proyectos en los cuales se puede aplicar.
Recomendó establecer bajo qué características es posible utilizar determinado lenguaje de
programación y las que no serían recomendables.
Martin (2014) se interesó en la arquitectura y metodología de desarrollo de sistemas
educativos basados en videojuegos en lenguaje C. Con el objetivo de minimizar la
dependencia entre el conocimiento específico del dominio que se enseña y el resto del
sistema. La muestra se obtuvo de 53 estudiantes de tercer grado de primaria. El instrumento
que utilizo fue un juego diseñado en lenguaje c para que los niños pudieran aprender
opciones básicas de matemáticas. La metodología propuesta aboga por una clara división
entre los contenidos pedagógicos y los contenidos lúdicos que los rodean. Concluyo con la
prueba del correcto funcionamiento de la metodología y arquitectura aquí propuesta, el
trabajo incluye la descripción detallada del desarrollo de JV2M, un sistema educativo para
enseñar y recomienda para enseñar la compilación de un lenguaje de alto nivel orientado a
objetos, el más adecuado es Java.
Planteamiento del problema
¿Para que nos sirve la programación en lenguaje C en la actualidad?
Variables

Como puede ayudar al desarrollo del ser humano la programación

Que tan utilizado es actualmente el lenguaje de programación C

El lenguaje de programación c cuenta aún con la disponibilidad de crear una


interfaz estéticamente demandada al día de hoy
Límites
Influir a los alumnos a que se adentren en el mundo de la informática y la
programación

Demostrar que el lenguaje C aún sigue igual utilizado en la actualidad como lo era
en el pasado

Encontrar la importancia de la programación y como nos ha facilitado la vida


cotidiana
Hipótesis
Marco teórico
1. ¿Qué es un lenguaje de programación?
Los lenguajes de programación son las herramientas con que se cuenta
para dar las instrucciones a la computadora e implantar los algoritmos, para
resolver problemas de naturaleza matemática, estadística, contable de ingeniería,
gráficos y etc. El poder que da un lenguaje para implantar algoritmos y sistemas
de función de su gramática; la cual tiene tres aspectos principales que son: El
léxico, sintaxis y la semántica. Adicionalmente, es importante conocer la infra
estructura o ambiente de programación en el cual se va a trabajar dicho ambiente
está constituido por el editor, el compilador, el depurador, el enlazador y las
bibliotecas. Que son los elementos principales con los que todo programador de
contar para desarrollar sus programas. (Moran, 2012, pág. 25)

2. Los lenguajes de programación ensambladores y de alto nivel:

La mayoría de los lenguajes básicos de computadora, como el lenguaje máquina


(lenguaje que entiende la maquina directamente), proporcionan las instrucciones a
la computadora en bits. Aunque la mayoría de las computadoras utilizan los mismos
tipos de operaciones, los diseñadores de los diferentes procesadores (CPU)
normalmente eligen conjuntos distintos de códigos binarios para realizar dichas
operaciones. Por consiguiente, el lenguaje máquina de una computadora no es
necesariamente el mismo que el lenguaje máquina de otra computadora. La única
coincidencia entre computadoras es que en cualquiera de ellas, todos los datos se
almacenan y manipulan en código binario. (Martin, 2012, pág. 89)

(Bentley, 2015) Expresa que:

Las primeras computadoras eran programadas en lenguaje maquina (código


binario). La programación escrita que utiliza lenguaje maquina es un proceso
tedioso y difícil de realizar. Por ejemplo, para sumar dos números se puede
requerir una instrucción como esta: 1101101010101001 (P. 35)

Para realizar cualquier operación, como la anterior, el programador tiene que


recordar las posiciones de los datos en memoria. Esta necesidad de recordar los
códigos específicos en binario hacen muy difícil la programación y muy propensa a
errores. Por estas razones comenzaron a crearse lenguajes ensambladores, para
hacer la tarea del programador más fácil. En lenguaje ensamblador, una instrucción
tiene un formato más fácil de recordar, llamado nemotécnico o nemónico. Las
instrucciones en lenguaje ensamblador son abreviaturas o segmentos de palabras
clásicas en inglés. (Bentley, 2015, pág. 10)

3. El Proceso de la programación:
(Mccoonell, 2010) Nos indica que:

La programación es un proceso de resolución de problemas. Para resolver


estos problemas se requieren técnicas diferentes que comprenden desde el
análisis del problema, especificación de requisitos o requerimientos y las
etapas de diseño denominadas algoritmos.
Un algoritmo es el concepto fundamental de la ciencia de las computadoras
(informática). Desde un punto de vista práctico, un algoritmo es un conjunto
de pasos que definen como se realiza una tarea. Por ejemplo, hay un
algoritmo para construir un modelo de avión, de un tren, una lavadora o un
aparato de televisión. Antes de que una maquina pueda ejecutar una tarea,
se debe diseñar un algoritmo que posteriormente se pueda convertir en un
programa que entienda la computadora para lo cual se necesitara traducir el
programa en lenguaje maquina mediante un traductor (compilador o
interprete). (P. 189).

4. Historia de la programación
4.1¿Quién creo el lenguaje de programación C?
El lenguaje de programación C fue creado por Brian Kernighan y Dennis
Ritchie a mediados de los años 70. La primera implementación del mismo la
realizó Dennis Ritchie sobre un computador DEC PDP-11 con sistema operativo
UNIX. C es el resultado de un proceso de desarrollo que comenzó con un lenguaje
anterior, el BCPL, el cual influyó en el desarrollo por parte de Ken Thompson de
un lenguaje llamado B, el cual es el antecedente directo del lenguaje C. El
lenguaje C es un lenguaje para programadores en el sentido de que proporciona
una gran flexibilidad de programación y una muy baja comprobación de
incorrecciones, de forma que el lenguaje deja bajo la responsabilidad del
programador acciones que otros lenguajes realizan por si mismos. Así, por
ejemplo, C no comprueba que el índice de referencia de un vector (llamado array
en la literatura informática) no sobrepase el tamaño del mismo; que no se escriba
en zonas de memoria que no pertenecen al área de datos del programa, etc.
(Bonet, 2012, pág. 1)
(Hunt, 2015) Indica que:
El lenguaje C es un lenguaje estructurado, en el mismo sentido que lo son
otros lenguajes de programación tales como el lenguaje Pascal, el Ada o el
Modula-2, pero no es estructurado por bloques, o sea, no es posible declarar
subrutinas (pequeños trozos de programa) dentro de otras subrutinas, a
diferencia de como sucede con otros lenguajes estructurados tales como el
Pascal. Además, el lenguaje C no es rígido en la comprobación de tipos de
datos, permitiendo fácilmente la conversión entre diferentes tipos de datos y la
asignación entre tipos de datos diferentes, por ejemplo la expresión siguiente
es válida en C: float a; /*Declaro una variable para numeros reales*/ int b;
/*Declaro otra variable para numero enteros*/ b=a; /*Asigno a la variable para
entera el numero real*/.(P. 68)
4.2 La evolución del lenguaje C
(Cruz, 2011) piensa que:
Evolución del lenguaje C La primera versión de C fue publicada por los
autores del lenguaje Brian W. Kernighan y Dennis M. Ritchie en 1978. Las
reglas definidas por ellos se tomaron como las reglas de facto para el
lenguaje. Sin embargo, los fabricantes de compiladores (ver sección 1.1.3)
comenzaron a introducir cambios arbitrarios en la definición del lenguaje,
provocando que escribir un programa fuese confuso y complicado. Por esa
razón, en el año de 1989, el Américan National Standars Institute (ANSI),
publicó la especificación oficial del lenguaje C. Así cualquier programa que
siguiera esas reglas, debe ser compilado por cualquier compilador del
lenguaje C. El ANSI es un organismo estadounidense dedicado a
supervisar el desarrollo de estándares para productos, servicios, procesos y
sistemas en Estados Unidos. Al pasar el tiempo el lenguaje C ha
evolucionado y se ha tenido que ajustar a las nuevas necesidades de los
programadores. Por ello, ANSI se ha visto obligado a generar nuevos
estándares para el lenguaje. Los estándares son los siguientes:
C89: Estas reglas son el resultado de un largo debate que inició en 1983 y
terminó en 1989.
C90: En 1990, ANSI realiza un ajuste menor a la versión anterior. En la
práctica C89 y C90 son lo mismo.
C99: Nueve años después, en 1999, ANSI actualiza las reglas del lenguaje.
C11: En el año 2011, ANSI publica la definición actual de C. (P.8)
5. Conceptos básicos
Algoritmo: Proceso de resolución de problemas compuesto por un
conjunto de instrucciones que se realizan pasó a pasó para conseguir una solución
y que se obtiene en un tiempo finito. (Hunt, 2015, pág. 13)
Programa fuente es entendido como el código fuente es el archivo o
archivos con las instrucciones necesarias, realizadas en un lenguaje de
programación, que sirve para compilar posteriormente un programa o
programas para que puedan ser utilizados por el usuario de forma directa, tan sólo
ejecutándolo. (Martin, 2012, pág. 160)
(Martin, 2012) Indica que:
Programa objeto primero para ello debemos dar un paso más, ya que para
que el Procesador pueda ordenar los datos enviados y recibidos,
transformarlos en Información y que ésta genere una respuesta en el resto
de los componentes, es necesario que sea llevado al conocido
como Código Objeto, o Programa Objeto, que es el que interpreta
exclusivamente el ordenador. (P.63)
En informática, un compilador es un tipo de traductor que transforma
un programa entero de un lenguaje de programación(llamado código fuente)
a otro. Usualmente el lenguaje objetivo es código máquina, aunque también
puede ser traducido a un código intermedio (bytecode) o a texto. A diferencia
de los intérpretes, los compiladores reúnen diversos elementos o fragmentos
en una misma unidad (un programa ejecutable o una librería), que puede ser
almacenada y reutilizada. Este proceso de traducción se conoce
como compilación. (Hunt, 2015, pág. 235)
(Mccoonell, 2010) Indica que el Pseudocódigo es:
Una noción que se emplea en el ámbito de la informática. Se trata de un falso
lenguaje, ya que apela a las normas de estructura de un lenguaje de
programación aunque se encuentra desarrollado para que pueda ser leído
por un ser humano y no interpretado por una máquina. El pseudocódigo, en
este sentido, está considerado como una descripción de un algoritmo que
resulta independiente de otros lenguajes de programación. Para que una
persona pueda leer e interpretar el código en cuestión, se excluyen diversos
datos que no son clave para su entendimiento. (P.115)
Un diagrama de flujo es un diagrama que describe un proceso, sistema o
algoritmo informático. Se usan ampliamente en numerosos campos para
documentar, estudiar, planificar, mejorar y comunicar procesos que suelen ser
complejos en diagramas claros y fáciles de comprender. Los diagramas de flujo
emplean rectángulos, óvalos, diamantes y otras numerosas figuras para definir el
tipo de paso, junto con flechas conectoras que establecen el flujo y la secuencia.
Pueden variar desde diagramas simples y dibujados a mano hasta diagramas
exhaustivos creados por computadora que describen múltiples pasos y rutas. Si
tomamos en cuenta todas las diversas figuras de los diagramas de flujo, son uno de
los diagramas más comunes del mundo, usados por personas con y sin
conocimiento técnico en una variedad de campos. (Martin, 2012, pág. 35)

(Hunt, 2015) Nos indica que la sintaxis es:


Es el conjunto de normas y leyes combinatorias que estructuran
la construcción de oraciones y textos. La sintaxis hace referencia a
la inclusión de sujeto y predicado y al rol de las palabras en relación con
otras. En las ciencias de la computación, la sintaxis comprende un concepto
equivalente. Para la informática, la sintaxis es un grupo de normas que
funcionan gobernando la vinculación de las distintas variables que configuran
las instrucciones operativas. En programación, existen tres variables
relevantes: la sintaxis, la semántica y la jerarquía. Dentro de esa sintaxis
también pueden encontrarse gramáticas y expresiones regulares. Esto quiere
decir que existen caminos comunes que son usados a menudo por los
programadores a la hora de trabajar asociando variables y caracteres.
Términos comunes a la hora de hablar de sintaxis de programación son: los
identificadores, las palabras reservadas, las literales o constantes y los
símbolos especiales. (P.5)
6. Funciones del Lenguaje C
6.1 La modularizacion
La modularización, es una técnica usada por los programadores para hacer sus
códigos más cortos, ya que consiste en reducir un gran problema complejo, en
pequeños problemitas más sencillos, concentrándose en la solución por separado,
de cada uno de ellos. (Moran, 2012, pág. 56)
6.2 Funciones
En C, se conocen como funciones aquellos trozos de códigos utilizados para
dividir un programa con el objetivo que, cada bloque realice una tarea determinada.
En las funciones juegan un papel muy importe las variables, ya que como se ha
dicho estas pueden ser locales o globales. (Moran, 2012, pág. 63)
6.3 Variables Globales
Estas se crean durante toda la ejecución del programa, y son globales, ya que
pueden ser llamadas, leídas, modificadas, etc; desde cualquier función. Se definen
antes del main(). (Mccoonell, 2010, pág. 29)
6.4 Variables Locales.
Estas, pueden ser utilizadas únicamente en la función que hayan sido
declaradas. (Martin, 2012, pág. 22)

You might also like