lunes, 28 de septiembre de 2009

Solución de problemas con computadoras!!*

Como se ha visto en cursos anteriores, un problema es una situacion ajena que se presenta en un procedimiento y que requiere una solucion diferente a la principal.
--¿Qué es un metodo cientifico?--
El método científico es la herramienta que usan los científicos para encontrar las respuestas a sus interrogantes. Antes de empezar tu proyecto, te conviene repasar los pasos de este método de investigación, que hemos mostrado en forma muy simplificada:
Observar e investigar. La observación de la naturaleza provoca curiosidad, nos hacer preguntarnos cómo ésta funciona y nos motiva a investigar. Pero se observa durante todo el proceso de investigación.
Plantearse una pregunta o problema. En este paso, es conveniente ser muy específico, para que la investigación no sea muy complicada.
Establecer una posible respuesta a la pregunta. Lo que conocemos como hipótesis. Para hacer una buena hipótesis ayuda mucho investigar y leer sobre el tema que nos interesa. Recuerda que la hipótesis debe ser posible probarla experimentalmente.
Realizar la investigación necesaria: experimentar, recopilar datos, buscar información. Primero, se hace un plan de cómo se probará la hipótesis, cuáles materiales y equipos serán necesarios, qué personas asesorarán y en que lugar/tiempo se hará la investigación. Una vez esto esté claro, se procede a experimentar y ha recopilar datos para luego procesarlos y analizarlos.
Llegar a una conclusión, que apoye o refute tu hipótesis. La conclusión obviamente debe ser producto de tus resultados.
El método científico es un proceso dinámico, que envuelve observar todo el tiempo, buscar información continuamente y planificar experimentos para demostrar la hipótesis. Este método guía nuestro pensamiento, dándonos un protocolo a seguir en nuestra investigación. Nos ayuda a mantenernos objetivos durante todo el proceso investigativo.
http://www.superchicos.net/metodocientifico.htm

El proceso de solucion de un problema conduce a la escritura de un programa. Este proceso se puede considerar un proceso creativo, una secuencia de pasos comunes pero que generalmente deben seguir todos los programas.
--Fases de solución de un problema en computadora--
1.- Análisis del problema
2.-Diseño del algoritmo
3.-Codificación
4.-Compilación y ejecución
5.-Verificación
6.-Depuración
7.-Documentación
Las dos primeras fases conducen a un diseño detallado escrito como algoritmo*

*algoritmo: secuencia lógica de pasos a seguir para la solución de un problema.

--Procedimiento para encontrar soluciones de problemas--
Durante la etapa tres se implementa el algoritmo en un codigo escrito en lenguaje de programacion*

*Lenguaje de programación: cojunto de reglas sintácticas y procedimientos que permiten la comunicación entre el usuario y la computadora.

Las fases de compilacion y ejecucion traducen el programa. La realiza directamente la computadora.
En las siguientes dos fases, el programa busca errores y los elimina. Realiza una documentacion que consiste en generar un manual.

--Definiciones de algoritmo--
1.-es un conjunto de operaciones ordenadas de modo tal en que puedan resolver un problema.
http://www.mastermagazine.info/termino/3806.php
2.-método y anotación de las distintas formas de realizar un cálculo. En lo que a los virus respecta, un algoritmo es el procedimiento o la serie de operaciones destinadas a resolver una determinada situación de infección, descifrado, etc.
http://antivirus.interbusca.com/glosario/ALGORITMO.html
3.-Los algoritmos son modos de resolución deproblemas, cabe aclarar que no sólo son aplicables a la actividad intelectual, sino también a todo tipo de problemas relacionados con actividades cotidianas.
http://www.bibliodgsca.unam.mx/tesis/tes9sarg/sec_4.htm

--Diagramas de flujo--
1.-Se conocen con este nombre las técnicas utilizadas para representar esquemáticamente bien sea la secuencia de instrucciones de un algoritmo o los pasos de un proceso.
http://www.eduteka.org/modulos.php?catx=4&idSubX=116

--Caracteristicas de un algoritmo--
Debe ser Preciso; Esto quiere decir que debe especificar sin ambigüedades el orden en que se deben ejecutar las instrucciones.
Debe estar Definido; Esto significa que cada vez que se ejecute bajo las mismas condiciones, la secuencia de ejecución deberá ser la misma proporcionándonos el mismo resultado.
Debe ser Finito; Esto quiere decir que siempre que sea adecuado se realizarán un número finito de instrucciones, en un tiempo finito y requiriendo una cantidad finita de esfuerzo.
Debe ser General, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.
Debe ser Eficaz, Se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas para que puedan desarrollar.
http://biboz.net/comunidad/cuales-son-las-caracteristicas-de-un-algoritmo-5145/

--Reglas del uso de un diagrama de flujo--
-Reglas de los diagramas de flujo
-Debe de indicar claramente dónde inicia y dónde termina el diagrama.
-Cualquier camino del diagrama debe de llevarte siempre a la terminal de fin.
-Organizar los símbolos de tal forma que siga visualmente el flujo de arriba hacia abajo y de izquierda a derecha.
-No usar lenguaje de programación dentro de los símbolos.
-Centrar el diagrama en la página.
-Las líneas deben ser verticales u horizontales, nunca diagonales.
http://html.rincondelvago.com/diagrama-de-flujo_1.html

--Variable--
Estructura de programación que contiene datos. Puede contener números o caracteres alfanuméricos y el programador le asigna un nombre único. Mantiene los datos hasta que un nuevo valor se le asigna o hasta que el programa termine.
http://tecnologia.glosario.net/terminos-tecnicos-internet/variable-1688.html

--Constante--
Es una incognita que se utiliza en los lenguajes de programación que no puede cambiar su contenido en el transcurso del programa.
http://tecnologia.glosario.net/terminos-tecnicos-internet/constante-389.html

--Sintaxis--
En informática, se denomina «sintaxis» al conjunto de normas que gobiernan la asociación de variables de programación para formar las instrucciones.
http://tecnologia.glosario.net/terminos-tecnicos-internet/sintaxis-1513.html

--Palabras reservadas--
Las palabras claves son aquellos identificadores reservados por Java para un objetivo determinado y se usan sólo de la forma limitada y específica. Java tiene un conjunto de palabras clave más rico que C o que C++, por lo que sí está aprendiendo Java con conocimientos de C o C++, asegúrese de que presta atención a las palabras clave de Java.
http://mhonerz.tripod.com/id6.html

--Lenguaje Maquina--
consta de cadenas de números binarios (ceros y unos) y es el único que "entienden" directamente los procesadores. Todas las instrucciones preparadas en cualquier lenguaje de máquina tienen por lo menos dos partes. La primera es el comando u operación, que dice a la computadora cuál es la función que va a realizar. Todas las computadoras tiene un código de operación para cada una de sus funciones. La segunda parte de la instrucción es el operando, que indica a la computadora donde hallar o almacenar los datos y otras instrucciones que se van a manipular; el número de operandos de una instrucción varía en las distintas computadoras.
http://entren.dgsca.unam.mx/introduccion/leng_maq.html

--Lenguaje de Alto nivel--
El lenguaje de alto nivel (high-level language) es aquel que se aproxima más al lenguaje natural humano que al lenguaje binario de las computadoras, el que se conoce como lenguaje de bajo nivel.
Su función principal radica en que a partir de su desarrollo, existe la posibilidad de que se pueda utilizar el mismo programa en distintas máquinas, es decir que es independiente de un hardware determinado. La única condición es que la PC tenga un programa conocido como traductor o compilador, que lo traduce al lenguaje específico de cada máquina.
Y además, al utilizar palabras del lenguaje humano (por lo general el inglés) es más práctico y fácil de manipular para el programador de manera que no corre tantos riesgos de equivocarse como si es más factible de caer en el error con el binario. De esta manera, el programador puede concentrarse más en el programa en sí que en el lenguaje y, por otra parte, se reducen los tiempos de creación del programa, incluso en caso de que tenga que hacer modificaciones, son mucho más fáciles de hacer.
Un punto en contra que tiene este tipo de lenguaje de tercera generación es que en la actualidad existe gran diversidad de ellos (PASCAL, BASIC, FORTRAN, C++, COBOL, ALGOL, entre muchos otros).
http://www.mastermagazine.info/termino/5556.php

--Lenguaje de Bajo nivel--
Un lenguaje de programación es, ya lo saben, un conjunto de símbolos que se combinan de acuerdo con una sintaxis bien definida para posibilitar la transmisión de instrucciones a la CPU.
Lenguajes de programación hay muchos, cada uno con sus ventajas e inconvenientes. Conviene, por tanto, clasificarlos en categorías. Suelen hacerse dos clasificaciones:
La primera, atendiendo al nivel de abstracción del lenguaje, distinguirá entre lenguajes de bajo nivel y de alto nivel.
La segunda, según el proceso de traducción a código máquina, distinguirá entre lenguajes interpretados, compilados y ensamblados.
http://profeblog.es/blog/alfredo/2008/03/18/lenguajes-de-alto-y-bajo-nivel/

--Generaciones de lenguajes de programacion--
La evolución de los lenguajes de programación se puede dividir en 5 etapas o generaciones.
-Primera generación: lenguaje maquina.
-Segunda generación: se crearon los primeros lenguajes ensambladores.
-Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol…
-Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adabes…
-Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP

--Traductores de lenguajes de programacion--
Traductor de lenguaje. Software de sistemas que convierte un código fuente del programador en su equivalente en lenguaje maquina.
Código fuente. Código de programación de nivel alto escrito por el programador.
Código objeto. Otro nombre para el código de lenguaje maquina.
Intérprete. Traductor de lenguajes que convierte, ala vez, una sentencia de programa a un código de máquina.
Intérprete: lenguaje de alto-nivel a lenguaje de máquina/intermedio.
Compilador: lenguaje de alto-nivel a lenguaje de máquina/intermedio.
http://expo.itchihuahua.edu.mx/view.php?f=prog_16