viernes, 22 de junio de 2007

ALGORITMIA






Un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. La palabra "algoritmo" deriva del nombre latinizado del gran matemático árabe Mohamed Ibn Moussa Al Kow Rizmi, el cual escribió sobre entre los años 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema de

numeración hindú y el concepto del cero. Fue Fibonacci, el que tradujo su obra al latín y la inició con las palabras: Algoritmi dicit.

Diferencia entre el lenguaje algorítmico y el informático.

El lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le denomina algoritmo.

El lenguaje informático es aquel por medio del cual dicho algoritmo se codifica a un sistema comprensible por el ordenador o computadora. Este tipo de lenguaje es más cercano a la máquina que al ser humano y podemos distinguir distintos tipos dependiendo de la proximidad a la maquina. Se denomina lenguaje de alto nivel aquel que es más cercano a la comprensión humana y lenguaje de bajo nivel a aquellos que son más comprensibles por la máquina. En concreto, nosotros vamos a estudiar un lenguaje en la frontera de uno de bajo nivel. Es por ello que el 'C' es tan potente y rápido, pues las funciones principales representan las funciones más básicas del ordenador.

viernes, 15 de junio de 2007

III Con la metodología utilizada durante el desarrollo del curso:

II. Sobre estructuras básicas de un programa e introducción a la programación

INTRODUCCIÓN A LA PROGRAMACION

1. ELABORE UN ESQUEMA QUE IDENTIFIQUE LA ESTRUCTURA DE UN PROGRAMA.








2. EN QUE CASOS DE SU VIDA HA UTILIZADO ALGORITMOS MENTALMENTE PARA DESARROLLAR ALGUNA ACTIVIDAD, ESCRIBA EL ALGORITMO.

En la vida cotidiana se desarrollan algoritmos en todo momento y sin darnos cuenta cualquier tipo de acción que lleve una secuencia ordenada de pasos se puede llamar como algoritmo estos algoritmos pueden ser usados para resolver problemas matemáticos, computacionales y de la vida diaria. Ahora pensemos cuantas veces al día no hacemos un cálculo para saber cuanto hay que pagar por cualquier servicio, nuestro cambio a recibir todos estos son algoritmos ahora algo mas básicos todas las labores a ejecutar en nuestro día a día tiene una serie de pasos como tomar una ducha, lavarse los dientes ir a la U, etc.

Al lavarnos los dientes el algoritmo seria:
1. Tomar la crema dental
2. Destapar la crema dental
3. Tomar el cepillo de dientes
4. Aplicar crema dental al cepillo
5. Tapar la crema dental
6. Abrir la llave del lavamanos
7. Remojar el cepillo con la crema dental
8. Cerrar la llave del lavamanos
9. Frotar los dientes con el cepillo
10. Abrir la llave del lavamanos
11. Enjuagarse la boca
12. Enjuagar el cepillo
13. Cerrar la llave del lavamanos
14. Secarse la cara y las manos con una toalla

3. ¿COMO PUEDO APROVECHAR LA UTILIZACIÓN DE UN ALGORITMO, PARA ESCRIBIR LA SOLUCIÓN FINAL ESCRITA EN UN CÓDIGO PARA EL COMPILADOR?

Generalmente hay varias etapas para llegar desde el código fuente hasta el programa ejecutable. Después del diseño previo del algoritmo en orden de pasos tenemos:

1. Generación del algoritmo. Planteo del problema, desglose en subproblemas y solución de estos en términos abstractos (pseudocódigo o diagramas de flujo).
2. Generación del código fuente (pueden ser más de uno para la generación de un único ejecutable). El programa fuente (o código fuente) es una secuencia de sentencias escritas en la sintaxis del lenguaje que se ingresan utilizando un editor de textos.
3. Compilación a objeto. Este paso se lleva a cabo a través del uso de un compilador. Este se encarga de traducir el programa fuente en códigos que el computador pueda entender directamente (código de máquina, también llamado código objeto). En esta traducción se transforman problema inicial en una solución final.

4. ESCRIBA EJEMPLOS DE ACTIVIDADES DE LA VIDA COTIDIANA EN LAS CUALES TENGA QUE TOMAR DECISIONES.

A toda hora y momento en nuestra vida cotidiana nos vemos enfrentados a tomar decisiones que conllevan a diferentes consecuencias, dos o mas positivas o negativas. Como por ejemplo:

• Todos los días al despertarse pensar que hago si desayuno primero o me ducho, si voy a la U o si no, cuando se cruzan diferentes actividades universitarias con deportivas decidir cual se realiza.

• En algunos casos no podemos decidir los sucesos deciden por nosotros si hay clase luego tengo que ir al universidad si no me quedo en la casa dependiendo de la persona o personalidad de cada estas decisiones van cambiar. Al momento de elegir que vamos a comer es un dilema que depende de muchos factores y siempre es necesaria la toma de decisiones.


5. EXPRESE EJEMPLOS UTILIZANDO LAS ESTRUCTURAS CONDICIONALES Y REPETICIONALES PARA UN CASO DE SU DISCIPLINA
Estructuras repetitivas
Las estructuras repetitivas o bucles permiten repetir una o varias acciones un número determinado de veces. Cada una de las repeticiones se conoce como iteración.
• Bucle for
Indicamos explícitamente el número de iteraciones.
• Bucle while
No se indica explícitamente el número de iteraciones. El final de bucle está controlado con una condición (expresión lógica o booleana).
Estructuras selectivas
La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una determinada condición.
Estas estructuras se identifican porque en la fase de solución del problema existe algún punto en el cual es necesario establecer una pregunta, para decidir si ciertas acciones deben realizarse o no.
Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if - then - else o en español si - entonces - sino) y en flujograma con una figura geométrica en forma de rombo.

I. Sobre conceptos básicos:

CONCEPTOS BASICOS

1. DATOS Y TIPOS DE DATOS: Un dato es la expresión general que describe los objetos con los cuales opera una computadora .Existen dos tipos de datos simples (predefinidos por los lenguajes) y compuestos (definidos por el usuario).

PREDEFINIDOS POR LOS LENGUAJES:
• ENTEROS
• DECIMALES
• DE CADENA
• BOLÉANOS
DEFINIDOS POR EL USUARIO
• SUBRANGO
• ENUMERADOS

PREDEFINIDOS POR LOS LENGUAJES
TIPOS DE DATOS ENTEROS
Los tipos enteros largos son más precisos, pero los enteros cortos son más simples, rápidos y ocupan menos memoria. El valor extremo del rango de cada uno de los enteros está dado por el espacio que ocupa dicho entero en memoria, veamos. Un byte de memoria esta formado por 8 bits. Cada uno de estos bit pueden ser un bit 0 o un bit1

TIPOS DE DATOS REALES
Los números reales son aquellos datos que tienen parte decimal. Un real se caracteriza porque siempre tiene dígitos antes y después del punto. Cada uno de los lenguajes de programación tiene un grupo para este tipo de datos. Al igual que los enteros, los reales se diferencian unos de otros por el rango que cada uno de ellos maneja.

TIPOS DE DATOS CHAR
Se define como Char a cualquier carácter o símbolo que conforman la tabla denominada ASCII. Una variable que se defina como tipo Char puede almacenar un solo carácter especificado entre apóstrofes. {'A'}.
Cada carácter se almacena en memoria RAM como un byte o dicho de otra manera cada carácter se almacena en una posición de memoria. Por ser un solo byte, el número de caracteres diferentes que se pueden almacenar es de 256.



TIPOS DE DATOS STRING
Los tipos de datos cadena {String} son secuencia de caracteres que puede llegar a tener una longitud máxima de 255. Cada carácter de esta cadena ocupa un byte en memoria, y la cadena ocupa tantos Bytes como caracteres le hayan asignado.
Las cadenas se pueden definir del tamaño que se necesite. El comportamiento de los String es similar al de los arreglos.
Nombre:= 'Pedro Pérez'

TIPOS DE DATOS BOOLEAN
Algunos lenguajes de programación poseen este tipo de dato. El tipo boolean sólo tiene dos valores posibles: False (00) ó True(01). Una variable que se declare de tipo boolean tendrá asignado siempre uno de los dos valores, o verdadero o falso, y ocupa un solo byte de memoria RAM.

TIPOS DEFINIDOS POR EL USUARIO:
DATOS DE TIPO SUBRANGO:
La estructura más sencilla de definir es un subconjunto de datos tipo ordinal, esta estructura recibe el nombre de subrango. Si se escogen dos valores válidos, estos dos valores más todos los que queden entre los dos, forman el subrango de datos.
Los datos que queden entre los datos definidos como inicio y final, corresponden a los datos que están entre esos dos valores en la tabla ASCII. Por ejemplo los siguientes son datos tipo subrango.

Type
Mayúsculas = 'A' .. 'Z';
Minúsculas = ‘a’.. 'z';
NumLiteral = '0' .. '9'
NumDigito = 0 .. 9

DATOS DE TIPO ENUMERADO
Un tipo enumerado se puede considerar como un tipo ordinal definido por el programador. Consiste en una lista de datos cuyos nombres no se pueden repetir.
En el caso anterior es fácil declarar rangos porque ya están predefinidos en un código llamado ASCII, pero cuando se trate de otro tipo de datos, se hace necesaria su enumeración. Ej.: resulta difícil declarar una variable para que tome como valores las frutas que están entre Mora .. Tomate; realmente no se podría.
Para éste caso se hace necesario enumerar todos los valores que puede tomar esa variable.

Type
Fruta = (anon, mango, melón, mora, fresa, limón, naranja);
Color= (rojo, naranja, amarillo, verde, violeta, azul, negro);

La lista que forma un tipo enumerado se da siempre entre paréntesis

2. PALABRA CLAVE O RESERVADA :

Una palabra clave es un identificador usado como parte de la sintaxis de una sentencia, por ejemplo, “IF” es el comienzo de una sentencia condicional en FORTRAN o “DO” es el comienzo de una iteración en FORTRAN. Una palabra clave es una palabra reservada si no puede ser usada como un identificador elegido por el programa. Los análisis sintácticos durante la traducción son más fáciles usando palabras reservadas.
La dificultad más importante con palabras reservadas, sin embargo, viene cuando el lenguaje necesita ser extendido para incluir nuevas sentencias usando palabras reservadas. La adición de una palabra reservada nueva al lenguaje, significa que cada viejo programa que use este identificador como el nombre de una variable, no es sintácticamente correcto, hasta que no haya sido modificado.

3. DIFERENCIA ENTRE VARIABLE E IDENTIFICADOR:

Una VARIABLES es un objetó de partida de datos cuyo valor puede cambiar durante el desarrollo o ejecución del programa.
Dependiendo del lenguaje hay varios tipos de variables tales enteras, reales, carácter lógicas y de cadena.
Una variable se identifica por los siguientes atributos: nombre que lo asigna y tipo que describe el uso de la variable.
Los nombres de las variables, a conocidos como IDENTIFICADORES, suelen constar de varios caracteres alfanuméricos de los cuales el primero normalmente es una letra.



4. ¿SE PUEDE UTILIZAR UNA PLABRA CLAVE COMO IDENTIFICADOR?

Existen algunos programas que o permiten como el FORTRAN, pero no se debe utilizar como nombre de identificadores palabras reservadas del lenguaje de programación. Los nombres de las variables elegidas para el algoritmo o el programa deben ser significativos y tener relación con el objeto que representan, como pueden ser:

NOMBRE; para representar nombres de personas.
PRECIOS; para representar los precios de diferentes artículos.
NOTAS; para representar las notas de una clase.

5. ¿CON QUE CRITERIO SE ASIGNA UNA VARIABLE A UN TIPO DE DATO?

Una variable se identifica por los siguientes atributos: nombre que lo asigna y tipo que describe el uso de la variable. Hemos visto anteriormente que dependiendo del tipo de datos que estemos utilizando, la ocupación en memoria y la forma de codificar la información es diferente. Por eso, si en un punto del programa nos encontramos con una sentencia del tipo: (2 * temperatura) no podríamos saber ni como está codificada la información que almacena la variable temperatura, ni cuánto ocupa dicha variable en memoria. Y no podremos saberlo porque tanto una cosa como otra dependen del tipo de datos, y con la información de la sentencia no podemos determinar a qué tipo de datos pertenece la variable temperatura.
Por eso en C, para poder utilizar una variable es necesario haberla declarado previamente.
Declarar una variable es sencillamente dar cuenta de su existencia explícitamente en algún lugar del programa dedicado a tal efecto, especificando el tipo de datos al que pertenece.
Una declaración consta de un tipo de datos seguido de uno o mas nombres de variables separados por comas, y finalizando con un punto y coma.

6. ¿POR QUE DEBE CLASIFICAR LAS VARIABLES POR TIPO DE DATO?

Una variable que es de un cierto tipo puede tomar únicamente valores de este tipo. Una variable de carácter, por ejemplo, puede tomar como valor solo caracteres, mientras que una variable entera puede tomar solo valores enteros. Si se intenta asignar un valor de un tipo a una variable de un tipo a un variable de otro tipo se producirá un error de tipo.

Es importante destacar que la declaración de una variable tiene un doble efecto:
1. Por una parte, permite que en el resto del programa, cuando nos refiramos a ella por su identificador, podamos saber que tipo de dato almacena dicha variable.
2. Por otro lado, permite reservar una zona de memoria exclusiva para dicha variable.

7. ¿ES LO MISMO UNA DECLARACIÓN Y UNA EXPRESIÓN?

Una expresión es una combinación de operandos y operadores. Los operandos pueden ser:
• Constantes literales o con nombre
• Variables
• Otras expresiones
Lo que se hace con una expresión es evaluarla para que devuelva un valor. Mientras que las declaraciones no son mas que una sentencia simple que asocia un nombre con (una vista de) una entidad del programa. La declaración define: (1) el nombre de la entidad que, generalmente, es un identificador, (2) una vista de la entidad que fija el modo en que ésta se puede usar y (3) posiblemente la propia entidad, aunque se pueden hacer declaraciones que definan vistas de entidades definidas en otra parte del programa.

8. ¿UNA SENTENCIA ES UNA ORDEN QUE EJECUTARÁ LA COMPUTADORA?

Las sentencias llamadas estructuras por algunos autores. Son aquellas que le permiten a un usuario ejecutar tareas que a la final le permiten dar solución a problemas que se quieran resolver usando microcomputadoras. Por lo tanto son órdenes que ejecutaran las computadoras
En general se puede decir que las estructuras de programación son herramientas que el lenguaje le provee al usuario para solucionar problemas haciendo uso de computadoras.
Las estructuras de programación que tienen la mayoría de los lenguajes son cuatro así:
• Estructuras de Asignación
• Estructuras de Decisión
• Estructuras Cíclicas
• Estructuras de Selección múltiple.

Las sentencias de control, denominadas también estructuras de control, permiten tomar decisiones y realizar un proceso repetidas veces. Son los denominados bifurcaciones y bucles. Este tipo de estructuras son comunes en cuanto a concepto en la mayoría de los lenguajes de programación, aunque su sintaxis puede variar de un lenguaje de programación a otro. Se trata de unas estructuras muy importantes ya que son las encargadas de controlar el flujo de un programa según los requerimientos del mismo. Visual Basic 6.0 dispone de las siguientes estructuras de control:

If ... Then ... Else
Select Case
For ... Next
Do... Loop
While… Wend
For Each… Next

9. ¿CUANDO DEBE UTILIZAR UNA CONSTANTE SIMBÓLICA?

Supongamos que tenemos que hacer un programa en el que haya que escribir unas cuantas veces 3.1415927. Es muy fácil que nos confundamos alguna vez al escribirlo. Así, al compilar el programa no recibiremos ningún mensaje de error aunque los resultados no serán correctos. Para evitar esto usamos las constantes simbólicas o constantes con nombre. Al definir una constante simbólica asignamos un nombre a la secuencia 3.1415927, y parece razonable utilizar el nombre PI.

10. ¿COMO PUEDEN SER APLICADOS LOS OPERADORES RELACIONALES DENTRO DE UN PROGRAMA?

Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es verdadera, en caso contrario es falsa. Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera, se representa por el valor true del tipo básico boolean, en cambio, 8<4 (ocho menor que cuatro) es falsa, false. En la primera columna de la tabla, se dan los símbolos de los operadores relacionales, el la segunda, el nombre de dichos operadores, y a continuación su significado mediante un ejemplo.



Se debe tener especial cuidado en no confundir el operador asignación con el operador relacional igual a. Las asignaciones se realizan con el símbolo =, las comparaciones con ==.