GEOMETRÍA ANALÍTICA. Ejemplos de comportamiento Lineal.

Estándar

Eemplos de leyes en la naturaleza que sigan un comportamiento lineal.

-La relación de cambio entre dos monedas de uso en dos diferentes países.

-La estatura de una persona en relación con su fémur.

-La relación de las diferentes escalas de temperatura, grados Celcius y grados Farenheith.

-El interés simple de un capital.

-El costo de producción de un producto.

 -La elasticidad lineal.

-La dilatación lineal, superficial y volumétrica de los cuerpos.

-La ley de Ohm.

-Movimiento rectilíneo uniforme a velocidad constante.

 Todos estos son ejemplos de sucesos que presentan un comportamiento lineal, es decir todas ellas presentan una razón de cambio constante. (Lira, Jaime, Rodríguez, Gallegos, & Chavez, 2007, pág. 48)

Bibliografía

Lira, A., Jaime, P., Rodríguez, C., Gallegos, M., & Chavez, M. (2007). Geometría Analítica. Zapopam: Editorial Umbral.

 

GEOMETRÍA ANALÍTICA. Comportamiento Lineal.

Estándar

Por María de la Luz Pérez Limón.

¿Cómo se describe un comportamiento lineal? El comportamiento lineal de un elemento facilita su estudio, en la realidad todo elemento se comporta como no lineal pero los resultados de su estudio no difieren, en su mayoría, a los realizados si se consideran como elementos lineales. Dicho comportamiento se expresa por medio de una función lineal del tipo f(x) = ax+b, que es la ecuación de la recta en su forma pendiente y ordenada al origen.

Dos ejemplos sencillos de estos fenómenos son:

a) Un ejemplo de ello es el resorte, donde según la Ley de Hooke el comportamiento fuerza -deformacion es lineal.

b) Otro ejemplo, es el Principio de Arquímedes que afirma que; un cuerpo total o parcialmente sumergido en un fluído en reposo, recibe un empuje de abajo hacia arriba igual al peso del volumen del fluido que desaloja. Esta fuerza recibe el nombre de empuje hidrostático o de Arquímedes y se mide en Newtons. 

Escribe las ecuaciones de los ejemplos que proporcionaste en el punto anterior:

a) a) La ecuación de la Ley de Hooke es :    F = – k x 

Donde F representa a la fuerza aplicada para deformar un resorte y que a su vez está en función de la constante de elasticidad k del resorte y de la deformación lineal x. La ecuación gráfica de la Ley de Hooke a saber es una pendiente, donde la constante es el valor  de la pendiente.

 b)Principio de Arquímedes.  Su ecuación es:  

        Donde E es el empuje , ρf es la densidad del fluido, V el volumen del fluido desplazado por algún cuerpo sumergido parcial o totalmente en el mismo,,g la aceleración de la gravedad y m  la masa, de este modo, el empuje depende de la densidad del fluido, del volumen del cuerpo y de la gravedad existente en ese lugar.

HERRAMIENTAS COMPUTACIONALES. Para qué nos sirven en Matemáticas.

Estándar

Para qué nos sirven las  herramientas computacionales en las matemáticas?

Por Lic. María de la Luz Pérez Limón.

Hoy en día, básicamente, nos sirven como apoyo en la enseñanza y aprendizaje de las matemáticas y nos permiten resolver cualquier problema difícil que se nos vaya presentando en cualquiera de los cursos de la licenciatura y de una manera analítica y exacta, podemos tratar de resolver, mediante el uso y utilización adecuados de programas (software) relativos a los procesos de aprendizaje de las mismas, preparándonos así para llegar a procesar e interpretar la información mediante dichos métodos analíticos y numéricos, lo cual seguramente, nos permitirá cumplir con calidad y eficacia cualquier trabajo o proyecto que nos propongamos realizar; así pues, el aprendizaje de dichas herramientas, constituyen un instrumento apropiado, para poder adquirir las competencias necesarias en el manejo de  programas computacionales, que nos servirán para realizar nuestras actividades con mayor facilidad ,eficiencia, rapidez y profesionalismo.

El uso de las nuevas tecnologías computacionales nos permite explorar, justificar e ir construyendo nuestro propio conocimiento y la evolución que ha experimentado el software matemáticos en los últimos años, nos conduce de manera urgente, a ir aprendiendo las nuevas formas de hacer matemáticas.

Aunque existen numerosos asistentes o paquetes matemáticos, para facilitar la realización de operaciones y procesos matemáticos (cálculos gráficos, de funciones de dos o tres dimensiones, análisis estadístico análisis de sensibilidad en programación lineal, simulación de problemas, etc.) a continuación se resumen los más conocidos y utilizados en matemática:

  • CABRI GEOMETRE, este software ofrece potencialidades para realizar construcciones geométricas, realizar ejercicios creativos. Actualmente es uno de los software que más se está utilizando mundialmente para el estudio de la geometría.

En el ámbito universitario, han sido y continúan siendo objeto de estudio para profesores de matemática los asistentes más utilizados en diferentes carreras, disciplinas y asignaturas, entre ellos:

  • MATHEMATICA: incluye un amplio rango de funciones matemáticas, soporta operaciones de álgebra lineal, realiza todo tipo de operaciones algebraicas, opera con funciones, derivadas e integrales y, entre otras muchas cosas, incorpora un módulo gráfico que tiene salida en formato.

Mathematica es el primer programa para la computación y visualización numérica, simbólica y gráfica. Mathematica ofrece a sus usuarios una herramienta interactiva de cálculo y un versátil lenguajede programación para una rápida y precisa solución a problemas técnicos.

  • MATLAB: potente lenguaje de programación de cuarta generación. Es un programa interactivo que ayuda a realizar cálculos numéricos, analizando y visualizando los datos, para resolver problemas matemáticos, físicos, etc. Matlab trabaja con escalares, vectores y matrices.

MATLAB es un medio computacional técnico, con un gran desempeño para el cálculo numérico computacional y de visualización.

MATLAB integra análisis numérico, matrices, procesamiento de señales y gráficas, todo esto en un ambiente donde los problemas y soluciones son expresados tal como se escriben matemáticamente.

  • DERIVE: El Derive se utiliza para mejorar los resultados obtenidos con la metodología tradicional. Puede ser utilizado en la enseñanza de Álgebra Lineal y en el Cálculo Diferencial e Integral. En algunos casos, Geometría y Matemática Discreta.

El Derive es una potente calculadora, que puede ser aprovechada para motivar la introducción de nuevos métodos y conceptos; también para prevenir la fe ciega en el ordenador. (Ejemplos: discusión de sistemas con parámetros, diagonalización de matrices de orden superior a cinco para introducir métodos numéricos.)

Derive permite al profesor construir ejemplos para ilustrar conceptos y métodos, así como proponer problemas reales.

Las prácticas en Álgebra Lineal se centrarían en aprovechar las posibilidades de manipulación de Derive para la asimilación de técnicas de resolución de problemas más que en la comprensión de conceptos.

  • MAPLE: permite un ambiente para resolución de problemas matemáticos complejos que involucran expresiones algebraicas, simbólicas, cálculos numéricos de alta precisión e visualización matemática.
  • MathCAD: incluye funciones de cálculo y gráficas en dos y tres dimensiones; puede producir documentos con texto y gráficas; puede usar un coprocesador matemático en las máquinas que lo tengan incorporado.
  • EXCEL: Microsoft Excel es una potente y a la vez sencilla hoja de cálculo, en la cual haremos operaciones matemáticas, científicas y operaciones con datos.

Dentro de los Software Estadísticos Tenemos

  • SPSS: se describe como un sistema de gestión de datos y análisis estadístico en entorno gráfico. Puede recibir datos desde cualquier fichero y utilizarlos para generar informes, tablas, gráficos de distribución y moda, estadísticas descriptivas y análisis estadístico complejo.
  • STATGRAPHICS: Paquete general con poderosas gráficas y facilidades de información. Distribuido por módulos: Base (estadísticas básicas), series temporales, diseño experimental, control de calidad, métodos multivariantes y técnicas de regresiones avanzadas.
  • STATISTICA: Contiene una amplia elección de herramientas de modelado y previsión (por ej. modelos lineales, modelos lineales/no lineales generalizados, análisis de sobrevivencia, series cronológicas y previsión), incluyendo selección automática de modelos y herramientas de visualización interactivas.

http://marioconsultoria.blogspot.mx/2011/08/herramientas-computacionales-para-el.html

HERRAMIENTAS COMPUTACIONALES. Lenguaje R.

Estándar

REPRESENTACIONES GRÁFICAS EN ESTADÍSTICA.

INTRODUCCIÓN.

Una foto dice más que mil palabras. Para las personas es más fácil procesar e interpretar información que se presenta de manera gráfica, ya sea con dibujos, gráficas, fotos. La presentación de datos mediante gráficas es algo que se realiza a diario y en forma casi natural por personas de las más diferentes profesiones.

Los gráficos nos permiten a “golpe de vista” hacer un análisis de datos aun los muy complejos e interpretarlos, determinar su comportamiento, analizarlos de manera más fácil, de igual manera facilitan el sacar conclusiones, implican un ahorro significativo de tiempo.

Los gráficos estadísticos nos permiten usar nuestra habilidad visual para procesar información, en base a ello podemos hacer juicios respecto la variabilidad, escala, patrones y tendencias de los datos. Igualmente es importante desarrollar habilidades para interpretar de manera correcta la información proporcionada por los gráficos, debemos ver a los gráficos como una poderosa herramienta de trabajo.

William Playfair es considerado el pionero de la estadística gráfica. Su trabajo en gráficas lo realizo durante más de 36 años, el actuaba en base a los siguientes principios:

1. El método gráfico es una forma de simplificar lo tedioso y lo complejo.

2. Los hombres ocupados necesitan alguna clase de ayuda visual.

3. Un gráfico es más accesible que una tabla.

4. El método gráfico es concordante con los ojos.

5. El método gráfico ayuda al cerebro, ya que permite entender y memorizar mejor.

Wainer (1990) señala que entre la gente es muy común pensar que si un gráfico es bueno, éste debería ser totalmente comprensible sin ninguna ayuda adicional. Este pensamiento es limitante. Los gráficos “buenos” los divide en dos categorías:

1. Un gráfico fuertemente bueno muestra todo lo que queremos conocer sólo con mirarlo.

2. Un gráfico débilmente bueno nos muestra lo que necesitamos conocer observándolo, una vez sepamos como mirarlo.

Actualmente debemos procesar grandes volúmenes de información, los gráficos nos facilitan esta labor. 

Propósito de una representación gráfica en estadística.

El propósito de una representación gráfica en estadística es presentar la información de manera clara, sencilla, retomando a Wainer,  debe mostrar todo lo que necesitamos conocer con solo observarlo.

  1. Elementos de una gráfica.

I.        Título principal.

II.        Título secundario (opcional)

III.        Descripción del gráfico.

IV.        Región de datos y símbolos (gráfico)

V.        Escalas en los ejes

VI.        Pie del gráfico.

  1. Errores y mejores prácticas al elaborar gráficas.

Mejores prácticas:

I.        Hacer que los datos sobresalgan.

II.        Evitar lo superfluo.

III.        Utilice un par de líneas para cada variable.

IV.        Utilice elementos prominentes para mostrar sus datos.

V.        Coloque marcas fuera de la región de datos

VI.        Resaltar la presentación de datos, que ocupe la mayor área posible.

I.        Ser redundante en la información.

II.        Sobreponer datos.

III.        Sobreponer gráficos.

IV.        Presentar muchos números en un espacio reducido.

V.        No poner título.

VI.        No indicar escalas. 

  1. Gráficas en R.

                      I.        Árbol de tallo y hoja – stem().

Este gráfico fue propuesto por Tukey (1977) y a pesar de no ser un gráfico para presentación definitiva se utiliza a la vez que el analista recoge la información ve la distribución de los mismos. Estos gráficos son fáciles de realizar a mano y se usan como una forma rápida y no pulida de mirar los datos.

Ejemplos:

7 67

7 11

6 8

6 00

5 5666677789999

5 000000011233344444

4 5555555666777788889999

4 00334

3 88

—-+—-+—-+—-+–

Datos de velocidades registradas con radar Fecha de observacion: Sept. 10, 1994

Edad de 20 personas

Supongamos la siguiente distribución de frecuencias:

36  25  37  24  39  20  36  45  31  31

39  24  29  23  41  40  33  24  34  40

que representan la edad de un colectivo de N = 20 personas y que vamos a representar mediante un diagrama de Tallos y Hojas.
Comenzamos seleccionando los tallos que en nuestro caso son las cifras de decenas, es decir 3, 2, 4, que reordenadas son 2, 3 y 4.
A continuación efectuamos un recuento y vamos «añadiendo» cada hoja a su tallo:

tallo1

Por último reordenamos las hojas y hemos terminado el diagrama:

tallo2

Comparar dos distribuciones.

Podemos comparar, mediante estos diagramas, dos distribuciones. Supongamos una segunda distribución:

35  38  32  28  30  29  27  19  48  40

39  24  24  34  26  41  29  48  28  22

De ella podemos elaborar sus diagrama de Tallos y Hojas y compararla con la anterior.

tallo3

http://www.estadisticaparatodos.es/taller/graficas/tallos_hojas.html#trenes

II.        Boxplot o caja de Tukey – boxplot().

Es un gráfico simple, ya que se realiza básicamente con cinco números, pero poderoso. Se

observa de una forma clara la distribución de los datos y sus principales características. Permite comparar diversos conjuntos de datos simultáneamente. Como herramienta visual se puede utilizar para ilustrar los datos, para estudiar simetría, para estudiar las colas, y supuestos sobre la distribución, también se puede usar para comparar diferentes poblaciones.

Este gráfico contiene un rectángulo, usualmente orientado con el sistema de coordenadas tal que el eje vertical tiene la misma escala del conjunto de datos. La parte superior y la inferior del rectángulo coinciden con el tercer cuartil y el primer cuartil de los datos. Esta caja se divide con una línea horizontal a nivel de la mediana. Se define un “paso” como 1.5 veces el rango

intercuartil, y una línea vertical (un bigote) se extiende desde la mitad de la parte superior de la caja hasta la mayor observación de los datos si se encuentran dentro de un paso. Igual se hace en la parte inferior de la caja Las observaciones que caigan más allá de estas líneas son dibujadas individualmente.

boxplot

boxplot1

http://www.spssfree.com

III.        Histograma – hist().

El histograma es el gráfico estadístico por excelencia. El histograma de un conjunto de datos es un gráfico de barras que representan las frecuencias con que aparecen las mediciones agrupadas en ciertos rangos o intervalos.

Para construir un histograma se debe dividir la recta real en intervalos o clases (algunos recomiendan que sean de igual longitud) y luego contar cuántas observaciones caen en cada intervalo. Es tal vez el único gráfico que ha tenido un desarrollo teórico en un área que se conoce como estimación de densidades.

velocidades=c(10,20,30,35,40,50,60,70,80,90,100,5,15,25,35,36,37,42,43,45,46,89,47.5,51,53,55,58,57,28,59,61,63,66,75,74,76,82,81,91)

> hist(velocidades)

histograma1

histograma2

En el doble histograma de frecuencias, las barras del doble histograma se disponen en forma horizontal, es decir, sobre las líneas de las abscisas, y convencionalmente se indican los grupos de edad de la población masculina a la izquierda y los que representan la población femenina a la derecha. A su vez, en el eje de las ordenadas se disponen e identifican los grupos de edad.

Pirámide de población mundial estimada para 2050

pirámide

Datos de las Naciones Unidas, División de Población, Departamento de Asuntos Económicos y Sociales. http://www.popin.org/pop1998/9.htm

IV.        Gráfica de dispersión – plot().

Es tal vez el más antiguo de los gráficos multivariables. Está limitado a la presentación de dos variables, aunque se pueden realizar modificaciones de tal forma que nos permita incluir más.

En R obtenemos este gráfico mediante la función plot: plot(x, …).

> tiempo=c(0.5,1,1.5,2,2.5,3)

> distancia=c(20,60,90,120,160,200)

> plot(tiempo,distancia)

> plot(tiempo,distancia,type=”b”,xlab=”tiempo en horas”,ylab=”distancia en kilómetros”)

dispersión1

dispersión2

V.        Gráfica de puntos – dotchart(), stripchart().

En este tipo de gráfica se dibuja un punto por cada dato y son útiles cuando hay pocos datos que pueden ser clasificados según distintos factores

> x=c(1.0,1.0,1.5,2.2,2.5,2.5,2.5,2.5,2.5,2.5,2.8,2.9,3.0,3.1,3.5)

> stripchart(x,method=”overplot”)

gráfica de puntos

> x=c(1.0,1.0,1.5,2.2,2.5,2.5,2.5,2.5,2.5,2.5,2.8,2.9,3.0,3.1,3.5)

> dotchart(x,gdata=TRUE,bg=”yellow”,lcolor=”blue”,xlab=”tiempos”)

gráfica de puntos +1

VI.        Gráfica circular o pie chart – pie().

Este gráfico es una gran herramienta para datos porcentuales tomadas sobre individuos o elementos, por ejemplo un análisis químico sobre el porcentaje de componentes de muestras tomadas en diversas áreas. En este caso realmente este es un gráfico multivariable que puede utilizarse para comparar diferencias o similitudes y realizar agrupamientos.

gráfica circulargráfica circular1

> color=c(1,3,2,4,1,2,3,4,1,2,2,3,1,4,2,3,3,1,2,3,4)

> color.m=table(color)

> names(color.m)=c(“Ford”,”Honda”,”Vw”,”Kia”)

> pie(color.m,col=c(“blue”,”red”,”green”,”yellow”) )

VII.        Gráfica de barras – barplot().

Nos sirve para presentar datos y la frecuencia con que se presentan ya sea absoluta o relativa.

> marcas=c(1,2,3,4,5,6,2,2,3,3,4,4,5,5,6,1,2,3,4,5,6,3,4,5,6,1,2,3,1,1,2,3,4,5)

> table(marcas)

marcas

1 2 3 4 5 6

5 6 7 6 6 4

> barplot(marcas)

> barplot(table(marcas))

> barplot(table(marcas),main=”preferencias por marca”)

gráfica de barras

Si la presentamos con frecuencias relativas

> marcas=c(1,2,3,4,5,6,2,2,3,3,4,4,5,5,6,1,2,3,4,5,6,3,4,5,6,1,2,3,1,1,2,3,4,5)

> table(marcas)

marcas

1 2 3 4 5 6

5 6 7 6 6 4

> barplot(table(marcas))

> barplot(table(marcas)/length(marcas))

> marca.m=table(marcas)

> names(marca.m)=c(“Ford”,”Honda”,”Vw”,”Gmc”,”Ram”,”Jeep”)

> barplot(marca.m)

gráfica de barras+1

VIII.        Gráfica de columnas de matrices – matplot().

Gráfica las columnas de una matriz contra las columnas de otra.

> x=matrix(1:9,3,3)

> y=matrix(10:18,3,3)

> matplot(x,y)

gráfica de matrices+1

> x=matrix(1:4,2,2)

> y=matrix(8:11,2,2)

> matplot(x,y)

gráfica de matrices+1

IX.        Gráfica Quantil-Quantil – qqnorm(), qqplot().

Un gráfico Cuantil-Cuantil permite observar cuan cerca está la distribución de un conjunto de datos a alguna distribución ideal ó comparar la distribución de dos conjuntos de datos.

gráfica cuantil

gráfica cuantil1

X.        Adición de elementos a las gráficas – lines(), points(), abline()

<lines()

Esta función permite graficar segmentos de líneas rectas en un gráfico previo

> x=c(1:10)

> y=c(2*1:10)

> plot(x,y)

> lines(x,y)

gráfica cuantil +1

> x=c(-4,-3,-2,-1,0,1,2,3,4)

> y=c(4,5,3,2,0,5,3,4,6)

> plot(x,y)

> lines(x,y)

gráfica cuantil+2

   points()

Es una función para dibujar una secuencia de puntos en las coordenadas especificadas.

Los puntos agregados están en verde

     abline()

Permite agregar líneas a los gráficos

> x=c(-3,-2,-1,0,1,2,3)

> y=c(-2,0,2,4,6,8,10)

> plot(x,y)

gráfica cuantil+3

> abline(2,-2)

> abline(-2,2)

gráfica cuantil+4

CONCLUSIONES:

El objetivo de un gráfico en estadística, es mejorar la presentación del contenido científico, es hacer más fácil el análisis e interpretación de la información.

Es importante que la información pueda ser captada rápidamente, de un golpe de vista, debe ser sencilla y clara.

Fuentes de consulta:

http://www.rcim.sld.cu/revista_4/articulos_html/rene.htm

Correa, Juan C.; González, Nefti. Gráficos Estadísticos con R. Colombia, 2002.U. N. sede Medellín .posgrado en Estadística.

http://www.estadisticaparatodos.es/taller/graficas/tallos_hojas.html#trenes

http://www.ceibal.edu.uy/UserFiles/P0001/ODEA/ORIGINAL/110826_poblacion_mundial.elp/histograma.html

HERRAMIENTAS COMPUTACIONALES. Operadores para Lenguaje C.

Estándar

Introducción.

En las siguientes líneas, trataré de introducir los elementos principales de la programación en lenguaje C. Intentaré, cubrir parte de las características del lenguaje así como algunas funciones de las bibliotecas estándares, al final y a manera de conclusión, crearemos un sencillo programa en C.

Características del lenguaje C:

· Orientado a la programación de sistemas.

· Es altamente transportable.

· Es muy flexible.

· Genera código muy eficiente.

· Es muy expresivo (se pueden realizar muchas funciones escribiendo pocas líneas de código).

· Es muy poco modular.

· Hace pocas comprobaciones.

· Da poca disciplina al programador.

· Es difícil leer código escrito por otras personas.

Etapas del desarrollo de programas en C.

Veamos primero, algunos conceptos:

El preprocesador.

Transforma el programa fuente, convirtiéndolo en otro archivo fuente “predigerido”. Las transformaciones incluyen: 

· Eliminar los comentarios.

· Incluir en el fuente el contenido de los ficheros declarados con #include <fichero> (a estos ficheros se les suele llamar cabeceras).

· Sustituir en el fuente las macros declaradas con #define (ej. #define CIEN 100).

El compilador.

Convierte el programa fuente entregado por el preprocesador en un archivo en lenguaje máquina: fichero objeto. 

Algunos compiladores pasan por una fase intermedia en lenguaje ensamblador. 

El enlazador.

Un fichero objeto es código máquina, pero no se puede ejecutar, porque le falta un código que se encuentra en otros archivos binarios. 

El enlazador genera el ejecutable binario, a partir del contenido de los ficheros objetos y de las bibliotecas

Las bibliotecas contienen el código de funciones precompiladas, a las que el archivo fuente llama (por ejemplo printf).

Las etapas para el desarrollo de un programa en C son las siguientes:

1. Creación del programa:

Crear un archivo que contenga el programa completo, utilizando un editor de textos ordinario como “emacs” o “vi”. Por convención el programa debe terminar con “.c”, por ejemplo “intento1.c”. El contenido debe obedecer la sintaxis de C.

2. Compilación:

Para compilar un programa simplemente se debe utilizar el comando “cc”. El comando debe estar seguido por el nombre del archivo que contiene al programa en C que se desea compilar. Existen varias opciones para el compilador que se pueden utilizar para modificar la forma en que se realiza este proceso.El comando básico para compilar es:

gcc intento1.c

 Donde intento1.c es el nombre del archivo que contiene al programa.

Si hay errores de sintaxis en el programa, el compilador los detectará y los reportará. Puede haber errores lógicos que no sean detectados por el compilador y que generarán una operación incorrecta del programa.

Cuando el compilador ha generado exitosamente el programa ejecutable, la versión compilada, o ejecutable, se dejará en un archivo con el nombre a.out, o se le puede especificar un nombre que se le haya indicado si se usó la opción -o. 

gcc intento1.c -o ejecutable

3. Ejecución del programa:

Para ejecutarlo, se debe teclear el nombre del archivo ejecutable:

./ejecutable

Esto ejecuta el programa e imprime cualquier resultado en la pantalla. En esta etapa se pueden presentar errores, tales como la división por cero, o puede resultar evidente que la salida es incorrecta. Si algo está incorrecto, se deberá volver a editar el programa y repetir todo el proceso descrito.

Bibliotecas estándares.

El lenguaje C es muy simple. Carece de tipos y servicios que forman parte de otros lenguajes. No tiene tipo booleano, ni manejo de cadenas, ni manejo de memoria dinámica. 

No obstante, el estándar de C define un conjunto de bibliotecas de funciones, que necesariamente vienen con todo entorno de compilación de C y que satisfacen estos servicios elementales. 

Las interfaces de estos servicios vienen definidas en unos ficheros cabeceras (header files). El nombre de estos ficheros suele terminar en .h.

Un fichero fuente en lenguaje C tendrá esta estructura típica: 

#include <biblioteca1.h>

#include <biblioteca2.h>

… declaraciones de funciones … 

… definiciones (cuerpos de funciones) … 

… declaraciones de variables globales … 

main()

{

… cuerpo del main … 

}

… otras definiciones de funciones … 

Las declaraciones y definiciones se pueden hacer en cualquier orden, aunque es preferible declarar las funciones al principio del programa (por legibilidad). 

main es simplemente una función más del programa, con la particularidad de que es el punto de entrada al programa. 

Algunos de los servicios proporcionados por las bibliotecas estándares son: 

· entrada y salida de datos (stdio.h).

· manejo de cadenas (string.h).

· memoria dinámica (stdlib.h).

· rutinas matemáticas (math.h).

Componentes del lenguaje C.

Podemos resumirlo de como la programación estructurada: 

Algoritmos+estructuras de datos = programas.

Estructuras de datos.

· literales.

· tipos básicos (todos numéricos).

· tipos enumerados.

· tipos estructurados (struct, union).

· punteros y vectores.

Construcciones algorítmicas.

· construcciones condicionales (if,switch)

· construcciones iterativas(while,for,do…while)

· subrutinas (funciones)

Además de lo anterior, el C tiene otros elementos: 

· comentarios

· inclusión de ficheros

· macros

· compilación condicional

El preprocesador es quien normalmente se encarga de interpretar estas construcciones. 

Tipos de datos.

Los datos en C han de tener un tipo. Las variables contienen datos, y se han de declarar del tipo adecuado a los valores que van a contener. 

El lenguaje C dispone de estos tipos básicos: 

int

enteros (números enteros positivos y negativos) 

char

caracteres (letras) 

float

números en coma flotante (números reales) 

double

números en coma flotante de doble precisión 

void

no-tipo (se emplea con punteros) 

Todos estos tipos -salvo void- son tipos numéricos. Incluso el tipo char.

Se pueden construir tipos de datos más elaborados a partir de estos tipos básicos: 

· Vectores y matrices.

· Punteros.

· Tipos estructurados (registros).

Declaraciones de variables.

Las variables se utilizan para guardar datos dentro del programa. Hay que declarar las variables antes de usarlas. Cada variable tiene un tipo.

Ejemplo:

int pepe;

Las variables globales se declaran justo antes de main(). Una variable en C se declara de la siguiente forma:

tipo  lista de variables;

inti,j,k;

floatx,y,z;

char  letra;

Inicialización de variables

Es posible inicializar las variables con un valor utilizando el operador de asignación =.

float suma   = 0.0;

intmaximo =  -1;

char  letra  = ‘A’;

main () {

    }

 

float suma;

intmaximo;

char  letra;

main () {

        suma = 0.0;

maximo = -1;

char letra = ‘A’;

    }

 

También es posible inicializar múltiples variables con un mismo valor en una sola línea si las variables son del mismo tipo:

int a=b=c=d=0;

Nombres de variables (identificadores).

Un identificador es un nombre que define a una variable, una función o un tipo de datos. Un identificador válido ha de empezar por una letra o por el carácter de subrayado _, seguido de cualquier cantidad de letras, dígitos o subrayados. 

OJO: Se distinguen mayúsculas de minúsculas. 

No se pueden utilizar palabras reservadas como intchar o while.

Muchos compiladores no permiten letras acentuadas o eñes.

Ejemplos válidos:

                        char letra;

                        int Letra;

                        float CHAR;

                        int variable;

                        int cantidad_envases;

                        double precio123;

                        int __;

Ejemplos no válidos:

                        int 123var;                  /* Empieza por dígitos */

                        char int;                      /* Palabra reservada */

                        int una sola;    /* Contiene espacios */

                        int US$;                                  /* Contiene $

  • /

     

                            int var.nueva;  /* Contiene el punto /

                            int eñe;                                   /* Puede no

funcionar */

 

Tipos definidos por el usuario.

Se pueden definir nuevos tipos a partir de otros utilizando la sentencia typedef.

typedef real float;

typedef letra char;

   /* Declaración de variables con el nuevo tipo */

   real suma=0.0;

   letra   a=’A’;

Constantes.

Una constante es una expresión cuyo valor no cambia durante toda la ejecución del programa. Las constantes son útiles para definir parámetros de un problema o constantes matemáticas o físicas: PI,e,g,etc.

La palabra reservada const se usa para declarar constantes:

doubleconst PI = 3.1415;

constfloat g = 9.8;

Otra forma común de declarar constantes es utilizando la directiva #define

Es frecuente el uso de constantes para declarar los parámetros de una función cuyos argumentos no cambian en su interior.

Expresiones.

Los datos se manipulan mediante expresiones, que sirven para calcular valores. En C hay varios operadores para construir expresiones. 

Estos son los operadores elementales sobre números: 

Operador

Significado

+

suma

resta

*

producto

/

división

%

módulo (resto de la división) 

Una expresión combina varias operaciones y devuelve un valor. Los operadores */ y % tienen precedencia sobre la suma y la resta. Se pueden utilizar paréntesis para agrupar subexpresiones. 

Ejemplos de expresiones:

            1.

            2+2.

            4 + 6/2.

            (4+6) / 2.

            (3*5 + 12) % 7.

Asignaciones.

La forma de dar valor a una variable es:

variable expresión

Y se le llama asignación.

También se puede dar valor a una variable en el mismo momento en que se declara (inicialización).

tipo variable expresión 

Una variable que se declara sin inicializar contiene un valor indeterminado. 

Ejemplo:

            int valor1 = 0;  /* variable inicializada a cero */

            int valor2;                    /* variable no inicializada */

            main()

            {

                        valor1 = 4 + 3;            /* asignación */

                        valor2 = 5;                  /* otra asignación */

Una asignación es una expresión. Esto quiere decir que: a) devuelve un valor y, b) una asignación puede incrustarse dentro de una expresión más compleja. 

El valor devuelto por la asignación a=b es el resultado de evaluar b.

Ejemplo:

 C =  20 – ( B = 2*(A=5)+4 ) ;

A valdrá 5 (por la expresión A=5) 

B valdrá 2*(5)+4= 14

C valdrá 20-(14)= 6

En consecuencia, una asignación se puede colocar en cualquier sitio donde se puede emplear una expresión. 

Operadores.

Hay operadores para evaluar condiciones. En C no existe tipo booleano, así que el resultado de la expresión utiliza números enteros: si la condición es cierta, estas expresiones devuelven un 1; si no es cierta, devuelven un cero. 

Tipo

Operador

Operación

Ejemplo

Aritmético

+

suma

b=4+a;

Aritmético

resta

b=4-a;

Aritmético

*

producto

b=4*a;

Aritmético

/

división

b=4/a;

Aritmético

++

preincremento

b=++a;

Aritmético

++

posincremento

b=a++;

Aritmético

predecremento

b=–a;

Aritmético

posdecremento

b=a–;

Aritmético

%

módulo

b=a%c;

     

 

Asignación

=

asignación simple

b=4;

Asignación

+=

suma y asigna

b+=4;

Asignación

-=

resta y asigna

b-=4;

Asignación

*=

multiplica y asigna

b*=4;

Asignación

/=

divide y asigna

b/=4;

     

 

Comparación

 

 

igualdad

ba;

Comparación

menor que

b<a;

Comparación

mayor que

b>a;

Comparación

<=

menor que o igual

b<=a;

Comparación

>=

mayor que o igual

b>=a;

Comparación

?:

si ? entonces : de lo contrario

c=(a<b)?a:b;

     

 

Lógicos

&&

AND lógico

a && b;

Lógicos

||

OR lógico

a || b;

Lógicos

!

NOT lógico

!a;

Lógicos

&

AND sobre bits

a & b;

Lógicos

|

OR sobre bits

a | b;

Lógicos

^

XOR sobre bits

a ^ b;

Lógicos

~

NOT sobre bits

~a;

Lógicos

&=

AND sobre bits con asignación

a &= b;

Lógicos

|=

OR sobre bits con asignación

a |= b;

Lógicos

^=

XOR sobre bits con asignación

a ^= b;

     

 

Apuntadores

*

Resuelve apuntador

a = *b;

Apuntadores

->

Resuelve apuntador sobre estructura

a = b->c;

Apuntadores

 ?

Elemento de un arreglo

a = b1?;

Apuntadores

( )

Llamada a función

a = fun ( );

Construcciones algorítmicas.

En C existen estas construcciones para implementar algoritmos: 

· Sentencias simples y sentencias compuestas (con las llaves).

· Construcciones condicionales:

if ( expresiónsentencia [ else sentencia ]

switch ( expresión) { caso1 caso2 … casoN }

· Construcciones iterativas:

while ( expresiónsentencia

do sentencia while ( expresión);

for ( expresiónexpresiónexpresión ) sentencia

· Instrucciones de control de flujo: break, continue y goto.

· Subprogramas: funciones.

Programación modular.

Una aplicación escrita en C puede estar compuesta de múltiples módulos, cada uno encargado de una función (manejo de archivos, gestión de errores, visualización de datos, interfaz de usuario, etc.).

Un módulo es un conjunto de funciones, tipos de datos, variables, etc., en definitiva, recursos que pueden utilizar otros módulos. Cada módulo es un fichero fuente de extensión .c que se compila por separado.

La interfaz de un módulo es el conjunto de funciones, variables, tipos de datos y constantes que se hacen públicas al resto de los módulos. 

Por cada módulo fichero.c existirá un fichero cabecera fichero.h, el cual contendrá la declaración de la interfaz de ese módulo. 

Las funciones, variables, etc. que son de uso interno del módulo no se declaran en el fichero cabecera. 

Los módulos que vayan a utilizar recursos de un módulo llamado mod.c tendrían que incluir su fichero cabecera con:

#include ” mod.h

Con lo que se incluyen las declaraciones públicas de ese módulo. 

Ejemplo de programación. (Disculpen la simplicidad).

Vamos a crear un programa en lenguaje C, que va a consistir en escribir por pantalla la frase “Hola Mundo”; para ello, vamos a utilizar el entorno de programación Dev-C.

Lo primero que hay que hacer es crear un nuevo proyecto, para ello vamos al menú File/New/Project:

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image001.jpg

Debemos indicar el tipo de proyecto que queremos crear, el nombre del proyecto y el lenguaje de programación que se va a utilizar. En nuestro caso le indicamos que el proyecto sea Console Application, el nombre del proyecto “Hola Mundo” y marcamos la opción de C Project:

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image002.jpg

Por defecto, el entorno de programación Dev-C crea el archivo main con los parámetros necesarios. Por así decirlo, crea una ayuda para el programador. Borramos todo lo que aparece en archivomain.c y nos quedará la pantalla siguiente:

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image003.jpg

Ahora vamos a escribir el código de nuestro programa:

Como ya sabemos, un programa escrito en C debe seguir una estructura. Lo primero que debe aparecer en nuestro código es la definición de las librerías de funciones. En nuestro caso, solo necesitamos la declaración de la librería stdio.h. Esta librería es la biblioteca estándar del lenguaje C. En ella se definen las macros, las contantes, las declaraciones de funciones y la definición de tipos usados por varias operaciones estándar de entrada y salida.

Para mostrar por pantalla en texto que deseamos, necesitamos la función printf() definida en la librería stdio.h. Entre los paréntesis escribimos el mensaje que queremos que se muestre entre comillas dobles (” “). Esto debe ir dentro del programa principal, main, descrito anteriormente. El código de nuestro programa debe tener el siguiente aspecto:

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image004.jpg

Una vez que está escrito nuestro código, hay que compilarlo. Al compilar lo que hacemos es traducir nuestro código a un lenguaje entendible por el ordenador.

Para ello hacemos click en el siguiente botón:

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image005.jpg

Al pulsar en este botón, nos saldrá la siguiente pantalla indicándonos el progreso de la compilación.

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image006.jpg

Si en algún momento da error, es porque no hemos escrito nuestro código de la manera correcta. En este caso, Dev-C nos indicará la línea donde esta nuestro error. Un ejemplo es el siguiente:

Vamos a borrar en la línea donde escribimos por pantalla el “;”. La pantalla de error será la siguiente:

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image007.jpg

Nos indica que hay un error de sintaxis antes de “}” y está en la línea 9. Solucionamos el error y volvemos a compilar. Una vez compilado guardamos nuestro archivo main.c en la carpeta del proyecto que creamos al principio.

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image008.jpg

Para ejecutar el programa que hemos creado vamos a: Inicio\Ejecutar\cmd y navegamos hasta la carpeta de nuestro proyecto. Para ejecutar nuestro programa hay que escribir lo siguiente: nombre_proyecto.exe, que en nuestro caso sería “Hola Mundo.exe”

http://recursostic.educacion.es/observatorio/web/images/upload/ccam0040/introc/image009.jpg

Como vemos se ha escrito por pantalla la frase: “Hola Mundo”.

Fuentes de información:

~ Instituto Nacional de Tecnologías Educativas y de Formación del Profesorado. Observatorio Tecnológico. Gobierno de España.

~ Introducción al lenguaje C. José Miguel Santos Espino. Universidad de la Palmas de Gran Canaria. España.

~ www.fciencias.unam.mx.

~ Essential C.Parlante, N. Stanford CS Education Library, USA. (2003).

Understanding C. Townsend, C. 2a. ed. USA: Howard W. Sams & Company. (1988).

HERRAMIENTAS COMPUTACIONALES. Desarrollo de programas. Lenguaje C.

Estándar

Introducción.

Uno de los objetivos de este trabajo es explicar de manera detallada, la metodología a seguir para la resolución de problemas con computadoras y con un lenguaje de programación como C. El proceso  de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es -esencialmente- un proceso creativo, se puede considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores. La resolución de un problema con una computadora se hace escribiendo un programa, que exige al menos los siguientes pasos:

Análisis. El problema se analiza teniendo presente la especificación de los requisitos dados por el cliente de la empresa o por la persona que encarga el programa.

Diseño. Una vez analizado el problema, se diseña una solución que conducirá a un algoritmo que resuelva el problema.

Codificación (implementación). La solución se escribe en la sintaxis del lenguaje de alto nivel (por ejemplo, C) y se obtiene un programa.

Ejecución, verificación y depuración. El programa se ejecuta, se comprueba rigurosamente y se eliminan todos los errores (denominados «bugs», en inglés) que puedan aparecer.

Mantenimiento. El programa se actualiza y modifica, cada vez que sea necesario, de modo que se cumplan todas las necesidades de cambio de sus usuarios.

Documentación. Escritura de las diferentes fases del ciclo de vida del software, esencialmente el análisis, diseño y codificación, unidos a manuales de usuario y de referencia, así como normas para el mantenimiento.

ANÁLISIS DEL PROBLEMA.

 Esta fase requiere una clara definición, donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. Dado que se busca una solución por computadora, se precisan especificaciones detalladas de entrada salida. Esta etapa requiere una clara definición donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. Para definir correctamente un problema es conveniente responder a las siguientes preguntas:

             * ¿Qué entradas se requieren? (tipo y cantidad)

             * ¿Cuál es la salida deseada? (tipo y cantidad)

             * ¿Qué método produce la salida deseada?

 DISEÑO DEL ALGORITMO.

En la etapa de análisis del proceso de programación se determina qué hace el programa. En la etapa de diseño se determina cómo hace el programa la tarea solicitada. Los métodos más eficaces para el proceso de diseño se basan en el conocido por divide y vencerás.Es decir, la resolución de un problema complejo se realiza dividiendo el problema en sub-problemas y a continuación dividir estos subproblemas en otros de nivel más bajo, hasta que pueda ser implementada una solución en la computadora. Este método se conoce técnicamente como diseño descendente (top-down) o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma más detallada se denomina refinamiento sucesivo.Cada subprograma es resuelto mediante un módulo (subprograma) que tiene un solo punto de entrada y un solo punto de salida. El proceso implica la ejecución de los siguientes pasos hasta que el programa se termina:

1. Programar un módulo.

2. Comprobar el módulo.

 3. Si es necesario, depurar el módulo.

4. Combinar el módulo con los módulos anteriores.

El proceso que convierte los resultados del análisis del problema en un diseño modular con refinamientos sucesivos que permitan una posterior traducción a un lenguaje se denomina diseño del algoritmo.El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar posteriormente.

 Las dos herramientas más utilizadas comúnmente para diseñar algoritmos son: diagramas de flujo ypseudocódigos.

Diagramas de flujo.

 

Un diagrama de flujo (flowchart) es una representación gráfica de un algoritmo. Los símbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalización (ANSI).

 http://es.wikipedia.org/wiki/Diagrama_de_flujo

Pseudocódigo.

El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la escritura como la lectura de programas. En esencia, el pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos.

Ejemplo:

Calcular el valor de la suma 1+2+3+ …+ 100.

Algoritmo.

Se utiliza una variable Contador como un contador que genere los sucesivos números enteros, y Suma

para almacenar las sumas parciales 1, +2,1+2+3.. .

1. Establecer Contador 1

2. Establecer Suma a O

3. mientras Contador < = 100 hacer

Sumar Contador Suma

Incrementar Contador en 1

fin-mientras

4. Visualizar Suma

CODIFICACIÓN (IMPLEMENTACIÓN). 

Codificación es la escritura en un lenguaje de programación de la representación del algoritmo desarrollada en las etapas precedentes. Dado que el diseño de un algoritmo es independiente del lenguaje de programación utilizado para su implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro.

Para realizar la conversión del algoritmo en programa se deben sustituir las palabras reservadas en español por sus homónimos en inglés, y las operaciones/instrucciones indicadas en lenguaje natural expresarlas en el lenguaje de programación correspondiente respetando sus reglas y sintaxis. Esta operación se realiza con un programa editor propio del lenguaje de programación o un editor de texto de uso general. Como resultado se obtiene un archivo que se almacena en la computadora y se conoce como programa fuente.El objetivo del programador debe ser escribir programas sencillos y claros, que sean fáciles de actualizar, ya sea por quien los escribió o por otros programadores.

/ *

Este programa obtiene una tabla de depreciaciones acumuladas y valores reales de cada año de un determinado producto

*/

#include <stdio.h>

void main0

{

double Coste, Depreciacion,

Valor-Recuperacion,

Valor-actual,

Acumulado,

ValorAnual?;

int Anio, Vida-util;

puts(“1ntroduzca coste, valor recuperación y vida Útil”);

scanf(“%lf %lf %lf”,&Coste,&Valor-Recuperacion,&Vida-ütil);

puts (“Introduzca año actual”) ;

scanf ( “%d”, &Anio) ;

ValorActual? = Coste;

Depreciación = (Coste-Valor-Recuperac¡on)/V¡da-Util;

Acumulado = O;

puts (“Año Depreciación Dep. Acumulada”) ;

while (Anio < Vida-Util)

I

Acumulado = Acumulado + Depreciacion;

ValorActual? = ValorActual? – Depreciacion;

printf (“Año: %d, Depreciacion:%.21f, R.21f Acumulada”,

Anio = Ani0 + 1;

Anio,Depreciacion,Acumulado);

     }

}

 

 COMPILACIÓN, VERIFICACIÓN Y DEPURACIÓN.

 

Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado almacenarlo posteriormente en un disco. Esta operación se realiza con un programa editor, posteriormente el programa fuente se convierte en un archivo de programa que se guarda(graba) en disco.

http://informatica3c1.blogspot.mx/2010/08/fases-de-compilacion.html

El programa fuente debe ser traducido a lenguaje máquina, este proceso se realiza con el compilador y el sistema operativo que se encarga prácticamente de la compilación.Si tras la compilación se presentan errores(errores de compilación) en el programa fuente, es preciso volver a editar el programa, corregir los errores y compilar de nuevo. Este proceso se repite hasta que no se producen errores, obteniéndose el programa objetoque todavía no es ejecutable directamente. Suponiendo que no existen errores en el programa fuente, se debe instruir al sistema operativo para que realice la fase de montaje o enlace (link), carga, del programa objeto con las librerías del programa del compilador. El proceso de montaje produce un programa ejecutable.

La compilación y sus fases o etapas

http://www.bloginformatico.com/la-compilacion-y-sus-fases-o-etapas.php

Existen diversas fases de compilación que se ilustran en la siguiente imagen:

Fases de la compilación

http://www.bloginformatico.com/la-compilacion-y-sus-fases-o-etapas.php 

El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un compilador tiene los siguientes pasos:

1. Escritura del programa fuente con un editor (programa que permite a una computadora actuar de modo similar a una máquina de escribir electrónica) y guardarlo en un dispositivo de almacenamiento (por ejemplo, un disco).

2. Introducir el programa fuente en memoria.

3. Compilar el programa con el compilador.

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

5. Obtención del programa objeto.

6. El enlazador (linker) obtiene el programa ejecutable.

7. Se ejecuta el programa y, si no existen errores, se tendrá la salida del programa. Y, el proceso de ejecución se ilustra en la siguiente imagen:

Proceso de ejecución de un programa

http://www.bloginformatico.com/la-compilacion-y-sus-fases-o-etapas.php

La verificación compilación de un programa es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba, que determinarán si el programa tiene errores in bug^»).Para realizar la verificación se debe desarrollar una amplia gama de datos de test: valores normales de entrada, valores extremos de entrada que comprueben los límites del programa y valores de entrada que comprueben aspectos especiales del programa.

La depuración es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores: errores de compilación, errores de ejecución o errores lógicos.

MANTENIMIENTO Y DOCUMENTACIÓN.

La documentación de un problema consta de las descripciones de los pasos a dar en el proceso de resolución de un problema. La importancia de la documentación debe ser destacada por su decisiva influencia en el producto final. Programas pobremente documentados son difíciles de leer, más difíciles de depurar y casi imposibles de mantener y modificar.

La documentación de un programa puede ser interna y externa. La documentación interna es la contenida en líneas de comentarios. La documentación externa incluye análisis, diagramas de flujo y/o pseudocódigos, manuales de usuario con instrucciones para ejecutar el programa y para interpretar los resultados.

La documentación es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa. Tales cambios se denominan mantenimiento programa. Después de cada cambio la documentación debe ser actualizada para facilitar cambios posteriores. Es práctica frecuente numerar las sucesivas versiones de los programas 1.0, 1.1, 2.0, 2.1, etc. (Si los cambios introducidos son importantes, se varía el primer dígito [1.0, 2.0,…I, en caso de pequeños cambios sólo se varía el segundo dígito [2.0,2.1 …I.) 

CONCLUSIONES.

En resumen, las computadoras son una poderosa herramienta para la resolución de problemas,  pero su potencialidad está en función de la capacidad de programación de soluciones adecuadas a cada problema particular y ésa es precisamente la función esencial del especialista informático, es decir, explotar la potencialidad de las computadoras, y las dos cuestiones más importantes que debe enfrentar para la resolución de un problema, son la definición de un conjunto de instrucciones, cuya ejecución ordenada puede conducir a una buena solución y también la representación adecuada de cómo se van a presentar los datos del problema.  

Fuentes de Información:

Programación en C. Metodología, algoritmos y estructura de datos

http:/ / es. wikipedia. org/ wiki/ Bjarne_Stroustrup?

microe.udea.edu.co/…/INTRODUCCION%20A%20LOS%20ALGORIT…

http://exa.unne.edu.ar/informatica/introduccion/public_html/material2009/tema3-2009.pdf

 Elaborado por : María de la Luz Pérez Limón.