lunes, 6 de septiembre de 2010

Algoritmos

ALGORITMOS


En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa Al Juarismi) es un conjunto preescrito de ies un conjunto preescrito de nstrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.



En la vida cotidiana se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemáticas son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.


Características principales y definición formal.


En general, no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida).Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo.






A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos como máquinas de Turing entre otros.Sin embargo estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una basta cantidad de estructuras de datos. En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:






Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).


Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.


Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.


En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría, por ejemplo el método de Newton y la eliminación de Gauss-Jordan funcionan, al menos en principio, con números de precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no por ello dejan de ser algoritmos. En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalentemente, en un lenguaje de programación suficientemente general):






Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial.

Pseudocódigo, diagramas estructurados y estructuras algorítmicas

Pseudocódigo







Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos.






En esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos.


Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El Pseudocódigo utiliza palabras que indican el proceso a realizar.






Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo










•Ocupa menos espacio en una hoja de papel


•Permite representar en forma fácil operaciones repetitivas complejas


•Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de programación.


•Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.


Diagramas estructurados (Nassi-Schneiderman)






El diagrama estructurado N-S también conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en la siguiente forma:



Estructuras Algorítmicas






Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

secuenciales,condicionales,ciclicas

Tecnicas para la formulación de algoritmos. Diagrama de flujo

Diagrama de Flujo







Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados.






Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI):






Símbolo Descripción


Indica el inicio y el final de nuestro diagrama de flujo.


Indica la entrada y salida de datos.


Símbolo de proceso y nos indica la asignación de un valor en la memoria y/o la ejecución de una operación aritmética.


Indica la salida de información por impresora.


Conector dentro de página. Representa la continuidad del diagrama dentro de la misma página.


Conector fuera de pagina. Representa la continuidad del diagrama en otra pagina.


Indica la salida de información en la pantalla o monitor.


Símbolo de decisión. Indica la realización de una comparación de valores.


Símbolo de Selección Múltiple. Dada una expresión permite escoger una opción de muchas.


Símbolo del Mientras. Dada una expresión al principio de la iteración esta es evaluada; si la condición es verdadera realizará el ciclo, si es falsa la repetición cesará.


Símbolo del Para. Esta estructura de control repetitiva se usa generalmente cuando se conoce de antemano el numero de iteraciones.


Símbolo Repita Hasta. funciona igual que la estructura Mientras, con la diferencia que al menos una vez hará el grupo de instrucciones y luego evaluará una condición. Si la condición evaluada es falsa continua dentro del ciclo y si es verdadera termina la iteración.


Líneas de flujo o dirección. Indican la secuencia en que se realizan las operaciones.






Recomendaciones para el diseño de Diagramas de Flujo










•Se deben usar solamente líneas de flujo horizontales y/o verticales.


•Se debe evitar el cruce de líneas utilizando los conectores.


•Se deben usar conectores sólo cuando sea necesario.


•No deben quedar líneas de flujo sin conectar.


•Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha.


•Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras.

Tecnicas de diseño

Top Down







También conocida como de arriba-abajo y consiste en establecer una serie de niveles de mayor a menor complejidad (arriba-abajo) que den solución al problema. Consiste en efectuar una relación entre las etapas de la estructuración de forma que una etapa jerárquica y su inmediato inferior se relacionen mediante entradas y salidas de información. Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del programa.






La utilización de la técnica de diseño Top-Down tiene los siguientes objetivos básicos:










•Simplificación del problema y de los subprogramas de cada descomposición.


•Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes personas.


•El programa final queda estructurado en forma de bloque o módulos lo que hace mas sencilla su lectura y mantenimiento.






Bottom Up






El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computarizarse con forme vayan apareciendo, su análisis como sistema y su codificación, o bien, la adquisición de paquetes de software para satisfacer el problema inmediato.






Cuando la programación se realiza internamente y haciendo un enfoque ascendente, es difícil llegar a integrar los subsistemas al grado tal de que el desempeño global, sea fluido. Los problemas de integración entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programación alcanza la fecha limite para la integración total del sistema. En esta fecha, ya se cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema como una entidad global, adolece de ciertas limitaciones por haber tomado un enfoque ascendente.


Uno de ellos es la duplicación de esfuerzos para acceder el software y mas aún al introducir los datos.


Otro es, que se introducen al sistema muchos datos carentes de valor.


Un tercero y tal vez el mas serio inconveniente delenfoque ascendente, es que los objetivos globales de la organización no fueron considerados y en consecuencia no se satisfacen.






Entonces…






La diferencia entre estas dos técnicas de programación se fundamenta en el resultado que presentan frente a un problema dado.


Imagine una empresa, la cual se compone de varios departamentos (contabilidad, mercadeo, …), en cada uno de ellos se fueron presentando problemas a los cuales se le dieron una solución basados en un enfoque ascendente (Bottom Up): creando programas que satisfacían sólo el problema que se presentaba.


Cuando la empresa decidió integrar un sistema global para suplir todas las necesidades de todos los departamentos se dio cuenta que cada una de las soluciones presentadas no era compatible la una con la otra, no representaba una globalidad, característica principal de los sistemas.


Como no hubo un previo análisis, diseño de una solución a nivel global en todos sus departamentos, centralización de información, que son características propias de un diseño Descendente (Top Down) y características fundamentales de los sistemas; la empresa no pudo satisfacer su necesidad a nivel global.


La creación de algoritmos es basado sobre la técnica descendente, la cual brinda el diseño ideal para la solución de un problema.

Operadores y Operandos

Operadores







Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores.










Operadores Aritméticos






Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes).






Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.


















Operadores Aritméticos


+ Suma


- Resta


* Multiplicación


/ División


mod Modulo (residuo de la división entera)






Ejemplos: Expresión Resultado


7 / 2 3.5


12 mod 7 5


4 + 2 * 5 14






Prioridad de los Operadores Aritméticos






Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se evalúa primero.


Dentro de una misma expresión los operadores se evalúan en el siguiente orden:


1.^ Exponenciación


2.*, /, mod Multiplicación, división, modulo.


3.+, - Suma y resta.


Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha.






Ejemplos:


4 + 2 * 5 = 14 23 * 2 / 5 = 9.2


3 + 5 * (10 - (2 + 4)) = 23 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98






Operadores Relacionales






Se utilizan para establecer una relación entre dos valores. Luego compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso).


Los operadores relacionales comparan valores del mismo tipo (numéricos o cadenas). Estos tienen el mismo nivel de prioridad en su evaluación.


Los operadores relaciónales tiene menor prioridad que los aritméticos.






Tipos de operadores Relacionales


•> Mayor que


•< Menor que


•> = Mayor o igual que


•< = Menor o igual que


•< > Diferente


•= Igual


Ejemplos:


Si a = 10, b = 20, c = 30


a + b > c Falso


a - b < c Verdadero


a - b = c Falso


a * b < > c Verdadero






Ejemplos no lógicos:


a < b < c


10 < 20 < 30


T > 5 < 30


(no es lógico porque tiene diferentes operandos)






Operadores Lógicos






Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valores pueden ser resultado de una expresión relacional.






Tipos de operadores Lógicos


And Y


Or O


Not Negación






Ejemplo:


Para los siguientes ejemplos T significa verdadero y F falso.


















Operador Not Operador Not


Operando Resultado


T F


F T






Operador And Operador And


Operando1 Operador Operando2 Resultado


T AND T T


T F F


F T F


F F F






Operador Or Operador Or


Operando1 Operador Operando2 Resultado


T Or T T


T F T


F T T


F F F






Prioridad de los Operadores Lógicos






1.Not


2.And


3.Or


Prioridad de los Operadores en General






1.( )


2.^


3.*, /, Mod, Not


4.+, -, And


5.>, <, > =, < =, < >, =, Or


Ejemplos:


Sea: a = 10 b = 12 c = 13 d =10



Constantes, variables y expresiones

Constantes







Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.


Ejemplo:


pi = 3.1416






Variable






Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar durante la ejecución del programa.


Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo.


Ejemplo:


area = pi * radio ^ 2


Las variables son : el radio, el area y la constate es pi






Clasificación de las Variables




Por su contenido


•Variables Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal.


Ejemplo:


iva = 0.15 pi = 3.1416 costo = 2500


•Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos.


•Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales).


Ejemplo:


letra = ’a’ apellido = ’lopez’ direccion = ’Av. Libertad #190’


Por su uso


•Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa.


Ejemplo:


Suma = a + b /c






•Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno.


•Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente.


Expresiones






Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.


Por ejemplo:


a + (b + 3) / c






Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas.






Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las expresiones en:


Aritméticas


•Relacionales


•Lógicas

Entidades primitivas para el desarrollo de algoritmos

Todo estos elementos con los cuales se construyen dichos algoritmos se basan en una disciplina llamada: Programación Estructurada.







Empecemos por conocer las reglas para cambiar fórmulas matemáticas a expresiones válidas para la computadora, además de diferenciar constantes e identificadores y tipos de datos simples.






Tipos De Datos






Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable.


















Tipos de Datos Simples






Datos Numéricos:


Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.






Datos lógicos:


Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).






Datos alfanuméricos (string):


Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.






Identificadores






Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que permite acceder a su contenido.


Ejemplo:


» Nombre










» Num_hrs










» Calif2










Reglas para formar un identificador






•Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco.


•Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer carácter.


•La longitud de identificadores puede ser de varios caracteres. Pero es recomendable una longitud promedio de 8 caracteres.


•El nombre del identificador debe dar una idea del valor que contiene.

Programando

Metodología para la solución de problemas por medio de computadora











•DEFINICIÓN DEL PROBLEMA






Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.










•ANÁLISIS DEL PROBLEMA






Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:


◦Los datos de entrada.


◦Cual es la información que se desea producir (salida)


◦Los métodos y fórmulas que se necesitan para procesar los datos.


Una recomendación muy práctica es el de colocarse en el lugar de la computadora y analizar qué es lo que se necesita que se ordene y en qué secuencia para producir los resultados esperados.










•DISEÑO DEL ALGORITMO






Las características de un buen algoritmo son:


◦Debe tener un punto particular de inicio.


◦Debe ser definido, no debe permitir dobles interpretaciones.


◦Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.


◦Debe ser finito en tamaño y tiempo de ejecución.


◦Diseño del Algoritmo


◦Prueba de escritorio o Depuración


Se denomina prueba de escritorio a la comprobación que se hace de un algoritmo para saber si está bien hecho. Esta prueba consiste en tomar datos específicos como entrada y seguir la secuencia indicada en el algoritmo hasta obtener un resultado, el análisis de estos resultados indicará si el algoritmo está correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes.

Conceptos fundamentales

¿QUÉ ES ALGORITMO?




La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.



Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico.



¿TIPOS DE ALGORITMOS…?



Existen dos tipos y son llamados así por su naturaleza:





•Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.

•Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.



Lenguajes Algorítmicos



Un Lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso.



Tipos de Lenguajes Algorítmicos





•Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo).











•No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo).



INICIO

Edad: Entero

ESCRIBA “cual es tu edad?”

Lea Edad

SI Edad >=18 entonces

ESCRIBA “Eres mayor de Edad”

FINSI

ESCRIBA “fin del algoritmo”

FIN

viernes, 3 de septiembre de 2010

TIPOS DE DATOS EN UN ALGORITMO

 Tipos De Datos





Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable.




Numéricos


Simples Lógicos


Alfanuméricos (string)


Tipos de


datos Arreglos (Vectores, Matrices)


Estructurados Registros


(Def. por el Archivos


usuario) Apuntadores


Tipos de Datos Simples



Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.






 Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).






Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.





Ejemplo:

“Instituto Tecnológico de Tuxtepec”

“1997”




Operadores y Operandos




 Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores.





Aritméticos

Tipos de Operadores Relaciónales

Lógicos

 Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes).

Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.



Operando (Operador) Operando



Valor

(constante o variable)

Operadores Aritméticos

+ Suma

- Resta

* Multiplicación

/ División

Mod Modulo (residuo de la división entera)

Ejemplos:

Expresión Resultado

7 / 2 3.5

12 mod 7 5

4 + 2 * 5 14

Prioridad de los Operadores Aritméticos



 Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis mas interno se evalúa primero.


 Dentro de una misma expresión los operadores se evalúan en el siguiente orden.



1.- ^ Exponenciación

2.- *, /, mod Multiplicación, división, modulo.

3.- +, - Suma y resta.



 Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha.




 Operadores Relaciónales:




 Se utilizan para establecer una relación entre dos valores.


 Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso).


 Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas)


 Tienen el mismo nivel de prioridad en su evaluación.


 Los operadores relaciónales tiene menor prioridad que los aritméticos.




Operadores Relaciónales

> Mayor que

< Menor que

> = Mayor o igual que

< = Menor o igual que

< > Diferente

= IguaL

Ejemplos:

Si a = 10 b = 20 c = 30



a + b > c Falso

a - b < c Verdadero

a - b = c Falso

a * b < > c Verdadero



Ejemplos no lógicos:

a < b < c

10 < 20 < 30

T < 30 (no es lógico porque tiene diferentes operandos)



 Operadores Lógicos:



 Estos operadores se utilizan para establecer relaciones entre valores lógicos.


 Estos valores pueden ser resultado de una expresión relacional.



Operadores Lógicos

And            Y

Or           O

Not        Negación







Operador And

Operando1   Operador  Operando2  Resultado

T                  AND               T                 T

T                                         F                  F

F                                        T                   F

F                                         F                  F





Operador Or

Operando1  Operador  Operando2  Resultado

T                      OR               T               T

T                                           F              T

F                                          T               T

F                                           F               F





Operador Not

Operando  Resultado

T                     F
              
F                     T




Ejemplos:

(a < b) and (b < c)

(10<20) and (20<30)

   T and T
       T

JERARQUIA DE OPERADORES

Operadores


Los operadores nos permiten realizar operaciones aritméticas entre los datos, ya sean constantes o variables.




Aunque el número y tipo de operadores depende del lenguaje de programación que se esté utilizando, los operadores más frecuentes se clasifican de la siguiente forma:




1. Operadores aritméticos.
 Los cuales son:
+,-,*, / y el mod, o módulo de la división.
El operador mod sólo se aplica a operandos tipo entero. El mod se lee como módulo de la división, y el resultado será el residuo de una división entera.


2. Operadores de relación
Los cuales son:



>, >=, <, <=, !=, ==


Se hace una distinción con el operador de igualdad, que no es el mismo de asignación: ==. Así se tiene x == y se traduce como "¿es x igual a y?, en tanto que x=y, equivale a decir "a la variable x se le asigna el mismo valor que tiene y "


3. Operadores lógicos.
Los cuales son:
! (not, negación) && (and, y),

(or, o)


Para resolver expresiones con operadores lógicos, se utilizan las siguientes tablas, conocidas como tablas de verdad:







4. Operadores de Asignación



Por el momento, el único operador de asignación es: =

Las reglas para resolver una expresión aritmética son las siguientes:




1. Los operadores aritméticos se aplican teniendo en cuenta su jerarquía (precedencia) y de izquierda a derecha. La jerarquía se muestra a continuación:







- (Unario), ! (Not, negación)



() Paréntesis



*, /, mod



<, <=, ==, >, >=, !=,+,- (Resta)



&& (AND)





(OR)



=







2. Si una expresión contiene paréntesis, se evalúa primero la subexpresión entre paréntesis, respetando la jerarquía de operadores en esta.

VARIABLES

CARACTERÍSTICAS DE UN ALGORITMO

Los algoritmos deben tener estas características:
Indicar un orden a seguir en cada uno de sus pasos.
 Ser definido (confiable), si se ejecuta dos veces debe lograrse el mismo resultado.
 Ser finito, es decir terminar en un número finito de pasos.

UN ALGORITMO COMO PROCESADOR DE DATOS
Ej.:
Leer la base y altura de un rectángulo y mostrar el área en pantalla.
  Entrada (Lectura de datos) Se conocen los valores de la Base y la Altura
  Proceso (Calculo de Area) Area = Base * Altura
  Salida (Muestra los resultados) Muestra valor del Area
 SALIDA = INFORMACIÓN PROCESADOR ENTRADA = DATOS EJEMPLO
Ej.: Un socio de una biblioteca solicita un libro para lectura, si el libro se encuentra se le presta el libro, si no se devuelve la ficha de pedido. INICIO LEER Ficha de pedido EXAMINAR el Estante SI el libro esta en Estante ENTONCES


Acepta el pedido

Recepción Carnet de socio

SI NO
Niega el pedido

Devuelve Ficha de Pedido

FIN SI



FIN
 
 
 
 
Reglas para dibujar un diagramas de flujo.




Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo, algunos símbolos especiales pueden también ser desarrollados cuando séan requeridos. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestran a continuación:


 

Observación: Para obtener la correcta elaboración de los símbolos, existen plantillas. Las puedes conseguir en Papelerías.
 
Simbolos gráficos




Dentro de los simbolos fundamentales para la creaación de diagramas de flujo, los símbolos gráficos son utilizádos especificamente para para operaciónes aritméticas y relaciónes condicionales. La siguiente es una lista de los símbolos más comunmente utilizados:

+   Sumar


-    Menos

*    Multiplicación

/      División

±    Mas o menos

=   Equivalente a

>   Mayor que

<   Menor que

³  Mayor o igual que

£   Menor o igual que

¹ o <>

Diferente de

Si

No

True

False

 
 
Reglas para la creacion de Diagramas





1.Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.


2.Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo horizontal o verticales (nunca diagonales).


3.Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se vana utilizar conectores cuando sea estrictamente necesario.


4.No deben quedar líneas de flujo sin conectar


5.Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras.


6.Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final.


7.Solo los símbolos de decisión pueden y deben tener mas de una línea de flujo de salida.



Ejemplos de diagramas de flujo




Diagrama de flujo que encuentra la suma de los primeros 50 numeros naturales




MEDIOS DE EXPRESION DE UN ALGORITMO

Medios de expresión de un algoritmo




Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.






La descripción de un algoritmo usualmente se hace en tres niveles:






1.Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.


2.Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.


3.Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.


También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.






DIAGRAMA DE FLUJO






Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número xArtículo principal: Diagrama de flujo


Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.






Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.
















 
PSEUDOCÒDIGO





El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los
diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.






El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo en general es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.






SISTEMAS FORMALES

La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones μ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.



IMPLEMENTACIÒN

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.