miércoles, 6 de noviembre de 2013

ALGORITMO

1)¿que es un algoritmo?
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 cálculo o 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.7
A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos. Esto fue realizado por Alonzo Church en 1936 con el concepto de "calculabilidad efectiva" basada en su cálculo lambda y por Alan Turing basándose en la máquina de Turing. Los dos enfoques son equivalentes, en el sentido en que se pueden resolver exactamente los mismos problemas con ambos enfoques. .8 9 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 vasta cantidad de estructuras de datos.3 1 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:7
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.10 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):10
Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial

2)¿convertir una expresión matemática en una expresión algorítmica?
2x+y= 2*x+y
X
____ = X/Y+M
Y

X
__________ = X/(Z+Y)

Y+Z
ÖX→ RAIZ2(X)

4 mod2 = 0

4 div 2

3)¿que es un sistema?

Un sistema (del latín systēma, proveniente del griego σύστημα) es un objeto complejo cuyos componentes se relacionan con al menos algún otro componente; puede ser material o conceptual.1Todos los sistemas tienen composición, estructura y entorno, pero sólo los sistemas materiales tienen mecanismo, y sólo algunos sistemas materiales tienen figura (forma). Según elsistemismo, todos los objetos son sistemas o componentes de otro sistema.2 Por ejemplo, un núcleo atómico es un sistema material físico compuesto de protones y neutrones relacionados por la interacción nuclear fuerte; una molécula es un sistema material químico compuesto de átomos relacionados por enlaces químicos; una célula es un sistema material biológico compuesto deorgánulos relacionados por enlaces químicos no-covalentes y rutas metabólicas; una corteza cerebral es un sistema material biológico compuesto de neuronas relacionadas por potenciales de acción y neurotransmisores; un ejército es un sistema material social y parcialmente artificial compuesto de personas y artefactos relacionados por el mando, el abastecimiento, la comunicacióny la guerra; el anillo de los números enteros es un sistema conceptual algebraico compuesto de números positivosnegativos y el cero relacionados por la suma y la multiplicación; y una teoría científica es un sistema conceptual lógico compuesto de hipótesisdefiniciones y teoremas relacionados por la correferencia y la deducción (implicación).

4)¿que es un sistema de información?
Un sistema de información (SI) es un conjunto de elementos orientados al tratamiento y administración de datos einformación, organizados y listos para su uso posterior, generados para cubrir una necesidad u objetivo. Dichos elementos formarán parte de alguna de las siguientes categorías:
Todos estos elementos interactúan para procesar los datos (incluidos los procesos manuales y automáticos) y dan lugar ainformación más elaborada, que se distribuye de la manera más adecuada posible en una determinada organización, en función de sus objetivos.
Habitualmente el término se usa de manera errónea como sinónimo de sistema de información informático, en parte porque en la mayoría de los casos los recursos materiales de un sistema de información están constituidos casi en su totalidad por sistemas informáticos. Estrictamente hablando, un sistema de información no tiene por qué disponer de dichos recursos (aunque en la práctica esto no suela ocurrir). Se podría decir entonces que los sistemas de información informáticos son una subclase o un subconjunto de los sistemas de información en general.
5)¿cuales son los elementos de un sistema?


6)¿que es una variable?

En programación, una variable está formada por un espacio en el sistema de almacenaje (memoria principal de un ordenador) y un nombre simbólico (un identificador) que está asociado a dicho espacio. Ese espacio contiene una cantidad o información conocida o desconocida, es decir un valor. El nombre de la variable es la forma usual de referirse al valor almacenado: esta separación entre nombre y contenido permite que el nombre sea usado independientemente de la información exacta que representa. El identificador, en el codigo fuente de la computadora puede estarligado a un valor durante el tiempo de ejecución y el valor de la variable puede por lo tanto cambiar durante el curso de la ejecución del programa. El concepto de variables en computación puede no corresponder directamente al concepto de variables en matemática. El valor de una variable en computación no es necesariamente parte de una ecuación o fórmula como en matemáticas. En computación una variable puede ser utilizada en un proceso repetitivo: puede asignársele un valor en un sitio, ser luego utilizada en otro, más adelante reasignársele un nuevo valor para más tarde utilizarla de la misma manera.Procedimientos de este tipo son conocidos con el nombre de iteración. En programación de computadoras, a las variables, frecuentemente se le asignan nombres largos para hacerlos relativamente descriptivas para su uso, mientras que las variables en matemáticas a menudo tienen nombres escuetos, formados por uno o dos caracteres para hacer breve en su transcripción y manipulación.

7)¿que es una  constante?
En programación, una constante es un valor que no puede ser alterado durante la ejecución de un programa.
Una constante corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos.
Por ejemplo:
  • El valor de pi = 3.1416
Por conveniencia, el nombre de las constantes suele escribirse en mayúsculas en la mayoría de lenguajes.

8)¿tipos de datos?
Tipo de dato informático es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar. Esto incluye imponer restricciones en los datos, como qué valores pueden tomar y qué operaciones se pueden realizar. Tipos de datos comunes son: enteros, números de coma flotante (decimales), cadenas alfanuméricas, fechas, horas, colores, etc.
Por ejemplo, por lo general el tipo "int" representa un conjunto de enteros de 32 bits cuyo rango va desde el -2.147.483.648 al 2.147.483.647, así como las operaciones que se pueden realizar con los enteros, como son la suma, la resta, y la multiplicación. Los colores, por su parte, se representan como tres bytes denotando la cantidad de rojo, verde y azul, y una cadena de caracteres representando el nombre del color; las operaciones permitidas en este caso incluyen la adición y la sustracción, pero no la multiplicación.
Éste es un concepto propio de la informática, más específicamente de los lenguajes de programación, aunque también se encuentra relacionado con nociones similares de la matemática y lalógica.
9)condicional simple dobe y multiple
Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen tres tipos básicos, las simples, las dobles y las múltiples. 

Simples: 

Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma: 
Pseudocódigo:Diagrama de flujo:
Dobles: 

Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma: 
Pseudocódigo:Diagrama de flujo:
Donde: 
Si:Indica el comando de comparación 
Condición : Indica la condición a evaluar 
Entonces : Precede a las acciones a realizar cuando se cumple la condición 
Instrucción(es):Son las acciones a realizar cuando se cumple o no la condición 
si no :Precede a las acciones a realizar cuando no se cumple la condición 
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o más acciones. 

Múltiples: 

Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente: 
Pseudocódigo:Diagrama de flujo:
Múltiples (En caso de): 

Las estructuras de comparación múltiples, es una toma de decisión especializada que permiten evaluar una variable con distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma es la siguiente: 
Pseudocódigo:Diagrama de flujo:
Veamos algunos ejemplos donde se aplique todo lo anterior: 

Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe aparecer un mensaje indicándolo. Expresarlo en Pseudocódigo y Diagrama de flujos. 
Pseudocódigo:Diagrama de flujo:
Se pide leer tres notas del alumno, calcular su definitiva en un rango de 0-5 y enviar un mensaje donde diga si el alumno aprobó o reprobó el curso. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos. 

Pseudocódigo: 

INICIO 
   Not1, Not2, Not 3 :REAL 
   Def: REAL 
   LEA Nota1, Nota2, Nota3 
   Def ß (Not1 + Not2 + Not3) /3 
   Si Def < 3 entonces 
      Escriba “Reprobó el curso” 
   Sino 
      Escriba “Aprobó el curso” 
   Fin-Si 
FIN 

Diagrama de flujo: 


Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o igual a 150 cm envíe el mensaje: “Persona de altura baja”; si la altura está entre 151 y 170 escriba el mensaje: “Persona de altura media” y si la altura es mayor al 171 escriba el mensaje: “Persona alta”. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos. 

Pseudocódigo: 

INICIO 
   Altura: ENTERO 
   ESCRIBA “Cuál es tu altura? ” 
   LEA Altura 
   Si Altura <=150 entonces 
      ESCRIBA “persona de altura baja” 
   Sino 
      Si Altura <=170 entonces 
         ESCRIBA “persona de altura media” 
      Sino 
         Si Altura>170 ENTONCES 
            ESCRIBA “persona alta” 
         Fin-Si 
      Fin-Si 
   Fin-Si 
FIN 

¡Es importante ser ordenado en el código que se escribe! 

Diagrama de flujo: 


Dado un numero entre 1 y 7 escriba su correspondiente día de la semana así: 
1- Lunes 2- Martes 3- Miércoles 4- Jueves 5- Viernes 6- Sábado 7- Domingo 
Exprese el algoritmo usando Pseudocódigo y diagrama de flujos. 

Pseudocódigo: Pseudocódigo: 

INICIO 
   Dia: ENTERO 
   ESCRIBA “Diga un número para escribir su día” 
   LEA Dia 
   En-caso-de Dia haga 
      Caso 1: ESCRIBA “Lunes” 
      Caso 2: ESCRIBA “Martes” 
      Caso 3: ESCRIBA “Miércoles” 
      Caso 4: ESCRIBA “Jueves” 
      Caso 5: ESCRIBA “Viernes” 
      Caso 6: ESCRIBA “Sábado” 
      Caso 7: ESCRIBA “Domingo” 
     SINO: ESCRIBA “Escribió un numero fuera del rango 1-7” 
   Fin-Caso 
FIN 

Diagrama de flujo: 
10)metodologia para resolver algoritmos
El programador diseña un programa, para resolver un problema particular
Diseñar es un proceso creativo.
  • El proceso de diseño de un programa consta de los siguientes pasos o etapas:
Pasos:
Pasos
Etapa
Descripción
1
Análisis del problema
Conducen al diseño detallado por medio un código escrito en forma de un algoritmo
2
Diseño de algoritmo
3
Codificación
Se implementa el algoritmo en un código escrito en un lenguaje de programación. Refleja las ideas desarrolladas en las etapas de análisis y diseño
4
Compilación y ejecución
Traduce el programa fuente a programa en código de maquina y lo ejecuta.
5
Verificación
Busca errores en las etapas anteriores y los elimina.
6
Depuración
7
Documentación
Son comentarios, etiquetas de texto, que facilitan la comprensión del programa

Concepto

Algoritmo: es un método para resolver un problema mediante una serie de pasos definidos, precisos y finitos.
Preciso: implica el orden de realización de cada uno de los pasos
Definido: si se sigue dos veces, se obtiene el mismo resultado.
Finito: Tiene un numero determinado de pasos, implica que tiene un fin,
Tipos :
Método
Descripción
Ejemplos
Algorítmico
Utiliza un algoritmo y puede ser implementado en una computadora
  • Instrucciones para manejar un vehículo
  • Instrucciones para secar grano a granel
  • Instrucciones para resolver ecuación de segundo grado
Heurística:
Se apoya en el resultado obtenido en un análisis de alternativas de experiencias anteriores similares. De las mismas, a se deducen una serie de reglas empíricas o heurísticas que de ser seguidas, conducen a la selección de la mejor alternativa en todas o la mayoría de las veces.





Ejemplos
Los algoritmos se pueden
expresar por:
Formulas
Diagramas de flujo
Norte-Sur,Top-Down






Pseudo código
inicio
leer a,b,c
calcular 
escribir perímetro
fin
  • Quick Basic es un lenguaje de programación estructurado y el algoritmo se representara en seudo código y/o diagrama de flujo.
1. Análisis del problema:
Requiere la clara definición del problema donde se indique que va hacer el programa y cual ve a ser el resultado.
Debe detallarse las especificaciones de entrada y salida,
Los requisitos que definen el análisis son :
 Para ver el gráfico seleccione la opción "Descargar"
 La ecuación de segundo grado se define algebraicamente como :
La solución general viene dada por la expresión algebraica : (Algoritmo)




periférico
1
Análisis del problema


2
Def. del problema
Hallar raíces ecua. 2do grdo

3
Especif. de entrada
coeficientes a, b, c
Teclado
4
Especif. de salida
X1, X2
Pantalla
Impresora








Entrada: por teclado
coef
Descripción
Codificación en QBasic
a
team. cuadrático
INPUT "Coef a =";A
b
term. lineal
INPUT "Coef b =";B
c
term. independiente
INPUT "Coef c =";C





Calculo
Expresión algebraica
Codificación en QBasic

X1=((-B+SQR(B^2-4*A*C))
X2=((-B-SQR(B^2-4*A*C))





Proceso:
Salida: Visualización de :Datos de entrada: A,B,C
Datos procesados: Raices: X1, X2
Variable
Significado
Codificación en QBasic
A,B,C
Coef
PRINT"A=";A; "B=";"C=";C
X1
primera raíz
PRINT"X1=";x1
X2
primera raíz
PRINT"X2=";X2
2.Diseño del algoritmo.
  • Análisis de proceso implica que hace el programa.
  • Diseño implica como se hace o realiza la tarea (problema) solicitado
En el diseño:
  • El todo es la sumatoria de las partes.
  • Divide el todo en varias partes.
En la resolución de un problema complejo, se divide en varios sub problemas y seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que puedan implementarse en el computador.
Esta característica define lo que se entiende como diseño descendente( Top-Down / Norte-Sur ) o diseño modular.
El proceso de ruptura del problema en cada etapa se llama refinamiento sucesivo.
  • Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo punto de entrada y un solo punto de salida.
  • Un programa bien diseñado consta de un programa principal (modulo de nivel mas alto) que llama a subprogramas (módulos de nivel mas bajo), que a su vez pueden llamar otros sub programas.
Los programas que se estructuran de esta forma, se dicen que tienen diseño modular y el método de romper el programa en modos pequeños se llama programación modular.
Los módulos pueden ser planificados, codificados, compilados y depurados independientemente pueden ser intercambiados entre si.
Este proceso implica la ejecución de los siguientes pasos:
1
programar un modulo
2
comprobar un modulo
3
depurar el modulo
4
combinar el modulo con módulos anteriores
este proceso convierte el resultado del análisis del problema en un diseño modular con refinamientos sucesivos que permiten una traducción a un lenguaje que se denomina diseño del algoritmo.
El algoritmo se puede representar por medio de dos formas :
Pseudo código
Diagrama de flujo:
Pseudo código: es el lenguaje de especificación de algoritmos y tiene una estructura: Las instrucciones se escriben en ingles o en palabras similares al ingles o español que facilitan la escritura de programación
Para la resolución de una ecuación de segundo grado se escribiría
inicio
Introducir coeficientes a, b y c
Imprimir títulos primera raíz, segunda raíz, no tiene solución,
Calcular raíz 1 y raíz 2
Imprimir raíz 1 y raíz 2
Fin
Diagramas de flujo (flows charts): Es la representación grafica del algoritmo; según la ANSI consta de una simbologia , que tiene los siguientes significados:
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Símbolos del Diagrama de flujo
Codificación :
Programación:
Windows/Dos/
Quick Basic = Editor de texto.
Programa: definición:
conjunto de datos y sentencias:
Un programa tiene la forma
 Para ver el gráfico seleccione la opción "Descargar"
  En el editor de Quick Basic se escribiría codificado el seudo código
que tendría la forma:
REM Programa para calcular las soluciones
REM de una ecuacion de segundo grado
PRINT "Escriba los valores de A, B y C"
C$="Calculos"
INPUT " A,B,C", A, B, C
R = (B ^ 2 - 4 * A * C) ^ .5
LET X1 = (-B + R) / (2 * A)
LET X2 = (-B + R) / (2 * A)
PRINT
PRINT " A="; A, " B="; B, "C="; C
PRINT "X1="; X1, "X2="; X2
PRINT
END
En el Menú




Ejecutar


En la pantalla veríamos:
Mandatos e instrucciones:
Mandato (command): es una orden aislada de efecto inmediato.
Ejemplo:
Mandato
Descripción
RUN
Ordena la ejecución de un programa.
LIST
Escribe En la pantalla el listado del programa
SAVE.
Guarda, graba el programa como un archivo de extensión BAS en el disco




Instrucción: es una orden contenida en un programa.
Ejemplo:
Instrucción
Descripción
PRINT
Escribe en pantalla.
INPUT
Introduce (entra datos)
Edición de un programa: un programa esta formado por líneas secuenciales que se ejecutan en forma descendente (Up Down)
Para dar por terminada una línea se pulsa la tecla Enter (Return) en cualquier parte de la misma. Para cambiar una línea basta volver a teclearla.
  • Se puede corregir una línea (borrar, rescribir ) en pantalla o bien con el mandato EDIT.
  • Se pueden incluir varias instrucciones en una misma línea, separándolos por dos puntos.
  • Una línea de pantalla (cuarenta u ochenta posiciones) es diferente de una línea de programa (doscientos cincuenta y seis posiciones).
Modo Directo:
Modo Programa
Run
Ventana activa
Ventana inmediata
mandato
Descripción
CLS
borra la pantalla
Recomendaciones:
  • Todo programa debe estar documentado con comentarios; la primera línea debe contener el titulo del programa. Los comentarios deben de ir precedidos de la palabra clave REM o de un apostrofo ( ‘ )
  • Si una línea ya tiene otras instrucciones, el comentario debe ir al final de la línea.
  • Los comentarios solo aparecen en el listado del programa y no aparecen escritos en la pantalla durante la ejecución.
Constantes:
QBasic, trabaja con dos tipos de datos:
Datos
Tipos
numéricos:
Enteros (INT)
Enteros largos (LNG)
de simple precisión (SGL)
de doble precisión (DBL)
alfanuméricos
hileras o cadenas (STR)
fila de caracteres en ASCII ( en parte del teclado )
  • Las constantes alfanuméricas pueden ser enteras o fraccionarias, se representan en forma decimal; se puede emitir el cero a la izquierda del punto decimal. Ejemplo
3452
-12.67
.23
+12345
Estos son ejemplos de valores numéricos de punto fijo; se puede emplear una notación de punto flotante.
Mantisa
letra
exponente
1,23456E+15

123456.0000000000

1.234567890789456D–10
0.000000000123456789012456
  • El numero máximo de cifras significativas con que se trabaja es:
6 para la precisión simple (SNG)
16 para la precisión doble (DLB)
  • En las constantes de punto fijo hay que añadir el carácter #
  • Las constantes alfanuméricas son hileras de caracteres; se escriben entre comillas, Ej. "Hola " ; " A47EC
  • Una variable es una zona de memoria que almacena un dato
X
R
A
M

DIA $

Peso

-23.5

lunes

80

  • Una variable se identifica mediante un nombre. El nombre de una variable numérica debe empezar por una letra y puede ir sucedido de otras letras y / o otros dígitos (X, A, B1, peso, T341)

  • Una variable alfanumérica debe terminar con el carácter $ (x$, a23$, dias$,)
  • Están terminantemente prohibidas los nombres de variables que contengan palabras claves de Basic (PRUNLIST, NIF$,)
  • Las variables de precisión doble y enteros se identifican añadiendo el carácter # o el carácter % , también se pueden declarar como
DEFDBL A
Los comentarios que se incluyan deben ser significativos
Documentación interna:
  • Va incluida dentro del código del programa fuente, por medio de comentarios que ayudan a la comprensión del código.
  • Todas las sentencias comienzan con la sentencia REM o su equivalente el carácter apostrofe ( ).
El programa en si no los necesita y los ignora. Hace que los programas sean comprensibles.