SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Autor: Luis Heladio Garzón Rodríguez
OBJETIVO GENERAL
Propender porque el estudiante se apropie el aprendizaje de las características y
fundamentos del paradigma imperativo, aplicándolo en la construcción de solución a
problemas de programación.
OBJETIVOS ESPECIFICOS
 Conocer y comprender las características fundamentales del paradigma imperativo.
 Conocer y familiarizarse con las estructuras de control.
 Entender el propósito de los procesos interactivos en la programación.
 Comprender y poner en práctica la Definición y utilización de funciones
 Comprender los conceptos fundamentales de la programación y su importancia.
 Conocer y aplicar las estructuras de datos, entendiendo su importancia en la
programación.
 Profundizar mediante la investigación de los conceptos aquí tratados de parte del
estudiante.
PARADIGMA IMPERATIVO o PROCEDURAL o ESTRUCTURADO
La programación en el paradigma imperativo consiste en determinar qué datos son
requeridos para el cálculo, asociar a esos datos unas direcciones de memoria, y
efectuar paso a paso una secuencia de transformaciones en los datos almacenados, de
forma que el estado final represente el resultado correcto.
En su forma pura este paradigma sólo soporta sentencias simples que modifican la
memoria y efectúan bifurcaciones condicionales e incondicionales. Incluso cuando se
añade una forma simple de abstracción procedimental, el modelo permanece
básicamente sin cambiar.
Los parámetros de los procedimientos son "alias" de las zonas de memoria, por lo que
pueden alterar su valor, y no retorna ningún tipo de cálculo. La memoria también se
puede actualizar directamente mediante referencias globales.
El paradigma imperativo debe su nombre al papel dominante que desempeñan las
sentencias imperativas. Su esencia es el cálculo iterativo, paso a paso, de valores de
nivel inferior y su asignación a posiciones de memoria.
También conocido como estructurado porque La programación se divide en bloques
(procedimientos y funciones) que pueden o no comunicarse entre sí. Además la
programación se controla con secuencia, selección e iteración. Permite reutilizar código
programado y otorga una mejor compresión de la programación.
UNIDAD I
PARADIGMA IMPERATIVO o PROCEDURAL o ESTRUCTURADO
Autor: Luis Heladio Garzón Rodríguez
1. CARACTERISTICAS
Este paradigma se caracteriza por un modelo abstracto de ordenador que consiste en
un gran almacenamiento de memoria.
El ordenador almacena una representación codificada de un cálculo y ejecuta una
secuencia de comandos que modifican el contenido de ese almacenamiento. Este
paradigma viene bien representado por la arquitectura Von Neuman (1903-1957), ya
que utiliza este modelo de máquina para conceptualizar las soluciones: "Existe un
programa en memoria que se va ejecutando secuencialmente, y que toma unos datos
de la memoria, efectúa unos cálculos y actualiza la memoria".
Las características más notables o representativas que se puede enunciar de este
paradigma son:
 Concepto de celda de memoria ("variable") para almacenar valores. El
componente principal de la arquitectura es la memoria, compuesto por un gran
número de celdas donde se almacenan los datos. Las celdas tienen nombre
(concepto de variable) que las referencian, y sobre los que se producen efectos
de lado y definiciones de alias.
 Operaciones de asignación. Estrechamente ligado a la arquitectura de la
memoria, se encuentra la idea de que cada valor calculado debe ser
"almacenado", es decir asignado a una celda. Esta es la razón de la importancia
de la sentencia de asignación en el paradigma imperativo.
 Repetición. Un programa imperativo, normalmente realiza su tarea ejecutando
repetidamente una secuencia de pasos elementales, ya que en este modelo
computacional la única forma de ejecutar algo complejo es repitiendo una
secuencia de instrucciones.
Breve historia
 Los primeros programas fueron escritos en código de máquina.
 Los primeros en surgir fueron los denominados de bajo nivel (“assembler”)
 Los primeros de alto nivel fueron Fortran y Cobol.
 Posteriormente aparecen lenguajes como Pascal, Algol-68.
 La aparición de Lenguaje C, luego de lenguajes que no llegaron a distribuirse en
forma comercial como A y B, marco un hito importante en los lenguajes
imperativos.
 La programación imperativa fue sin duda la dominante hasta mediados de los
90.
Paradigma: Imperativo (Procedural),
Estructurado
Apareció en: 1972
Diseñado por: Dennis M. Ritchie
Desarrollador: Dennis Ritchie y Bell Labs
Autor: Luis Heladio Garzón Rodríguez
Última versión
estable:
C99 (Marzo de 2000)
Tipo de dato: Débil, Estático
Implementaciones: Múltiples
Dialectos: Cyclone, Unified Parallel C, Split-
C, Cilk, C*
Influido por: B (BCPL,CPL), ALGOL 68,1
Ensamblador, PL/I, Fortran
Fuente: Wikipedia.com
Lenguajes
Algunos lenguajes representativos en este paradigma son:
 PASCAL, C, FORTRAN, ALGOL, COBOL, ADA, CLIPPER, FOX, PL/1, C++, C#, etc.
Características de la Programación Estructurada
Teniendo en cuenta que otro de los nombres que recibe el paradigma imperativo es el
de estructurado, se puede decir que fue la primera manera universalmente aceptada
de organizar un programa que cumpliera los siguientes objetivos:
1. Deber ser fácil de leer y de comprender leyendo el propio código
2. Debe ser fácil de depurar
3. Debe ser fácil de mantener
4. Permitir el trabajo en equipo sobre un mismo programa.
2. LENGUAJE C
Para desarrollar el tema sobre este paradigma, se toma como ejemplo al lenguaje C.
El lenguaje C, fue creado por Dennis M. Ritchie en los laboratorios Dell, es un lenguaje
que permite trabajar con datos simples y estructurados (definidos por el usuario), con
estructuras de control que permiten trabajar selectividad, repetición de instrucciones,
con la facilidad de poder estructurar los programas en módulos o subprogramas más
pequeños también llamados procedimientos y funciones.
C es, probablemente, uno de los lenguajes más utilizados actualmente. Es un lenguaje
estructurado, pero también permite una programación de bajo nivel, lo cual lo hace
adecuado para sistemas operativos (como Unix) y como software de control de
periféricos, aunque se utiliza en todo un tipo de aplicaciones, incluso en las de más alto
nivel, como por ejemplo, librerías gráficas. (Ver más información en la Unidad I.
Introducción a los paradigmas de programación, página 7)
En el siguiente enlace encontrara mayor información sobre el lenguaje C y sus
características http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_C
Autor: Luis Heladio Garzón Rodríguez
2.1 Tipos de datos
Los tipos de datos básicos en lenguaje C o en los lenguajes de programación en
general, se clasifican en datos simples y estructurados. Los datos simples con datos
numéricos, alfanuméricos y lógicos (Ver mas información en la Unidad I. Introducción
a los paradigmas de programación, tema1.1. Datos, pagina 1.), que en lenguaje C
específicamente presenta algunas variantes, posibilitando una mejor clasificación de
los datos, para optimizar la utilización de la memoria.
Los datos básicos en C son: int, float, doublé, char, void, boolean
Se puede obtener otros tipos de datos, utilizando los modificadores long y short, con
menor o mayor capacidad de almacenamiento, en este caso cada tipo de dato ocupa
una cantidad de bytes diferente, que puede aumentar si emplea long o disminuir si lo
hace con short. Ampliar información sobre datos básicos en C (Ver documento en
curso AVA en plataforma)
En este enlace http://www.carlospes.com/curso_de_lenguaje_c/01_04_tipos_de_datos.php
encontrara mas información sobre los tipos de datos básicos del lenguaje C.
Los datos estructurados están conformados por registros (register) (Ver también tipos
de datos unidad I, Introducción a los paradigmas de programación, datos
estructurados).
2.2 Estructuras de control
Las estructuras de control permiten controlar el flujo de ejecución de las instrucciones
en un programa. Con estas estructuras se puede determinar, el orden, la interacción,
la cantidad de repeticiones que ejecutarán las instrucciones que están dentro de estas
estructuras.
Las estructuras de control impiden se apliquen usos anormales de rompimiento de
secuencia, lo que anteriormente se podía realizar a través de la instrucción GOTO. En
la actualidad se sugiere como buena practica de programación, no utilizar esta
instrucción, pues existe otras formas mas adecuadas para lograr un estilo de
programación limpia.
Las estructuras de control se pueden clasificar en: secuenciales, selectivas y
repetitivas.
La estructura secuencial no representa mayor complejidad, pues las instrucciones se
ejecutan una a una en el orden en que están escritas en el programa.
Las estructuras selectivas a diferencia de la estructura secuencial, permitan bifurcar
(tomar varios caminos) la ejecución del programa, de acuerdo a la evaluación de
condiciones, para ejecutar uno u otro conjunto de instrucciones. Estas se clasifican a s
vez en condicionales y de selección múltiple.
Las estructuras condicionales también se pueden clasificar en:
Autor: Luis Heladio Garzón Rodríguez
Estructuras condicionales Simples Solo se ejecutan las instrucciones de la
estructura cuando se evalúa como verdadera la condición.
Sintaxis:
if (<Condición>)
{ <Conjunto de instrucciones>
}
Estructuras condicionales alternas Tiene dos alternativas, para ejecutar un
conjunto diferente de instrucciones, por verdadero o falso, de acuerdo a la evaluación
de la condición.
Sintaxis:
if (<Condición>)
{ <Conjunto de instrucciones>
}
else
{<Conjunto de instrucciones>
}
Estructuras condicionales anidadas Surgen como una derivación de combinar las
estructuras condicionales simples y alternas, permitiendo la evaluación de múltiples
casos como condiciones para soluciones posibles al problema a resolver. Esto significa
que se puede anidar por verdadero o falso, según sea el caso, otras estructuras
condicionales simples o alternas. Con este tipo de estructura se puede plantear
solución a problemas, cuando una variable puede optar o tener varios posibles valores.
Sintaxis:
if (<Condición>)
{ if (<Condición>)
{
<Conjunto de instrucciones>
}
}
else
{
if (<Condición>)
{<Conjunto de instrucciones>
}
}
Estructura de selección múltiple o selectivas Algunos lenguajes como el C, tienen
una estructura de control, que permite simplificar la escritura de soluciones que se
hace a través del uso de las estructuras condicionales anidadas. Esta estructura de
control se trabaja a través del comando switch - case
Sintaxis:
switch (<Variable de control>)
{
case <valor opción 1>{ <conjunto de instrucciones> }; break;
case <valor opción 1>{ <conjunto de instrucciones> }; break;
Autor: Luis Heladio Garzón Rodríguez
case <valor opción 1>{ <conjunto de instrucciones> }; break;
other <valor opción 1>{ <conjunto de instrucciones> }; break;
}
Las estructuras repetitivas facilitan que se repita un conjunto de instrucciones, un
número determinado de veces. Las estructuras repetitivas en C son while, do-while,
for. Cada una de ellas se debe utilizar de acuerdo al tipo de problema que se tenga
que resolver. Igual cada una de ellas tiene unas características, que les diferencia para
su aplicación.
Estructura repetitiva for
Esta sentencia o comando, tiene como característica fundamental, que permite ejecutar un conjunto de
instrucciones un número determinado o preciso de veces conocido.
Sintaxis:
for(Vc:= Vi;Vc <condición de fin>; <incremento> )
{
<conjunto de instrucciones>
}
Explicación:
Vc : La variable de control, lleva el conteo para el número de repeticiones
Vi : valor inicial en el que arranca el conteo de la variable de control
Condición de fin : El ciclo repetitivo se cumplirá hasta cuando se cumpla la condición de fin
Incremento : Para controlar el número de repeticiones, se debe indicar el valor de
incremento de cada interacción. Se puede utilizar en forma de decremento también.
Escriba un programa, que calcule la máxima área de un terreno rectangular de lados 100-2x y x
respectivamente, para valores de x entre 10 y 30.
Programa en Seudolenguaje
Var
Entero x, area
Inicio
Para x=10 hasta x<=30 haga //x es la variable de control inicia en 10 y termina en 30
area=100-2*x //Se calcula el área multiplicando 100- y el valor de 2 por x
Esciba x, area //Muestra los valores de x y area
Fin Para
Fin
//Programa en lenguaje C
#include<stdio.h>
main(void)
{ int x,area;
for(x=10; x<=30;x++)
{ area = 100 – 2 * x;
cout<<"Area para “<<x<<” es “<<area<<” Mts 2”;
}
}
La instrucción x++, es el incremento de uno en uno. ++ es uno de los operadores
monarios del lenguaje C.
Otra forma simplificada para este mismo ejercicio puede ser como la que se presenta a
continuación
Autor: Luis Heladio Garzón Rodríguez
//Programa en lenguaje C
#include<stdio.h>
main(void)
{ int x,area;
for(x=10; x<=30;x++)
cout<<"%d Area para “<<x<<” es “<<(100-2*x);
}
La simplificación consiste en que se calcula el área en la misma instrucción, donde se
da la orden de mostrar resultados, esta forma a veces puede ser útil cuando no se
requiere almacenar resultados.
Estructura repetitiva while
While es un comando que permite se ejecute un conjunto de instrucciones mientras se
cumpla una condición.
Sintaxis:
while (<condición>)
{
<conjunto de instrucciones>
}
Es importante resaltar, que la variable que se evalúa en la condición, antes de la
instrucción while debe obtener un valor, para que por lo menos se ejecute una vez, de
lo contrario el conjunto de instrucciones no se ejecutara ni una vez. El conjunto de
instrucciones se ejecutara siempre que la evaluación de la condición sea verdadera.
Esta estructura repetitiva se utiliza cuando no existe un numero cierto de veces para
ejecutar las instrucciones, por ejemplo se pudiera trabajar con una variable centinela o
bandera.
Ejercicio:
Usando la instrucción mientras para escribir un programa que imprima la serie 1, 3, 5, 7,9.
Programa seudolenguaje
Var
Entero i
Inicio
i = 1
mientras (i<=9) haga
Escriba i
i = i+2
Fin mientras
Fin
Explicación: Como se puede observar la variable i desempeña el papel de variable de control y en este
caso asume como contador de operaciones hasta cuando llegue al límite que es 9.
La instrucción i = i + 2, es la forma como en Seudolenguaje se expresa un contador, que en este caso
se incrementa de dos en dos, hasta llegar al tope indicado.
//Programa en C
#include<stdio.h>
main(void)
{
int i;
Autor: Luis Heladio Garzón Rodríguez
i=1;
while(I <= 9)
{
cout<<" n número= “<<i;
i=i+2;
}
}
Estructura repetitiva do - while
do - while es un comando que permite se ejecute por lo menos una vez un conjunto de
instrucciones hasta cuando se cumpla una condición.
Sintaxis:
do
{
<conjunto de instrucciones>
}
while (<condición>);
Esto se puede interpretar como haga (do) mientras que (while) una condición no se
cumpla. En este caso la condición se encuentra después de ejecutar el conjunto de
instrucciones (al final de la estructura repetitiva), por ello se dice que se ejecuta por lo
menos una vez.
Ejercicio:
Se planteara el mismo problema para el caso del while.
Usando la instrucción haga mientras que, escribir un programa que imprima la serie 1, 3, 5, 7,9.
Programa seudolenguaje
Var
Entero i
Inicio
i = 1
haga
Escriba i
i = i+2
mientras (i<=9)
Fin
Explicación: Como se puede observar la variable i desempeña el papel de variable de control y en este
caso asume como contador de operaciones hasta cuando llegue al límite que es 9. A diferencia del caso
anterior, el comando mientras esta al final, por ello cuando se evalúa la condición se habrá ejecutado
por lo menos una vez, el conjunto de instrucciones.
//Programa en C
#include<stdio.h>
main(void)
{
int i;
i=1;
do
{
cout<<" n número= “<<i;
i=i+2;
Autor: Luis Heladio Garzón Rodríguez
}
while(I <= 9);
}
2.3 Procesos o procedimientos
La programación por procedimientos es un paradigma que permite descomponer la
solución de un problema o programa en subprogramas, subrutinas, procesos y/o
funciones, en los que se ejecuta un conjunto de instrucciones. En el lenguaje de
programación C se declaran como funciones y se pueden utilizar con dos fines o de dos
formas.
La primera son funciones utilizadas como subprogramas que hacen alguna operación
pero no retornan un valor, lo que representa el trabajo de un procedimiento. La segunda
son funciones que reciben parámetros, ejecutan instrucciones y retornan un valor.
De que tipo puede ser el valor retornado por una función ?
Se debe diferenciar tres aspectos al trabajar con procedimientos o funciones : declarar,
llamar y definir.
Sintaxis de la definición de una función o procedimiento:
<Tipo de dato> <Identificador función>(Lista de parámetros o argumentos)
{
<Instrucciones>
}
Los procedimientos son subprogramas, también llamadas subrutinas y contienen
conjuntos de instrucciones que se ejecutan al ser invocado o llamado el procedimiento.
Los llamados se pueden hacer con paso de parámetros o no.
El paso de parámetros se hace por valor o por referencia.
Es importante plantear los siguientes interrogantes, cuando se trabaja con
procedimientos o funciones.
Como se llaman los parámetros que se pasa a una función?
Como se llaman los parámetros que recibe a una función?
Que diferencia hay entre paso de parámetros por referencia y por valor?
En que sitio dentro del programa se declara una función?
A que se hace referencia cuando se habla de una función prototipo?
La instrucción return para qué sirve? Cuál es la forma general o sintaxis?
De que forma se llama o invoca una función?
2.4 Definición de funciones
En términos generales aquí se debe aclarar específicamente, que en el lenguaje C, los
procedimientos tienen una forma de declaración idéntica, con la diferencia que se debe
Autor: Luis Heladio Garzón Rodríguez
especificar en el tipo de dato si pasa o no parámetro. Si pasa parámetro y retorna valor
se considera función.
Lo revisado en el tema 2.3 es aplicable y valido para este tema.
Sintaxis para definición de una función:
<Tipo de dato> <Identificador función>(Lista de parámetros o argumentos)
{
<Instrucciones>
return(<Variable valor>);
}
El siguiente programa trata de ejemplificar la aplicación de las funciones, en un
ejercicio para calcular el área de un cubo.
//Programa en Lenguaje C explicando el trabajo con una función
#include<stdio.h>
float num, res;
float cubo(int x); //1. Declaración de la función cubo
//Programa principal
main()
{
printf("ingrese un número ");
scanf("%f",&num);
res=cubo(num); //2. Llamado a la función cubo
printf("%f al cubo es: %f",num,res);
return 0; //3. Valor que retorna la función main()
}
//Definición de la función cubo
float cubo(int x) //4. Aquí inicia la función cubo
{ return (x*x*x); } //5.retorna o devuelve el valor del calculo
Explicación del programa
1. float cubo(int x); En la declaración de la función cubo float indica el tipo de dato que retorna o
devuelve la función. cubo es el nombre de la función. int x, es el tipo de dato y la variable, del
parámetro local que recibe el valor, cuando es llamada la función.
2. cubo(num); Para acceder a la función se hace un llamado, colocando entre paréntesis los
identificadores de los parámetros que se halla declarado, se han de pasar. res=cubo(num); esta
instrucción en la parte a la derecha de signo igual corresponde al llamado de la función, a la
izquierda denota que la variable “res” recibe el valor que devuelve la función.
3. return 0; esta instrucción se debe colocar siempre para evitar un error al momento de la
compilación. Se puede obviar si al escribir main() se coloca void main(), que indica al
compilador que la función main, no retorna valor o retorna valor vacio.
4. float cubo(int x) esta primera línea de la declaración puede ser casi idéntica, a la declaración
de la función. float indica el tipo de dato que retorna o devuelve la función. cubo es el nombre
de la función. int x, es el tipo de dato y la variable, del parámetro local que recibe el valor,
cuando es llamada la función.
5. return (x*x*x); en la misma línea se realiza el calculo, cuyo valor se retorna y recibirá la variable
res.
Ejercicio
Escriba un programa que permita calcular la potencia a la que es elavado otro número.
Autor: Luis Heladio Garzón Rodríguez
Programa seudolenguaje
Var
Entero b, e
real poten
real potencia(m, n)
Inicio
escriba “Valor de la base : “ Lea b
escriba “Valor del exponente : “ Lea e
poten = potencia(b, e)
escriba “La potencia obtenida es : “, poten
Fin //del programa principal
real Función potencia(m, n)
var
entero i, y
Inicio
y = 1
Para i=1 hasta i<=abs(n) haga
y = y*m
si n<0 entonces
y = 1/y
fin si
Fin Desde
retorne( y )
Fin función
Variables
potencia: es una función
b : valor ingresado
e : valor ingresado
m : toma valores de b
n : toma valores de e
i : variable de control del ciclo for para el contador
y : guarda el valor buscado.
poten : recibe el valor devuelto por la función y acumulado en y
//Programa en lenguaje C
#include<stdio.h>
#include <math.h>
int b,e;
float poten;
float potencia(int m, int n);
void main()
{
cout<<" INGRESE DOS NÚMEROS.. ";
cout<<” Valor para la base : “; cin>>b;
cout<<” Valor para el exponente . “; cin>>e;
poten = potencia(b,e);
cout<<” La potencia obtenida es : “<<poten;
}
float potencia(int m, int n)
{ int i;
Autor: Luis Heladio Garzón Rodríguez
float y;
y=1;
for(i=1;i<=abs(n);i++)
{
y=y*m;
if(n<0)
y=1/y;
}
return (y );
}
2.5 Estructuras de datos
2.5.1 Datos Estructurados
Este pertenece al tipo de datos definidos por el usuario. En el que se permite
configurar una combinación de datos de diferente tipo, que no esta predefinido en el
lenguaje de programación.
En el paradigma de programación estructurada se les nombraba como registros. En el
paradigma de programación orientada a objetos, se conocen como objetos.
Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo al
paradigma de programación y el lenguaje de programación.
2.5.2 Estructura de datos
Las estructuras de datos corresponden a los tipos de datos definidos por el usuario y le
trabajo con formas de almacenamiento en memoria principal, para manipular datos en
mayor volumen. Los lenguajes de últimas generaciones, permiten definir tipos de
datos que se acoplen a las necesidades específicas del problema a resolver.
Las estructuras de datos se clasifican en estáticas y dinámicas. En el grupo de las
estáticas están los arreglos que a su vez son lineales, bidimensionales y
multidimensionales. Las dinámicas en las que se encuentran las pilas, listas, colas,
grafos y arboles.
2.5.2.1 Arreglos
Los arreglos multidimensionales permiten definir ARRAYS de varias filas y columnas, o
varias filas y varias caras. La forma general para definir arreglos de este tipo es :
<Tipo almacenamiento> <tipo dato> <nombre> [expresión_1] [expresión_2] ... [expresión_n]
Donde Tipo de almacenamiento indica si es : static, automatic, extern.
Tipo de dato el tipo de dato que contendrá el arreglo.
Ejemplo :
int tabla_1 [3] [4];
char em_nom [10];
Autor: Luis Heladio Garzón Rodríguez
float deven_n [20] [3];
double deduc_n [N] [2] [3];
Surge en este momento la necesidad de preguntar se puede inicializar un arreglo ?
Como se hace ? En que sitio del programa puede o debe ir ?
Puede identificar la siguiente forma general a que corresponde ?
<Tipo dato> <Nombre> [exp_1] [exp_2]...[exp_n] = {
{valor_1,...valor_n}
{valor_1,...valor_n}
};
Una Estructura es un tipo de dato registro definido por el programador, este permite una
mayor flexibilidad a la hora de manejar información que contiene atributos de un individuo
y en el que los tipos de datos son diferentes. La forma general es :
<[Tipo almacenamiento]> struct <[nombre estructura]> { <Campo_1>;
<Campo_2>;...<Campo_n>;} <Variables>;
El tipo de almacenamiento puede ser opcional, struct es una palabra reservada que siempre
debe ir, nombre estructura identifica al tipo de estructura declarada y puede ser opcional,
los campos son los que integran a esta estructura y las variables se declaran de este tipo de
dato. En una estructura se puede definir un componente de tipo struct definido antes que
esta.
struct datos {
char codigo[4];
char nombre[30];
char tele[8];
char catego;
};
struct registro {
struct datos datos_e;
float sal_bas,deven,deduc;
} emple;
Como interpreta el ejemplo anterior ?
Como haria mensión a los datos del campo datos_e ?
La forma general para la inclusión de estructuras dentro de otra puede ser :
<[Tipo almacenamiento]> struct <[nombre estructura]> { <Campo_1>;
<Campo_2>;struct <Estructura> <Campo_3>;...<Campo_n>;} <Variables>;
La inicialización de variables es importante, entonces se puede inicializar las variables o
componentes de una estructura ?
Autor: Luis Heladio Garzón Rodríguez
Que caracteristica debe tener la definición de la estructura para poderla inicializar ? Como
se debe hacer ?
<Tipo almacenamiento> struct <Estructura> <Variable_estructura> =
{<Valor_1,<Valor_2>,...<Valor_n>};
Que significa la forma general descrita antes ?
De esta manera lenguaje C tambien permite definir arreglos de estructuras.
<[Tipo almacenamiento]> struct <[nombre estructura]> { <Campo_1>;
<Campo_2>;...<Campo_n>;} <Arreglo> [Tamaño];
Que significa el siguiente ejemplo :
struct registro {
char codigo[4];
char nombre[30];
char tele[8];
char catego;
float sal_bas;
} emple[50];
Si en la declaración de variables se indica la siguiente orden :
struct registro emple[50]; , debe cambiar la declaración del ejemplo anterior ?
La forma de hacer referencia a los miembros o campos de una estructura varia dependiendo
de si es una estructura registro o un arreglo de estructuras :
<Variable_estructura>.<Campo>;
<Arreglo> [<Posición>] .<Campo>;
typedef es una palabra reservada del lenguaje y permite definir nuevos tipos de datos
equivalentes a los que tiene el lenguaje, esto en el caso de las estructuras es muy aplicable
por evitar hacer referencia a la orden struct en forma repetida, la forma general es :
typedef struct {<Campo_1>;<Campo_2>;...<Campo_n>;} <Nuevo_tipo>;
Como emplearia typedef para el ejemplo anterior ?
Como definiria la variable en la area de declaración de variables?
A que corresponde las siguientes formas generales ?
Autor: Luis Heladio Garzón Rodríguez
<Nuevo_tipo> <Variable_1>,<Variable_2>;
<Nuevo_tipo> <Arreglo> [<Tamaño>];
BIBLIOGRAFIA
Ortez, Manuel Antonio. Manual de programación en lenguaje C
http://www.monografias.com/trabajos33/programacion-lenguaje-c/programacion-lenguaje-c.shtml
López Ardao, J. Carlos. Programación en C.
http://www.scribd.com/doc/22283/Manual-De-Programacion-Lenguaje-C
Barzal, Fernando. Introducción a la programación. (Tipos de datos)
http://elvex.ugr.es/decsai/c/apuntes/datos.pdf
Sopla, Abraham. Algoritmos y Lenguaje C. (Estructuras de control)
http://www.mailxmail.com/curso-algoritmos-lenguaje-c/apuntes-lenguaje-c-1
Díaz Cuenca, Josué. Programación en C++.
http://www.mailxmail.com/curso-programacion-c/parametros-valor-referencia (Paso de parámetros)
http://www.mailxmail.com/curso-programacion-c/estructuras-uniones (Estructuras de datos y uniones)
Rodríguez, María Sandra y otros. Tutorial de Estructuras de Datos en C++
http://decsai.ugr.es/~jfv/ed1/c++/cdrom5/index.htm
Fernández Valdivia, Joaquín. Estructuras de datos en C++.
http://decsai.ugr.es/~jfv/ed.html
Estructuras de datos y Algo+.
http://www.algoritmia.net/articles.php?folder=Estructuras%20de%20Datos
Autor: Luis Heladio Garzón Rodríguez
OBJETIVO GENERAL
Propender porque el estudiante se apropie el aprendizaje de las características y
fundamentos del paradigma de programación funcional, aplicándolo en la construcción
de solución a problemas de programación.
OBJETIVOS ESPECIFICOS
 Conocer y comprender las características fundamentales del paradigma
programación funcional.
 Continuar el afianzamiento con las estructuras de control.
 Entender el propósito de los procesos de programación funcional.
 Comprender y poner en práctica la Definición y utilización de funciones
 Comprender los conceptos fundamentales de la programación y su importancia.
 Conocer y aplicar las estructuras de datos, entendiendo su importancia en la
programación.
 Profundizar mediante la investigación de los conceptos aquí tratados de parte del
estudiante.
PARADIGMA PROGRAMACIÓN FUNCIONAL
El paradigma de programación funcional considera al programa como una función
matemática.
Los orígenes de la programación funcional pueden rastrearse al matemático Alonzo
Church, que trabajaba en la Universidad de Princeton, y, al igual que otros
matemáticos de allí, estaba interesado en la matemática abstracta, particularmente en
el poder computacional de ciertas máquinas abstractas. Las preguntas que se hacía
eran por ejemplo: si dispusiésemos de máquinas de un ilimitado poder de cómputo,
¿qué tipos de problemas se podrían solucionar?, o ¿se pueden resolver todos los
problemas?1
Por ejemplo, podemos escribir en el lenguaje funcional Haskell:
Factorial :: int -> int
factorial 0 = 1
factorial n = n * factorial (n-1)
Es decir, la última es una función sencilla, parecida a la que conocemos de las
matemáticas de la secundaria, que permite calcular el factorial de un número entero
(ver definición de la función factorial más abajo).
1
Rivadera, Gustavo Ramiro. La programación funcional: un poderoso paradigma. 2008.
UNIDAD I
PARADIGMA PROGRAMACIÓN FUNCIONAL
Autor: Luis Heladio Garzón Rodríguez
Modelo imperativo (de Labra
1998)
Modelo funcional (de Labra 1998)
Comparativo entre paradigma imperativo y funcional
Comparemos esa línea de código de Haskell con la siguiente en un lenguaje como C#:
unsigned factorial (unsigned n)
{
int product = 1; // valor inicial
while (n > 1)
{
product *= n--; // acumulador
}
return product; // resultado
}
Este ejemplo es muy sencillo y los dos fragmentos de código son muy parecidos. Sin
embargo, la definición de Haskell es mucho más cercana a la matemática:
0! = 1
n! = n * (n - 1)!
3. CARACTERISTICAS
Autor: Luis Heladio Garzón Rodríguez
El paradigma de programación funcional, pertenece al grupo de la programación
declarativa. Son características importantes del paradigma funcional2
:
 Primero, en los lenguajes funcionales no existe el concepto de variables y
consecuentemente tampoco existen operaciones de asignación. Aunque podría
parecer que los parámetros de una función se comportan como una variable (puesto
que pueden llevar un nombre y su uso es de hecho parecido al de las variables),
esto es incorrecto: El valor de los parámetros es dado como fijo al inicio de la
función.
• Segundo, la existencia de una propiedad llamada transparencia referencial
(Referential transparency), la cual indica que una función sólo depende de sus
parámetros y que tendrá efecto únicamente en su resultado, por lo que podríamos
llamar a una función arbitrariamente sin tener efectos colaterales en el resto de los
cálculos.
• Por último, que una función puede ser utilizada como parámetros y resultados de
cualquier otra función.
Lenguajes
Los lenguajes más utilizados dentro de este paradigma son Standard ML, Haskell y
Scheme9 aunque hoy por hoy LOGO10 figuraría junto con otros dialectos de LISP.
Algunos lenguajes representativos en este paradigma son:
 Lenguajes funcionales puros Haskell y Miranda
 Lenguajes funcionales hibridos Scala, LISP, Scheme, Ocami, SAP y estándar ML
 Otros que contienen el paradigma funcional Perl, Python, Ruby
4. LENGUAJE SCHEME
Para desarrollar el tema sobre este paradigma, se toma como ejemplo al Scheme.
Características del lenguaje:
Paradigma: multi-paradigma
Apareció en: década de 1970
Diseñado por: Guy L. Steele y Gerald Jay Sussman
Tipo de dato: Fuerte, dinámico
Implementaciones: Scheme, Scheme 48, Chicken,
Gambit, FLUENT, Guile, Bigloo,
Chez Scheme, STk, STklos, Larceny,
SCM
2
Zarate Rea, Hector. Paradigmas de programación. Noviembre 2008.
Autor: Luis Heladio Garzón Rodríguez
Dialectos: T
Influido por: Lisp, ALGOL
Ha influido a: Common Lisp, JavaScript, Ruby
Scheme es un lenguaje de programación. Es un lenguaje funcional (si bien impuro, ya
que, por ejemplo, sus estructuras de datos no son inmutables) y un dialecto de Lisp.
Fue desarrollado por Guy L. Steele y Gerald Jay Sussman en la década de los setenta e
introducido en el mundo académico a través de una serie de artículos conocidos como
los Lambda Papers de Sussman y Steele.3
La filosofía de Scheme es decididamente minimalista. Su objetivo no es acumular un
gran número de funcionalidades, sino evitar las debilidades y restricciones que hacen
necesaria su adición. Así, Scheme proporciona el mínimo número posible de nociones
primitivas, construyendo todo lo demás a partir de un reducido número de
abstracciones. Por ejemplo, el mecanismo principal para el control de flujo son las
llamadas recursivas finales.
Scheme fue el primer dialecto de Lisp que usó ámbito estático o léxico (en lugar de
dinámico) de forma exclusiva. También fue uno de los primeros lenguajes de
programación con continuaciones explícitas. Scheme ofrece también gestión
automática de memoria (recolección de basura).
2.6 Tipos de datos
Los tipos de datos básicos del lenguaje Scheme son muy similares al estándar de la
lógica de programación, y también a los del lenguaje C.
Los datos simples con datos numéricos, alfanuméricos y lógicos (Ver más información
en la Unidad I. Introducción a los paradigmas de programación, tema1.1. Datos,
pagina 1.), que en lenguaje Scheme presenta algunas variantes respecto del lenguaje
C, revise estas especificidades en Scheme o Manual de referencia de Scheme.
En este enlace http://www.x.edu.uy/inet/IntHaskell98.pdf encontrara más información
sobre el lenguaje de programación Haskell, un lenguaje funcional puro (también puede
bajar el documento de curso virtual de Paradigmas de programación “Introducción al
Lenguaje Haskell”4
).
2.7 Estructuras de control
Al igual que otros lenguajes de programación de alto nivel este lenguaje trabaja con
estructuras de control permiten controlar el flujo de ejecución de las instrucciones en
un programa. Es de recordad que con estas estructuras se puede determinar, el orden,
3
Enciclopedia Wikipedia. http://es.wikipedia.org/wiki/Scheme
4
Labra G, Jose E. Introducción al Lengujae Hasell. Octubre 1998. http://www.x.edu.uy/inet/IntHaskell98.pdf
Autor: Luis Heladio Garzón Rodríguez
la interacción, la cantidad de repeticiones que ejecutarán las instrucciones que están
dentro de estas estructuras.
Las estructuras de control se pueden clasificar en: secuenciales, selectivas y
repetitivas.
Para profundizar sobre la sintaxis del scheme, respecto de sus estructuras de control
revise Manual de referencia de Scheme o Scheme, sugiero comparar las estructuras de
control del lenguaje scheme con las del lenguaje C, y establezca si hay diferencias
importantes.
2.8 Funciones y/o procedimientos
Para el lenguaje funcional su principal características es la de abordar la programación a
través de funciones.
Revise cual es la estructura de la sintaxis de las funciones en scheme, notara que al
comparar la forma de declararlas, es muy similar a lo que se revisó en la unidad II
(ítems 2.3 y 2.4), respecto del lenguaje C.
Se debe diferenciar y tener en cuenta tres instancias en las que se hace referencia al
trabajar con procedimientos o funciones: declarar, llamar y definir.
Sintaxis de la definición de una función o procedimiento (establezca la diferencia que hay
entre una función y un procedimiento):
<Tipo de dato> <Identificador función>(Lista de parámetros o argumentos)
{
<Instrucciones>
}
2.9 Estructuras de datos
2.9.1. Datos Estructurados
Este pertenece al tipo de datos definidos por el usuario. En el que se permite
configurar una combinación de datos de diferente tipo, que no esta predefinido en el
lenguaje de programación.
En el paradigma de programación funcional también existe estructuras de datos, es
importante en este caso plantear una reflexión sobre las similitudes y funcionalidades
de estas.
Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo al
paradigma de programación y el lenguaje de programación.
2.9.2 Estructura de datos
Las estructuras de datos corresponden a los tipos de datos definidos por el usuario y le
trabajo con formas de almacenamiento en memoria principal, para manipular datos en
Autor: Luis Heladio Garzón Rodríguez
mayor volumen. Los lenguajes de últimas generaciones, permiten definir tipos de
datos que se acoplen a las necesidades específicas del problema a resolver.
Las estructuras de datos se clasifican en estáticas y dinámicas. En el grupo de las
estáticas están los arreglos que a su vez son lineales, bidimensionales y
multidimensionales. Las dinámicas en las que se encuentran las pilas, listas, colas,
grafos y árboles.
2.9.3 Arreglos
Los arreglos multidimensionales permiten definir ARRAYS de varias filas y columnas, o
varias filas y varias caras. La forma general para definir arreglos de este tipo es :
BIBLIOGRAFIA
Labra G, Jose E. Introducción al Lengujae Hasell. Octubre 1998.
http://www.x.edu.uy/inet/IntHaskell98.pdf
Manual de referencia Lenguaje Scheme.
http://www.dccia.ua.es/dccia/inf/asignaturas/LPP/2004-2005/doc/scheme.pdf
Enciclopedia Wikipedia. http://es.wikipedia.org/wiki/Scheme
Martinez Villalobos, Gustavo. Paradigmas de programación.
http://www.unibague.edu.co/~gustavo.martinez/cursos/paradigmas/index.html
Estructuras de datos y Algo+.
http://www.algoritmia.net/articles.php?folder=Estructuras%20de%20Datos
Autor: Luis Heladio Garzón Rodríguez
OBJETIVO GENERAL
Propender porque el estudiante se apropie el aprendizaje de las características y
fundamentos del paradigma de programación Lógica, aplicándolo en la construcción de
solución a problemas de programación.
OBJETIVOS ESPECIFICOS
 Conocer y comprender las características fundamentales del paradigma
programación lógica.
 Continuar el afianzamiento con las estructuras de control.
 Entender el propósito de los procesos del paradigma de programación lógica.
 Comprender y poner en práctica la Definición y utilización de funciones
 Comprender los conceptos fundamentales de la programación lógica y su
importancia.
 Conocer y aplicar las estructuras de datos, entendiendo su importancia en la
programación lógica.
 Profundizar mediante la investigación de los conceptos aquí tratados de parte del
estudiante.
PARADIGMA PROGRAMACIÓN LÓGICA
Programación Lógica es una forma de crear soluciones basadas en la experiencia y la
acumulación del conocimiento, aplicando la inferencia con lo que se obtengan
soluciones en combinación de programas muy aproximado a la realidad.
El paradigma lógico difiere de forma importante de otros paradigmas5
. No sólo en su
Sintaxis o semántica, sino que en él la lógica representa conocimiento, el cual es
manipulado mediante inferencias. A diferencia de los demás paradigmas, trabajar en
este significa especificar qué hacer y no cómo hacerlo, por ello son llamados
lenguajes declarativos.
El proceso general de la programación lógica es que a partir de un conjunto de reglas
(axiomas) e inferencias podamos comprobar nuevas proposiciones que nos sean
relevantes. Este proceso está basado en reglas de lógica de primer orden.
Al ser un paradigma bastante abstracto vale la pena esclarecerlo a través de algunos
ejemplos. Aunque Prolog es el lenguaje más representativo en este paradigma, se
puede hacer ejemplos en Structured Query Language (SQL), un lenguaje para operar
bases de datos y el cual representa otra de las aplicaciones de la programación lógica.
La programación lógica es un tipo de paradigma de programación dentro del
paradigma de programación declarativa. El resto de los subparadigmas de
programación dentro de la programación lógica son: programación funcional,
5
Véase: Mitchell, John. Concepts in Programming Languages, Reino Unido: Cambridge University
Press, 2003.
UNIDAD I
PARADIGMA PROGRAMACIÓN LÓGICA
Autor: Luis Heladio Garzón Rodríguez
programación basada en restricciones, programas DSL (de dominio específico) e
híbridos. La programación declarativa gira en torno al concepto de predicado, o
relación entre elementos. La programación funcional se basa en el concepto de
función (que no es más que una evolución de los predicados), de corte más
matemático6
.
La programación lógica, junto con la funcional, forma parte de lo que se conoce como
programación declarativa. En los lenguajes tradicionales, la programación consiste
en indicar cómo resolver un problema mediante sentencias; en la programación lógica,
se trabaja de una forma descriptiva, estableciendo relaciones entre entidades,
indicando no cómo, sino qué hacer. La ecuación de Robert Kowalski (Universidad de
Edimburgo) establece la idea esencial de la programación lógica: algoritmos = lógica +
control. Es decir, un algoritmo se construye especificando conocimiento en un lenguaje
formal (lógica de primer orden), y el problema se resuelve mediante un mecanismo de
inferencia (control) que actúa sobre aquél7
.
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por
ejemplo vamos a pensar en un coche para tratar de modelarlo en un esquema de POO.
Diríamos que el coche es el elemento principal que tiene una serie de características,
como podrían ser el color, el modelo o la marca. Además tiene una serie de
funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las
características como el color o el modelo y los métodos serían las funcionalidades
asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cómo modelaríamos en un esquema de POO una
fracción, es decir, esa estructura matemática que tiene un numerador y un
denominador que divide al numerador, por ejemplo 3/2.
La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador.
Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o
número, restarse con otra fracción, etc.
Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de
matemáticas harás uso de objetos fracción y en un programa que gestione un taller de
coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos
objetos para realizar las acciones que se desean realizar y ellos mismos también son
objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche,
herramienta, mecánico, recambios, etc.
De acuerdo a esto podemos concluir que en la programación orientada a objetos, la
reusabilidad, el empaquetamiento, la ocultación, la encapsulación, la modularidad, la
herencia son características fundamentales para hacer que los esfuerzos de
programación puedan redundar en menores esfuerzos humanos, mayores beneficios o
resultados y baja de costos.
La programación orientada a objetos es una técnica cuyo bloque de construcción
principal son los objetos y las interrelaciones.
6
Wikipedia, programación lógica. http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica
7
Rossel, Gerardo. http://www.amzi.com/articles/code07_whitepaper.pdf
Autor: Luis Heladio Garzón Rodríguez
Un objeto son estructuras de datos más las funciones que operan sobre estas
estructuras.
5. CARACTERISTICAS
La mayoría de los lenguajes de programación lógica se basan en la teoría lógica de
primer orden, aunque también incorporan algunos comportamientos de orden superior.
En este sentido, destacan los lenguajes funcionales, ya que se basan en el cálculo
lambda, que es la única teoría lógica de orden superior que es demostradamente
computable (hasta el momento)8
.
La programación lógica permite formalizar hechos del mundo real, por ejemplo:
las aves vuelan
los pingüinos no vuelan
"pichurri" es un ave
"sandokan" es un perro
"alegría" es un ave
Lenguajes
La creación de Prolog se dio en 1973. Kowalski y Colmerauer con su equipo a menudo
interactúan en el período 1971-1973. Esto ha influido en sus opiniones y les ayudó a
cristalizar las ideas.
Prolog puede verse como una realización práctica de la idea de los programas de la
lógica. Comenzó como una programación idioma para aplicaciones en el
procesamiento del lenguaje natural, pero poco después se comprobó que se puede
utilizar como un lenguaje de programación de propósito general, también. Un número
de intentos de otros para realizar el cálculo como paradigma de deducción se propone
en la misma época, en particular por Cordell Green y Carl Hewitt, pero la propuesta de
programación lógica, probablemente porque era la más simple y más versátil, se
convirtió en de mayor éxito.
Originalmente, Prolog fue implementado por Philippe Roussel, un colega de
Colmerauer, en forma por un intérprete, escrito en Algol-W. Un avance importante se
logró por David H. Warren quien propuso en 1983 una máquina abstracta, que ahora
se llama WAM (Warren Abstract Machine), que consiste en una arquitectura de la
máquina con un conjunto de instrucciones que sirve como un objetivo independiente
para la máquina Prolog compiladores. WAM se convirtió en una base común para la
aplicación de Prolog y la programación lógica de otros idiomas.
6. LENGUAJE PROLOG
Para desarrollar el tema sobre este paradigma, se toma como ejemplo a Prolog.
Características del lenguaje:
8
Paradigma de programación lógica.
http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica#Fundamentos
Autor: Luis Heladio Garzón Rodríguez
Paradigma: Lógica
Apareció en: 1971
Diseñado por: Alain Colmenaur y Philippe
Roussel
Tipo de dato: Fuerte, Estático
Implementaciones: Numerosas
Influido por:
Ha influido a:
Sistema operativo: Multiplataforma
Licencia de
software:
GNU GPL
Prolog Se trata de un lenguaje de programación ideado a principios de los años 70 en
la Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain Colmerauer
y Philippe Roussel. Nació de un proyecto que no tenía como objetivo la implementación
de un lenguaje de programación, sino el procesamiento de lenguajes naturales. Alain
Colmerauer y Robert Pasero trabajaban en la parte del procesado del lenguaje natural
y Jean Trudel y Philippe Roussel en la parte de deducción e inferencia del sistema.
Interesado por el método de resolución SL, Trudel persuadió a Robert Kowalski para
que se uniera al proyecto, dando lugar a una versión preliminar del lenguaje Prolog a
finales de 19712
y apareciendo la versión definitiva en 1972.3
Esta primera versión de
Prolog fue programada en ALGOL W.
Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en 1983,
David H.D. Warren desarrolló un compilador capaz de traducir Prolog en un conjunto
de instrucciones de una máquina abstracta denominada Warren Abstract Machine, o
abreviadamente, WAM. Desde entonces Prolog es un lenguaje semi-interpretado.
Si bien en un principio se trataba de un lenguaje de uso reducido, la aparición de
intérpretes del mismo para microordenadores de 8 bits (ej: micro-PROLOG) y para
ordenadores domésticos de 16 bits (ej: Turbo PROLOG de Borland, entre otros
muchos) a lo largo de la década de 1980 contribuyó notablemente a su
popularización.4
Otro importante factor en su difusión fue la adopción del mismo para
el desarrollo del proyecto de la quinta generación de computadoras a principios de la
década de los 80,5
en cuyo contexto se desarrolló la implementación paralelizada del
lenguaje llamada KL1 y del que deriva parte del desarrollo moderno de Prolog.
Las primeras versiones del lenguaje diferían, en sus diferentes implementaciones, en
muchos aspectos de sus sintaxis, empleándose mayormente como forma normalizada
el dialecto propuesto por la Universidad de Edimburgo6
, hasta que en 1995 se
estableció un estándar ISO (ISO/IEC 13211-1), llamado ISO-Prolog.
Para profundizar sobre el lenguaje prolog y sus características revise en
http://es.wikipedia.org/wiki/Prolog
Autor: Luis Heladio Garzón Rodríguez
http://www.dirinfo.unsl.edu.ar/~analisis/teorias/teo_prolog_2006.pdf
Por cuenta propia debe investigar los temas siguientes, para que pueda ir
estableciendo un comparativo con los otros paradigmas de programación revisados.
2.1 Tipos de datos
2.2 Estructuras de control
2.3 Funciones y/o procedimientos
2.4 Estructuras de datos
2.4.1 Datos Estructurados
2.4.2 Estructura de datos
2.4.2.1 Arreglos
2.5 Creación de objetos
2.6 Constructores
2.7 Reglas de Matching
BIBLIOGRAFIA
El lenguaje de programación Prolog.
http://www.lawebdelprogramador.com/cursos/enlace.php?idp=4805&id=77&texto=Prolog
The GNU Prolog Web Site. http://www.gprolog.org/
Prolog. Wikipedia. http://es.wikipedia.org/wiki/Prolog
Programación lógica. http://www.amzi.com/articles/code07_whitepaper.pdf
Paradigma lógico. http://www-2.dc.uba.ar/materias/plp/20062C/download/clase8.pdf
Programación lógica. http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica

Más contenido relacionado

La actualidad más candente

Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacionWil Mer
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOFredy Olaya
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructuradavnslgars
 
Programacion Estructurada
Programacion EstructuradaProgramacion Estructurada
Programacion EstructuradaJoseph Bros
 
Paradigmas de programacion
Paradigmas de programacion Paradigmas de programacion
Paradigmas de programacion Anel Sosa
 
PARADIGMA FUNCIONAL
PARADIGMA FUNCIONALPARADIGMA FUNCIONAL
PARADIGMA FUNCIONALFredy Olaya
 
Programación Modular y Estructyrada
Programación Modular y EstructyradaProgramación Modular y Estructyrada
Programación Modular y Estructyradaguestefc95b
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructuradaHenry Centeno
 
Programacion Orientada Objetos
Programacion Orientada ObjetosProgramacion Orientada Objetos
Programacion Orientada Objetosliliandrade
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacionyamy matin
 
Paradigma de Lenguaje de Programaciòn
Paradigma de Lenguaje de ProgramaciònParadigma de Lenguaje de Programaciòn
Paradigma de Lenguaje de ProgramaciònEriick Leon
 
Introducción a los paradigmas de programación
Introducción a los paradigmas de programaciónIntroducción a los paradigmas de programación
Introducción a los paradigmas de programaciónJose Sanchez
 

La actualidad más candente (20)

Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacion
 
Programacion MODULAR
Programacion MODULARProgramacion MODULAR
Programacion MODULAR
 
Lenguajesprog
LenguajesprogLenguajesprog
Lenguajesprog
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVO
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programacion Estructurada
Programacion EstructuradaProgramacion Estructurada
Programacion Estructurada
 
Paradigmas de programacion
Paradigmas de programacion Paradigmas de programacion
Paradigmas de programacion
 
PARADIGMA FUNCIONAL
PARADIGMA FUNCIONALPARADIGMA FUNCIONAL
PARADIGMA FUNCIONAL
 
Programación Modular y Estructyrada
Programación Modular y EstructyradaProgramación Modular y Estructyrada
Programación Modular y Estructyrada
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programación modular
Programación modularProgramación modular
Programación modular
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programacion Orientada Objetos
Programacion Orientada ObjetosProgramacion Orientada Objetos
Programacion Orientada Objetos
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacion
 
Programación!! . .
Programación!! . .Programación!! . .
Programación!! . .
 
Paradigma de Lenguaje de Programaciòn
Paradigma de Lenguaje de ProgramaciònParadigma de Lenguaje de Programaciòn
Paradigma de Lenguaje de Programaciòn
 
Introducción a los paradigmas de programación
Introducción a los paradigmas de programaciónIntroducción a los paradigmas de programación
Introducción a los paradigmas de programación
 
Programacion declarativa manual basico de teoria
Programacion declarativa manual basico de teoriaProgramacion declarativa manual basico de teoria
Programacion declarativa manual basico de teoria
 

Similar a Paradigmas de Programación

Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructuradaVivi Marquez
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructuradaVivi Marquez
 
Objetos: 1. paradigmas de programación
Objetos: 1. paradigmas de programaciónObjetos: 1. paradigmas de programación
Objetos: 1. paradigmas de programaciónjeavilah
 
Programacion estructurado
Programacion estructuradoProgramacion estructurado
Programacion estructuradoAgapito26
 
Programacion estructurado
Programacion estructuradoProgramacion estructurado
Programacion estructuradoAgapito26
 
Introduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionIntroduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionlupitagarcia07
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructuradaRubixita12
 
Unidad 2
Unidad 2Unidad 2
Unidad 2Rurus9
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programaciónMaría Alvarez
 
lenguaje y herramientas
lenguaje y herramientaslenguaje y herramientas
lenguaje y herramientasivan penagos
 
Paradigmasdeprogramacion
ParadigmasdeprogramacionParadigmasdeprogramacion
ParadigmasdeprogramacionVictor Zapata
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructuradaJonathan Abel
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructuradaAngel Ordoñez
 
Lenguajes1
Lenguajes1Lenguajes1
Lenguajes1Ernesto
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructuradaronnyme21
 

Similar a Paradigmas de Programación (20)

Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Objetos: 1. paradigmas de programación
Objetos: 1. paradigmas de programaciónObjetos: 1. paradigmas de programación
Objetos: 1. paradigmas de programación
 
Programacion estructurado
Programacion estructuradoProgramacion estructurado
Programacion estructurado
 
Programacion estructurado
Programacion estructuradoProgramacion estructurado
Programacion estructurado
 
Introduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionIntroduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacion
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programación
 
lenguaje y herramientas
lenguaje y herramientaslenguaje y herramientas
lenguaje y herramientas
 
Paradigmasdeprogramacion
ParadigmasdeprogramacionParadigmasdeprogramacion
Paradigmasdeprogramacion
 
Programación modular
Programación modularProgramación modular
Programación modular
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Lenguajes1
Lenguajes1Lenguajes1
Lenguajes1
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Glosario de terminos
Glosario de terminosGlosario de terminos
Glosario de terminos
 
Int a la computacion
Int a la computacionInt a la computacion
Int a la computacion
 

Más de Jose Sanchez

Sanchez_Jose_Semana8.pdf
Sanchez_Jose_Semana8.pdfSanchez_Jose_Semana8.pdf
Sanchez_Jose_Semana8.pdfJose Sanchez
 
Database miningguide
Database miningguideDatabase miningguide
Database miningguideJose Sanchez
 
Maquinas de vectores
Maquinas de vectoresMaquinas de vectores
Maquinas de vectoresJose Sanchez
 
Ensayo tutoria 1 sep
Ensayo tutoria 1 sepEnsayo tutoria 1 sep
Ensayo tutoria 1 sepJose Sanchez
 
Algoritmos para aplicar data mining
Algoritmos para aplicar data miningAlgoritmos para aplicar data mining
Algoritmos para aplicar data miningJose Sanchez
 
Segunda condicional
Segunda condicionalSegunda condicional
Segunda condicionalJose Sanchez
 
Aprenda Java como si estuviera en primero
Aprenda Java como si estuviera en primeroAprenda Java como si estuviera en primero
Aprenda Java como si estuviera en primeroJose Sanchez
 
Preguntas generadoras(1)
Preguntas generadoras(1)Preguntas generadoras(1)
Preguntas generadoras(1)Jose Sanchez
 
Actividad de Aprendizaje
Actividad de AprendizajeActividad de Aprendizaje
Actividad de AprendizajeJose Sanchez
 
Herramientas de Programación
Herramientas de ProgramaciónHerramientas de Programación
Herramientas de ProgramaciónJose Sanchez
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosJose Sanchez
 
Personal introduction
Personal introductionPersonal introduction
Personal introductionJose Sanchez
 
Unit 1 jose martin sanchez cardoso
Unit 1 jose martin sanchez cardosoUnit 1 jose martin sanchez cardoso
Unit 1 jose martin sanchez cardosoJose Sanchez
 

Más de Jose Sanchez (20)

Sanchez_Jose_Semana8.pdf
Sanchez_Jose_Semana8.pdfSanchez_Jose_Semana8.pdf
Sanchez_Jose_Semana8.pdf
 
Database miningguide
Database miningguideDatabase miningguide
Database miningguide
 
Maquinas de vectores
Maquinas de vectoresMaquinas de vectores
Maquinas de vectores
 
Ensayo tutoria 1 sep
Ensayo tutoria 1 sepEnsayo tutoria 1 sep
Ensayo tutoria 1 sep
 
Algoritmos para aplicar data mining
Algoritmos para aplicar data miningAlgoritmos para aplicar data mining
Algoritmos para aplicar data mining
 
Data mining
Data mining Data mining
Data mining
 
Segunda condicional
Segunda condicionalSegunda condicional
Segunda condicional
 
Unit 8
Unit 8Unit 8
Unit 8
 
Aprenda Java como si estuviera en primero
Aprenda Java como si estuviera en primeroAprenda Java como si estuviera en primero
Aprenda Java como si estuviera en primero
 
Preguntas generadoras(1)
Preguntas generadoras(1)Preguntas generadoras(1)
Preguntas generadoras(1)
 
Taller n°1(1)
Taller n°1(1)Taller n°1(1)
Taller n°1(1)
 
Actividad de Aprendizaje
Actividad de AprendizajeActividad de Aprendizaje
Actividad de Aprendizaje
 
Herramientas de Programación
Herramientas de ProgramaciónHerramientas de Programación
Herramientas de Programación
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a Objetos
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
 
The thirty
The thirtyThe thirty
The thirty
 
Resumen 39 steps
Resumen 39 stepsResumen 39 steps
Resumen 39 steps
 
My daily routine
My daily routineMy daily routine
My daily routine
 
Personal introduction
Personal introductionPersonal introduction
Personal introduction
 
Unit 1 jose martin sanchez cardoso
Unit 1 jose martin sanchez cardosoUnit 1 jose martin sanchez cardoso
Unit 1 jose martin sanchez cardoso
 

Último

PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciazacariasd49
 
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfManual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfSandXmovex
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendioseduardochavezg1
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfAnonymous0pBRsQXfnx
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfZamiertCruzSuyo
 

Último (20)

PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potencia
 
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfManual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendios
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdf
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
 

Paradigmas de Programación

  • 1. Autor: Luis Heladio Garzón Rodríguez OBJETIVO GENERAL Propender porque el estudiante se apropie el aprendizaje de las características y fundamentos del paradigma imperativo, aplicándolo en la construcción de solución a problemas de programación. OBJETIVOS ESPECIFICOS  Conocer y comprender las características fundamentales del paradigma imperativo.  Conocer y familiarizarse con las estructuras de control.  Entender el propósito de los procesos interactivos en la programación.  Comprender y poner en práctica la Definición y utilización de funciones  Comprender los conceptos fundamentales de la programación y su importancia.  Conocer y aplicar las estructuras de datos, entendiendo su importancia en la programación.  Profundizar mediante la investigación de los conceptos aquí tratados de parte del estudiante. PARADIGMA IMPERATIVO o PROCEDURAL o ESTRUCTURADO La programación en el paradigma imperativo consiste en determinar qué datos son requeridos para el cálculo, asociar a esos datos unas direcciones de memoria, y efectuar paso a paso una secuencia de transformaciones en los datos almacenados, de forma que el estado final represente el resultado correcto. En su forma pura este paradigma sólo soporta sentencias simples que modifican la memoria y efectúan bifurcaciones condicionales e incondicionales. Incluso cuando se añade una forma simple de abstracción procedimental, el modelo permanece básicamente sin cambiar. Los parámetros de los procedimientos son "alias" de las zonas de memoria, por lo que pueden alterar su valor, y no retorna ningún tipo de cálculo. La memoria también se puede actualizar directamente mediante referencias globales. El paradigma imperativo debe su nombre al papel dominante que desempeñan las sentencias imperativas. Su esencia es el cálculo iterativo, paso a paso, de valores de nivel inferior y su asignación a posiciones de memoria. También conocido como estructurado porque La programación se divide en bloques (procedimientos y funciones) que pueden o no comunicarse entre sí. Además la programación se controla con secuencia, selección e iteración. Permite reutilizar código programado y otorga una mejor compresión de la programación. UNIDAD I PARADIGMA IMPERATIVO o PROCEDURAL o ESTRUCTURADO
  • 2. Autor: Luis Heladio Garzón Rodríguez 1. CARACTERISTICAS Este paradigma se caracteriza por un modelo abstracto de ordenador que consiste en un gran almacenamiento de memoria. El ordenador almacena una representación codificada de un cálculo y ejecuta una secuencia de comandos que modifican el contenido de ese almacenamiento. Este paradigma viene bien representado por la arquitectura Von Neuman (1903-1957), ya que utiliza este modelo de máquina para conceptualizar las soluciones: "Existe un programa en memoria que se va ejecutando secuencialmente, y que toma unos datos de la memoria, efectúa unos cálculos y actualiza la memoria". Las características más notables o representativas que se puede enunciar de este paradigma son:  Concepto de celda de memoria ("variable") para almacenar valores. El componente principal de la arquitectura es la memoria, compuesto por un gran número de celdas donde se almacenan los datos. Las celdas tienen nombre (concepto de variable) que las referencian, y sobre los que se producen efectos de lado y definiciones de alias.  Operaciones de asignación. Estrechamente ligado a la arquitectura de la memoria, se encuentra la idea de que cada valor calculado debe ser "almacenado", es decir asignado a una celda. Esta es la razón de la importancia de la sentencia de asignación en el paradigma imperativo.  Repetición. Un programa imperativo, normalmente realiza su tarea ejecutando repetidamente una secuencia de pasos elementales, ya que en este modelo computacional la única forma de ejecutar algo complejo es repitiendo una secuencia de instrucciones. Breve historia  Los primeros programas fueron escritos en código de máquina.  Los primeros en surgir fueron los denominados de bajo nivel (“assembler”)  Los primeros de alto nivel fueron Fortran y Cobol.  Posteriormente aparecen lenguajes como Pascal, Algol-68.  La aparición de Lenguaje C, luego de lenguajes que no llegaron a distribuirse en forma comercial como A y B, marco un hito importante en los lenguajes imperativos.  La programación imperativa fue sin duda la dominante hasta mediados de los 90. Paradigma: Imperativo (Procedural), Estructurado Apareció en: 1972 Diseñado por: Dennis M. Ritchie Desarrollador: Dennis Ritchie y Bell Labs
  • 3. Autor: Luis Heladio Garzón Rodríguez Última versión estable: C99 (Marzo de 2000) Tipo de dato: Débil, Estático Implementaciones: Múltiples Dialectos: Cyclone, Unified Parallel C, Split- C, Cilk, C* Influido por: B (BCPL,CPL), ALGOL 68,1 Ensamblador, PL/I, Fortran Fuente: Wikipedia.com Lenguajes Algunos lenguajes representativos en este paradigma son:  PASCAL, C, FORTRAN, ALGOL, COBOL, ADA, CLIPPER, FOX, PL/1, C++, C#, etc. Características de la Programación Estructurada Teniendo en cuenta que otro de los nombres que recibe el paradigma imperativo es el de estructurado, se puede decir que fue la primera manera universalmente aceptada de organizar un programa que cumpliera los siguientes objetivos: 1. Deber ser fácil de leer y de comprender leyendo el propio código 2. Debe ser fácil de depurar 3. Debe ser fácil de mantener 4. Permitir el trabajo en equipo sobre un mismo programa. 2. LENGUAJE C Para desarrollar el tema sobre este paradigma, se toma como ejemplo al lenguaje C. El lenguaje C, fue creado por Dennis M. Ritchie en los laboratorios Dell, es un lenguaje que permite trabajar con datos simples y estructurados (definidos por el usuario), con estructuras de control que permiten trabajar selectividad, repetición de instrucciones, con la facilidad de poder estructurar los programas en módulos o subprogramas más pequeños también llamados procedimientos y funciones. C es, probablemente, uno de los lenguajes más utilizados actualmente. Es un lenguaje estructurado, pero también permite una programación de bajo nivel, lo cual lo hace adecuado para sistemas operativos (como Unix) y como software de control de periféricos, aunque se utiliza en todo un tipo de aplicaciones, incluso en las de más alto nivel, como por ejemplo, librerías gráficas. (Ver más información en la Unidad I. Introducción a los paradigmas de programación, página 7) En el siguiente enlace encontrara mayor información sobre el lenguaje C y sus características http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_C
  • 4. Autor: Luis Heladio Garzón Rodríguez 2.1 Tipos de datos Los tipos de datos básicos en lenguaje C o en los lenguajes de programación en general, se clasifican en datos simples y estructurados. Los datos simples con datos numéricos, alfanuméricos y lógicos (Ver mas información en la Unidad I. Introducción a los paradigmas de programación, tema1.1. Datos, pagina 1.), que en lenguaje C específicamente presenta algunas variantes, posibilitando una mejor clasificación de los datos, para optimizar la utilización de la memoria. Los datos básicos en C son: int, float, doublé, char, void, boolean Se puede obtener otros tipos de datos, utilizando los modificadores long y short, con menor o mayor capacidad de almacenamiento, en este caso cada tipo de dato ocupa una cantidad de bytes diferente, que puede aumentar si emplea long o disminuir si lo hace con short. Ampliar información sobre datos básicos en C (Ver documento en curso AVA en plataforma) En este enlace http://www.carlospes.com/curso_de_lenguaje_c/01_04_tipos_de_datos.php encontrara mas información sobre los tipos de datos básicos del lenguaje C. Los datos estructurados están conformados por registros (register) (Ver también tipos de datos unidad I, Introducción a los paradigmas de programación, datos estructurados). 2.2 Estructuras de control Las estructuras de control permiten controlar el flujo de ejecución de las instrucciones en un programa. Con estas estructuras se puede determinar, el orden, la interacción, la cantidad de repeticiones que ejecutarán las instrucciones que están dentro de estas estructuras. Las estructuras de control impiden se apliquen usos anormales de rompimiento de secuencia, lo que anteriormente se podía realizar a través de la instrucción GOTO. En la actualidad se sugiere como buena practica de programación, no utilizar esta instrucción, pues existe otras formas mas adecuadas para lograr un estilo de programación limpia. Las estructuras de control se pueden clasificar en: secuenciales, selectivas y repetitivas. La estructura secuencial no representa mayor complejidad, pues las instrucciones se ejecutan una a una en el orden en que están escritas en el programa. Las estructuras selectivas a diferencia de la estructura secuencial, permitan bifurcar (tomar varios caminos) la ejecución del programa, de acuerdo a la evaluación de condiciones, para ejecutar uno u otro conjunto de instrucciones. Estas se clasifican a s vez en condicionales y de selección múltiple. Las estructuras condicionales también se pueden clasificar en:
  • 5. Autor: Luis Heladio Garzón Rodríguez Estructuras condicionales Simples Solo se ejecutan las instrucciones de la estructura cuando se evalúa como verdadera la condición. Sintaxis: if (<Condición>) { <Conjunto de instrucciones> } Estructuras condicionales alternas Tiene dos alternativas, para ejecutar un conjunto diferente de instrucciones, por verdadero o falso, de acuerdo a la evaluación de la condición. Sintaxis: if (<Condición>) { <Conjunto de instrucciones> } else {<Conjunto de instrucciones> } Estructuras condicionales anidadas Surgen como una derivación de combinar las estructuras condicionales simples y alternas, permitiendo la evaluación de múltiples casos como condiciones para soluciones posibles al problema a resolver. Esto significa que se puede anidar por verdadero o falso, según sea el caso, otras estructuras condicionales simples o alternas. Con este tipo de estructura se puede plantear solución a problemas, cuando una variable puede optar o tener varios posibles valores. Sintaxis: if (<Condición>) { if (<Condición>) { <Conjunto de instrucciones> } } else { if (<Condición>) {<Conjunto de instrucciones> } } Estructura de selección múltiple o selectivas Algunos lenguajes como el C, tienen una estructura de control, que permite simplificar la escritura de soluciones que se hace a través del uso de las estructuras condicionales anidadas. Esta estructura de control se trabaja a través del comando switch - case Sintaxis: switch (<Variable de control>) { case <valor opción 1>{ <conjunto de instrucciones> }; break; case <valor opción 1>{ <conjunto de instrucciones> }; break;
  • 6. Autor: Luis Heladio Garzón Rodríguez case <valor opción 1>{ <conjunto de instrucciones> }; break; other <valor opción 1>{ <conjunto de instrucciones> }; break; } Las estructuras repetitivas facilitan que se repita un conjunto de instrucciones, un número determinado de veces. Las estructuras repetitivas en C son while, do-while, for. Cada una de ellas se debe utilizar de acuerdo al tipo de problema que se tenga que resolver. Igual cada una de ellas tiene unas características, que les diferencia para su aplicación. Estructura repetitiva for Esta sentencia o comando, tiene como característica fundamental, que permite ejecutar un conjunto de instrucciones un número determinado o preciso de veces conocido. Sintaxis: for(Vc:= Vi;Vc <condición de fin>; <incremento> ) { <conjunto de instrucciones> } Explicación: Vc : La variable de control, lleva el conteo para el número de repeticiones Vi : valor inicial en el que arranca el conteo de la variable de control Condición de fin : El ciclo repetitivo se cumplirá hasta cuando se cumpla la condición de fin Incremento : Para controlar el número de repeticiones, se debe indicar el valor de incremento de cada interacción. Se puede utilizar en forma de decremento también. Escriba un programa, que calcule la máxima área de un terreno rectangular de lados 100-2x y x respectivamente, para valores de x entre 10 y 30. Programa en Seudolenguaje Var Entero x, area Inicio Para x=10 hasta x<=30 haga //x es la variable de control inicia en 10 y termina en 30 area=100-2*x //Se calcula el área multiplicando 100- y el valor de 2 por x Esciba x, area //Muestra los valores de x y area Fin Para Fin //Programa en lenguaje C #include<stdio.h> main(void) { int x,area; for(x=10; x<=30;x++) { area = 100 – 2 * x; cout<<"Area para “<<x<<” es “<<area<<” Mts 2”; } } La instrucción x++, es el incremento de uno en uno. ++ es uno de los operadores monarios del lenguaje C. Otra forma simplificada para este mismo ejercicio puede ser como la que se presenta a continuación
  • 7. Autor: Luis Heladio Garzón Rodríguez //Programa en lenguaje C #include<stdio.h> main(void) { int x,area; for(x=10; x<=30;x++) cout<<"%d Area para “<<x<<” es “<<(100-2*x); } La simplificación consiste en que se calcula el área en la misma instrucción, donde se da la orden de mostrar resultados, esta forma a veces puede ser útil cuando no se requiere almacenar resultados. Estructura repetitiva while While es un comando que permite se ejecute un conjunto de instrucciones mientras se cumpla una condición. Sintaxis: while (<condición>) { <conjunto de instrucciones> } Es importante resaltar, que la variable que se evalúa en la condición, antes de la instrucción while debe obtener un valor, para que por lo menos se ejecute una vez, de lo contrario el conjunto de instrucciones no se ejecutara ni una vez. El conjunto de instrucciones se ejecutara siempre que la evaluación de la condición sea verdadera. Esta estructura repetitiva se utiliza cuando no existe un numero cierto de veces para ejecutar las instrucciones, por ejemplo se pudiera trabajar con una variable centinela o bandera. Ejercicio: Usando la instrucción mientras para escribir un programa que imprima la serie 1, 3, 5, 7,9. Programa seudolenguaje Var Entero i Inicio i = 1 mientras (i<=9) haga Escriba i i = i+2 Fin mientras Fin Explicación: Como se puede observar la variable i desempeña el papel de variable de control y en este caso asume como contador de operaciones hasta cuando llegue al límite que es 9. La instrucción i = i + 2, es la forma como en Seudolenguaje se expresa un contador, que en este caso se incrementa de dos en dos, hasta llegar al tope indicado. //Programa en C #include<stdio.h> main(void) { int i;
  • 8. Autor: Luis Heladio Garzón Rodríguez i=1; while(I <= 9) { cout<<" n número= “<<i; i=i+2; } } Estructura repetitiva do - while do - while es un comando que permite se ejecute por lo menos una vez un conjunto de instrucciones hasta cuando se cumpla una condición. Sintaxis: do { <conjunto de instrucciones> } while (<condición>); Esto se puede interpretar como haga (do) mientras que (while) una condición no se cumpla. En este caso la condición se encuentra después de ejecutar el conjunto de instrucciones (al final de la estructura repetitiva), por ello se dice que se ejecuta por lo menos una vez. Ejercicio: Se planteara el mismo problema para el caso del while. Usando la instrucción haga mientras que, escribir un programa que imprima la serie 1, 3, 5, 7,9. Programa seudolenguaje Var Entero i Inicio i = 1 haga Escriba i i = i+2 mientras (i<=9) Fin Explicación: Como se puede observar la variable i desempeña el papel de variable de control y en este caso asume como contador de operaciones hasta cuando llegue al límite que es 9. A diferencia del caso anterior, el comando mientras esta al final, por ello cuando se evalúa la condición se habrá ejecutado por lo menos una vez, el conjunto de instrucciones. //Programa en C #include<stdio.h> main(void) { int i; i=1; do { cout<<" n número= “<<i; i=i+2;
  • 9. Autor: Luis Heladio Garzón Rodríguez } while(I <= 9); } 2.3 Procesos o procedimientos La programación por procedimientos es un paradigma que permite descomponer la solución de un problema o programa en subprogramas, subrutinas, procesos y/o funciones, en los que se ejecuta un conjunto de instrucciones. En el lenguaje de programación C se declaran como funciones y se pueden utilizar con dos fines o de dos formas. La primera son funciones utilizadas como subprogramas que hacen alguna operación pero no retornan un valor, lo que representa el trabajo de un procedimiento. La segunda son funciones que reciben parámetros, ejecutan instrucciones y retornan un valor. De que tipo puede ser el valor retornado por una función ? Se debe diferenciar tres aspectos al trabajar con procedimientos o funciones : declarar, llamar y definir. Sintaxis de la definición de una función o procedimiento: <Tipo de dato> <Identificador función>(Lista de parámetros o argumentos) { <Instrucciones> } Los procedimientos son subprogramas, también llamadas subrutinas y contienen conjuntos de instrucciones que se ejecutan al ser invocado o llamado el procedimiento. Los llamados se pueden hacer con paso de parámetros o no. El paso de parámetros se hace por valor o por referencia. Es importante plantear los siguientes interrogantes, cuando se trabaja con procedimientos o funciones. Como se llaman los parámetros que se pasa a una función? Como se llaman los parámetros que recibe a una función? Que diferencia hay entre paso de parámetros por referencia y por valor? En que sitio dentro del programa se declara una función? A que se hace referencia cuando se habla de una función prototipo? La instrucción return para qué sirve? Cuál es la forma general o sintaxis? De que forma se llama o invoca una función? 2.4 Definición de funciones En términos generales aquí se debe aclarar específicamente, que en el lenguaje C, los procedimientos tienen una forma de declaración idéntica, con la diferencia que se debe
  • 10. Autor: Luis Heladio Garzón Rodríguez especificar en el tipo de dato si pasa o no parámetro. Si pasa parámetro y retorna valor se considera función. Lo revisado en el tema 2.3 es aplicable y valido para este tema. Sintaxis para definición de una función: <Tipo de dato> <Identificador función>(Lista de parámetros o argumentos) { <Instrucciones> return(<Variable valor>); } El siguiente programa trata de ejemplificar la aplicación de las funciones, en un ejercicio para calcular el área de un cubo. //Programa en Lenguaje C explicando el trabajo con una función #include<stdio.h> float num, res; float cubo(int x); //1. Declaración de la función cubo //Programa principal main() { printf("ingrese un número "); scanf("%f",&num); res=cubo(num); //2. Llamado a la función cubo printf("%f al cubo es: %f",num,res); return 0; //3. Valor que retorna la función main() } //Definición de la función cubo float cubo(int x) //4. Aquí inicia la función cubo { return (x*x*x); } //5.retorna o devuelve el valor del calculo Explicación del programa 1. float cubo(int x); En la declaración de la función cubo float indica el tipo de dato que retorna o devuelve la función. cubo es el nombre de la función. int x, es el tipo de dato y la variable, del parámetro local que recibe el valor, cuando es llamada la función. 2. cubo(num); Para acceder a la función se hace un llamado, colocando entre paréntesis los identificadores de los parámetros que se halla declarado, se han de pasar. res=cubo(num); esta instrucción en la parte a la derecha de signo igual corresponde al llamado de la función, a la izquierda denota que la variable “res” recibe el valor que devuelve la función. 3. return 0; esta instrucción se debe colocar siempre para evitar un error al momento de la compilación. Se puede obviar si al escribir main() se coloca void main(), que indica al compilador que la función main, no retorna valor o retorna valor vacio. 4. float cubo(int x) esta primera línea de la declaración puede ser casi idéntica, a la declaración de la función. float indica el tipo de dato que retorna o devuelve la función. cubo es el nombre de la función. int x, es el tipo de dato y la variable, del parámetro local que recibe el valor, cuando es llamada la función. 5. return (x*x*x); en la misma línea se realiza el calculo, cuyo valor se retorna y recibirá la variable res. Ejercicio Escriba un programa que permita calcular la potencia a la que es elavado otro número.
  • 11. Autor: Luis Heladio Garzón Rodríguez Programa seudolenguaje Var Entero b, e real poten real potencia(m, n) Inicio escriba “Valor de la base : “ Lea b escriba “Valor del exponente : “ Lea e poten = potencia(b, e) escriba “La potencia obtenida es : “, poten Fin //del programa principal real Función potencia(m, n) var entero i, y Inicio y = 1 Para i=1 hasta i<=abs(n) haga y = y*m si n<0 entonces y = 1/y fin si Fin Desde retorne( y ) Fin función Variables potencia: es una función b : valor ingresado e : valor ingresado m : toma valores de b n : toma valores de e i : variable de control del ciclo for para el contador y : guarda el valor buscado. poten : recibe el valor devuelto por la función y acumulado en y //Programa en lenguaje C #include<stdio.h> #include <math.h> int b,e; float poten; float potencia(int m, int n); void main() { cout<<" INGRESE DOS NÚMEROS.. "; cout<<” Valor para la base : “; cin>>b; cout<<” Valor para el exponente . “; cin>>e; poten = potencia(b,e); cout<<” La potencia obtenida es : “<<poten; } float potencia(int m, int n) { int i;
  • 12. Autor: Luis Heladio Garzón Rodríguez float y; y=1; for(i=1;i<=abs(n);i++) { y=y*m; if(n<0) y=1/y; } return (y ); } 2.5 Estructuras de datos 2.5.1 Datos Estructurados Este pertenece al tipo de datos definidos por el usuario. En el que se permite configurar una combinación de datos de diferente tipo, que no esta predefinido en el lenguaje de programación. En el paradigma de programación estructurada se les nombraba como registros. En el paradigma de programación orientada a objetos, se conocen como objetos. Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo al paradigma de programación y el lenguaje de programación. 2.5.2 Estructura de datos Las estructuras de datos corresponden a los tipos de datos definidos por el usuario y le trabajo con formas de almacenamiento en memoria principal, para manipular datos en mayor volumen. Los lenguajes de últimas generaciones, permiten definir tipos de datos que se acoplen a las necesidades específicas del problema a resolver. Las estructuras de datos se clasifican en estáticas y dinámicas. En el grupo de las estáticas están los arreglos que a su vez son lineales, bidimensionales y multidimensionales. Las dinámicas en las que se encuentran las pilas, listas, colas, grafos y arboles. 2.5.2.1 Arreglos Los arreglos multidimensionales permiten definir ARRAYS de varias filas y columnas, o varias filas y varias caras. La forma general para definir arreglos de este tipo es : <Tipo almacenamiento> <tipo dato> <nombre> [expresión_1] [expresión_2] ... [expresión_n] Donde Tipo de almacenamiento indica si es : static, automatic, extern. Tipo de dato el tipo de dato que contendrá el arreglo. Ejemplo : int tabla_1 [3] [4]; char em_nom [10];
  • 13. Autor: Luis Heladio Garzón Rodríguez float deven_n [20] [3]; double deduc_n [N] [2] [3]; Surge en este momento la necesidad de preguntar se puede inicializar un arreglo ? Como se hace ? En que sitio del programa puede o debe ir ? Puede identificar la siguiente forma general a que corresponde ? <Tipo dato> <Nombre> [exp_1] [exp_2]...[exp_n] = { {valor_1,...valor_n} {valor_1,...valor_n} }; Una Estructura es un tipo de dato registro definido por el programador, este permite una mayor flexibilidad a la hora de manejar información que contiene atributos de un individuo y en el que los tipos de datos son diferentes. La forma general es : <[Tipo almacenamiento]> struct <[nombre estructura]> { <Campo_1>; <Campo_2>;...<Campo_n>;} <Variables>; El tipo de almacenamiento puede ser opcional, struct es una palabra reservada que siempre debe ir, nombre estructura identifica al tipo de estructura declarada y puede ser opcional, los campos son los que integran a esta estructura y las variables se declaran de este tipo de dato. En una estructura se puede definir un componente de tipo struct definido antes que esta. struct datos { char codigo[4]; char nombre[30]; char tele[8]; char catego; }; struct registro { struct datos datos_e; float sal_bas,deven,deduc; } emple; Como interpreta el ejemplo anterior ? Como haria mensión a los datos del campo datos_e ? La forma general para la inclusión de estructuras dentro de otra puede ser : <[Tipo almacenamiento]> struct <[nombre estructura]> { <Campo_1>; <Campo_2>;struct <Estructura> <Campo_3>;...<Campo_n>;} <Variables>; La inicialización de variables es importante, entonces se puede inicializar las variables o componentes de una estructura ?
  • 14. Autor: Luis Heladio Garzón Rodríguez Que caracteristica debe tener la definición de la estructura para poderla inicializar ? Como se debe hacer ? <Tipo almacenamiento> struct <Estructura> <Variable_estructura> = {<Valor_1,<Valor_2>,...<Valor_n>}; Que significa la forma general descrita antes ? De esta manera lenguaje C tambien permite definir arreglos de estructuras. <[Tipo almacenamiento]> struct <[nombre estructura]> { <Campo_1>; <Campo_2>;...<Campo_n>;} <Arreglo> [Tamaño]; Que significa el siguiente ejemplo : struct registro { char codigo[4]; char nombre[30]; char tele[8]; char catego; float sal_bas; } emple[50]; Si en la declaración de variables se indica la siguiente orden : struct registro emple[50]; , debe cambiar la declaración del ejemplo anterior ? La forma de hacer referencia a los miembros o campos de una estructura varia dependiendo de si es una estructura registro o un arreglo de estructuras : <Variable_estructura>.<Campo>; <Arreglo> [<Posición>] .<Campo>; typedef es una palabra reservada del lenguaje y permite definir nuevos tipos de datos equivalentes a los que tiene el lenguaje, esto en el caso de las estructuras es muy aplicable por evitar hacer referencia a la orden struct en forma repetida, la forma general es : typedef struct {<Campo_1>;<Campo_2>;...<Campo_n>;} <Nuevo_tipo>; Como emplearia typedef para el ejemplo anterior ? Como definiria la variable en la area de declaración de variables? A que corresponde las siguientes formas generales ?
  • 15. Autor: Luis Heladio Garzón Rodríguez <Nuevo_tipo> <Variable_1>,<Variable_2>; <Nuevo_tipo> <Arreglo> [<Tamaño>]; BIBLIOGRAFIA Ortez, Manuel Antonio. Manual de programación en lenguaje C http://www.monografias.com/trabajos33/programacion-lenguaje-c/programacion-lenguaje-c.shtml López Ardao, J. Carlos. Programación en C. http://www.scribd.com/doc/22283/Manual-De-Programacion-Lenguaje-C Barzal, Fernando. Introducción a la programación. (Tipos de datos) http://elvex.ugr.es/decsai/c/apuntes/datos.pdf Sopla, Abraham. Algoritmos y Lenguaje C. (Estructuras de control) http://www.mailxmail.com/curso-algoritmos-lenguaje-c/apuntes-lenguaje-c-1 Díaz Cuenca, Josué. Programación en C++. http://www.mailxmail.com/curso-programacion-c/parametros-valor-referencia (Paso de parámetros) http://www.mailxmail.com/curso-programacion-c/estructuras-uniones (Estructuras de datos y uniones) Rodríguez, María Sandra y otros. Tutorial de Estructuras de Datos en C++ http://decsai.ugr.es/~jfv/ed1/c++/cdrom5/index.htm Fernández Valdivia, Joaquín. Estructuras de datos en C++. http://decsai.ugr.es/~jfv/ed.html Estructuras de datos y Algo+. http://www.algoritmia.net/articles.php?folder=Estructuras%20de%20Datos
  • 16. Autor: Luis Heladio Garzón Rodríguez OBJETIVO GENERAL Propender porque el estudiante se apropie el aprendizaje de las características y fundamentos del paradigma de programación funcional, aplicándolo en la construcción de solución a problemas de programación. OBJETIVOS ESPECIFICOS  Conocer y comprender las características fundamentales del paradigma programación funcional.  Continuar el afianzamiento con las estructuras de control.  Entender el propósito de los procesos de programación funcional.  Comprender y poner en práctica la Definición y utilización de funciones  Comprender los conceptos fundamentales de la programación y su importancia.  Conocer y aplicar las estructuras de datos, entendiendo su importancia en la programación.  Profundizar mediante la investigación de los conceptos aquí tratados de parte del estudiante. PARADIGMA PROGRAMACIÓN FUNCIONAL El paradigma de programación funcional considera al programa como una función matemática. Los orígenes de la programación funcional pueden rastrearse al matemático Alonzo Church, que trabajaba en la Universidad de Princeton, y, al igual que otros matemáticos de allí, estaba interesado en la matemática abstracta, particularmente en el poder computacional de ciertas máquinas abstractas. Las preguntas que se hacía eran por ejemplo: si dispusiésemos de máquinas de un ilimitado poder de cómputo, ¿qué tipos de problemas se podrían solucionar?, o ¿se pueden resolver todos los problemas?1 Por ejemplo, podemos escribir en el lenguaje funcional Haskell: Factorial :: int -> int factorial 0 = 1 factorial n = n * factorial (n-1) Es decir, la última es una función sencilla, parecida a la que conocemos de las matemáticas de la secundaria, que permite calcular el factorial de un número entero (ver definición de la función factorial más abajo). 1 Rivadera, Gustavo Ramiro. La programación funcional: un poderoso paradigma. 2008. UNIDAD I PARADIGMA PROGRAMACIÓN FUNCIONAL
  • 17. Autor: Luis Heladio Garzón Rodríguez Modelo imperativo (de Labra 1998) Modelo funcional (de Labra 1998) Comparativo entre paradigma imperativo y funcional Comparemos esa línea de código de Haskell con la siguiente en un lenguaje como C#: unsigned factorial (unsigned n) { int product = 1; // valor inicial while (n > 1) { product *= n--; // acumulador } return product; // resultado } Este ejemplo es muy sencillo y los dos fragmentos de código son muy parecidos. Sin embargo, la definición de Haskell es mucho más cercana a la matemática: 0! = 1 n! = n * (n - 1)! 3. CARACTERISTICAS
  • 18. Autor: Luis Heladio Garzón Rodríguez El paradigma de programación funcional, pertenece al grupo de la programación declarativa. Son características importantes del paradigma funcional2 :  Primero, en los lenguajes funcionales no existe el concepto de variables y consecuentemente tampoco existen operaciones de asignación. Aunque podría parecer que los parámetros de una función se comportan como una variable (puesto que pueden llevar un nombre y su uso es de hecho parecido al de las variables), esto es incorrecto: El valor de los parámetros es dado como fijo al inicio de la función. • Segundo, la existencia de una propiedad llamada transparencia referencial (Referential transparency), la cual indica que una función sólo depende de sus parámetros y que tendrá efecto únicamente en su resultado, por lo que podríamos llamar a una función arbitrariamente sin tener efectos colaterales en el resto de los cálculos. • Por último, que una función puede ser utilizada como parámetros y resultados de cualquier otra función. Lenguajes Los lenguajes más utilizados dentro de este paradigma son Standard ML, Haskell y Scheme9 aunque hoy por hoy LOGO10 figuraría junto con otros dialectos de LISP. Algunos lenguajes representativos en este paradigma son:  Lenguajes funcionales puros Haskell y Miranda  Lenguajes funcionales hibridos Scala, LISP, Scheme, Ocami, SAP y estándar ML  Otros que contienen el paradigma funcional Perl, Python, Ruby 4. LENGUAJE SCHEME Para desarrollar el tema sobre este paradigma, se toma como ejemplo al Scheme. Características del lenguaje: Paradigma: multi-paradigma Apareció en: década de 1970 Diseñado por: Guy L. Steele y Gerald Jay Sussman Tipo de dato: Fuerte, dinámico Implementaciones: Scheme, Scheme 48, Chicken, Gambit, FLUENT, Guile, Bigloo, Chez Scheme, STk, STklos, Larceny, SCM 2 Zarate Rea, Hector. Paradigmas de programación. Noviembre 2008.
  • 19. Autor: Luis Heladio Garzón Rodríguez Dialectos: T Influido por: Lisp, ALGOL Ha influido a: Common Lisp, JavaScript, Ruby Scheme es un lenguaje de programación. Es un lenguaje funcional (si bien impuro, ya que, por ejemplo, sus estructuras de datos no son inmutables) y un dialecto de Lisp. Fue desarrollado por Guy L. Steele y Gerald Jay Sussman en la década de los setenta e introducido en el mundo académico a través de una serie de artículos conocidos como los Lambda Papers de Sussman y Steele.3 La filosofía de Scheme es decididamente minimalista. Su objetivo no es acumular un gran número de funcionalidades, sino evitar las debilidades y restricciones que hacen necesaria su adición. Así, Scheme proporciona el mínimo número posible de nociones primitivas, construyendo todo lo demás a partir de un reducido número de abstracciones. Por ejemplo, el mecanismo principal para el control de flujo son las llamadas recursivas finales. Scheme fue el primer dialecto de Lisp que usó ámbito estático o léxico (en lugar de dinámico) de forma exclusiva. También fue uno de los primeros lenguajes de programación con continuaciones explícitas. Scheme ofrece también gestión automática de memoria (recolección de basura). 2.6 Tipos de datos Los tipos de datos básicos del lenguaje Scheme son muy similares al estándar de la lógica de programación, y también a los del lenguaje C. Los datos simples con datos numéricos, alfanuméricos y lógicos (Ver más información en la Unidad I. Introducción a los paradigmas de programación, tema1.1. Datos, pagina 1.), que en lenguaje Scheme presenta algunas variantes respecto del lenguaje C, revise estas especificidades en Scheme o Manual de referencia de Scheme. En este enlace http://www.x.edu.uy/inet/IntHaskell98.pdf encontrara más información sobre el lenguaje de programación Haskell, un lenguaje funcional puro (también puede bajar el documento de curso virtual de Paradigmas de programación “Introducción al Lenguaje Haskell”4 ). 2.7 Estructuras de control Al igual que otros lenguajes de programación de alto nivel este lenguaje trabaja con estructuras de control permiten controlar el flujo de ejecución de las instrucciones en un programa. Es de recordad que con estas estructuras se puede determinar, el orden, 3 Enciclopedia Wikipedia. http://es.wikipedia.org/wiki/Scheme 4 Labra G, Jose E. Introducción al Lengujae Hasell. Octubre 1998. http://www.x.edu.uy/inet/IntHaskell98.pdf
  • 20. Autor: Luis Heladio Garzón Rodríguez la interacción, la cantidad de repeticiones que ejecutarán las instrucciones que están dentro de estas estructuras. Las estructuras de control se pueden clasificar en: secuenciales, selectivas y repetitivas. Para profundizar sobre la sintaxis del scheme, respecto de sus estructuras de control revise Manual de referencia de Scheme o Scheme, sugiero comparar las estructuras de control del lenguaje scheme con las del lenguaje C, y establezca si hay diferencias importantes. 2.8 Funciones y/o procedimientos Para el lenguaje funcional su principal características es la de abordar la programación a través de funciones. Revise cual es la estructura de la sintaxis de las funciones en scheme, notara que al comparar la forma de declararlas, es muy similar a lo que se revisó en la unidad II (ítems 2.3 y 2.4), respecto del lenguaje C. Se debe diferenciar y tener en cuenta tres instancias en las que se hace referencia al trabajar con procedimientos o funciones: declarar, llamar y definir. Sintaxis de la definición de una función o procedimiento (establezca la diferencia que hay entre una función y un procedimiento): <Tipo de dato> <Identificador función>(Lista de parámetros o argumentos) { <Instrucciones> } 2.9 Estructuras de datos 2.9.1. Datos Estructurados Este pertenece al tipo de datos definidos por el usuario. En el que se permite configurar una combinación de datos de diferente tipo, que no esta predefinido en el lenguaje de programación. En el paradigma de programación funcional también existe estructuras de datos, es importante en este caso plantear una reflexión sobre las similitudes y funcionalidades de estas. Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo al paradigma de programación y el lenguaje de programación. 2.9.2 Estructura de datos Las estructuras de datos corresponden a los tipos de datos definidos por el usuario y le trabajo con formas de almacenamiento en memoria principal, para manipular datos en
  • 21. Autor: Luis Heladio Garzón Rodríguez mayor volumen. Los lenguajes de últimas generaciones, permiten definir tipos de datos que se acoplen a las necesidades específicas del problema a resolver. Las estructuras de datos se clasifican en estáticas y dinámicas. En el grupo de las estáticas están los arreglos que a su vez son lineales, bidimensionales y multidimensionales. Las dinámicas en las que se encuentran las pilas, listas, colas, grafos y árboles. 2.9.3 Arreglos Los arreglos multidimensionales permiten definir ARRAYS de varias filas y columnas, o varias filas y varias caras. La forma general para definir arreglos de este tipo es : BIBLIOGRAFIA Labra G, Jose E. Introducción al Lengujae Hasell. Octubre 1998. http://www.x.edu.uy/inet/IntHaskell98.pdf Manual de referencia Lenguaje Scheme. http://www.dccia.ua.es/dccia/inf/asignaturas/LPP/2004-2005/doc/scheme.pdf Enciclopedia Wikipedia. http://es.wikipedia.org/wiki/Scheme Martinez Villalobos, Gustavo. Paradigmas de programación. http://www.unibague.edu.co/~gustavo.martinez/cursos/paradigmas/index.html Estructuras de datos y Algo+. http://www.algoritmia.net/articles.php?folder=Estructuras%20de%20Datos
  • 22. Autor: Luis Heladio Garzón Rodríguez OBJETIVO GENERAL Propender porque el estudiante se apropie el aprendizaje de las características y fundamentos del paradigma de programación Lógica, aplicándolo en la construcción de solución a problemas de programación. OBJETIVOS ESPECIFICOS  Conocer y comprender las características fundamentales del paradigma programación lógica.  Continuar el afianzamiento con las estructuras de control.  Entender el propósito de los procesos del paradigma de programación lógica.  Comprender y poner en práctica la Definición y utilización de funciones  Comprender los conceptos fundamentales de la programación lógica y su importancia.  Conocer y aplicar las estructuras de datos, entendiendo su importancia en la programación lógica.  Profundizar mediante la investigación de los conceptos aquí tratados de parte del estudiante. PARADIGMA PROGRAMACIÓN LÓGICA Programación Lógica es una forma de crear soluciones basadas en la experiencia y la acumulación del conocimiento, aplicando la inferencia con lo que se obtengan soluciones en combinación de programas muy aproximado a la realidad. El paradigma lógico difiere de forma importante de otros paradigmas5 . No sólo en su Sintaxis o semántica, sino que en él la lógica representa conocimiento, el cual es manipulado mediante inferencias. A diferencia de los demás paradigmas, trabajar en este significa especificar qué hacer y no cómo hacerlo, por ello son llamados lenguajes declarativos. El proceso general de la programación lógica es que a partir de un conjunto de reglas (axiomas) e inferencias podamos comprobar nuevas proposiciones que nos sean relevantes. Este proceso está basado en reglas de lógica de primer orden. Al ser un paradigma bastante abstracto vale la pena esclarecerlo a través de algunos ejemplos. Aunque Prolog es el lenguaje más representativo en este paradigma, se puede hacer ejemplos en Structured Query Language (SQL), un lenguaje para operar bases de datos y el cual representa otra de las aplicaciones de la programación lógica. La programación lógica es un tipo de paradigma de programación dentro del paradigma de programación declarativa. El resto de los subparadigmas de programación dentro de la programación lógica son: programación funcional, 5 Véase: Mitchell, John. Concepts in Programming Languages, Reino Unido: Cambridge University Press, 2003. UNIDAD I PARADIGMA PROGRAMACIÓN LÓGICA
  • 23. Autor: Luis Heladio Garzón Rodríguez programación basada en restricciones, programas DSL (de dominio específico) e híbridos. La programación declarativa gira en torno al concepto de predicado, o relación entre elementos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático6 . La programación lógica, junto con la funcional, forma parte de lo que se conoce como programación declarativa. En los lenguajes tradicionales, la programación consiste en indicar cómo resolver un problema mediante sentencias; en la programación lógica, se trabaja de una forma descriptiva, estableciendo relaciones entre entidades, indicando no cómo, sino qué hacer. La ecuación de Robert Kowalski (Universidad de Edimburgo) establece la idea esencial de la programación lógica: algoritmos = lógica + control. Es decir, un algoritmo se construye especificando conocimiento en un lenguaje formal (lógica de primer orden), y el problema se resuelve mediante un mecanismo de inferencia (control) que actúa sobre aquél7 . Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar. Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar. Por poner otro ejemplo vamos a ver cómo modelaríamos en un esquema de POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2. La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc. Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de matemáticas harás uso de objetos fracción y en un programa que gestione un taller de coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc. De acuerdo a esto podemos concluir que en la programación orientada a objetos, la reusabilidad, el empaquetamiento, la ocultación, la encapsulación, la modularidad, la herencia son características fundamentales para hacer que los esfuerzos de programación puedan redundar en menores esfuerzos humanos, mayores beneficios o resultados y baja de costos. La programación orientada a objetos es una técnica cuyo bloque de construcción principal son los objetos y las interrelaciones. 6 Wikipedia, programación lógica. http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica 7 Rossel, Gerardo. http://www.amzi.com/articles/code07_whitepaper.pdf
  • 24. Autor: Luis Heladio Garzón Rodríguez Un objeto son estructuras de datos más las funciones que operan sobre estas estructuras. 5. CARACTERISTICAS La mayoría de los lenguajes de programación lógica se basan en la teoría lógica de primer orden, aunque también incorporan algunos comportamientos de orden superior. En este sentido, destacan los lenguajes funcionales, ya que se basan en el cálculo lambda, que es la única teoría lógica de orden superior que es demostradamente computable (hasta el momento)8 . La programación lógica permite formalizar hechos del mundo real, por ejemplo: las aves vuelan los pingüinos no vuelan "pichurri" es un ave "sandokan" es un perro "alegría" es un ave Lenguajes La creación de Prolog se dio en 1973. Kowalski y Colmerauer con su equipo a menudo interactúan en el período 1971-1973. Esto ha influido en sus opiniones y les ayudó a cristalizar las ideas. Prolog puede verse como una realización práctica de la idea de los programas de la lógica. Comenzó como una programación idioma para aplicaciones en el procesamiento del lenguaje natural, pero poco después se comprobó que se puede utilizar como un lenguaje de programación de propósito general, también. Un número de intentos de otros para realizar el cálculo como paradigma de deducción se propone en la misma época, en particular por Cordell Green y Carl Hewitt, pero la propuesta de programación lógica, probablemente porque era la más simple y más versátil, se convirtió en de mayor éxito. Originalmente, Prolog fue implementado por Philippe Roussel, un colega de Colmerauer, en forma por un intérprete, escrito en Algol-W. Un avance importante se logró por David H. Warren quien propuso en 1983 una máquina abstracta, que ahora se llama WAM (Warren Abstract Machine), que consiste en una arquitectura de la máquina con un conjunto de instrucciones que sirve como un objetivo independiente para la máquina Prolog compiladores. WAM se convirtió en una base común para la aplicación de Prolog y la programación lógica de otros idiomas. 6. LENGUAJE PROLOG Para desarrollar el tema sobre este paradigma, se toma como ejemplo a Prolog. Características del lenguaje: 8 Paradigma de programación lógica. http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica#Fundamentos
  • 25. Autor: Luis Heladio Garzón Rodríguez Paradigma: Lógica Apareció en: 1971 Diseñado por: Alain Colmenaur y Philippe Roussel Tipo de dato: Fuerte, Estático Implementaciones: Numerosas Influido por: Ha influido a: Sistema operativo: Multiplataforma Licencia de software: GNU GPL Prolog Se trata de un lenguaje de programación ideado a principios de los años 70 en la Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain Colmerauer y Philippe Roussel. Nació de un proyecto que no tenía como objetivo la implementación de un lenguaje de programación, sino el procesamiento de lenguajes naturales. Alain Colmerauer y Robert Pasero trabajaban en la parte del procesado del lenguaje natural y Jean Trudel y Philippe Roussel en la parte de deducción e inferencia del sistema. Interesado por el método de resolución SL, Trudel persuadió a Robert Kowalski para que se uniera al proyecto, dando lugar a una versión preliminar del lenguaje Prolog a finales de 19712 y apareciendo la versión definitiva en 1972.3 Esta primera versión de Prolog fue programada en ALGOL W. Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en 1983, David H.D. Warren desarrolló un compilador capaz de traducir Prolog en un conjunto de instrucciones de una máquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Desde entonces Prolog es un lenguaje semi-interpretado. Si bien en un principio se trataba de un lenguaje de uso reducido, la aparición de intérpretes del mismo para microordenadores de 8 bits (ej: micro-PROLOG) y para ordenadores domésticos de 16 bits (ej: Turbo PROLOG de Borland, entre otros muchos) a lo largo de la década de 1980 contribuyó notablemente a su popularización.4 Otro importante factor en su difusión fue la adopción del mismo para el desarrollo del proyecto de la quinta generación de computadoras a principios de la década de los 80,5 en cuyo contexto se desarrolló la implementación paralelizada del lenguaje llamada KL1 y del que deriva parte del desarrollo moderno de Prolog. Las primeras versiones del lenguaje diferían, en sus diferentes implementaciones, en muchos aspectos de sus sintaxis, empleándose mayormente como forma normalizada el dialecto propuesto por la Universidad de Edimburgo6 , hasta que en 1995 se estableció un estándar ISO (ISO/IEC 13211-1), llamado ISO-Prolog. Para profundizar sobre el lenguaje prolog y sus características revise en http://es.wikipedia.org/wiki/Prolog
  • 26. Autor: Luis Heladio Garzón Rodríguez http://www.dirinfo.unsl.edu.ar/~analisis/teorias/teo_prolog_2006.pdf Por cuenta propia debe investigar los temas siguientes, para que pueda ir estableciendo un comparativo con los otros paradigmas de programación revisados. 2.1 Tipos de datos 2.2 Estructuras de control 2.3 Funciones y/o procedimientos 2.4 Estructuras de datos 2.4.1 Datos Estructurados 2.4.2 Estructura de datos 2.4.2.1 Arreglos 2.5 Creación de objetos 2.6 Constructores 2.7 Reglas de Matching BIBLIOGRAFIA El lenguaje de programación Prolog. http://www.lawebdelprogramador.com/cursos/enlace.php?idp=4805&id=77&texto=Prolog The GNU Prolog Web Site. http://www.gprolog.org/ Prolog. Wikipedia. http://es.wikipedia.org/wiki/Prolog Programación lógica. http://www.amzi.com/articles/code07_whitepaper.pdf Paradigma lógico. http://www-2.dc.uba.ar/materias/plp/20062C/download/clase8.pdf Programación lógica. http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica