Está en la página 1de 90

UNIVERSIDAD NACIONAL DEL ALTIPLANO

FACULTAD DE CIENCIAS CONTABLES Y ADMINISTRATIVAS


ESCUELA PROFESIONAL DE ADMINISTRACIÓN

“LA IMPORTANCIA DE LA PROGRAMACION EN EL AMBÍTO


UNIVERSITARIO”

LUZA BENAVENTE, JHEYSON JHOEL

PUNO – 2019
DEDICATORIA

A mis padres, por el apoyo constante tanto

económico como moral que me brindan el

día a día.
INDICE
INTRODUCCIÓN ..............................................................................................................................1
I CAPITULO ......................................................................................................................................2
PROGRAMACION COMO PARTE DE LA VIDA UNIVERSITARIA .......................................3
1.1. ¿Todo el mundo debe aprender a programar? ......................................................3
1.2. ¿Debe enseñarse programación en todas las carreras de la universidad? ...6
1.3. ¿Lenguajes de programación o programación computacional? ......................8
II CAPITULO ...................................................................................................................................11
INTRODUCCION A LA PROGRAMACION...............................................................................12
1.4. Antecedentes.................................................................................................................12
1.5. Conceptos generales que aborda la programación ............................................16
1.5.1. Informática .............................................................................................................16
1.5.2. ¿Qué es la programación informática? ..........................................................16
1.5.3. Arquitectura de software ....................................................................................16
1.5.4. Compilación y depuración .................................................................................17
1.5.5. Identificadores y palabras reservadas ...........................................................17
1.5.6. Variables y constantes........................................................................................17
1.5.7. Tipos de datos.......................................................................................................18
1.5.8. Operadores de datos ...........................................................................................19
1.5.9. Estructuras de control ........................................................................................19
1.5.10. Comentarios ...........................................................................................................19
1.6. Características, importancia y campo de aplicación ..........................................20
1.6.1. Características de la programación ................................................................20
1.6.2. Importancia de la programación ......................................................................21
1.6.3. Objetivos de la programación ...........................................................................22
III CAPITULO ..................................................................................................................................23
ALGORITMOS ................................................................................................................................24
3.1. Introducción, definición y características .................................................................24
3.1.1. Introducción................................................................................................................24
3.1.2. Definición ....................................................................................................................24
3.1.3. Características: ..........................................................................................................25
3.2. Clasificación y tipos de algoritmos .............................................................................25
3.2.1. Clasificación ...............................................................................................................25
3.2.2. Tipos .............................................................................................................................26
3.3. Tecnicas de representación ..........................................................................................26
3.3.1. Diagramas de flujo ....................................................................................................27
3.3.2. Diagrama Nassi – Shneiderman ............................................................................27
3.3.3. Pseudocódigo ............................................................................................................27
3.4. Etapas para la solución de un problema por medio del computador ................28
3.4.1. Definición del Problema ..........................................................................................28
3.4.2. Análisis del Problema ..............................................................................................28
3.4.3. Diseño del algoritmo ...............................................................................................30
3.4.5. Fase de Implementación .........................................................................................31
3.4.6. Codificación...............................................................................................................31
3.4.7. Prueba y Depuración ................................................................................................31
3.4.8. Documentación ..........................................................................................................32
3.4.9. Mantenimiento............................................................................................................33
IV CAPITULO .................................................................................................................................34
LENGUAJES DE PROGRAMACIÓN .........................................................................................35
4.1. Conceptos generales y sus respectivos procesos .................................................35
4.1.1. Definición ....................................................................................................................35
4.1.2. Traductores de lenguaje: el proceso de traducción de un programa .........35
4.1.3. La compilación y sus fases ....................................................................................36
4.2. Clasificación del campo de desarrollo ......................................................................37
4.2.1. Según el nivel de abstracción................................................................................37
4.2.2. Según la forma de ejecución..................................................................................39
4.2.3. Según el paradigma de programación ................................................................41
4.3. Java, Java Script y TypeScript......................................................................................42
4.3.1. Java ...............................................................................................................................42
4.3.2. Java Script ..................................................................................................................43
4.3.3. Type Script ..................................................................................................................44
4.4. Ruby .....................................................................................................................................45
4.5. Phyton ................................................................................................................................46
4.6. C. C++ y C# .........................................................................................................................48
4.6.1. C .....................................................................................................................................48
4.6.2. C++ ................................................................................................................................50
4.6.3. C#...................................................................................................................................51
4.7. Visual Basic. Net ...............................................................................................................52
4.8. Shell (BASH) y Perl ..........................................................................................................54
4.8.1. Shell (BASH) ...............................................................................................................54
4.8.2. Perl ................................................................................................................................55
4.9. Swift, R y Go ......................................................................................................................57
4.9.1. Swift ..............................................................................................................................57
4.9.2. R .....................................................................................................................................58
4.9.3. Go ..................................................................................................................................59
V CAPITULO...................................................................................................................................61
Programando con Python ..........................................................................................................62
5.1. Ejercicios Prácticos- Básicos .......................................................................................62
5.1.1. Problema 01 ................................................................................................................62
5.1.2. Problema 02 ................................................................................................................62
5.1.3. Problema 03 ................................................................................................................62
5.1.4. Problema 04 ................................................................................................................63
5.1.5. Problema 05 ................................................................................................................63
5,1,6, Problema 06 ................................................................................................................63
5.1.7. Problema 07 ................................................................................................................63
5.1.8. Problema 08 ................................................................................................................63
5.1.9. Problema 09 ................................................................................................................64
5.1.10. Problema 10 ..............................................................................................................64
CONCLUSIONES...........................................................................................................................65
BIBLIOGRAFIA ..............................................................................................................................66
ANEXOS ..........................................................................................................................................69
INTRODUCCIÓN

Hoy en día la programación o el producto de esta se encuentra presente en los


diversos sectores: industrial, social, educativo, entre otros. En la presente
monografía nos evocaremos en el sector educativo – universitario, que es de gran
importancia ya que estos culminando sus estudios se desarrollaran en una empresa
donde los avances tecnológicos son más acelerados cada vez. Es de suma
importancia saber y dominar lenguaje de programación por lo menos a nivel básico
para estar a la vanguardia de estos avances y tener un mejor desempeño
profesional.
Lo que se busca es incentivar al estudiante universitario a conocer y poner en
práctica estos programas de lenguaje de programación, de esta manera poder
desarrollar en el ámbito de páginas web, aplicaciones, videojuegos, diseños tanto
para IOS, Android, Windows, entre otras plataformas donde se puede desarrollar y
estos sean compatibles, que a la vez sea una forma de recrear al estudiante y este
formarse con una mentalidad vanguardista en el rubro de los avances tecnológicos.
Además, el estudiante podrá ampliar su hoja de vida y tener un mejor desempeño
en el mercado laboral que cada vez es más competente.
En los siguientes capítulos se presentará programas que manejan distintos
lenguajes de programación, donde se dará a conocer su importancia, su campo de
aplicación y como uno puede iniciar en este, estos además estarán detallados por
un cierto nivel de dificultad y complejidad, de esa manera el estudiante podrá
identificarse con uno de estos programas. Como dijo Francisco Ruiz, Director de
Políticas y Asuntos Públicos de Google “En un futuro cercano quienes no sepan
programar serán los nuevos analfabetos”.

1
I CAPITULO

2
PROGRAMACION COMO PARTE DE LA VIDA

UNIVERSITARIA

1.1. ¿Todo el mundo debe aprender a programar?

“Creo que todo el mundo en este país debería aprender a programar”. La frase no

la dice una persona cualquiera. Es de Steve Jobs, en una entrevista televisiva que

puedes consultar bajo estas líneas. “Aprender a programar te enseña a pensar. Es

como estudiar derecho, no digo que todo el mundo tenga que ser abogado, pero es

útil porque te ayuda a pensar de una cierta manera, de la misma manera que la

programación te obliga a pensar de otra. Todo el mundo debería tomar uno o dos

años de su vida aprendiendo a programar”, aseguraba el fundador de Apple. Hace

pocos días era su sucesor al frente de la compañía, Tim Cook, el que aseguraba

que "programar es más importante que aprender inglés". (Esteve, 2018)

Algunos países parecen haberse tomado en serio las palabras de Steve Jobs. El

gobierno chino aprobó el año pasado un plan para que los niños comiencen a

estudiar programación a partir de los seis años a la que, con el paso de los años,

se le sumarán nociones en diferentes lenguajes. El plan no se detiene ahí ya que

pretende que, a partir de los 11 años, los alumnos también reciban clases de

robótica. (Esteve, 2018)

En España, la publicación de un estudio en abril de 2016 ofrecía algunas pinceladas

al respecto. A partir de más de 2.000 encuestas realizadas a padres y a alumnos

de entre 12 y 16 años certificaba que sólo un 5% de los alumnos de primaria y un

16% de los de secundaria utilizaba dispositivos digitales para programar. El 24%

3
admitía conocer algún lenguaje de programación, siendo Scratch el más popular

entre los alumnos. En el ámbito paterno una cifra resultaba esclarecedora: el 73%

creía que se debería enseñar programación en el colegio. (Esteve, 2018)

Hoy la educación en Perú no muestra gran avance en el aspecto tecnológico, mas

solo se lleva introducción a la programación en el último año en el nivel secundario

donde se aborda lo que es Visual Basic y se aborda el tema de algoritmos, en si

eso es bueno. Pero tendría más relevancia si se practicase desde niveles inferiores

hasta llevarlo hasta el nivel universitario en donde nos centraremos. Como

resultado tendríamos estudiantes que se formen con bases sólidas en

programación, mas no se tiene la intención de formar programadores expertos.

Es importante tener en cuenta el pensamiento computacional. Para comprender y

desempeñarse en el mundo actual es fundamental desarrollar la habilidad de

resolver problemas. El Pensamiento Computacional se basa en resolver problemas

haciendo uso de conceptos básicos de la informática. Por ello, es fundamental

discutir el proceso educativo y el lugar de la Informática en el conocimiento humano

reconociendo al pensamiento computacional como un objetivo a lograr, necesario

en la educación actual. Para favorecer su desarrollo resulta imperiosa la inclusión

de los fundamentos computacionales de la Informática en todos los niveles

educativos, incluyendo a la Universidad. No obstante, la deserción y

desgranamiento universitario junto con el poco interés de los jóvenes por estudiar

carreras de informática representan serios problemas a resolver en el ámbito

académico. Es necesario que desde la universidad surjan estrategias que permitan

afrontarlos y convertirlas en soluciones viables, visibles y comprensibles. (Rosas,

2015)

4
En este contexto, las iniciativas de reforma implican un cambio de perspectiva

profundo y complejo de los diferentes actores involucrados en los procesos de

enseñanza y aprendizaje, que resultará más significativo mientras más temprano

se lleve a cabo, favoreciendo en particular la formación de profesionales

informáticos capacitados para desenvolverse en los desafíos del mundo actual.

Palabras clave: Pensamiento Computacional, Enseñanza de la programación,

Deserción y desgranamiento universitario. (Zúñiga, 2015)

A raíz del crecimiento del sector tecnológico la necesidad de programadores

informáticos se disparará en los próximos años, también la necesidad de incorporar

perfiles más versátiles en las empresas hace que muchas personas se sienta

llamadas por la programación de un lenguaje para mejorar en el terreno laboral.

Estamos construyendo internet constantemente, cada año nacen nuevas

aplicaciones, otras desaparecen se transforman para ser más útiles, por tanto, la

programación está cada día más presente en la vida cotidiana, en pocos años será

tan necesario conocer algún lenguaje de programación como saber un segundo

idioma, es complicado no trabajar en algún entorno que necesite programación. A

veces somos reacios a aprender cosas nuevas, y trabajar con código desde fuera

da un poco de respeto, pero una vez que asimilas la estructura básica y su sintaxis

es más sencillo de lo que parece, simplemente es buscar la manera de conseguir

desarrollar lo que tienes en mente por tanto la libertad a la hora de trabajar es

infinita. (Robles, 2015)

Vivimos en un momento de cambios y de revolución en el mundo tecnológico, cada

vez necesitamos más preparación para lograr un buen trabajo aprender un lenguaje

al menos, es un propósito muy bueno sobre todo si se busca un mejor trabajo o un

5
trabajo más cómodo, no niego que conocer un lenguaje no te va a solucionar la

vida, pero si puede abrirte puertas e incluso teniendo una base sobre programación

aprender otro lenguaje resulta más sencillo. (Robles, 2015)

1.2. ¿Debe enseñarse programación en todas las carreras de la

universidad?

La programación ya no es un oficio exclusivo de los ingenieros de sistemas y

computación en las universidades. Cientos de personas acceden a cursos de

programación debido a las exigencias del mundo laboral actual, en el cual este

conocimiento es muy valorado. Sin embargo, sí son las universidades las llamadas

a ‘mandar la parada’ respecto a qué lenguaje enseñar. Durante años, uno de los

lenguajes de programación obligatorios que todo profesional o técnico debía

manejar era Java, y aunque este sigue ocupando un lugar en el mundo real,

expertos creen que se está muriendo como un lenguaje de programación

introductorio. (Luzardo, 2017)

Federico Peinado, profesor de la facultad de Informática de la Universidad

Complutense de Madrid, considera que la pregunta puede llevar a engaño ya que

hay que distinguir entre dos ámbitos muy distintos a la hora de plantearse si la

programación debería impartirse en las aulas de manera obligatoria. (Esteve, 2018)

“La programación computacional es una disciplina en la que sí sería interesante que

todo el mundo estuviese formado ya que te explica cómo piensa una máquina,

cómo se le dan órdenes y cómo se programa para que automatice procesos y nos

ayude a hacer tareas” (Peinado, 2018)

Frente a esa disciplina, Peinado cree que el estudio de lenguajes de programación

6
está enfocado a un público más concreto que no tiene por qué estar familiarizado

con unas herramientas muy técnicas. “Creo que no sería adecuado que todas las

carreras tuvieran una asignatura de programación textual, orientada a objetos y

estructurada como puede ser Java”. (Esteve, 2018)

Para el profesor de la Universidad Complutense, “tiene sentido” que esos

conocimientos se impartan en carreras donde los futuros licenciados vayan a

necesitar esas habilidades para desempeñar su trabajo. “No veo a un odontólogo o

un médico estudiando programación porque no sería de utilidad, no lo veo

relacionado”, zanja. Frente al escepticismo de Peinado, otros profesores de otros

ámbitos consideran que sí se deberían impartir estos estudios no sólo en la

Universidad sino incluso antes, en el instituto. Es el caso de Mar Marcos, profesora

en la facultad de Comunicación de la Complutense, que pone ejemplos concretos

al respecto. “A menudo con programas de edición de vídeo o de fotografía los

alumnos no pueden determinar problemas porque no tienen siquiera una

orientación básica”, (Peinado, 2018)

Para Marcos, el “simple hecho de saber trastear con un ordenador sería muy

importante” y pone el ejemplo de los colegios en los que se imparte robótica como

el modelo a seguir dentro de la comunidad educativa: “Se debería empezar a

enseñar en Bachillerato. Incluso antes”. Una opinión que también comparte

Peinado, aunque con matices: “Sí creo que el pensamiento computacional debería

enseñarse a un nivel por debajo de la Universidad para que todos tuviésemos una

formación básica igual que tenemos en cultura general y por eso estudiamos

matemáticas, lengua o sociales”. (Marcos, 2018)

Un último testimonio en este punto ayuda a poner de relieve ambas

7
posturas. Ricardo Galli, fundador de Menéame y también doctor en Informática es

partidario del aprendizaje de lenguajes de programación, pero en un entorno muy

concreto: "Es muy visible en estudiantes de Informática: abandonan la carrera

después del primer año porque salen de un bachillerato científico** sin tener ni idea

de programación"**. Galli va más allá al señalar que "la inmensa mayoría de

estudiantes no saben qué es un algoritmo" y acude a otras ciencias, como "la

estadística, la física o la química", para señalar la formación que sí reciben los

alumnos en esas áreas y que les permiten salir mejor preparados al ámbito

universitario. (Esteve, 2018)

1.3. ¿Lenguajes de programación o programación

computacional?

Federico Peinado, profesor de la facultad de Informática de la Universidad Complutense

de Madrid, considera que la pregunta puede llevar a engaño ya que hay que distinguir

entre dos ámbitos muy distintos a la hora de plantearse si la programación debería impartirse

en las aulas de manera obligatoria. (Esteve, 2018)

“La programación computacional es una disciplina en la que sí sería interesante que

todo el mundo estuviese formado ya que te explica cómo piensa una máquina,

cómo se le dan órdenes y cómo se programa para que automatice procesos y nos

ayude a hacer tareas” (Peinado, 2018)

Frente a esa disciplina, Peinado cree que el estudio de lenguajes de programación

está enfocado a un público más concreto que no tiene por qué estar familiarizado

con unas herramientas muy técnicas. “Creo que no sería adecuado que todas las

8
carreras tuvieran una asignatura de programación textual, orientada a objetos y

estructurada como puede ser Java”.

Para el profesor de la Universidad Complutense, “tiene sentido” que esos

conocimientos se impartan en carreras donde los futuros licenciados vayan a

necesitar esas habilidades para desempeñar su trabajo. “No veo a un odontólogo o

un médico estudiando programación porque no sería de utilidad, no lo veo

relacionado”, zanja. Frente al escepticismo de Peinado, otros profesores de otros

ámbitos consideran que sí se deberían impartir estos estudios no sólo en la

Universidad sino incluso antes, en el instituto. Es el caso de Mar Marcos, profesora

en la facultad de Comunicación de la Complutense, que pone ejemplos concretos

al respecto. “A menudo con programas de edición de vídeo o de fotografía los

alumnos no pueden determinar problemas porque no tienen siquiera una

orientación básica”, (Marcos, 2018)

Para Marcos, el “simple hecho de saber trastear con un ordenador sería muy

importante” y pone el ejemplo de los colegios en los que se imparte robótica como

el modelo a seguir dentro de la comunidad educativa: “Se debería empezar a

enseñar en Bachillerato. Incluso antes”. Una opinión que también comparte

Peinado, aunque con matices: “Sí creo que el pensamiento computacional debería

enseñarse a un nivel por debajo de la Universidad para que todos tuviésemos una

formación básica igual que tenemos en cultura general y por eso estudiamos

matemáticas, lengua o sociales”. (Marcos, 2018)

Un último testimonio en este punto ayuda a poner de relieve ambas

posturas. Ricardo Galli, fundador de Menéame y también doctor en Informática es

9
partidario del aprendizaje de lenguajes de programación, pero en un entorno muy

concreto: "Es muy visible en estudiantes de Informática: abandonan la carrera

después del primer año porque salen de un bachillerato científico “sin tener ni idea

de programación”" Galli va más allá al señalar que "la inmensa mayoría de

estudiantes no saben qué es un algoritmo" y acude a otras ciencias, como "la

estadística, la física o la química", para señalar la formación que sí reciben los

alumnos en esas áreas y que les permiten salir mejor preparados al ámbito

universitario. (Esteve, 2018)

10
II CAPITULO

11
INTRODUCCION A LA PROGRAMACION

1.4. Antecedentes

La programación en si nace juntamente con la creación de los primeros

ordenadores y los microprocesadores que estos integraban, se aproxima a la idea

de Charles Babbage la cual se le ocurrió a mediados del siglo XIX. Este un profesor

matemático de la universidad de Cambridge e Inventor inglés, donde predijo

muchas de las teorías en que se basan los actuales ordenadores.

El conjunto de Ordenes e instrucciones que se dan al ordenador para que resuelva

un problema o ejecute una determinada misión, recibe el nombre de programa. En

los primeros tiempos de la informática, la programación se efectuaba en el único

lenguaje que entiende el microprocesador: su propio código binario, también

denominado lenguaje maquina o código máquina. Pero la programación en

lenguaje maquina resulta muy lenta y tediosa, pues los datos e instrucciones se

deben introducir en sistema binario y, además, obliga a conocer las posiciones de

memoria donde se almacenan los datos. Como puede imaginar, este tipo de

programación conlleva gran número de errores y la tarea de depuración exige

bastante tiempo y dedicación. Por este motivo, a principios de los 50 se crea una

notación simbólica, denominada código de ensamblaje (ASSEMBLY), que utiliza

una serie de abreviaturas mnemotécnicas para representar las operaciones (figura

1): ADD (sumar), STORE (copiar), etc. Al principio, la traducción del código de

ensamblaje al código máquina se realizaba manualmente, pero enseguida se vio

que el ordenador también podía encargarse de esa traducción; se desarrolla así un

programa traductor, llamado ensamblador1 (ASSEMBLER). Conforme los

12
ordenadores fueron introduciéndose en el mundo empresarial y académico,

aquellos primitivos lenguajes fueron sustituidos por otros más sencillos de aprender

y más cómodos de emplear. Estos lenguajes, llamados de alto nivel, tienen una

estructura que se adapta más al pensamiento humano que a la forma de trabajar

del ordenador. (Aranda, Historia y evolución de los lenguajes de programación,

2015)

La programación a lo largo de los años tuvo una evolución que arraigo desde el

código binario (código maquina) este compatible con los microprocesadores de la

fecha, se presenta un listado que están ordenados secuencialmente y una breve

descripción de cada uno:

• En el año de 1951, surgió el lenguaje AO, donde Grace Murray fue

quien lo inventa como primer compilador que generaban un binario a

partir de un código fuente.

• Para el año de 1953, se genera FORTRAN, tarjeta es una perforada

especializada en el uso especializado de las columnas 1-5, 6 y 73-80.

para el año de 1957, FORTRAN se proclama como el primer lenguaje

de programación universal.

• En 1958, sale a la luz ALGOL 58, que se le otorga la característica de

primer lenguaje algorítmico.

• Para ese mismo año de 1958, Johm McCarthy crea el lenguaje para

La quesería la base de la programación orientada a objetos, con el

nombre de LIPS.

• En 1960, ALGOL tuvo un efecto profundo en el desarrollo del lenguaje

en el futuro.

13
• En el mismo año de 1960, COBOL fue diseñado inspirándose en el

lenguaje FLOW MATIC de Grace Hopper y el IMB COMTRADE BOB

BEMBER.

• BASIC DARTMOUNTH, fue el primer lenguaje hogareño para la gente

común es por eso su característica, para el año de 1964.

• En 1964, PL/1 lenguaje de multiplataforma que fue la base de C Y

C++.

• 1967 ASCLL, lenguaje que persiste hasta nuestros días.

• 1970, surge B que se caracteriza por ser el lenguaje que es pensado

en UNIX sería el procesador del lenguaje C.

• PASCAL fue creado para las primeras personas que aprendía a

programar en el año de 1970 y para crear programas formales rutinas

y video juegos.

• Para el año de 1972, se crea

• SMALLTALK primer lenguaje utilizado para la máquina virtual y es el

primero orientado a objetos. También Dennis Ritchie crea uno de los

mejores lenguajes creados y diseñados parasistemas operativos. Al

igual PROLOG en ese año lenguaje de programación lógica e

interpretada utilizando principalmente para IA.

• A los principios de los 80 C++ fue creado para extender más este

excelente lenguaje. Caracterizado por ser hibrido.

• En 1985, CLIPPER primero se creó como compilador, después se

comercializo como: CA-CLIPPER. Para 1986, por fin fue presentada

esta versión. En 1986 mejoro la versión anterior y utilizada hasta el

14
2000.

• A los principios de los años 90 se presenta el lenguaje javo,

desarrollado por SUN MICROSYSTEMS.

• En el año de 1991,

• VISUAL BASIC fue un lenguaje de entorno de desarrollo

completamente gráfico. En 1993 surge VISUAL C++, comercial de

Microsoft para C, C++ y C++/CLI. así mismo para depurar códigos c.

• En el año de 1994 DELPHI, es el lenguaje de programación con

herramientas para facilitar la estructura de código y el diseño de la

aplicación.

• 1995, año en el cual se creó JAVA, el cual es un lenguaje de

programación orientado a objetos que permite crear aplicaciones de

todo tipo de magnitud en diferentes tipos de ordenadores y sistemas

operativos.

• En el año de 1997, surge el lenguaje de programación para las

páginas web dinámicas, llamado PHP.

• En el año 2001, C# (C SHARP), Microsoft introduce un lenguaje de

programación orientado a objetos para su plataforma. Net y que es la

evolución del lenguaje C++.

• En el año del 2004, es la WEB 2.0 tiene nuevos servicios y

herramientas empiezan a parecer.

15
1.5. Conceptos generales que aborda la programación

1.5.1. Informática

Una posible definición de informática podría ser: El conjunto de conocimientos

científicos y técnicos que hacen posible la resolución de forma automática de

problemas por medio de las computadoras. La informática es, en definitiva, una

rama del saber que abarca todos los aspectos del diseño y uso de las computadoras

y como consecuencia, debería cubrir todos aquellos problemas con los que nos

encontramos a la hora de realizar una tarea con una máquina de forma automática.

La resolución de un problema mediante un ordenador conlleva, a grandes rasgos,

la realización de los siguientes pasos: (Anasagasti, 2002)

Problema planteado- ALGORITMO - PROGRAMA - COMPUTADOR - Solución

La informática abarcará el estudio de todas aquellas cuestiones que aparecen en

la realización de cada uno de esos pasos. Vamos a ver grandes rasgos cuáles son

las principales.

1.5.2. ¿Qué es la programación informática?

Es el proceso por medio del cual se diseña, codifica, limpia y protege el código

fuente de programas computacionales. A través de la programación se dictan los

pasos a seguir para la creación del código fuente de programas informáticos. De

acuerdo con ellos el código se escribe, se prueba y se perfecciona. (Vipper, 2019)

1.5.3. Arquitectura de software

Un computador desde la perspectiva del software está constituido por:

- Un sistema operativo.

- Un conjunto de lenguajes a diferente nivel con los cuales se comunica con

16
el usuario y con sus dispositivos. Entre estos están los lenguajes de

máquina, los ensambladores y los de alto nivel.

- Un conjunto de aplicaciones de software.

- Un conjunto de herramientas de software.

1.5.4. Compilación y depuración

La compilación es el procedimiento por el cual un programa traduce un lenguaje de

programación a lenguaje máquina para que la computadora pueda interpretarlo. Al

programa encargado de realizar esta tarea se le conoce como compilador.

(Gimenez, 2016)

La depuración es el proceso de búsqueda, identificación y corrección de errores de

programación. Existen varios métodos de depuración como técnicas de revisión,

programas de detección de errores (depuradores), herramientas integradas en el

entorno de desarrollo o revisión manual por parte del programador usando un papel

y bolígrafo o sentencias auxiliares dentro del programa. (Gimenez, 2016)

1.5.5. Identificadores y palabras reservadas

Los identificadores son palabras o símbolos léxicos que sirven para nombrar

entidades y elementos dentro de un programa y que hacen posible la referencia a

ellos. Los lenguajes de programación cuentan con restricciones para el uso de los

caracteres posibles en identificadores. Las palabras reservadas son un conjunto de

términos que forman parte del lenguaje de programación y tiene significado

gramatical dentro de él, por lo que no pueden usarse como identificadores.

(Gimenez, 2016)

1.5.6. Variables y constantes

Una variable es un espacio reservado en la memoria de un computador durante la

17
ejecución de un programa y que contiene valores susceptibles de alterarse con el

tiempo. Una constante es exactamente lo mismo que una variable, pero a diferencia

de ésta, en una constante el valor que contiene no puede ser alterado. (Gimenez,

2016)

Las variables y constantes tienen la característica de tener longitud, esto es, el

espacio que ocupará en la memoria principal, pudiendo ser de dos tipos:

- Fija – El tamaño definido inicialmente no se altera, es aplicable a variables y

constantes.

- Variable – El tamaño definido inicialmente varía a lo largo de la ejecución de

un programa.

1.5.7. Tipos de datos

Las variables y las constantes (y otras cosas) tienen otra característica que es el

tipo de dato, un atributo que indica a la computadora la clase de datos que va a

manejar dentro de una celda de memoria concreta, imponiendo así restricciones

acerca de las operaciones que se pueden hacer con ellos. (Gimenez, 2016)

Los hay de varios tipos:

- Simples.

- Compuestos.

- Abstractos.

- Puntero.

- Objeto.

- Etc.

18
1.5.8. Operadores de datos

Un operador de datos es un elemento del programa que se aplica a uno o varios

operandos (variables, constantes, etc.) y por los cuales se construye una expresión

o instrucción. (Gimenez, 2016)

Existen de varios tipos:

- Aritméticos.

- Lógicos.

- Relacionales.

- Asignación.

- Dirección.

- Etc.

1.5.9. Estructuras de control

Las estructuras de control permiten al programador poder modificar el flujo de

ejecución de un programa, obligando a éste a realizar repetidamente una serie de

acciones o seleccionar para su ejecución una entre varias de ellas.

Existen dos tipos básicos de estructuras de control. (Gimenez, 2016)

- Selectivas – Ejecutan una instrucción u otra dependiendo de que se

cumplan o no una o varias condiciones.

- Iterativas – Ejecutan una o varias instrucciones repetidamente mientras

se cumpla una condición.

1.5.10. Comentarios

Los comentarios son anotaciones legibles y aclaratorias que el programador

19
introduce dentro del código fuente de un programa. Los comentarios son posibles

gracias a algún símbolo característico de cada lenguaje de programación, éstos

serán completamente ignorados por los compiladores y el contenido no se atiene a

ninguna norma lingüística más allá de la lengua natural del programador. (Gimenez,

2016)

1.6. Características, importancia y campo de aplicación

1.6.1. Características de la programación

- Exactitud y precisión: Un programa debe aceptar datos, procesarlos y

generar resultados sin errores de sintaxis o de lógica; de ahí la necesidad de

exactitud y precisión. Integridad o completitud: Un programa es completo

sólo si ejecuta todas las operaciones que el usuario espera al procesar un

conjunto de datos.

- Generalidad: La generalidad se entiende en dos sentidos: Un programa bien

diseñado se puede generalizar; es decir puede procesar conjuntos de datos

que varían en el número de transacciones y en la naturaleza de los datos

mismos. Las instrucciones se deben elaborar para que no se limiten a un

número específico de transacciones en el conjunto de datos. No debe

suponerse que una parte específica de datos siempre sea de igual tamaño.

El programa contiene diferentes opciones que pueden o no ser aplicadas

durante una corrida. Los usuarios pueden seleccionar la opción adecuada

cada vez.

- Eficiencia: Debe asegurarse que las instrucciones para procesar datos se

selecciones tan rápida y fácilmente como sea posible. La rapidez y la

eficiencia del procesamiento de datos puede variar debido a: modo como se

20
introducen los datos, orden en que se procesan los datos, instrucciones

particulares que se empleen para controlar el proceso, etc.

- Documentación: Consiste en la inclusión de auxiliares que explican con

claridad como ocurre el procesamiento de los datos en un programa. La

documentación incluida en un programa es de dos tipos:

Externa: No está incluida en el programa mismo, sino que va por separado.

Comprende: diagrama de flujo que muestre los pasos y los procedimientos

y el orden en el cual tienen lugar; explicación que describa en el lenguaje

común cómo es el procesamiento de los datos; descripción de los datos que

van a introducirse y procesarse, incluyendo su tipo y tamaño.

Interna: Consiste en comentarios y descripciones que se insertan entre los

enunciados ejecutables de un programa. Explica la sucesión de los pasos

del procesamiento y los objetivos de los diferentes grupos de enunciados del

programa

1.6.2. Importancia de la programación

El rol de la programación en los últimos sesenta años ha sido crucial para

comprender la evolución que ha tenido la sistematización de tareas y el manejo de

la información que hoy en día damos como un hecho. En efecto, la misma tiene

como principal función el hecho de conseguir que innumerables trabajos que antes

ejercíamos de forma manual y con un alto costo sean ejecutados por un ordenador

con un ahorro significativo de tiempo. Por otro lado, dada la increíble cantidad de

información que hoy en día se maneja para distintas tareas, la programación es una

herramienta de enorme valor porque permite bucear en la misma con muchísima

facilidad. A lo largo de la historia, el hombre se ha visto en la obligación de realizar

21
un número constante de tareas para poder sobrevivir. Con el paso del tiempo y el

desarrollo de la tecnología, estas tareas fueron ejerciéndose cada vez con un mayor

grado de productividad. El proceso de mejora fue lento pero continuo hasta la

revolución industrial, momento en el cual vemos como existe una rápida sustitución

de actividades manuales por el trabajo llevado a cabo mediante máquinas. Así, los

bienes de capital fueron aumentando cada vez más la productividad, circunstancia

que todavía está en proceso de expansión. Con el desarrollo de las primeras

computadoras, ya no solo el trabajo físico pudo reemplazarse por máquinas, sino

también el trabajo intelectual. En efecto, las computadoras pueden realizar cada

vez con mayor poder cifras enormes de cálculos complejos que tienen la posibilidad

de procesar y generar datos para el beneficio humano. La programación, en

particular, es la adaptación de ese potencial de las computadoras a las necesidades

del hombre, generando distintos procesos automáticos que generan resultados que

sirven desde diversos aspectos, como por ejemplo el laboral, el estético, el lúdico,

etc. (Editorial, 2014)

1.6.3. Objetivos de la programación

- Corrección: un programa es correcto si hace lo que debe hacer.


- Claridad: es muy importante que el programa sea lo más claro y legible

posible para mejorar el mantenimiento del software. Cuando se acaba de

escribir el código del programa, se deben buscar errores y corregirlos.

- Eficiencia: debe consumir la menor cantidad de recursos posible.

Normalmente al hablar de eficiencia se suele hacer referencia al consumo

de tiempo y/o memoria.

22
III CAPITULO

23
ALGORITMOS

3.1. Introducción, definición y características

3.1.1. Introducción

El objetivo principal de la materia es el de enseñar a resolver problemas mediante

una computadora. Un programador de computadoras antes de nada es un

resolvedor de problemas. Por lo que para llegar a ser un programador eficaz se

necesita aprender a resolver problemas de un modo riguroso y sistemático. Por esto

la materia tiene como nombre Metodología de la programación. Antes de comenzar

con el tema vamos a considerar el significado de la palabra ALGORITMO esta

palabra se deriva de la traducción al latín de la palabra árabe ALKHÔWARÎZMI,

nombre de un matemático y astrónomo árabe que escribió un tratado sobre la

manipulación de números y ecuaciones en el siglo IX, titulado KITAB AL-JABR

W’ALMUGALABA, la palabra álgebra se derivó por su semejanza sonora de AL-

JABR. Etimológicamente la palabra problema deriva del griego PROBALLEIN y

significa “algo lanzado hacia delante”. Un problema es un asunto o conjunto de

cuestiones que se plantean para ser resueltas, la naturaleza de los problemas varia

con el ámbito o con el contexto donde están planteados: así existen problemas

matemáticos, físicos, filosóficos, etc. (Vásquez, 2008)

3.1.2. Definición

Un algoritmo se puede definir como una secuencia de instrucciones que

representan un modelo de solución para determinado tipo de problemas. O bien

como un conjunto de instrucciones que realizadas en orden conducen a obtener la

solución de un problema.

24
Para realizar un programa es conveniente el diseño o definición previa del

algoritmo. El diseño de algoritmos requiere creatividad y conocimientos profundos

de la técnica de programación. Luis Joyanes, programador experto y autor de muc

hos libros acerca de lógica y programación nos dice “en la ciencia de la computación

y en la programación, los algoritmos son más importantes que los lenguajes de

programación o las computadoras. Un lenguaje de programación es sólo un medio

para expresar un algoritmo y una computadora es sólo un procesador para

ejecutarlo”. Los algoritmos son independientes de los lenguajes de programación.

En cada problema el algoritmo puede escribirse y luego ejecutarse en un lenguaje

diferente de programación. El algoritmo es la infraestructura de cualquier solución,

escrita luego en cualquier lenguaje de programación. (Tiago, 2019)

3.1.3. Características:

Las propiedades de un algoritmo son las siguientes:

- El algoritmo debe ser preciso e indicar el orden de realización de cada paso.

- El algoritmo debe ser definido, si se sigue un algoritmo dos veces, se debe

obtener el mismo resultado cada vez.

- El algoritmo debe ser finito, si se sigue un algoritmo se debe terminar en

algún momento; o sea debe tener un número finito de pasos.

El algoritmo debe ser planteado como un sistema de información.

3.2. Clasificación y tipos de algoritmos

3.2.1. Clasificación

Se puede clasificar tomando en cuenta dos aspectos.

- Secuenciales

- Condicionales

25
- Repetitivos

3.2.2. Tipos

Un algoritmo es cualitativo cuando en sus pasos o instrucciones no están

involucrados cálculos numéricos. Las instrucciones para armar un aeromodelo,

para desarrollar una actividad física o encontrar un tesoro, son ejemplos de

algoritmos cualitativos.

- Tomar mate

- Utilizar una guía telefónica

- Cocinar siguiendo una receta

- Cambiar una llanta de automóvil

- Buscar una palabra en el diccionario

Los algoritmos cuantitativos involucran cálculos numéricos. Ejemplos:

- Solución de un factorial

- Solución de una ecuación de segundo grado

- Encontrar el mínimo común multiplicador.

3.3. Tecnicas de representación

Para la representación de un algoritmo, antes de ser convertido a lenguaje de

programación, se utilizan algunos métodos de representación escrita, gráfica o

matemática (Tiago, 2019).

Los métodos más conocidos son:

- Diagramación libre (Diagramas de flujo)

- Diagramas Nassi-Shneiderman

- Pseudocódigo

- Lenguaje natural (español, inglés, etc.)

26
- Fórmulas matemáticas

El lenguaje natural puede no ser suficientemente preciso, permitiendo

ambigüedades, obteniendo una descripción no del todo satisfactoria.

3.3.1. Diagramas de flujo

Un diagrama de flujo es la representación gráfica de un algoritmo. También se

puede decir que es la representación detallada en forma gráfica de cómo deben

realizarse los pasos en la computadora para producir resultados. Esta

representación gráfica se da cuando varios símbolos (que indican diferentes

procesos en la computadora), se relacionan entre si mediante líneas que indican el

orden en que se deben ejecutar los procesos. (Ver ANEXO 1)

Símbolos usados. (Ver ANEXO 2)

3.3.2. Diagrama Nassi – Shneiderman

El diagrama estructurado N-S también conocido como diagrama de chapin es como

un diagrama de flujo en el que se omiten las flechas de unión y las cajas son

contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como

en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. (Ver

ANEXO 3)

3.3.3. Pseudocódigo

Es la técnica que permite expresar la solución de un problema mediante un

algoritmo escrito en palabras normales de un idioma (por ejemplo, el español),

utilizando palabras imperativas. Es común encontrar en pseudocódigo palabras

como: Inicie, lea, imprima, sume, divida, calcule, finalice. No hay un léxico obligado

para el pseudocódigo, pero con el uso frecuente se han establecido algunos

estándares. Este es un ejemplo de un programa escrito en pseudocódigo: (Ver

27
ANEXO 4)

3.4. Etapas para la solución de un problema por medio del

computador

La principal razón para que las personas aprendan lenguajes de programación es

utilizar la computadora como una herramienta para la resolución de problemas. Dos

fases pueden ser identificadas en el proceso de resolución de problemas.

- Fase de resolución del problema.

- Fase de implementación (realización) en un lenguaje de programación.

(Ver ANEXO 5)

3.4.1. Definición del Problema

Esta fase está dada por el enunciado del problema, el cual requiere una definición

clara y precisa. Tomar en cuenta que la solución del problema debe estar en función

de lo que el problema requiera y no en función de lo que el programador quiera. Es

importante que se conozca lo que se desea que realice la computadora; mientras

esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.

3.4.2. Análisis del Problema

No existe un método general para la resolución de problemas, la resolución de un

problema es un proceso creativo donde el conocimiento, la habilidad y la

experiencia tiene un papel importante, el proceder de manera sistemática ayuda a

resolver un problema. Definición del problema Análisis del problema Diseño del

Algoritmo Verificación del Algoritmo Codificación del Algoritmo Ejecución del

programa Verificación del Programa Documentación Mantenimiento Tema 2 52

Metodología de la Programación I Al comenzar a abordar un problema hay que

28
tener en cuenta que para la mayoría de ellos hay muchas maneras de resolver y

pueden existir muchas soluciones, se plantean algunos criterios o estrategias

generales que se deben tomar en cuenta, las cuales son útiles en el análisis del

problema.

- Usar toda la información útil (no superficial) disponible en el enunciado del

problema.

- Hacer explícita las reglas y datos que aparezcan implícitos (en muchos

problemas numéricos se pueden utilizar reglas de la aritmética o álgebra)

- Profundizar en el problema considerado (emplear algún tipo de notación).

- Dividir el problema complejo en subproblemas más simples. que se pueden

resolver independientemente y después combinar sus soluciones.

- Otra forma de abordar el problema consiste en trabajar “hacia atrás” es decir

parir de la solución e intentar llegar al estado inicial.

El propósito del análisis del problema es ayudar al programador para llegar a una

cierta comprensión de la naturaleza del problema. Una buena definición del

problema junto con una descripción detallada de las especificaciones de entrada y

de salida, son los requisitos más importantes para llegar a una solución eficaz.

Anexo……………

Una vez que se ha comprendido lo que se desea de la computadora, es necesario

definir:

- Los datos de entrada.

- Cuál es la información que se desea producir (salida)

- Los métodos y fórmulas que se necesitan para procesar los datos.

Una recomendación muy practica es el que nos pongamos en el lugar de la

29
computadora y analicemos que es lo que necesitamos que nos ordenen y en que

secuencia para producir los resultados esperados.

Ejercicio. - Leer el radio de circulo y calcular e imprimir su superficie.

Definición del problema.

Calcular la superficie de una circunferencia

Análisis del problema

La entrada a este problema es el radio de la circunferencia y de tipo real.

La salida de este problema es la superficie que también es de tipo real.

3.4.3. Diseño del algoritmo

Un computador no tiene capacidad para solucionar problemas más que cuando se

le proporciona los sucesivos pasos a realizar. Estos pasos indican las instrucciones

a ejecutar por la máquina y se denomina algoritmo.

Las características de un buen algoritmo son:

- Debe tener un punto particular de inicio.

- Debe ser definido, no debe permitir dobles interpretaciones.

- Debe ser general, es decir, soportar la mayoría de las variantes que se

puedan presentar en la definición del problema

- Debe ser finito en tamaño y tiempo de ejecución.

Se pueden utilizar cualquier técnica de diseño de algoritmos, diseño descendente,

divide y vencerás.

Normalmente los pasos diseñados en un primer esbozo del algoritmo son

incompletos e indican solo unos pocos pasos, tras esta primera descripción estos

se amplían en una descripción más detallada con pasos específicos este proceso

se denomina refinamiento del algoritmo.

30
En el diseño de un algoritmo tomamos en cuenta el siguiente desarrollo. (Ver

ANEXO 6)

3.4.4. Verificación del algoritmo

Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que

realiza las tareas para las que ha sido diseñado y produce el resultado correcto y

esperado.

El modo más normal de comprobar un algoritmo es mediante la ejecución manual

(prueba de escritorio), usando datos significativos que abarquen todo el posible

rango de valores y anotando en una hoja de papel las modificaciones que se

producen en las diferentes fases hasta la obtención de los resultados.

3.4.5. Fase de Implementación

1Una vez que el algoritmo está diseñado, representado gráficamente mediante una

herramienta y verificado se debe pasar a la fase de codificación, traducir el

algoritmo a un determinado lenguaje de programación que deberá ser completada

con la ejecución y verificación de resultado en el computador.

3.4.6. Codificación

La codificación es la operación de escribir la solución del problema (de acuerdo a

la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones

detalladas, en un código reconocible por la computadora, la serie de instrucciones

detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de

programación o lenguaje de alto nivel.

3.4.7. Prueba y Depuración

Los errores humanos dentro de la programación de computadoras son muchos y

31
aumentan considerablemente con la complejidad del problema. El proceso de

identificar y eliminar errores, para dar paso a una solución sin errores se le llama

depuración.

La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de

la solución, por ello se debe considerar con el mismo interés y entusiasmo.

Resulta conveniente observar los siguientes principios al realizar una depuración,

ya que de este trabajo depende el éxito de nuestra solución.

3.4.8. Documentación

Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados,

procedimientos, dibujos o diagramas.

A menudo un programa escrito por una persona es usado por otra. Por ello la

documentación sirve para ayudar a comprender o usar un programa o para facilitar

futuras modificaciones (mantenimiento).

La documentación se divide en tres partes:

- Documentación Interna

- Documentación Externa

- Manual del Usuario

Documentación Interna: Son los comentarios o mensaje que se añaden al código

fuente para hacer más claro el entendimiento de un proceso.

Documentación Externa: Se define en un documento escrito los siguientes puntos:

- Descripción del Problema

- Nombre del Autor

- Algoritmo (diagrama de flujo o pseudocódigo)

- Diccionario de Datos

32
- Código Fuente (programa)

Manual del Usuario: Describe paso a paso la manera cómo funciona el programa,

con el fin de que el usuario obtenga el resultado deseado.

3.4.9. Mantenimiento

Se lleva acabo después de terminado el programa, cuando se detecta que es

necesario hacer algún cambio, ajuste o complementación al programa para que

siga trabajando de manera correcta. Para poder realizar este trabajo se requiere

que el programa este correctamente documentado.

33
IV CAPITULO

34
LENGUAJES DE PROGRAMACIÓN

4.1. Conceptos generales y sus respectivos procesos

4.1.1. Definición

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y

semánticas que definen su estructura y el significado de sus elementos y expresiones,

y es utilizado para controlar el comportamiento físico y lógico de una máquina. Aunque

muchas veces se usan los términos 'lenguaje de programación' y 'lenguaje informático'

como si fuesen sinónimos, no es del todo correcto, ya que los lenguajes informáticos

engloban a los lenguajes de programación y a otros más, como por ejemplo HTML

que es un lenguaje para el marcado de páginas web. Un lenguaje de programación

permite especificar de manera precisa sobre qué datos debe operar una computadora,

cómo estos datos deben ser almacenados o transmitidos y qué acciones debe tomar

bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que

intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede

con el lenguaje Léxico. (Brueghel, 2008)

4.1.2. Traductores de lenguaje: el proceso de traducción de un

programa

El proceso de traducción de un programa fuente escrito en un lenguaje de alto nivel a

un lenguaje máquina comprensible por la computadora, se realiza mediante

programas llamados “traductores”. Los traductores de lenguaje son programas que

traducen a su vez los programas fuente escritos en lenguajes de alto nivel a código

máquina. (Aguilar L. J., 2003)

Los traductores se dividen en compiladores e intérpretes.

35
- Intérpretes: Un intérprete es un traductor que toma un programa fuente, lo

traduce y, a continuación, lo ejecuta. Los programas intérpretes clásicos como

BASIC, prácticamente ya no se utilizan, más que en circunstancias especiales.

Sin embargo, está muy extendida la versión interpretada del lenguaje Smalltalk,

un lenguaje orientado a objetos puro. El sistema de traducción consiste en:

traducir la primera sentencia del programa a lenguaje máquina, se detiene la

traducción, se ejecuta la sentencia; a continuación, se traduce la siguiente

sentencia, se detiene la traducción, se ejecuta la sentencia y así sucesivamente

hasta terminar el programa. (Aguilar L. J., 2003)

- Compiladores: Un compilador es un programa que traduce los programas

fuente escritos en lenguaje de alto nivel a lenguaje máquina. La traducción del

programa completo se realiza en una sola operación denominada compilación

del programa; es decir, se traducen todas las instrucciones del programa en un

solo bloque. El programa compilado y depurado (eliminados los errores del

código fuente) se denomina programa ejecutable porque ya se puede ejecutar

directamente y cuantas veces se desee; sólo deberá volver a compilarse de

nuevo en el caso de que se modifique alguna instrucción del programa. De este

modo el programa ejecutable no necesita del compilador para su ejecución. Los

lenguajes compiladores típicos más utilizados son: C, C++, Java, C#, Pascal,

FORTRAN y COBOL. (Aguilar L. J., 2003)

4.1.3. La compilación y sus fases

La compilación es el proceso de traducción de programas fuente a programas objeto.

El programa objeto obtenido de la compilación ha sido traducido normalmente a

código máquina. Para conseguir el programa máquina real se debe utilizar un

programa llamado montador o enlazador (linker). El proceso de montaje conduce a un

36
programa en lenguaje máquina directamente ejecutable. (Prieto Espinoza & Prieto

Campos, 2005)

El proceso de ejecución de un programa escrito en un lenguaje de programación y

mediante un compilador suele tener los siguientes pasos:

- Escritura del programa fuente con un editor (programa que permite a una

computadora actuar de modo similar a una máquina de escribir electrónica) y

guardarlo en un dispositivo de almacenamiento (por ejemplo, un disco).

- Introducir el programa fuente en memoria.

- Compilar el programa con el compilador C.

- Verificar y corregir errores de compilación (listado de errores).

- Obtención del programa objeto.

- El enlazador (linker) obtiene el programa ejecutable.

- Se ejecuta el programa y, si no existen errores, se tendrá la salida del

programa.

4.2. Clasificación del campo de desarrollo

Los lenguajes de programación se pueden clasificar atendiendo a varios criterios, los

principales son:

- Según el nivel de abstracción

- Según la forma de ejecución

- Según el paradigma de programación que poseen cada uno de ellos

4.2.1. Según el nivel de abstracción

- Lenguajes de máquina y de bajo nivel: Los lenguajes de máquina están

escritos en códigos (código máquina) directamente inteligibles por la máquina

(computadora), siendo sus instrucciones cadenas binarias (0 y 1). “Lenguaje

de máquina” hace referencia al lenguaje específico de una computadora,

37
mientras que “código máquina” hace referencia al modo en que se escriben los

diferentes lenguajes de máquina. Los lenguajes de bajo nivel son lenguajes de

programación que se acercan al funcionamiento de una computadora. Los

lenguajes de más bajo nivel son los lenguajes de máquinas. A este nivel le

sigue el lenguaje ensamblador, ya que al programar en ensamblador se

trabajan con los registros de memoria de la computadora de forma directa. La

programación en un lenguaje de bajo nivel tiene como ventajas una mayor

adaptación al equipo, además de la posibilidad de obtener la máxima velocidad

con el mínimo uso de memoria. Sin embargo, tiene importantes inconvenientes,

como la imposibilidad de escribir código independiente de la máquina y la

mayor dificultad en la programación y en la comprensión de los programas.

(Prieto Lloris & Torres, 2005)

- Lenguajes de medio nivel: Minoritariamente en algunos textos se diferencian

algunos lenguajes como de medio nivel, como el lenguaje C, ya que tienen

ciertas características que los acercan a los lenguajes de bajo nivel, como

gestión de punteros de memoria y registros, pero con sintaxis, vocabulario y

gramática de alto nivel. (Prieto Lloris & Torres, 2005)

- Lenguajes de alto nivel y de muy alto nivel: Los lenguajes de programación

de alto nivel se caracterizan por expresar los algoritmos de una manera

adecuada a la capacidad cognitiva humana, en lugar de estar orientados a su

ejecución en las máquinas. Los lenguajes de alto y bajo nivel requieren de

conocimientos específicos de programación y del lenguaje concreto

(vocabulario, gramática y sintaxis) para realizar las secuencias de instrucciones

lógicas. Los lenguajes de muy alto nivel se crearon para que el usuario común

pudiese solucionar ciertos problemas sencillos de procesamiento de datos de

38
una manera más fácil y rápida. (Prieto Lloris & Torres, 2005)

4.2.2. Según la forma de ejecución

Los procesadores usados en las computadoras son capaces de entender y actuar

según lo indican programas escritos en un lenguaje fijo para cada arquitectura,

llamado lenguaje de máquina. (Brueghel, 2008)Todo programa escrito en un lenguaje

de alto nivel puede ser ejecutado de dos maneras:

- Lenguajes compilados: Antes de poder utilizarse el programa debe utilizarse

un traductor llamado “compilador” que se encarga de traducir (“compilar”) el

programa original (“código fuente”) al programa equivalente escrito en lenguaje

de máquina o ensamblador (“binario”). Los binarios son los programas

ejecutables y los únicos necesarios para el funcionamiento del programa.

(Brueghel, 2008)

- Lenguajes interpretados: Cada vez que se usa el programa debe utilizarse

un traductor llamado “intérprete” que se encarga de traducir (“interpretar”) las

instrucciones del programa original (“código fuente”) a código máquina según

van siendo utilizadas. Para el funcionamiento del programa siempre es

necesario disponer del código original y del intérprete. (Brueghel, 2008)

Diferencias entre lenguajes compilados e interpretados:

- Los lenguajes compilados se compilan una vez y se utilizan cuantas veces se

desee sin necesidad de volver a utilizar el compilador. Los lenguajes

interpretados son interpretados, valga la redundancia, cada vez que se

ejecutan y necesitan siempre del intérprete.

- Los compiladores analizan todo el programa y no generan resultados si no es

correcto todo el código. Los intérpretes analizan las instrucciones según las

necesitan y pueden iniciar la ejecución de un programa con errores e incluso

39
terminar correctamente una ejecución de un programa con errores siempre que

no haya sido necesario el uso de las instrucciones que contienen dichos

errores.

- Un compilador traduce cada instrucción una sola vez. Un intérprete debe

traducir una instrucción cada vez que la encuentra.

- Los binarios son compilados para una arquitectura específica y no pueden ser

utilizados en otras arquitecturas no compatibles (aunque pueden existir

distintos compiladores para generar binarios para diferentes arquitecturas). Un

lenguaje interpretado puede ser utilizado en cualquier arquitectura que

disponga de un intérprete sin necesidad de cambios.

- Los lenguajes compilados son más eficientes que los interpretados y además

permiten distribuir el programa en forma confidencial mediante binarios.

- Es más sencillo empaquetar lenguajes interpretados dentro de otros lenguajes,

como JavaScript dentro de HTML.

Para obtener las ventajas de ambos tipos de lenguajes algunos utilizan una

aproximación en dos fases. Primero el programa original (código fuente) es

precompilado a un binario confidencial, portable e interpretable. En una segunda fase

el binario precompilado es interpretado en cada arquitectura. Esta aproximación es la

que realiza por ejemplo Java. (Brookshear, 2005)

Hay que hacer notar que algunas aplicaciones permiten ser programadas con

lenguajes. Estos lenguajes no tienen por objeto solicitar acciones a la computadora

sino solicitar acciones a la aplicación sobre la que se ejecutan. Por tanto, aunque

algunos de estos lenguajes son lenguajes de programación, no son lenguajes de

programación de computadoras y por tanto no necesitan ser traducidos a código

máquina. Es el caso por ejemplo de SQL, un lenguaje declarativo de cuarta generación

40
diseñado para trabajar con bases de datos. Este lenguaje SQL es interpretado por el

motor de la Base de Datos, no por la CPU. (Brookshear, 2005)

4.2.3. Según el paradigma de programación

Un paradigma de programación representa un enfoque particular o filosofía para la

construcción del software. Si bien puede seleccionarse la forma pura de estos

paradigmas a la hora de programar, en la práctica es habitual que se mezclen, dando

lugar a la programación multiparadigma. (Brueghel, 2008)

Los diferentes paradigmas de programación son:

- Algorítmico, Imperativo o Por procedimientos: El más común y está

representado, por ejemplo, por C o por BASIC. Describe la programación en

términos del estado del programa y sentencias que cambian dicho estado. Los

programas imperativos son un conjunto de instrucciones que le indican al

computador cómo realizar una tarea. La implementación de hardware de la

mayoría de los computadores es imperativa ya que el hardware está diseñado

para ejecutar código de máquina que es imperativo.

- Declarativo o Predicativo: Basado en la utilización de predicados lógicos

(lógico) o funciones matemáticas (funcional), su objetivo es conseguir lenguajes

expresivos en los que no sea necesario especificar cómo resolver el problema

(programación convencional imperativa), sino qué problema se desea resolver.

Los intérpretes de los lenguajes declarativos tienen incorporado un motor de

inferencia genérico que resuelve los problemas a partir de su especificación. ○

Lógico: Un ejemplo es PROLOG. El mecanismo de inferencia genérico se

basa en los procedimientos de deducción de fórmulas válidas en un sistema

axiomático

Funcional: Representado por la familia de lenguajes LISP (en particular

41
Scheme), ML o Haskell. El mecanismo de inferencia genérico se basa en la

reducción de una expresión funcional a otra equivalente simplificada.

- Orientado a Objetos: Cada vez más utilizado, sobre todo en combinación con

el imperativo. De hecho, los lenguajes orientados a objetos permiten la

programación imperativa. Algunos ejemplos de lenguajes orientados a objetos

son C++, Java, Python. Usa objetos y sus interacciones para diseñar

aplicaciones y programas de computadora. Está basado en varias técnicas,

incluyendo herencia, modularidad, polimorfismo y encapsulamiento.

4.3. Java, Java Script y TypeScript

4.3.1. Java

Al hablar de Java, nos estamos refiriendo a tres cosas asociadas con la programación

de software: un lenguaje, una plataforma y un fenómeno. La eficacia y la flexibilidad

del lenguaje permitieron crear una plataforma tan extensa que tiene alcance lo mismo

para aplicaciones de propósito general en computadoras personales, para el

funcionamiento de dispositivos móviles y aparatos electrónicos, y hasta para sitios

web; este alcance ha creado un verdadero fenómeno tecnológico; tanto, que hoy por

hoy hay más de 4 500 millones de equipos que tienen instalado Java. Entonces, en

estricto sentido, esta tecnología sirve para hacer aplicaciones, virtualmente, para

cualquier componente que tenga un procesador de software. La plataforma para el

desarrollo de Java está dividida en tres ediciones: la estándar (JSE), la empresarial

(JEE) y la de dispositivos móviles (JME). La primera contiene, entre muchas otras

cosas, los elementos del lenguaje, los objetos para las interfaces gráficas y los

mecanismos de conexión a base de datos, que son lo primero que debe saberse para

desarrollar aplicaciones Java básicas. (Dávila, 2009)

La plataforma de Java se debe a que cumple plenamente con las exigencias de la

42
programación orientada a objetos (POO); esto obliga a que todo curso de Java tenga

una introducción a los fundamentos de este modelo de diseño de software o a que se

asuma su conocimiento. Sin embargo, hay una ambigüedad en la iniciación en Java

porque sus aplicaciones deben orientarse a objetos, pero para explicar lo esencial no

es necesario. De tal manera que se pueden crear programas sencillos sin seguir

ningún patrón, pero esto impide la compresión de la parte no trivial del lenguaje.

(Dávila, 2009)

4.3.2. Java Script

JavaScript es un lenguaje de programación que permite el script de eventos, clases y

acciones para el desarrollo de aplicaciones Internet entre el cliente y el usuario.

JavaScript permite con nuevos elementos dinámicos ir más allá de clicar y esperar en

una página Web. Los usuarios no leerán únicamente las páginas, sino que además

las páginas ahora adquieren un carácter interactivo. Esta interacción permite cambiar

las páginas dentro de una aplicación: poner botones, cuadros de texto, código para

hacer una calculadora, un editor de texto, un juego, o cualquier otra cosa que pueda

imaginarse. Los navegadores interpretan las sentencias de JavaScript incluidas

directamente en una página HTML, permitiendo la creación de aplicaciones similares

a los CGI. Aún no hay definición clara del scripting language ("lenguaje interpretado

de comandos"). A veces el término se usa para distinguir este tipo de lenguaje de los

lenguajes compilados como el C++. Quizá, algunos lenguajes como el C o C++

puedan ser usados para scripts de aplicaciones. JavaScript es en muchos aspectos

un lenguaje de programación parecido al C o C++. Como otros lenguajes script,

JavaScript extiende las capacidades de la aplicación con la que trabajan, así

JavaScript extiende la página Web más allá de su uso normal. Hay numerosas

maneras de dar vida al Web y dar flexibilidad al lenguaje. El único límite es la

43
imaginación. (Torres, 2008)

JavaScript está basado en un modelo orientado al WWW. Elementos de una página

como un botón o un cuadro de selección, pueden causar un evento que ejecutará una

acción. Cuando ocurre alguno de estos eventos se ejecuta una función en JavaScript.

Esta función está compuesta de varias sentencias que examinan o modifican el

contenido de la página Web, o hacen otras tareas para dar respuesta de algún modo

al evento. (Torres, 2008)

Por lo general, los comandos de un programa en JavaScript se dividen en 5

categorías:

- Variables y sus valores.

- Expresiones, que manipulan los valores de las variables.

- Estructuras de control, que modifican cómo las sentencias son ejecutadas.

- Funciones, que ejecutan un bloque de sentencias 30 Informática III

- Clases y arrays (vectores), que son maneras de agrupar datos.

4.3.3. Type Script

TypeScript es un lenguaje de programación moderno que permite crear aplicaciones

web robustas en JavaScript. TypeScript no requiere de ningún tipo de plugin, puesto

que lo que hace es generar código JavaScript que se ejecuta en cualquier navegador,

plataforma o sistema operativo. TypeScript es un "transpilador", es decir, un

compilador que se encarga de traducir las instrucciones de un lenguaje a otro, aquí lo

llamaremos también pre-compilador ya que este realmente intenta realizar las

funciones de un compilandor más las funciones de un traductor de instrucciones.

TypeScript es un lenguaje pre-compilado, es decir, un lenguaje el cual será compilado

finalmente a JavaScript, la versión del JavaScript en la cual será compilado junto con

otras configuraciones estará en el archivo tsconfig, TypeScript nos proporciona una

44
serie de ventajas sobre JavaScript, o ES2016, ya que tiene una serie de

características que ES* no suele tener. (Valverde Ramos & Mora de Fuentes, 2005)

Por ejemplo:

- Interfaces Clases

- (Clases de verdad)

- Es fuertemente tipado

Aparte de estas características TS tiene más características, pero quizás la más

importante sea que gracias a el tiempo de debuggin es reducido ya que, para poder

debuggear código JavaScript en la actualidad, este tiene que ser ejecutado en la

aplicación y se le debe sumar el tiempo que se tarde en la detección del fallo, mientras

que con TypeScript el código simplemente no será compilado y nos dará un error en

la compilación diciéndonos donde se encuentra el error. En lo referente a las

interfaces, estas ni siquiera serán escritas en el código final, simplemente será el

mismo transpilador de TypeScript el que se encargará de que el "Contrato" sea

cumplido, las interfaces en TypeScript pueden ser heredadas esto lo veremos más

adelante. TypeScript es fuertemente tipado ya que requiere de que se le especifiquen

los tipos de datos que se quieren utilizar (en caso de que no se especifiquen serán de

tipo ANY, pero eso lo veremos más adelante). (Valverde Ramos & Mora de Fuentes,

2005)

4.4. Ruby

Ruby es un “lenguaje de guiones (scripts) para una programación orientada a objetos

rápida y sencilla”. ¿Qué significa esto? (Aguilar M. , 2009)

Lenguaje de guiones interpretado:

- Posibilidad de realizar directamente llamadas al sistema operativo

- Potentes operaciones sobre cadenas de caracteres y expresiones regulares

45
- Retroalimentación inmediata durante el proceso de desarrollo

Rápido y sencillo:

- Son innecesarias las declaraciones de variables

- Las variables no tienen tipo

- La sintaxis es simple y consistente

- La gestión de la memoria es automática

Programación orientada a objetos:

- Todo es un objeto

- Clases, herencia, métodos, ...

- Métodos singleton

- Mixins por módulos

- Iteradores y cierres

También:

- Enteros de precisión múltiple

- Modelo de procesamiento de excepciones

- Carga dinámica

- Hilos

4.5. Phyton

Python es un lenguaje de programación creado por Guido van Rossum a principios de

los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses “Monty

Python”. Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece

un código legible. Se trata de un lenguaje interpretado o de script, con tipado dinámico,

fuertemente tipado, multiplataforma y orientado a objetos. (Duque, 2013)

- Lenguaje interpretado o de script: Un lenguaje interpretado o de script es


aquel que se ejecuta utilizando un programa intermedio llamado intérprete, en

46
lugar de compilar el código a lenguaje máquina que pueda comprender y

ejecutar directamente una computadora (lenguajes compilados). La ventaja de

los lenguajes compilados es que su ejecución es más rápida. Sin embargo, los

lenguajes interpretados son más flexibles y más portables. Python tiene, no

obstante, muchas de las características de los lenguajes compilados, por lo que

se podría decir que es semi interpretado. En Python, como en Java y muchos

otros lenguajes, el código fuente se traduce a un pseudo código máquina

intermedio llamado bytecode la primera vez que se ejecuta, generando archivos

.pyc o .pyo (bytecode optimizado), que son los que se ejecutarán en sucesivas

ocasiones. (Duque, 2013)

- Tipado dinámico: La característica de tipado dinámico se refiere a que no es

necesario declarar el tipo de dato que va a contener una determinada variable,

Python para todos 8 sino que su tipo se determinará en tiempo de ejecución

según el tipo del valor al que se asigne, y el tipo de esta variable puede cambiar

si se le asigna un valor de otro tipo. (Duque, 2013)

- Fuertemente tipado: No se permite tratar a una variable como si fuera de un

tipo distinto al que tiene, es necesario convertir de forma explícita dicha variable

al nuevo tipo previamente. Por ejemplo, si tenemos una variable que contiene

un texto (variable de tipo cadena o string) no podremos tratarla como un número

(sumar la cadena “9” y el número 8). En otros lenguajes el tipo de la variable

cambiaría para adaptarse al comportamiento esperado, aunque esto es más

propenso a errores. (Duque, 2013)

- Multiplataforma: El intérprete de Python está disponible en multitud de

plataformas (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) por lo

que si no utilizamos librerías específicas de cada plataforma nuestro programa

47
podrá correr en todos estos sistemas sin grandes cambios. (Duque, 2013)

- Orientado a objetos: La orientación a objetos es un paradigma de

programación en el que los conceptos del mundo real relevantes para nuestro

problema se trasladan a clases y objetos en nuestro programa. La ejecución

del programa consiste en una serie de interacciones entre los objetos. Python

también permite la programación imperativa, programación funcional y

programación orientada a aspectos. (Duque, 2013)

Python es un lenguaje que todo el mundo debería conocer. Su sintaxis simple, clara y

sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de librerías

disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una

aplicación en Python sea sencillo, muy rápido y, lo que es más importante, divertido.

La sintaxis de Python es tan sencilla y cercana al lenguaje natural que Introducción 9

los programas elaborados en Python parecen pseudocódigo. Por este motivo se trata

además de uno de los mejores lenguajes para comenzar a programar. Python no es

adecuado sin embargo para la programación de bajo nivel o para aplicaciones en las

que el rendimiento sea crítico. Algunos casos de éxito en el uso de Python son Google,

Yahoo, la NASA, Industrias Light & Magic, y todas las distribuciones Linux, en las que

Python cada vez representa un tanto por ciento mayor de los programas disponibles.

(Duque, 2013)

4.6. C. C++ y C#

4.6.1. 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,

48
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 sí 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. 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 (Esteban, 2010)

Por ejemplo, la expresión siguiente es válida en C:

float a; /*Declaro una variable para números reales*/

int b; /*Declaro otra variable para número enteros*/

b=a; /*Asigno a la variable para entera el número real*/

Todo programa de C consta, básicamente, de un conjunto de funciones, y una función

llamada main, la cual es la primera que se ejecuta al comenzar el programa,

llamándose desde ella al resto de funciones que compongan nuestro programa. Desde

su creación, surgieron distintas versiones de C, que incluían unas u otras

características, palabras reservadas, etc. Este hecho provoco la necesidad de unificar

49
el lenguaje C, y es por ello que surgió un standard de C, llamado ANSI-C, que declara

una serie de características, etc., que debe cumplir todo lenguaje C. Por ello, y dado

que todo programa que se desarrolle siguiendo el standard ANSI de C será fácilmente

portable de un modelo de ordenador a otro modelo de ordenador, y de igual forma de

un modelo de compilador a otro, en estos apuntes explicaremos un C basado en el

standard ANSI-C. El lenguaje C posee un número reducido de palabras reservadas

(tan solo 32) que define el standard ANSI-C. (Esteban, 2010)

Estas palabras reservadas pueden verse en la tabla siguiente:

4.6.2. C++

C++ es un lenguaje de programación, creado a mediados de 1980 por Bjarne

Strousstrup, como extensión del lenguaje C. Este lenguaje abarca tres paradigmas de

la programación:

- Programación Estructurada

- Programación Genérica

- Programación Orientada a Objetos En la actualidad,

C++ es un lenguaje versátil, potente y general. Su éxito entre los programadores le ha

llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones, ya

sea en Windows o GNU Linux, que es el sistema operativo en el cual nos basaremos

C++ en un entorno Linux: (Flores, 2008)

Los programas se pueden escribir en cualquier editor de textos de GNU, entre ellos

se encuentran emacs, vim, kate, gedit, nan, guardando dichos archivos con extensión

.cpp, los cuales serán compilados en GNU/linux utilizando el compilador GNU de C++,

llamado gcc que puede compilar C, C++, y que además se apega al estándar ANSI,

permitiendo la portabilidad de estos códigos. Dicho compilador se invoca con el

comando gcc. (Flores, 2008)

50
Para compilar ponemos la siguiente línea en una terminal previamente ubicada en el

directorio que contiene nuestro archivo:

g++ programa.cpp -o programa.out

-o indica el nombre del archivo de salida el cual será el ejecutable de nuestro

proyecto. Luego para ejecutar, escribimos sobre la línea de comandos: ./programa.out

y entonces podremos ejecutar nuestro programa. Cuando creamos pequeños

programas la compilación de ´estos son muy fácil, pero cuando se trabaja con

proyectos grandes, con varios archivos fuente la compilación resulta más difícil, por lo

que Linux proporciona la utilería make de GNU, el cual busca un archivo make donde

encontrara toda la información que necesita para crear el ejecutable, si encuentra el

archivo busca la palabra makefile o Makefile, que son nombres predeterminados. Los

archivos make contienen información acerca de la compilación y enlace del programa,

con una sintaxis muy específica. Un makefile se define como una lista de normas y

dependencias con sus correspondientes comandos para crear objetivos, utilizando

dichas normas y dependencias. (Flores, 2008)

4.6.3. C#

C# o C Sharp es un lenguaje de programación que está incluido en la Plataforma .NET

y corre en el Lenguaje Común en Tiempo de Ejecución (CLR, Common Language

Runtime). El primer lenguaje en importancia para el CLR es C#, mucho de lo que

soporta la Plataforma .NET está escrito en C#. (Bell & Parr, 2001)

C# intenta ser el lenguaje base para escribir aplicaciones .NET

C# deriva de C y C++, es moderno, simple y enteramente orientado a objetos,

simplifica y moderniza a C++ en las áreas de clases, namespaces, sobrecarga de

métodos y manejo de excepciones. Se elimino la complejidad de C++ para hacerlo

más fácil de utilizar y menos propenso a errores. C# es “case sensitive”, es decir, que

51
distingue mayúsculas de minúsculas. HolaMundo es diferente a holamundo.

Sin duda C# es uno de los mejores lenguajes de programación que podemos aprender

y usar en el siglo XXI, (Bell & Parr, 2001)

Debido a que:

- C# continúa con la tradición de la familia de lenguajes que incluye a C, C++ y

Java.

- Los lenguajes orientados a objetos representan la metodología más reciente y

exitosa en materia de programación. C# es completamente orientado a objetos.

- C# es un lenguaje de propósito general: todo lo que Visual Basic, C++ y Java

pueden hacer, es posible en C#.

- C# obtiene la mayor parte de su funcionalidad de una biblioteca de

componentes proporcionados por el marco de trabajo (Framework) de .NET.

4.7. Visual Basic. Net

Visual Basic .NET (VB.NET) es un lenguaje de programación que surgió en el año

1991. Es un lenguaje orientado a objetos que permite crear interfaz de usuario

utilizando formulario y controles a los cuales se les puede escribir código para definir

el comportamiento de una aplicación. Visual Basic .NET contiene una serie de

instrucciones, funciones y palabras clave que están relacionados con la interfaz

gráfica de Windows. (Bermúdez, 2017)

Microsoft Visual Studio .NET

Es un entorno de desarrollo integrado (Integrated Development Environment IDE) que

ayuda a diseñar, desarrollar, depurar e implementar con rapidez soluciones basadas

en el marco de trabajo de .NET. Desde allí se pueden crear soluciones y proyectos

que contendrán los elementos básicos de una aplicación, conexiones de datos,

carpetas y archivos necesarios para crear aplicaciones de consola, aplicaciones

52
móviles. (Bermúdez, 2017)

NET FrameWork

Es un componente integral de Windows que proporciona un entorno para varios

lenguajes basado en estándares. El diseño de .NET FrameWork trata de cumplir los

siguientes objetivos:

- Proporcionar un entorno de programación orientado a objetos.

- Ofrecer un entorno de ejecución de código que permita la ejecución segura del

mismo.

- Proporcionar un entorno que elimine los problemas de rendimiento.

- Ofrecer un entorno coherente entre lenguajes de programación diferentes

basados en Windows o Web.

- Ofrecer estándares para que el código de .NET FrameWork se pueda integrar

con otros tipos de código.

NET FrameWork se compone de dos partes principales: Common Languange

Runtime (CRL) y una biblioteca de clases.

Common Language Runtime proporciona servicios estándares de motor en tiempo

de ejecución, el código administrado nunca se interpreta. Una característica

denominada compilación JIT (Just-In-Time) permite ejecutar todo el código

administrado en el lenguaje de máquina nativo del sistema en el que se ejecuta. Por

otro lado, el administrador de memoria evita que la memoria se pueda fragmentar.

(Bermúdez, 2017)

Para entender el funcionamiento de .NET FrameWork, es necesario conocer los

siguientes conceptos:

- Clase: entidad de programación con un nombre que consta de un conjunto

común de métodos, propiedades y atributos. Por ejemplo, Form es una de las

53
clases del espacio de nombres System.Windows. Forms que se utiliza para

crear formularios Windows Forms.

- Espacio de nombres: identifica una colección de clases relacionadas y/u otros

espacios de nombre del .NET FrameWork. Algunos ejemplos:

System

System.Windows. Forms

La biblioteca de clases es una completa colección orientada a objetos reutilizables

que se pueden emplear para desarrollar aplicaciones de interfaz gráfica de usuario o

de línea de comandos hasta las aplicaciones ASP.NET. (Bermúdez, 2017)

La biblioteca de clases permite administrar las cadenas, recolectar datos, conectar

bases de datos, permitir el acceso a archivos y desarrollar las siguientes aplicaciones

y servicios:

- Aplicaciones de consola.

- Aplicaciones Windows Forms.

- Aplicaciones Windows Presentation Foundation (WPF).

- Aplicaciones ASP.NET.

- Servicios Web.

4.8. Shell (BASH) y Perl

4.8.1. Shell (BASH)

El intérprete de mandatos o "Shell" es la interfaz principal entre el usuario y el sistema,

permitiéndole a aquél interactuar con los recursos de éste. El usuario introduce sus

órdenes, el intérprete las procesa y genera la salida correspondiente. Por lo tanto, un

intérprete de mandatos de Unix es tanto una interfaz de ejecución de órdenes y

utilidades, como un lenguaje de programación, que admite crear nuevas órdenes –

denominadas guiones o “Shell scripts”–, utilizando combinaciones de mandatos y

54
estructuras lógicas de control, que cuentan con características similares a las del

sistema y que permiten que los usuarios y grupos de la máquina cuenten con un

entorno personalizado. En Unix existen 2 familias principales de intérpretes de

mandatos: los basados en el intérprete de Bourne (BSH, KSH o BASH) y los basados

en el intérprete C (CSH o TCSH). (Labrador, 2005)

Las principales características del intérprete BASH son:

- Ejecución síncrona de órdenes (una tras otra) o asíncrona (en paralelo). ·

Distintos tipos de redirecciones de entradas y salidas para el control y filtrado

de la información.

- Control del entorno de los procesos.

- Ejecución de mandatos interactiva y desatendida, aceptando entradas desde

teclado o desde ficheros.

- Proporciona una serie de órdenes internas para la manipulación directa del

intérprete y su entorno de operación.

- Un lenguaje de programación de alto nivel, que incluye distinto tipos de

variables, operadores, matrices, estructuras de control de flujo, entrecomillado,

sustitución de valores y funciones.

- Control de trabajos en primer y segundo plano.

- Edición del histórico de mandatos ejecutados.

- Posibilidad de usar una "shell" para controlar el entorno del usuario.

4.8.2. Perl

Perl significa Practical Extraction and Report Language, algo así como lenguaje

práctico de extracción y de informes. Es un lenguaje creado por Larry Wall (quien, por

cierto, es uno del más conocidos en la actualidad) con el objetivo principal de

simplificar las tareas de administración de un sistema UNIX; en realidad hoy en día

55
(en su versión 5.005, y posiblemente pronto, la 5.6) se ha convertido en un lenguaje

de propósito general, y una de las principales herramientas de un buen internetero y

de un buen webmaster. Larry Wall es el tipo de personas que han hecho de la Internet

lo que es ahora: un lugar con libre intercambio de ideas, donde los que saben de algo,

los gurus, ayudan al que no sabe. Larry solía ser un habitual del grupo de use net

comp. lang. Perl, y era habitual que el propio Larry contestara a una pregunta de un

principiante o a un error con un parche para solucionarlo. Hoy en día,

desgraciadamente, ya no es tan común, porque el esfuerzo de trabajar con la

comunidad Perl es tal que no le deja mucho tiempo. Perl es un lenguaje que hereda

ciertas estructuras de los intérpretes de comandos de UNIX, especialmente el csh, y

de otras utilidades estándar, como awk y sed. Aparte de esto, está diseñado para

hacer todo lo que hacen cualquiera de ellos y todos ellos juntos, y la mayoría de las

veces de forma más simple, comprensible y fácil de depurar (aunque algunas veces

no muy fácil de entender). Si alguna vez habeis tratado de escribir un script para el

Shell, sabéis lo que quiero decir. Perl es un lenguaje interpretado, aunque en realidad,

el intérprete de Perl, como todos los intérpretes modernos, compila los programas

antes de ejecutarlos. Por eso se habla de scripts, y no de programas, concepto referido

principalmente a programas compilados al lenguaje máquina nativo del ordenador y

sistema operativo en el que se ejecuta. (Santana, 2014)

Aplicaciones del lenguaje Perl:

Prácticamente, sirve para todo. Todas las tareas de administración de UNIX se

pueden simplificar con un programa en Perl. Se usa también para tratamiento y

generación de ficheros de texto. También hay proyectos completos y complejos

escritos en Perl, pero son los menos. La forma del lenguaje facilita la programación

rápida y sucia, el hacer un programa rápido para que funcione. Esto hace también que

56
se utilice para hacer prototipos rápidos de algún algoritmo que queremos ver funcionar

antes que tomarnos la molestia de programarlo en un lenguaje más eficiente, como el

c++. Y últimamente ha encontrado su aplicación en la escritura de CGI (common

gateway interface), o scripts ejecutados desde páginas de la World Wide Web.

(Santana, 2014)

La mayoría de los programas que se encuentra uno para procesar formularios en la

Internet llevan la extensión .pl, lo cual denota que están escritos en Perl. En general,

los programas en Perlse ejecutan en el servidor, como todos los programas CGI, a

diferencia de otros programas ejecutados por el cliente (generalmente un navegador

como el Internet Explorer de Microsoft o el Navegador), como aquellos escritos en

JavaScript o Java. Existen además extensiones al Apache (mod_perl) que permiten

ejecutar directamente programas en Perl desde el servidor de HTTP. Mediante una

serie de módulos adicionales, tales como el DBD o el ODBC, Perl puede servir para

acceder a bases de datos, desde BD gratuitas como MySQL hasta el Microsoft SQL

server usando ODBC. Por supuesto, esto se puede combinar con un CGI para hacer

aplicaciones tales como un carrito de la compra para un sitio web. Pero esto se deja

como ejercicio para el lector. (Santana, 2014)

4.9. Swift, R y Go

4.9.1. Swift

Swift es un lenguaje de programación creado por Apple para el desarrollo de

aplicaciones en iOS, OS X, Apple TV y Watch OS. Tras su excepcional acogida por

parte de los desarrolladores y su evolución durante 2015, la compañía de la manzana

mordida anunció el año pasado que éste pasaría a ser de código abierto, una noticia

que produjo muchos elogios hacia la empresa. (Frutos, 2016)

Desarrollado originalmente por Chris Lattner, director del área de herramientas de

57
desarrollo de Apple, Swift es un potente lenguaje de programación que permite a una

amplia comunidad de desarrolladores contribuir, incluso sin tener experiencia previa

de programación, con nuevas características y optimizaciones. Swift es un lenguaje

rápido y eficaz que proporciona información en tiempo real y se integra a la perfección

con código escrito en Objective-C. Así, los desarrolladores pueden ofrecer más

seguridad, ahorrar tiempo y crear apps aún mejores. (Frutos, 2016)

Swift es gratis, de código abierto y está disponible para un gran número de

desarrolladores, profesores y estudiantes bajo la licencia libre de Apache 2.0.

Swift Playgrounds, la app de iPad para aprender a programar De hecho, Apple

proporciona archivos binarios para OS X y Linux que compilan código para iOS, OS X,

watchOS, tvOS y Linux. Y como quieren que Swift sea cada vez más potente, han

creado una comunidad donde cualquiera puede contribuir directamente al código

fuente. (Frutos, 2016)

4.9.2. R

R fue creado en 1992 en Nueva Zelanda por Ross Ihaka y Robert Gentleman (Ihaka

[1998]). La intención inicial con R era hacer un lenguaje didáctico, para ser utilizado

en el curso de Introducción a la Estadística de la Universidad de Nueva Zelanda. Para

ello decidieron adoptar la sintaxis del lenguaje S desarrollado por Bell Laboratories.

Como consecuencia, la sintaxis es similar al lenguaje S, pero la semántica, que

aparentemente es parecida a la de S, en realidad es sensiblemente diferente, sobre

todo en los detalles un poco más profundos de la programación. (Sergio Santana &

Mateos Farfán, 2014)

R es un lenguaje de programación interpretado, de distribución libre, bajo Licencia

GNU, y se mantiene en un ambiente para el cómputo estadístico y gráfico. Este

software corre en distintas plataformas Linux, Windows, MacOS, e incluso en

58
PlayStation. El término ambiente pretende caracterizarlo como un sistema totalmente

planificado y coherente, en lugar de una acumulación gradual de herramientas muy

específicas y poco flexibles, como suele ser con otro software de análisis de datos. El

hecho que R sea un lenguaje y un sistema es porque forma parte de la filosofía de

creación1, como lo explica John Chambers (Chambers and Hastie [1991]), cito:

“Buscamos que los usuarios puedan iniciar en un entorno interactivo, en el que no se

vean, conscientemente, a ellos mismos como programadores. Conforme sus

necesidades sean más claras y su complejidad se incremente, deberían gradualmente

poder profundizar en la programación, es cuando los aspectos del lenguaje y el

sistema se vuelven más importantes.”

Por esta razón, en lugar de pensar de R como un sistema estadístico, es preferible

verlo como un ambiente en el que se aplican técnicas estadísticas. Por ejemplo, en

este libro nos inclinaremos hacia el lado de la programación (lenguaje) más que tocar

los aspectos estadísticos. Esto con la finalidad de ampliar la gama de aplicaciones en

el tratamiento de datos. (Sergio Santana & Mateos Farfán, 2014)

Anexo……………. Imagen

4.9.3. Go

Go es un lenguaje de programación de sistemas que, según ´ un la p ´ agina oficial,

es expresivo, ´ concurrente y tiene recolector de basura. Además, presume de ser un

lenguaje simple, rápido, seguro, divertido y open source. Go sigue una sintaxis tipo C,

con lo que, si se ha programado anteriormente en dicho lenguaje, la curva de

aprendizaje de este nuevo lenguaje de programación es mucho m as suave, aunque

la diferencia entre ambos es bastante notable desde el primer momento. (Moreno,

2010)

Las principales características de Go son:

59
- Es un lenguaje compilado muy, muy rápido.

- Usa una codificación UTF-8 para todos los ficheros fuente, es decir, permite

usar caracteres latinos, chinos, etc.

- Usa tipado fuerte y memoria virtual segura. Posee punteros, pero no aritmética

de los mismos.

- Es un lenguaje 100 % concurrente.

- Posee hasta un servidor web empotrado.

- Es Open Source, con lo que cualquier persona puede colaborar en su

desarrollo aportando ideas o implementando nuevas librerías.

Go es un proyecto promovido por cinco personas: Rob Pike, Robert Griesemer y Ken

Thompson, en primera instancia, a los que se unieron posteriormente Russ Cox e Ian

Lance Taylor. Todos los anteriormente citados, forman parte de GoogleTM. Varios de

ellos desarrollaron el Sistema Operativo Plan 9 y han retomado muchas de las ideas

originales para la creación de este nuevo lenguaje de programación. (Moreno, 2010)

60
V CAPITULO

61
Programando con Python
En el capítulo anterior se menciona una lista de lenguajes de programación, de las

cuales se toma a Python por ser un lenguaje bastante interactivo, que nos permitirá

crear una infinidad de aplicaciones, diseños de página web, etc. Se desarrolla desde

ejercicios básicos hasta el punto de crear programas básicos que nos permitirán

solucionar problemas cotidianos. (Ver ANEXO 7)

5.1. Ejercicios Prácticos- Básicos

5.1.1. Problema 01

- Definir una función max() y min() que tome como argumento dos números y

devuelva el mayor y menor de ellos. (Es cierto que Python tiene una función

max() incorporada, pero hacerla nosotros mismos es un muy buen ejercicio.

Solución:

(Ver ANEXO 8)

5.1.2. Problema 02

- Definir una función max y min_de_tres (), que tome tres números como

argumentos y devuelva el mayor y menor de ellos.

Solución:

(Ver ANEXO 9)

5.1.3. Problema 03

- Definir una función que calcule la longitud de una lista o una cadena dada.

(Es cierto que Python tiene la función len () incorporada, pero escribirla por

nosotros mismos resulta un muy buen ejercicio.

Solución:

(Ver ANEXO 10)

62
5.1.4. Problema 04

- Escribir una función que tome un carácter y devuelva True si es una vocal, de

lo contrario devuelve False.

Solución:

(Ver ANEXO 11)

5.1.5. Problema 05

- Escribir una función sum () y una función multip () que sumen y multipliquen

respectivamente todos los números de una lista. Por ejemplo: sum ([1,2,3,4])

debería devolver 10 y multip ([1,2,3,4]) debería devolver 24.

Solución:

(Ver ANEXO 11)

5,1,6, Problema 06

- Definir una función inversa () que calcule la inversión de una cadena. Por

ejemplo, la cadena "estoy probando" debería devolver la cadena "odnaborp

yotse"

Solución:

(Ver ANEXO 12)

5.1.7. Problema 07

- Escribir una función max_in_list() que tome una lista de números y devuelva el

más grande.

Solución:

(Ver ANEXO 13)

5.1.8. Problema 08

- Definir una función superposicion() que tome dos listas y devuelva True si

63
tienen al menos 1 miembro en común o devuelva False de lo contrario.

Escribir la función usando el bucle for anidado.

Solución:

(Ver ANEXO 14)

5.1.9. Problema 09

- Definir una función generar_n_caracteres () que tome un entero n y devuelva

el carácter multiplicado por n. Por ejemplo: generar_n_caracteres (5, "x")

debería devolver "xxxxx".

Solución:

(Ver ANEXO 15)

5.1.10. Problema 10

- Definir un histograma procedimiento() que tome una lista de números enteros

e imprima un histograma en la pantalla. Ejemplo: procedimiento([4, 9, 7])

debería imprimir lo siguiente:

Solución:

(Ver ANEXO 16)

64
CONCLUSIONES

PRIMERO: No todas las carreras universitarias están obligadas a llevar cursos de

programación, más bien como señalan los expertos que esto es indispensable cuando

estos se vayan a desempeñar en sus centros de trabajo, les permitirá un mejor

desenvolvimiento en esta era del auge de la tecnología.

SEGUNDO: Conocer aspectos de historia y conceptos generales que abordan la

programación nos permitirá tener bases solidas para crear e interpretar código en los

distintos lenguajes existentes.

TERCERO: Los algoritmos nos permiten ordenar y representar secuencias lógicas y

todos estos nos llevan a un resultado, la aplicación para su desarrollo. Es de gran

importancia, nos permitirá posteriormente diseñar programas o crear diferentes

soluciones a ciertos problemas planteados y que a la vez los flujogramas hacen que

sean entretenidos.

CUARTO: Para cada gusto y necesidad existe un lenguaje de programación, desde

las mas simples hasta la mas complejas, todas estas con un fin, solucionar un

problema. En esta ocasión se usa Python como lenguaje de practica que nos permitió

solucionar problemas simples aplicables a la vida cotidiana de cada uno de nosotros.

65
BIBLIOGRAFIA

Aguilar, L. J. (2003). Fundamentos de programación. Algoritmos, estructuras de

datos y objetos. Madrid: McGrawn-Hill.

Aguilar, M. (08 de Abril de 2009). Manuales Lucas. Obtenido de

http://es.tldp.org/Manuales-LuCAS/doc-guia-usuario-ruby/guia-usuario-

ruby.pdf

Anasagasti, P. d. (2002). Fundamento de los computadores. Thomson.

Aranda, V. T. (2005). Historia y evolución de los lenguajes de programación. Castilla:

Santiana.

Aranda, V. T. (2015). Historia y evolución de los lenguajes de programación. Castilla:

Santiana.

Bell, D., & Parr, M. (2001). C# PARA estudiantes. México: Pearson.

Bermúdez, L. C. (2017). GUÍA DE ESTUDIO TEORICA-PRACTICA Visual Basic.Net.

Montevideo: lecasabe.

Brookshear, J. (2005). Computer Science. Boston (USA): Pearson/Addison-Wesley.

Brueghel, P. (2008). Lenguajes de porgramación. España: Guimi.

Dávila, J. C. (2009). Curso de Java: Desde cero hasta conexiones de datos MySQL.

Mexico: Training&Consulting.

Duque, R. G. (2013). PYTHON PARA TODOS. San Lorenzo. Obtenido de

http://www.utic.edu.py/citil/images/Manuales/Python_para_todos.pdf

Editorial. (07 de Octubre de 2014). Importancia. Obtenido de

https://www.importancia.org/programacion-informatica.php

Esteban, E. V. (2010). Lenguaje C. Valencia. Obtenido de

https://informatica.uv.es/estguia/ATD/apuntes/laboratorio/Lenguaje-C.pdf

Esteve, J. (27 de Noviembre de 2018). XATAKA. Obtenido de

66
https://www.xataka.com/otros/debe-ensenarse-programacion-en-todas-las-

carreras-de-la-universidad

Flores, L. I. (2008). Manual de Programaci´on en Lenguaje C++. México. Obtenido

de

https://paginas.matem.unam.mx/pderbf/images/documentos/mprogintc%2B%

2B.pdf

Frutos, A. M. (07 de Julio de 2016). COMPUTERHOY. Obtenido de

https://computerhoy.com/noticias/software/que-es-swift-48026

Gimenez, D. (26 de Septiembre de 2016). Programa Videojuegos. Obtenido de

https://programavideojuegos.blogspot.com/2013/04/10-conceptos-basicos-de-

programacion.html

Labrador, R. M. (2005). PROGRAMACIÓN AVANZADA EN. Sevilla. Obtenido de

http://www.informatica.us.es/~ramon/articulos/Programacion-BASH.pdf

Luzardo, A. M. (24 de Abril de 2017). ¿Que lenguaje de programación deberian

enseñar en las universidades? Obtenido de ENTER.CO:

https://www.enter.co/cultura-digital/ciencia/cual-lenguaje-de-programacion-

deberian-ensenar-las-universidades/

Marcos, M. (13 de Noviembre de 2018). Programación. (J. Esteve, Entrevistador)

Moreno, R. C. (2010). Curso de GO. Madrid: ACM.

Peinado, F. (13 de Noviembre de 2018). Programación. (J. Esteve, Entrevistador)

Prieto Espinoza, A., & Prieto Campos, B. (2005). Conceptos de Informática. Madrid:

McGraw-Hill.

Prieto Lloris, A. A., & Torres. (2005). Introducción a la informática. Madrid: McGraw-

Hill.

Robles, J. (24 de Marzo de 2015). TODO EL MUNDO DEBERÍA APRENDER A

67
PROGRAMAR, Y TÚ? Obtenido de Negocios Caninos:

https://www.negocioscaninos.com/todo-el-mundo-deberia-aprender-a-

programar-y-tu/

Rosas, M. V. (2015). El Pensamiento Computacional en el Ámbito Universitario. En

Pensamiento Computacional (pág. 699). San Luis.

Santana, O. (05 de Junio de 2014). Tutoriales Perl. Obtenido de

http://es.tldp.org/Tutoriales/PERL/tutoperl-print.pdf

Sergio Santana, J., & Mateos Farfán, E. (2014). El arte de programar en R Un

lenguaje para la estadística. Progreso: Instituto Mexicano de Tecnología del

Agua.

Tiago, H. (2019). Algoritmos. Corrientes.

Torres, S. (2008). Informática III. Vasco: Eibar.

Valverde Ramos, E., & Mora de Fuentes, P. H. (2005). Type Script. España.

Obtenido de http://fanta.56k.es/libros/tecnicos/Manual-TypeScript.pdf

Vásquez, C. B. (06 de Julio de 2008). Metodologia de la Administración. Lima.

Obtenido de

https://moodle2.unid.edu.mx/dts_cursos_mdl/lic/IC/EA/AM/06/Algoritmos.pdf

Vipper. (7 de Mayo de 2019). Concepto Definición. Obtenido de

https://conceptodefinicion.de/programacion-informatica/

Yáñez, L. H. (2013). Fundamentos de la programación. Madrid.

Zúñiga, M. E. (2015). El Pensamiento Computacional en el Ámbito Universitario. En

Pensamiento Computacional (pág. 699). San Luis.

68
ANEXOS

ANEXO 1: Ejemplo de Diagrama de Flujo

Fuente: https://digicommcybernet.blogspot.com
Elaboración: Héctor Frías

69
ANEXO 2: Símbolos de un Diagrama de Flujo

Fuente: https://es.slideshare.net
Elaboración: AliniuZiz Rguez T

70
ANEXO 3: Diagrama Nassi – Shneiderman

Fuente: http://cuaderno-de-programacion.blogspot.com
Elaboración: Mi Cuaderno de Programación

71
ANEXO 4: Ejemplo de Pseucodigo

Fuente: https://steemit.com
Elaboración: Cervantes

72
ANEXO 5: Etapas para la Solución de un Problema por Medio del

Computador

Fuente: Algoritmos
Elaboración: Tiago Hugo

73
ANEXO 6: Diseño de un algoritmo

Fuente: Algoritmos
Elaboración: Tiago Hugo

74
ANEXO 7: Interfaz Gráfica de Python

Fuente: https://azure.microsoft.com
Elaboración: Asavari Tayal

75
ANEXO 8: Problema 01

Fuente: http://www.pythondiario.com
Elaboración: Propia

76
ANEXO 9: Problema 02

Fuente: http://www.pythondiario.com
Elaboración: Propia

77
ANEXO 10: Problema 03

Fuente: http://www.pythondiario.com
Elaboración: Propia

78
ANEXO 11: Problema 04

Fuente: http://www.pythondiario.com
Elaboración: Propia

79
ANEXO 12: Problema 05

Fuente: http://www.pythondiario.com
Elaboración: Propia

80
ANEXO 13: Problema 06

Fuente: http://www.pythondiario.com
Elaboración: Propia

81
ANEXO 14: Problema 07

Fuente: http://www.pythondiario.com
Elaboración: Propia

82
ANEXO 15: Problema 08

Fuente: http://www.pythondiario.com
Elaboración: Propia

83
ANEXO 16: Problema 09

Fuente: http://www.pythondiario.com
Elaboración: Propia

84
ANEXO 17: Problema 10

Fuente: http://www.pythondiario.com
Elaboración: Propia

85

También podría gustarte