lunes, 25 de febrero de 2013

Algoritmos

Algoritmo

Podemos denominar algoritmo a un grupo finito de operaciones organizadas de manera lógica y ordenada que nos permite solucionar un problema. Se trata de una serie de instrucciones o reglas establecidas que, por medio de una sucesión de pasos, permiten llegar  a una solución.
Los algoritmos permiten trabajar a partir de un estado básico o inicial y, tras seguir los pasos propuestos, llegar a una solución. Cabe resaltar que, si bien los algoritmos suelen estar asociados al ámbito matemático (ya que permiten, por citar casos concretos, averiguar el cociente entre un par de dígitos o determinar cuál es el máximo común divisor entre dos cifras pertenecientes al grupo de los enteros), aunque estos no siempre implican la presencia de números.1

Diagrama de flujo

Un diagrama de flujo es la representacion grafica de el algoritmo y tiene las siguientes caracteristicas:
Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término.
Las siguientes son acciones previas a la realización del diagrama de flujo:
1. Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos interrelacionados, así como las terceras partes interesadas.
2. Definir qué se espera obtener del diagrama de flujo.
3. Identificar quién lo empleará y cómo.
4. Establecer el nivel de detalle requerido.
5. Determinar los límites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:

1. Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.

2. Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.
3.Si el nivel de detalle definido incluye actividades menores, listarlas también.
4. Identificar y listar los puntos de decisión.
5. Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
6. Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido  

 
Datos
 
En los programas que diseñemos, casi siempre manejaremos datos de diversas clases de información, tales como textos o números. Cada una de estas clases de información son los tipos de datos. Turbo Pascal puede distinguir entre tres tipos de datos, y son éstos los que definen la clase de información que se puede contener en las variables o constantes que se van a utilizar en un programa.
Los tipos de datos que el lenguaje Pascal reconoce, utilizan nombres en el idioma inglés, además, estos nombres también son comunes en la mayoría de los lenguajes de programación, por los tanto sí usted aprende a identificarlos aquí, pordrá también familiarizarse con ellos en cualquier otro lenguaje de programación. Veamos a continuación una explicación sobre cuáles son estos tres tipos de datos.

Datos Alfanuméricos

Los datos de tipo alfanumérico, permiten representar un solo carácter o una secuencia de carácteres del código ASCII, posibilitando expresar una información de forma descriptiva. Para los principiantes en la programación, le aclaramos que le llamamos carácter a cualquiera de las letras del alfabeto, símbolos especiales, números o espacio en blanco que se escriben en la pantalla. En la siguiente tabla se muestran los dos tipos de datos alfanuméricos que Turbo Pascal reconoce:

Tipo Descripción Carácteres maximos Ejemplos Tamaño
Char Carácter unico 1 'a', 'A', 'B', 'b', '$', '9', ' ' 1 Byte
String Cadena de carácteres 255 'Estoy feliz' 255 Byte
'Hola, bienvenidos'
'Tutorial de progoramación'

Los datos alfanuméricos de tipo string (cadenas de caracteres) admiten una longitud maxima de 255 caracteres, osea 255 Bytes. Si durante la ejecución de un programa se intenta asingnar un número mayor de caracteres a una variable de este tipo de datos, solo se reconocerán el número máximo de carácteres soportados y los demás serán ignorados, también es posible al momento de declarar las variables, limitar el número de carácteres que esta almacenara con el fin ahorar espacio.

Datos numéricos

Los datos numéricos son aquellos que nos permiten representar valores escalares o información en forma cuantitativa, permitiendonos realizar operaciones aritmeticas basicas o calculos más avanzados con sus valores. este tipo de datos a su vez se dividen en dos tipos de datos, los cuales estan formados por los números enteros y los números reales.
Los datos de tipo Entero (o Integer en ingles), son los que representan valores numéricos sin parte fraccionaria, estos también se dividen, según su rango de valores, en datos de tipo Byte, Shorting, Integer, Word, y LonggInt. En la tabla siguiente se muestran los distintos tipos de datos Integer, indicando su rango de valores y el tamaño en bytes que ocupan en memoria:

Tipo Descripción Rango de valores Tamaño
Byte Entero corto positivo 0 a 255 1 Byte
Shortint Entero corto -128 a 127 1 Byte
Integer Entero -32.768 a 32.767 2 Bytes
Word Entero positivo 0 a 65535 2 Bytes
LongInt Entero largo -2.147'483.648 a 2.147'483.647 4 Bytes
Hay que tener en cuenta que en la tabla anterior se han formateado los rangos de valores con el punto separador de miles, sin embargo, al momento de asignar un valor a una variable de este tipo de datos hay que hacerlo sin puntos o se generará un error.
En expresiones aritméticas todos los datos tipo entero son compatibles entre si, lo que significa que el compilador permite intercambiarlos, así por ejemplo, a una variable de tipo Integer se le puede asignar el valor de una de tipo LongInt, siempre y cuando este no exceda el rango numérico del tipo Integer.
Los tipos de datos Reales (o Reals en inglés), son los permiten representar valores numéricos formados por una parte entera y una parte fraccionaria, y que pueden ser expersados con notación de coma flotante. Los datos de tipo real también se dividen en otros tipos de datos reales, según la precisión con que pueden presentar sus cifras decimales, tal como se muestran en la siguiente tabla:

Tipo Descripción Rango de valores Dígitos Tamaño
Real Real 2.9x10-39 a 1.7 x1038 11-12 6 Bytes
Single Real de simple precisión 1.5x10-45 a 3.4x1038 7-8 4 Bytes
Double Real de doble precisión 5.0x10-324 a 1.7x10308 15-16 8 Bytes
Extended Real de precisión extendida 3.4x10-4932 a 1.1x104932 19-20 10 Bytes
Comp Real de pecisión compacta -9.2x1018 a 9.2x1018 19-20 8 Bytes
Es importante tener en cuenta que, tanto en los datos de tipo entero como real, si se intenta asignar un valor que está fuera del rango de los valores permitidos se produce un error que se conoce con el nombre de desbordamiento (overflow en inglés), cuando esto ocurre lo habitual es que el programa que se estaba ejecutando deje de funcionar.

Datos Lógicos

Los datos lógicos son aquellos que pueden tomar unicamente uno de dos valores, tales como falso o verdadero, pero no ambos a la vez. Este tipo de datos es producido como el resultado del valor de verdad de las proposiciónes lógicas, asi por ejemplo, podemos evaluar si la expresión A + B = 15 es falsa o vedadera, y dependiendo del valor de su valor de verdad, en un programa se decide que sentencias se van a ejecutar para cada caso.
En Turbo Pascal, existen cuatro tipos de datos lógicos predefinidos, los cuales son Boolean, WordBool, LongBool y ByteBool. Sin embargo, de ellos sólo vamos utilizar el tipo Boolean, que emplea 8 bits, y puede tomar como valores, True para indicar verdadero y False para indicar falso. En nuestro lenguaje natural, los valores True/False equivalen a decir: Si/No, Encendido/Apagado, Activado/Desactivado, etc., y usted puede interpretarlos como mejor le sea conveniente.
En el próximo tema veremos acerca de la variables y constantes, aunque ya para concluir, sobra decir que, es de vital importancia que aprendamos bién sobre cada uno de los tipos de datos vistos en este tema, ya que así podremos definir correctamente el tipo de datos para cada una de las variables y constantes que vayamos a necesitar en nuestros futuros programas.2




1http://www.monografias.com/trabajos15/algoritmos/algoritmos.shtml

2. Tomado de http://turbopascal.webcindario.com/page05.htm

i1 http://marilinrodriguez.bligoo.com.co/que-es-un-algoritmo
  

domingo, 17 de febrero de 2013

Sistemas Numericos

Sistemas Numéricos 

Los sistemas de numeración son conjuntos de dígitos usados para representar una cantidad (x), así se tienen los sistemas de numeración decimal, binario, octal y hexadecimal, etc. Que fueron los que se trabajaron en clase. Estos 4 cuatro se caracterizan por tener una base (número de dígitos diferentes: diez, dos, ocho, dieciséis respectivamente). Entre estos se pueden realizar conversiones cada sistema tiene suma, resta, multiplicacion respectivamente(operaciones basicas).

Los cuatro sistemas numericos trabajados fueron:

Sistema Binario
"El sistema de numeración más simple que usa la notación posicional es el sistema de numeración binario. Este sistema, como su nombre lo indica, usa solamente dos dígitos (0,1)." 1

ej : 1101= 
1*(23) + 1*(22) + 0*(21) + 1*(20) = 8 + 4 + 0 + 1 = 1310 

         1101 en base binaria equivale a 13 en base decimal.

             


Sistema Octal
"El sistema de numeración octal es también muy usado en la computación por tener una base que es potencia exacta de 2 o de la numeración binaria. Esta característica hace que la conversión a binario o viceversa sea bastante simple. El sistema octal usa 8 dígitos (0,1,2,3,4,5,6,7) y tienen el mismo valor que en el sistema de numeración decimal."2


ej : 3452= 2*(80) + 5*(81) + 4*(82) + 3*(83)= 2+40+4*64+64+3*512 = 2+40+256+1536 1834
      3452 en base octal equivale a 1834 en base decimal


Sistema Hexadecimal

"El sistema de numeración hexadecimal, o sea de base 16, resuelve este problema (es común abreviar hexadecimal como hex, aunque hex significa base seis y no base dieciseis). El sistema hexadecimal es compacto y nos proporciona un mecanismo sencillo de conversión hacia el formato binario, debido a ésto, la mayoría del equipo de cómputo actual utiliza el sistema numérico hexadecimal.
Cada dígito hexadecimal puede representar uno de dieciseis valores entre 0 y 1510. Como sólo tenemos diez dígitos decimales, necesitamos inventar seis dígitos adicionales para representar los valores entre 1010 y 1510. En lugar de crear nuevos simbolos para estos dígitos, utilizamos las letras A a la F. La conversión entre hexadecimal y binario es sencilla, considere la siguiente tabla:"3

Binario             Hexadecimal 
  
  0000                   0 
  0001                   1 
  0010                   2 
  0011                   3 
  0100                   4 
  0101                   5 
  0110                   6 
  0111                   7 
  1000                   8 
  1001                   9 
  1010                   A 
  1011                   B 
  1100                   C 
  1101                   D 
  1110                   E 
  1111                   F

4096 + 512 + 48 + 4 = 466010


un video que explica de una buena manera los sistemas numericos 




Bibliografia 

1. http://www.fismat.umich.mx/~elizalde/curso/node112.html
2. http://www.fismat.umich.mx/~elizalde/curso/node117.html
3. http://www.fismat.umich.mx/~elizalde/curso/node118.html






miércoles, 6 de febrero de 2013

Logica de programacion


¿Qué es la Lógica de Programación?

La lógica de programación es la ciencia que estudia los fundamentos y el uso de expresiones en el conocimiento humano, practicamente esta es la base de la programacion en si .

Descomponiedo las palabras podemos observar que el resultado final es "lógica de programar", que quiere decir esto; programar una serie de pasos lógicos para que se lleve a cabo una accion determinada y podemos observar que hay dos grandes pasos que son el "Qué" y el "Como":
  1. El QUÉ, son acciones a realizar para poder resolver el problema (Buscar una secuencia de pasos logicos para resolver el problema). Esta tarea es previa a toda la actividad de programación.
  2. El CÓMO, son las instrucciones de las que se va a valer para escribir los pasos para que se realicen las acciones que se determinaron en el QUÉ, las cuales están determinadas por el lenguaje de programación seleccionado.
Despues de eso encontramos la palabra ALGORITMO que son un conjunto de pasos secuenciales que se tienen que llevar a cabo para desarrolar una accion en un momento determinado, por ejemplo:

Tenemos un algoritmo llamado: Adquisicion_de_un_Libro
Para desarrolar este algoritmo tenemos una serie de pasos secuenciales que debemos llevar a cabo para realizar y estos son: 
Inicio
  1. Saber cuál es el libro que se quiere adquirir
  2. Desplazarnos hacia una biblioteca
  3. Preguntar si tienen el libro que necesitamos
  4. Si lo tienen adquirirlo y Parar allí (dentro de este Algoritmo). Si no lo tienen alli recurrir en este caso de nuevo al paso 2 (pero a otra biblioteca)
  Fin 
 El anterior ejemplo es considerado como un Algoritmo informal ya que este no es realizable por medio de una computadora y su ejecutor en ese caso debe ser el Ser Humano, otros ejemplos a considerar dentro de este tipo son por ejemplo "El dar un beso" o "Cocinar"

La otra clase de algoritmos son llamados Algoritmos computacionales y como su nombre lo dice son aquellos que si pueden ser ejecutados por una computadora.

Un ejemplo de este puede ser el : Hallar_numeros_primos

      Para desarrolar este algoritmo se tienen unos pasos que son 
      1.Tomar un papel y un lapiz 
      2.Buscar los numeros que solo sean divisibles por 1 y por si mismos.

Este tambien se puede llevar a cabo en una computadora ingresando un algoritmo confiable con el cual lleguemos a una respuesta y por ambos metodos la respuesta debe ser igual .

Una forma de representar graficamente la logica de programacion es mediante un Diagrama de Flujo ya que con estos podemos decir lo mismo que un algoritmo pero de una manera mas grafica y un poco mejor de entender. Sus simbolos son :

Bibliografia
Fuente:http://www.ecured.cu/index.php/L%C3%B3gica_de_Programaci%C3%B3n

Imagen1:http://es.123rf.com/photo_7546847_fondo-electronica-con-componentes-electricos-y-esquema.html

Imagen2: http://informaticaenelcolegio.files.wordpress.com/2012/02/simbolos.png