Está en la página 1de 29

Universidad Nacional Experimental de Guayana

Vicerrectorado Académico Departamento de Ciencias y Tecnología

Coordinación General de Pregrado

Proyecto de Carrera: Ingeniería Informática, Semestre II. Sección 1

Cátedra: Técnicas de Programación I

Profesor: Bachilleres:
José Luis Rodríguez Henry Guzmán 27.375.465
José Guzmán 27.375.464
Rafael Figueira 26.770.537
2

Puerto Ordaz, 11 de Diciembre de 2019

Índice

Págs.

Introducción……………………………………………………………………… 4

1.- Lenguajes de programación.…..…………………………..………………….. 5

1.1. Definición…………………………………………………….………….. 5

1.2. Clasificación………………………………………….…………….……. 5

1.3. Características……………………………………………………………. 7

1.4. Tipos……………………………………………………………………… 8

1.5. Usos………………………………………………………………………. 9

2.- Evolución histórica……………………………………………………………. 9

3.- Proceso para la solución de un problema con computador

(Automatización de un problema)……………….……………………………. 13

4.- Sintaxis del lenguaje de programación……………………………………….. 15

 ¿Qué es?

 Ejemplo.

5.- Semántica del lenguaje de programación…………………………………….. 16

 ¿Qué es?

 Ejemplo.

6.- Proceso de compilación de un programa en C……………………………….. 16

7.- Programación modular……………………………………………………….. 17

 En qué consiste.

 Metodologías de implementación.

8.- Programación recursiva…….………………………………………………… 19

 En qué consiste.
3

 Metodologías de implementación.

9.- ¿Qué es un paradigma?……………………………………………………….. 24

9.1. Paradigmas de la programación…………………………………………….. 24

9.2. Tipos de paradigma, indique ejemplos……………………………………… 25

Conclusiones…………………………………………………………………….. 27

Bibliografía……………………………………………………………………… 29

Introducción
4

  El término “programación” se define como un proceso por medio del cual se diseña, se

codifica, se escribe, se prueba y se depura un código básico para las computadoras. Ese código es

el que se llama “código fuente” que caracteriza a cada lenguaje de programación. Cada lenguaje

de programación tiene un “código fuente” característico y único que está diseñado para una

función o un propósito determinado y que nos sirven para que una máquina o computador se

comporte de una manera deseada.

En general un lenguaje de programación sirve para programar. Sin embargo cada uno de

ellos tiene un alcance y forma de comunicación diferente.

Los mismos son de gran importancia porque permiten generar distintos sistemas que

sirven para tareas que satisfacen las necesidades de los usuarios.

1.- LENGUAJES DE PROGRAMACIÓN.


5

1.1. Definición.

Es un sistema estructurado de comunicación, el cual está conformado por conjuntos de

símbolos, palabras claves, reglas semánticas y sintácticas que permiten el entendimiento entre un

programador y una máquina.

Un lenguaje de programación consiste en un vocabulario que contiene un conjunto de

reglas gramaticales destinadas a girar instrucciones a un ordenador o dispositivo informático para

que ejecuten tareas específicas.

La implementación de los  lenguajes de programación permite el trabajo en conjunto y

coordinado, a través de un conjunto afín y finito de instrucciones posibles, de diversos

programadores o arquitectos de software, para lo cual estos lenguajes imitan, al menos

formalmente, la lógica de los lenguajes naturales.

1.2. Clasificación:

Estos lenguajes se pueden clasificar según varios criterios. Siendo agrupados de la

siguiente manera: nivel de abstracción, propósito, método de ejecución y paradigma de

programación.

 Según su nivel de Abstracción:

- Lenguajes de Bajo Nivel: Son lenguajes de código máquina, son un conjunto de

instrucciones en código binario que el ordenador es capaz de ejecutar directamente, específicos

de cada tipo de procesador o CPU. Ejemplos: Lenguajes de máquina y lenguajes ensambladores.

- Lenguajes de Alto Nivel: Más parecidos al lenguaje natural, cercanos al problema, nos

olvidamos de la estructura interna del ordenador. Ejemplo: C, Basic, Java.


6

 Según su Propósito:

- Propósito General: Permiten la implementación de prácticamente cualquier algoritmo, el

nivel de abstracción es más uniforme, proporciona un razonable rendimiento. Ejemplo: Pascal,

C, C++, Java, Delphi, Lisp, Scheme.

- Propósito Específico: Tiene por lo general un conjunto, muy restringido de características

de alto nivel de abstracción para cumplir tareas especificas como el procesamiento de textos,

gráficos, audio, video e ingeniería. Ejemplos: snobol, SQL, Matlab.

 Ejecución:

- Lenguajes Compilados: Traducen el código fuente del programa a código maquina o

código objeto. Ejemplos: C, Pascal.

- Lenguajes Interpretados: Ejecutan línea a línea las instrucciones de un programa-

Requieren del código fuente para ejecutar el programa. Ejemplos: Perl, Lisp.

 Paradigma de Programación:

- Lenguajes Imperativos: Son abstracciones de alguna secuencia de instrucciones que

especifican con detalle el orden de ejecución del programa. Ejemplos: Fortran, Algol, Ada,

Pascal, C, C++

- Lenguajes Declarativos: expresan lo que el programa debe lograr sin prescribir como

hacerlo, en término de secuencias de acciones que deben tomarse. Ejemplos: Sql, Html, Rpg.

- Lenguajes funcionales: Constan de un conjunto de funcione pre-definidas. Ejemplo: Lisp,

Scheme, common lisp, Ml, Caml.


7

- Lenguajes de lógicos: expresan tareas utilizando la lógica foral matemática. Ejemplo:

Prolog.

- Lenguajes orientados a objetos: Crean un sistema de clases y objetos siguiendo el

esquema del mundo real para definir los objetos, acciones y forma de comunicarse entre los

objetos. Ejemplos: C++, Java.

1.3 Características:

La popularidad de un lenguaje de programación depende de las funcionalidades y

utilidades que proporcione a los programadores. Las características que debe tener un lenguaje

de programación para destacar son las siguientes:

 Simplicidad: el lenguaje debe ofrecer conceptos claros y simples que faciliten su

aprendizaje y aplicación, de manera que sea sencillo de comprender y mantener. La

simplicidad no significa que se le pueda restar el poder óptimo de funcionamiento.

 Naturalidad: se refiere a que su aplicación en el área para la que fue diseñado debe

hacerse de forma natural, proporcionando operadores, estructuras y sintaxis para que los

operadores trabajen eficientemente.

 Abstracción: consiste en la capacidad de definir y utilizar estructuras u operaciones

complicadas ignorando algunos detalles. Esto influye en la capacidad de escritura.

 Eficiencia: los lenguajes de programación deben traducirse y ejecutarse eficientemente

para no ocupar demasiado espacio en la memoria ni gastar mucho tiempo.

 Estructuración: permite que los programadores escriban sus códigos de acuerdo con los

conceptos de programación estructurada, para evitar la creación de errores.


8

 Compacidad: con esta característica es posible expresar las operaciones con concisión,

sin tener que escribir demasiados detalles.

 Localidad: se refiere a que los códigos se concentran en la parte del programa con la cual

se está trabajando en un momento determinado.

1.4 Tipos.

 Lenguajes de bajo nivel. 

Son aquellos utilizados para controlar el hardware (partes tangibles) del aparato y

dependen directamente de la máquina, es decir, que no pueden ser usados en aparatos

diferentes para los que fueron creados. Estos lenguajes son los que ordenan las

operaciones esenciales para el funcionamiento del dispositivo. También es conocido

como código máquina. Su funcionamiento es complejo, por lo que lo utilizan

principalmente los fabricantes de hardware. Con ellos se pueden programar tareas como

reproducción de audio o video, mostrar imágenes, realizar operaciones matemáticas,

movimiento del puntero, asignación, liberación de memoria, entre otras.

 Lenguajes de alto nivel.

Permiten la programación multipropósito, sin embargo, muchos de ellos fueron diseñados

para permitir programación dedicada, como lo fue Pascal con las matemáticas en su

comienzo. También, se han implementado lenguajes educativos infantiles como Logo que

mediante una serie de simples instrucciones, permitía mover una tortuga entre otras cosas.

En el ámbito de infraestructura de internet, cabe destacar a Perl con un poderoso sistema

de procesamiento de texto y una enorme colección de módulos.


9

1.5 Usos.

Un Lenguaje de programación sirve, en primer lugar, para poder programar. Dado que

existen muchos lenguajes de programación distintos, podríamos sacar en conclusión que cada

uno sirve para algo diferente, y es más o menos así. Por ejemplo, HTML y JavaScript son

lenguajes que se usan en el campo del desarrollo y diseño web, junto con CSS. Sin embargo, C y

C++ son algo enfocado completamente al desarrollo de software.

Hay más casos, pero todos tienen el mismo objetivo. Así, desde una perspectiva

empresarial, el lenguaje es lo que hace que el programador pueda hacer funcionar una web y

construirla desde cero, o desarrollar una aplicación.

2.- EVOLUCIÓN HISTÓRICA.

Primer lenguaje de programación Ada Lovelace desarrolla el primer lenguaje de


1843 programación cuando escribió un algoritmo para la
máquina analítica de Charles Babbage.
Primera generación Código máquina y Ensambladores:
1940 La primera generación de lenguajes de programación
consistía enteramente de una secuencia de 0s y 1s que los
controles de la computadora interpretan como
instrucciones, eléctricamente.
Representan los primeros lenguajes de programación que la
computadora podía entender, son conocidos como lenguaje
máquina.
Desarrollo del lenguaje Es un lenguaje de programación de bajo nivel, basado en la
ensamblador representación de código de máquina. (binario ) El
1950 ensamblador realiza la traducción del código de máquina.

Segunda generación Lenguaje simbólico (ensambladores):


1950 Son más fáciles de utilizar que los lenguajes máquina, pero
al igual que ellos, dependen de la máquina en particular. El
lenguaje de bajo nivel por excelencia es el ensamblador. El
lenguaje ensamblador es el primer intento de sustituir el
lenguaje maquina por otro más similar a los utilizados por
las personas. Este intenta desflexibilizar la representación
10

de los diferentes campos. Esa flexibilidad se consigue no


escribiendo los campos en binario y aproximando la
escritura al lenguaje. A principios de la década de los 50 y
con el fin de facilitar la labor de los programadores, se
desarrollaron códigos mercadotécnicos para las
operaciones y direcciones simbólicas.
Fortran (“The IBM Mathematical Formula Translating System”):
1957 Un lenguaje de programación de alto nivel de propósito
general. Para cálculo numérico y científico (como
alternativa al lenguaje ensamblador). Es el lenguaje de
programación más antiguo que se utiliza hoy en día.
Lips (“List Processor”) Utilizado para la notación matemática y
1958 temas de ciencias de la computación.
Cobol (“Common Business-Oriented Language) Usado
1959 principalmente para la informática empresarial. Es el
primer lenguaje de programación que se demandan por el
Departamento de Defensa de EE.UU.
Tercera generación Lenguajes de Alto Nivel:
1959 Estos lenguajes son los más utilizados por los
programadores. Están diseñados para que las personas
escriban y entiendan los programas de un modo mucho más
fácil que los lenguajes máquina y ensamblador. Un
programa escrito en lenguaje de alto nivel es independiente
de la máquina (las instrucciones no dependen del diseño
del hardware o de una computadora en particular), por lo
que estos programas son portables o transportables. Los
programas escritos en lenguaje de alto nivel pueden ser
ejecutados con poca o ninguna modificación en diferentes
tipos de computadoras. Son lenguajes de programación en
los que las instrucciones enviadas para que el ordenador
ejecute ciertas órdenes son similares al lenguaje humano.
Dado que el ordenador no es capaz de reconocer estas
órdenes, es necesario el uso de un intérprete que traduzca el
lenguaje de alto nivel a un lenguaje de bajo nivel que el
sistema pueda entender.
Basic (“Beginner’s All-purpose Symbolic Instruction Code”)
Diseñado para la simplicidad. Su popularidad explotó a
1964
mediados de los años 70 con los computadores personales.
Cuarta generación La Programación Orientación a Objetos (P.O.O.):
1967 surge en Noruega en 1967 con un lenguaje llamado Simula
67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl,
en el centro de cálculo noruego.
Simula 67 introdujo por primera vez los conceptos de
clases, corrutinas y subclases (conceptos muy similares a
los lenguajes Orientados a Objetos de hoy en día).
11

Pascal Es un lenguaje de programación desarrollado por el


profesor suizo Niklaus Wirth. Su objetivo era crear un
1970
lenguaje que facilitara el aprendizaje de programación a sus
alumnos, utilizando la programación estructurada y
estructuración de datos. Sin embargo con el tiempo su
utilización fue de gran uso para herramientas de todo tipo.
Quinta generación La quinta generación de computadoras, también conocida
por sus siglas en inglés, FGCS (de Fifth Generation
1970
Computer Systems), fue un ambicioso proyecto hecho por
Japón a finales de la década de 1970. Su objetivo era el
desarrollo de una nueva clase de computadoras que
utilizarían técnicas y tecnologías de inteligencia artificial
tanto en el plano del hardware como del software, usando
el lenguaje PROLOG2 al nivel del lenguaje de máquina y
serían capaces de resolver problemas complejos, como la
traducción automática de una lengua natural a otra (del
japonés al inglés, por ejemplo).
C (Basado en un lenguaje anterior llamado “B”) Creado para
sistemas Unix. Muchos de lenguajes de programación más
1972
populares del mundo son derivados de el, entre ellos
tenemos C#, Java, Java Script, Perl, PHP y Python.
Ada (En honor a Ada Lovelace): Es derivado del Pascal.
Contratado por el Departamento de Defensa de los EE.UU.
1980
en 1977 para el desarrollo de sistemas de software grandes.
C++ C++ es un lenguaje de programación diseñado por Bjarne
Stroustrup. La intención de su creación fue el extender al
1983
exitoso lenguaje de programación C con mecanismos que
permitan la manipulación de objetos.
Objective-C Es un lenguaje de programación orientado a objetos creado
como un superconjunto de C para que implementase un
1983
modelo de objetos parecido al de Smalltalk. Originalmente
fue creado por Brad Cox y la corporación StepStone en
1980.
Perl Larry Wall comenzó a trabajar en Perl en 1987 mientras
trabajaba como programador en Unisys y anunció la
1987
versión 1.0 en el grupo de noticias comp.sources.misc el 18
de diciembre de 1987. El lenguaje se expandió rápidamente
en los siguientes años. Perl 2, publicado en 1988, aportó un
mejor motor de expresiones regulares. Perl 3, publicado en
1989, añadió soporte para datos binarios.
Phyton Se remonta hacia finales de los 80s principio de los 90s1 y
su implementación comenzó en diciembre de 1992 cuando
1991
en Navidad Guido Van Rossum que trabajaba en el (CWI)
(un centro de investigación holandés de carácter oficial)
decidió empezar el proyecto como un pasatiempo dándole
continuidad al lenguaje de programación ABC del que
12

había formado parte del equipo de desarrollo en el CWI,3


dicho lenguaje se enfocaba en ser fácil de usar y aprender
manteniendo potencia en su desempeño pero el hardware
disponible en la época de su creación hacía difícil su uso y
el proyecto no trascendió como se esperaba.
Ruby Ruby es un lenguaje de programación de alto nivel que fue
1993 inventado por Yukihiro “Matz” Matsumoto, en Japón,
lanzado al mundo en 1995. Ruby es un lenguaje
interpretado, de código abierto, y orientado a objetos.
Java El lenguaje de programación Java fue originalmente
1995 desarrollado por James Gosling de Sun Microsystems (la
cual fue adquirida por la compañía Oracle) y publicado en
1995 como un componente fundamental de la plataforma
Java de Sun Microsystems.

Java Script Java script es un lenguaje de programación interpretado


dialecto del estándar ECMAScript. Se define como
1995
orientado a objetos, basado en prototipos, imperativo y
dinámico. Diseñado por: Netscape Communications Corp,
Mozilla Fundation
PHP Creado por Rasmus Lerdorf, la primera encarnación de
1995 PHP era un conjunto simple de ficheros binarios Common
Gateway Interface (CGI) escritos en el lenguaje de
programación C. Originalmente utilizado para rastrear
visitas de su currículum online, llamó al conjunto de scripts
"Personal Home Page Tools", más frecuentemente
referenciado como "PHP Tools".

3.- PROCESO PARA LA SOLUCIÓN DE UN PROBLEMA CON COMPUTADOR

(AUTOMATIZACIÓN DE UN PROBLEMA).

La solución de un problema por computadora, requiere de siete pasos, dispuestos de tal

forma que cada uno es dependiente de los anteriores, lo cual indica que se trata de un proceso
13

complementario y por lo tanto cada paso exige el mismo cuidado en su elaboración. Los siete

pasos para la solución son los siguientes:

1. Definición del problema.

2. Análisis de la solución.

3. Diseño de la solución.

4. Codificación.

5. Prueba y depuración.

6. Documentación.

7. Mantenimiento.

 Definición de problema: Es el enunciado del problema, el cual debe ser claro y

completo. Es fundamental conocer y delimitar por completo el problema, saber qué es lo

que se desea que realice la computadora, mientras esto no se conozca del todo, no tiene

caso continuar.

 Análisis de la solución: Consiste en establecer una serie de preguntas acerca de lo que

establece el problema, para poder determinar si se cuenta con los elementos suficientes

para llevar a cabo la solución del mismo.

 Diseño de la solución: Una vez definido y analizado el problema, se produce a la

creación del algoritmo (Diagrama de flujo o pseudocódigo) en el cual se da la serie de

pasos ordenados que nos proporcione un método explicito para la solución del problema.

 Codificación: Consiste en escribir la solución del problema (de acuerdo al

pseudocódigo); en una serie de instrucciones detalladas en un código reconocible por la

computadora; es decir un lenguaje de programación (ya sea de bajo o alto nivel), a esta

serie de instrucciones se le conoce como Programa.


14

 Prueba y depuración: Es el proceso de identificar los errores que se presenten durante la

ejecución de programa, es conveniente que cuando se pruebe un programa se tomen en

cuenta los siguientes puntos:

- Trata de iniciar la prueba con una mentalidad saboteadora, casi disfrutando la

tarea de encontrar un error.

- Sospechar de todos los resultados que arroje la solución, con lo cual se

deberán verificar todos.

- Considerar todas las situaciones posibles, normales y aún las anormales.

La depuración consiste en eliminar los errores que se hayan detectado durante la prueba,

para dar paso a una situación adecuada y sin errores.

 Documentación: Es la guía o comunicación escrita que sirve como ayuda para usar el

programa, o facilitar futuras modificaciones. A menudo, un programa escrito por una

persona es usado por muchas otras, por ello la documentación es muy importante; esta

debe presentarse en tres formas: externa, interna y al usuario final.

o Externa: Está integrada por los siguientes elementos: Descripción del problema,

nombre del autor, diagrama de flujo y/o pseudocódigo, listas de variables y

constantes, y codificación del programa, esto con la finalidad de permitir su

posterior adecuación a los cambios.

o Interna: Consiste en los comentarios o mensajes que se agregan al código de

programa, que aplican las funciones que realizan ciertos

procesos, cálculos o formulas, para el entendimiento del mismo.

o Usuario Final: es la documentación que se le proporciona al usuario final, es una

guía que indica al usuario como navegar en el programa, presentando todas las
15

pantallas y menús que se va a encontrar y una explicación de los mismos, no

contiene información de tipo técnico. 

 Mantenimiento: Se lleva a cabo después de  terminado el programa, cuando se ha estado

trabajando un tiempo, y se detecta que es necesario hacer un cambio, ajuste

y/o complementación al programa para que siga trabajando de manera correcta. Para

realizar esta función el programa debe estar debidamente documentado, lo cual facilitará

la tarea.

4.- SINTAXIS DEL LENGUAJE DE PROGRAMACIÓN.

Es el conjunto de reglas que se deben seguir para que el compilador sea capaz de reconocer

un bloque de comando valido.

Ejemplo:

main () {Lista_de_sentencias}

Una característica de la sintaxis del C es que los espacios en blanco y retornos de carro que

aparecen en las reglas sintácticas son opcionales. Esto quiere decir que nuestro programa de

ejemplo se puede escribir en una sola línea:

main () {printf(“Hola”,);printf(” soy … educado.\n”);}

5.- SEMÁNTICA DEL LENGUAJE DE PROGRAMACIÓN.

La semántica describe el proceso que una computadora sigue cuando ejecuta un programa
en ese lenguaje específico. Esto se puede mostrar describiendo la relación entre la entrada y la
16

salida de un programa, o una explicación de cómo el programa se ejecutará en cierta plataforma,


y consecuentemente creando un modelo de computación.

La semántica no es más que la aplicación de la matemática lógica, en ella se ve reflejada el

significado de los programas o funciones.

Ejemplo:

1) x+ =y; (C, Java, etc)

2) x:= x+y; (Pascal)

3) x = x+y; (Basic, Fortran)

En general, las tres operaciones lo que hacen semánticamente hablando, es sumar Y con X

y almacenar el resultado en X.

6.- PROCESO DE COMPILACIÓN DE UN PROGRAMA EN C.

El proceso de compilación es, en grosso modo, convertir uno o varios archivos de código

fuente, en código binario ejecutable para una arquitectura de hardware/software determinada.

La compilación conlleva una serie de pasos:

1) Procesamiento: Lo primero que hace el compilador es pre procesar el archivo fuente, esto

es, interpretar todas las directivas de pre-procesamiento que hayamos utilizado,

como #define, #include, #ifdef, etc. Y además, eliminará todos los comentarios que

hayamos escrito en el archivo.


17

2) Compilación: El siguiente paso es compilar el código, el resultado de la compilación es

un código binario no ejecutable, llamado código objeto, cuya extensión característica es

un archivo «.o».

3) Enlace: El siguiente paso para lograr que el código objeto se vuelva ejecutable, es el de

enlazar, o «linkear» el objeto con las librerías del sistema, las librerías que utiliza.

7.- PROGRAMACIÓN MODULAR.

Consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más

legible y manejable. Se presenta históricamente como una evolución de la programación

estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta

puede resolver. Al aplicar la programación modular, un problema complejo debe ser dividido en

varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe

hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos

fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo,

divide y vencerás ó análisis descendente (Top-Down).

Metodologías de implementación.

Es evidente que si esta metodología nos lleva a tratar con subproblemas, entonces también

tengamos la necesidad de poder crear y trabajar con subprogramas para resolverlos. A estos

subprogramas se les suele llamar módulos, de ahí viene el nombre de programación modular.
18

Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas

en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien

definida y algunos necesitan de otros para poder operar. En caso de que un módulo necesite de

otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar

bien definida. Si bien un módulo puede entenderse como una parte de un programa en cualquiera

de sus formas y variados contextos, en la práctica se los suele tomar como sinónimos de

procedimientos y funciones. Pero no necesaria ni estrictamente un módulo es una función o un

procedimiento, ya que el mismo puede contener muchos de ellos.

En la programación modular disponemos de dos tipos de módulos: los procedimientos y las

funciones.

Los procedimientos es un subprograma que realiza una tarea específica. Para invocarlo,

es decir, para hacer que se ejecute, basta con escribir su nombre en el cuerpo de otro

procedimiento o en el programa principal. Pero, hay que tener muy en cuenta que su declaración

debe hacerse antes de que sea llamado por otro módulo.

Las funciones se dividen en predefinidas o estándar, y funciones de usuario. Las

funciones predefinidas, también llamadas estándar, son las que el propio lenguaje La

programación modular pone a disposición del programador. Por ejemplo, si necesitas calcular el

valor absoluto de un número, no es necesario que construyas la función, pues ya se dispone de

una que lo hace. Dependiendo del tipo de compilador de la programación modular que uses,

dispondrás de más o menos funciones estándar, pero siempre tendrás un grupo básico que

comparten todos. A continuación se citan unas cuantas funciones de las básicas:


19

sin (x:real) Seno de x Cos (x:real) Coseno de x


sqr(x:real) Cuadrado de x sqrt(x:real) Raíz cuadrada de x
abs(x:real) valor absoluto de x ln(x:real) logaritmo neperiano de x
int(x:real) parte entera de x frac(x:real) parte decimal de x

Funciones definidas por el usuario

Las funciones de usuario son, como su nombre indica, las que el propio usuario declara, de

igual manera que declara procedimientos. Las funciones nacen con el propósito de ser

subprogramas que siempre tienen que devolver algún valor.

Las dos principales diferencias entre procedimientos y funciones son:

 Las funciones siempre devuelven un valor al programa que las invocó.

 Para llamar a un procedimiento se escribe su nombre en el cuerpo del programa, y si los

necesita, se incluyen los parámetros entre paréntesis. Y para invocar una función es

necesario hacerlo en una expresión.

8.- PROGRAMACIÓN RECURSIVA.

En qué consiste:

Es una técnica utilizada en programación que nos permite que un bloque de instrucciones

se ejecute un cierto número de veces (el que nosotros determinemos).

La recursividad es una técnica de programación que se utiliza para realizar una llamada a

una función desde ella misma, de allí su nombre. El ejemplo más utilizado por su fácil

comprensión es el cálculo de números factoriales. El factorial de 0 es, por definición, 1. Los

factoriales de números mayores se calculan mediante la multiplicación de 1 * 2 *...,


20

incrementando el número de 1 en 1 hasta llegar al número para el que se está calculando el

factorial.

Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en

términos de una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o

recurrente.

#include <iostream>
#include <cstdlib>
using namespace std;
int Factorial(int n);
int main(){
int valor;
system("clear");
cout << "Introduzca numero a calcular: ";
cin >> valor;
cout << "\nEl Factorial de " << valor << " es: " << Factorial(valor) << endl;
return 0;
}
int Factorial(int n){
if (n < 0){
cout << “No existe el factorial de un numero negativo.\n”;
}else if(n < 2){
return 1;
}else
return n * Factorial(n-1);
}

Metodologías de implementación. Tipos de recursión.

 Recursión lineal: En la recursión lineal cada llamada recursiva genera, como mucho, otra

llamada recursiva. Se pueden distinguir dos tipos de recursión lineal atendiendo a cómo se

genera resultado.

o Recursión lineal no final: El resultado de la llamada recursiva se combina en una

expresión para dar lugar al resultado de la función que llama. El ejemplo típico de

recursión lineal no final es cálculo del factorial de un número (n! = n * (n-1) * ..* 2 * 1).

Dado que el factorial de un número n es igual al producto de n por el factorial de n-1, lo


21

más natural es efectuar una implementación recursiva de la función factorial. Veamos

una implementación de este cálculo:

/*
*ejemplo7_1.c
*/
#include <stdio.h>
int factorial(int numero){
if (numero > 1) return (numero*factorial(numero-1));
else return(1);
}
int main (){
int n;
printf("Introduce el número: ");
scanf("%d",&n);
printf("El factorial es %d", factorial(n));
}

o Recursión lineal final: El resultado que es devuelto es el resultado de ejecución de la

última llamada recursiva. Un ejemplo de este cálculo es el máximo común divisor, que

puede hallarse a partir de la fórmula:

/*
*ejemplo7_2.c
*/
#include <stdio.h>
long mcd(long,long);
main(int argc, char *argv[]){
22

long a= 4454,b= 143052;


printf("El m.c.d. de %ld y %ld es %ld\n",a,b,mcd(a,b));
}
long mcd(long a, long b){
if (a==b) return a;
else if (a<b) return mcd(a,b-a);
else return mcd(a-b,b);
}

 Recursión múltiple: Alguna llamada recursiva puede generar más de una llamada a la

función. Uno de los centros más típicos son los números de Fibonacci, números que

reciben el nombre del matemático italiano que los descubrió. Estos números se calculan

mediante la fórmula:

Estos números poseen múltiples propiedades, algunas de las cuales todavía siguen

descubriéndose hoy en día, entre las cuales están:

 La razón (el cociente) entre un término y el inmediatamente anterior varía continuamente,

pero se estabiliza en un número irracional conocido como razón áurea o número áureo,

que es la solución positiva de la ecuación x2-x-1=0, y se puede aproximar por

1,618033989.

 Cualquier número natural se puede escribir mediante la suma de un número limitado de

términos de la sucesión de Fibonacci, cada uno de ellos distinto a los demás. Por ejemplo,

17=13+3+1, 65=55+8+2.
23

 Tan sólo un término de cada tres es par, uno de cada cuatro es múltiplo de 3, uno de cada

cinco es múltiplo de 5, etc. Esto se puede generalizar, de forma que la sucesión de

Fibonacci es periódica en las congruencias módulo m, para cualquier m.

 Si F(p) es un número primo, p también es primo, con una única excepción. F(4)=3; 3 es

primo, pero 4 no lo es.

 La suma infinita de los términos de la sucesión F(n)/10n es exactamente 10/89.

Veamos un programa que nos permite calcular el número n de la serie de Fibonacci:

/*
*ejemplo7_3.c
*/
#include <stdio.h>
long fibonacci (int);
int main()
{
int n= 30;
printf("El %dº número de Fibonacci es %ld\n", n,
fibonacci(n));
}
long fibonacci(int n)
{
if (1 == n || 2 == n) {
return 1;
} else {
return (fibonacci(n-1) + fibonacci(n-2));
}
 Recursión mutua: Implica más de una función que se llaman mutuamente. Un ejemplo

es el determinar si un número es par o impar mediante dos funciones:

/*
*ejemplo7_4.c
*/
#include <stdio.h>
long fibonacci (int);
int main(){
24

int n= 30;
if (par(n))
printf("El número es par");
else
printf("El número es impar");
}
int par(int n){
if (n==0) return 1;
else return (impar(n-1));
}
int impar(int n){
if (n==0) return 0;
else return(par(n-1));
}

9.- ¿QUÉ ES UN PARADIGMA?

Todo aquel modelo, patrón o ejemplo que debe seguirse en determinada situación.

9.1.- ¿EN QUÉ CONSISTE UN PARADIGMA DE LA PROGRAMACIÓN?

Un paradigma de programación se refiere a la forma en que un programador o un conjunto

de programadores dan solución a uno o varios problemas claramente definidos. En este sentido,

representa una manera particular de ofrecer soluciones.

9.2.- TIPOS DE PARADIGMA, INDIQUE EJEMPLOS.

o Paradigma imperativo: Los programas imperativos contienen instrucciones que

dicen al ordenador cómo realizar una tarea. Los primeros lenguajes imperativos fueron

los códigos máquina de los ordenadores, que utilizaban instrucciones sencillas y


25

permitían implementar el hardware fácilmente, pero no servían para desarrollar

programas complejos.

El primer lenguaje imperativo que posibilitó la creación de programas con un nivel de

complejidad elevado fue FORTRAN. Hoy en día está representado por los lenguajes

de programación BASIC, C o PASCAL, entre otros.

o Paradigma declarativo: es un paradigma de programación que está basado en el

desarrollo de programas especificando o "declarando" un conjunto de condiciones,

proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que

describen el problema y detallan su solución. La solución es obtenida mediante

mecanismos internos de control, sin especificar exactamente cómo encontrarla (tan

solo se le indica a la computadora qué es lo que se desea obtener o qué es lo que se

está buscando). No existen asignaciones destructivas, y las variables son utilizadas con

transparencia referencial. Ejemplos: Los lenguajes lógicos, como Prolog. Los

lenguajes algebraicos, como Maude y SQL. Los lenguajes funcionales, como Haskell

y Erlang.

o Paradigma funcional: Los programas funcionales se basan en el uso de una o más

funciones dentro de las cuales se pueden utilizar funciones creadas anteriormente. Su

objetivo es dividir el programa en módulos de forma que cada uno de éstos realice una

única función.

El primer lenguaje de programación funcional fue LISP. Existen dos tipos de lenguajes

funcionales: los puros (como HASKELL) y los híbridos (SAP, ML, Scheme).
26

o Paradigma lógico: La programación lógica comprende la programación declarativa y

la funcional. El proceso de elaboración de programas está basado en la lógica de

primer orden y, a diferencia de los demás paradigmas, especifica qué debe hacer el

programa y no cómo hacerlo.

Se emplea en aplicaciones de inteligencia artificial. El lenguaje de programación

lógica por excelencia es PROLOG.

o Paradigma orientado a objetos (POO): La programación orientada a objetos expresa

un programa como un conjunto de objetos, que colaboran entre ellos para realizar

tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener,

reutilizar y volver a utilizar. Su uso se popularizó a principios de los 90 y actualmente

son muchos los lenguajes de programación asociados a este paradigma.

Las características del paradigma orientado a objetos son: encapsulamiento,

abstracción, polimorfismo y herencia. Muchos lenguajes utilizados en la actualidad

están orientados a objetos, como Java, C++, Python o Delphi. Un lenguaje

completamente orientado a objetos es Smalltalk.

CONCLUSIÓNES

El lenguaje de programación es un conjunto de símbolos y códigos usados para orientar la

programación de estructuras en el desarrollo web y es la base para construir todas las

aplicaciones digitales que se utilizan en el día a día.


27

Los lenguajes se clasifican en: Bajo Nivel que son lenguajes totalmente orientados a la

máquina y sirven de interfaz para crear un vínculo inseparable entre el hardware y el software.

De alto nivel tienen como objetivo facilitar el trabajo del programador, ya que utilizan unas

instrucciones más fáciles de entender. Además, permite escribir códigos mediante idiomas que

conocemos (español, inglés, etc.) y luego, para ser ejecutados, se traduce al lenguaje de máquina

mediante traductores o compiladores. Otros lenguajes de alto nivel son: Ada, Basic, Cobol,

Fortran, Pascal, Aol, Tc, C.

En cuanto a la sintaxis es un grupo de normas que funcionan gobernando la vinculación de

las distintas variables que configuran las instrucciones operativas.

La semántica es el conjunto de reglas que proporcionan el significado de una sentencia o

instrucción de cualquier lenguaje de programación.

La compilación es el proceso que se le atribuye la tarea de traducir los comandos utilizados

en el código fuente del programa al lenguaje binario o lenguaje de máquina para que este pueda

ejecutarse.

La programación modular consiste en dividir el programa en sub programas o bloques con

el fin de que el código sea más manejable y comprensible.

La programación recursiva es una técnica que se basa en ejecutar un bloque de

instrucciones la cantidad de veces que el programador determine para la resolución de un

problema.
28

Un paradigma en programación se refiere a la forma en que un programador o un

conjunto de programadores dan solución a uno o varios problemas claramente definidos.

Entre los paradigmas principales están: el imperativo, el declarativo, el lógico, el

funcional y el orientado a objetos. Estos paradigmas se diferencian unos de otros debido a la

forma de abordar los elementos involucrados en el problema, así como los pasos necesarios para

llegar a su solución.

BIBLIOGRAFIA

Olarte G., Luis (2018). Lenguaje de Programación. 2019, Diciembre 1, Conogasi.org

http://conogasi.org/articulos/lenguaje-de-programacion/
29

http://www.cavsi.com/preguntasrespuestas/cual-es-la-clasificacion-los-lenguajes-de-

programacion/

https://rockcontent.com/es/blog/que-es-un-lenguaje-de-programacion/

https://concepto.de/lenguaje-de-programacion/#ixzz66tJ8GG1S

https://concepto.de/lenguaje-de-programacion/#ixzz66tEhJVco

https://domingogallardo.github.io/apuntes-lpp/teoria/tema01-historia-lenguajes-

programación/tema01-historia-lenguajes-programacion.html

https://www.preceden.com/timelines/310321-evoluci-n-de-los-lenguajes-de-programacion

http://pasossoluciondeproblemas.blogspot.com/2012/01/metodologia-para-la-solucion-de-

pasos.html

https://juncotic.com/compilacion-fuente-ejecutable/

http://webdelprofesor.ula.ve/nucleotrujillo/jalejandro/Prog2/Unidad3.pdf

https://upsg01.foroactivo.com/t192-tipos-de-recursividad

http://biolab.uspceu.com/aotero/recursos/docencia/TEMA%207.pdf

https://www.significados.com/paradigma/

https://www.ecured.cu/Programaci%C3%B3n_declarativa

También podría gustarte