sábado, 14 de marzo de 2009

2do Parcial TERCER TEMA

Resolver Algoritmo & Diagrama de Flujo

Imprime del 0 al (-100).
Diagrama de flujo que imprime del 0 al 100 y del 100 al 0
Diagrama de flujo que imprime del 0 al infinito.
  1. Hacer un diagrama para calcular el área de un triangulo.

  2. Hacer un diagrama para convertir de grados centígrados a grados Fahrenheit.

  3. Hacer un diagrama para imprimir la suma de los números del 1 al 100.

  4. Hacer un diagrama que te pida un número y te diga si es par, es non y/o es primo.

  5. Hacer un diagrama para imprimir la sucesión de Fibonacci.

  6. Hacer un diagrama que pida 10 números y muestre el promedio.

  7. Hacer un diagrama que pida 3 números y diga cual es el mayor.

  8. Hacer un diagrama que pida la edad y despliegue si es menor de edad (<18),>=18) o si pertenece a la 3ª edad.(>=60)

  9. Hacer un diagrama que te pida un número y te diga si es par, es non y/o es primo.

  10. Hacer un diagrama para calcular el factorial de un número.

  11. Hacer un diagrama que calcule e imprima N números primos.

  12. Hacer un diagrama que solicite 4 calificaciones y diga si está reprobado o no, según las reglas de tu escuela.

  13. Hacer un diagrama que pida un número N y despliegue todas las combinaciones de dos números que sumados den N.

  14. Hacer un diagrama que despliegue la tabla de multiplicar de un número X.

  15. Hacer un diagrama que calcule la probabilidad de que dos dados lanzados sumen 7.

  16. Hacer un diagrama que pida 100 números y diga cual es la mediana.

  17. Hacer un diagrama que solicite los datos de una matriz de 4x4 y la muestre
  18. invertida.
  19. Hacer un diagrama que pida 3 números y calcule el común denominador.

  20. Hacer un diagrama que llene una matriz de 3x3 y despliegue los valores de la diagonal principal.

  21. Hacer un diagrama que pida 2 matrices y despliegue el producto cruz de las mismas.

2do Parcial SEGUNDO TEMA

Resolver Mediante Diagrama de Flujo los Siguientes Planteamiento:

Suma de dos numeros
Resta de dos numeros
Multiplicacion de dos numeros
Division de dos numeros
Diagrama de Flujo que Evalua el Area de deja un circulo al estar dentro de un cuadrado.

CONVERTIR ESTOS PLANTEAMIENTOS REALIZADO EN EL DIAGGRAMA DE NESSI A DIAGRAMA ESTRUCTURADO

2do Parcial Primer Tema

Resolver estos Algoritmos en GRUPO DE TRES

Ejercicios de Algoritmos

  1. Pedro es un aturdido universitario que esta cursando el primer semestre. El día de mañana es muy pesado para el, pues, tiene que realizar varias actividades. Para empezar tiene dos exámenes, uno de álgebra y otro de Ingles, además es el cumpleaños de su mejor amigo y por su fuera poco tiene que bañar a su perro. Sólo puede bañar a su perro al medio día; sus dos exámenes son en la mañana y la invitación de su amigo es para todo el día. Como aconsejarías a Pedro para que lleve a cabo todas estas actividades. En orden debe realizarlas?.
  2. Un mensajero al llegar a su trabajo se percata de que tiene cinco paquetes importantes para entregar. El entra a su trabajo a las 07:00 de la mañana y tiene exactamente 12 horas para entregar todas las encomiendas. La siguiente tabla nos muestra el detalle de las horas posibles de entrega de cada paquete:

    # paqueteHoras de entrega
    109:30 - 12:30
    211:30 - 14:30
    307:30 - 18:30
    408:30 - 09:30
    510:30 - 15:30

    Un determinado paquete sólo puede ser entregado entre las horas antes establecidas, no antes ni después. Al mensajero le toma 2 horas el realizar cualquier entrega. El angustiado mensajero ha acudido a ti para que le ayudes a organizar las entregas. Quiere que le digas en que orden va a realizar las cinco entregas para que todas sean entregadas a tiempo.

     

  3. Para preparar un omelette usted necesita batir 3 huevos buenos. Suponga que usted tiene una cantidad indeterminada de huevos, pero que muchos de ellos est´ an malos (pero hay al menos tres huevos buenos). Al romper un huevo y vaciar su contenido en un plato, por inspecci´ on visual y de olor es posible determinar si el huevo est´ a malo. Se pide que usted escriba un algoritmo que, al terminar su ejecuci´ on, garantice que hay tres huevos buenos, y ninguno malo, batidos en una fuente. Para el desarrollo del algoritmo, considere que usted puede utilizar una cantidad fija de recursos (platos, fuentes, cucharas, etc.) que debe especificar como parte del algoritmo. Cada uno de estos recursos puede suponerse que es una variable. No olvide especificar las operaciones b´ asicas sobre las que desarrolla su algoritmo. Usted debe incorporar el uso de subprocesos para su algoritmo. Suponga que existe un subproceso (ll´ amelo inspecci´ on) que, dado un huevo en un plato, retorna verdadero si el huevo est´ a bueno y falso en otro caso.

sábado, 7 de febrero de 2009

Llene con la respuesta Correcta dejando el Comentario en el Blog

. Un conjunto de procedimientos que deben seguirse para resolver un problema, se le llama:
a. Algoritmo______, b. Procedimiento _______, c. Método ______, d. Ninguna de las anteriores ______

2. Una de las características de un algoritmo es que debe ser:
a. Finito ______, b. Bien definido ______ c. Preciso ________ d. Todas las anteriores

3. Cuando decimos que el (la) ______________ requiere una definición clara y precisa, estamos hablando de:
a. Definición del problema ____, b. Análisis del problema ______, c. Diseño del problema _______, d. Ninguna de las anteriores

4. Definir los datos de salida forma parte de:
a. Definición del problema ____, b. Análisis del problema ______, c. Diseño del problema _______, d. Ninguna de las anteriores

5. Definir los métodos y formulas para resolver el problema, es un aspecto a considerar en:
a. Definición del problema ____, b. Análisis del problema ______, c. Diseño del problema _______, d. Ninguna de las anteriores

Tarea Traer en una Hoja estos Algoritmos

 Escribir un algoritmo que lea las cuatro notas de un estudiante en cada uno de los tres subproyectos que cursa e imprima la nota definitiva de cada subproyecto y el promedio de las tres notas definitivas

Escribir un algoritmo que calcule e imprima el area de un triangulo

Un vendedor recibe una comisión del 10% del total de ventas del mes. El quiere saber cuanto ganará en un mes que tuvo tres ventas

Una tienda ofrece un 15% de descuento por cada compra. Un cliente desea saber cuanto deberá pagar por su compra

Si un dolar equivale a 2,15 pesos. Hacer un algoritmo que imprima en dólares una cantidad X de pesos

Ejercicio:
Tres personas deciden invertir su dinero para formar una empresa. Cada una de ellas invierte una cantidad distinta. Hacer un algoritmo que imprima el porcentaje que cada quien invierte con respecto al total de la inversión

Hacer un algoritmo que lea los nombres y edades de dos personas e imprima cual de ellas
tiene más edad.


En una Granja existen N conejos, N1 blancos y N2 negros. Se venden X negros y Y blancos.

Elaborar un algoritmo que lea el importe bruto de una factura y
determine el importe neto según los siguientes criterios:
· Importe bruto menor de 20.000 -> sin descuento
· Importe bruto mayor de 20.000 -> 15% de descuento



Resolver Mediante Algoritmo

PROBLEMA: Un estudiante se encuentra en su casa (durmiendo) y debe ir a la universidad (a tomar la clase de programación!!), ¿qué debe haga el estudiante? Grupo I
Inicio
Dormir 
haga 1 hasta que suene el despertador (o lo llame la mamá). 
Mirar la hora.
¿Hay tiempo suficiente?

Si hay, entonces 
    Bañarse.
    Vestirse.
    Desayunar.

Sino, 
      Vestirse.
Cepillarse los dientes.
Despedirse de la mamá y el papá.
   ¿Hay tiempo suficiente?

Si, Caminar al paradero.
SinoCorrer al paradero.
Hasta que pase un bus para la universidad haga :
    Esperar el bus
    Ver a las demás personas que esperan un  bus.
Tomar el bus.

Mientras no llegue a la universidad haga 
    Seguir en el bus.
    Pelear mentalmente con el conductor.
Timbrar.
Bajarse.
Entrar a la universidad. 

Fin


PROBLEMA: Cambiar la rueda pinchada de un automóvil teniendo un gato mecánico en buen estado, una rueda de reemplazo y una llave inglesa. Grupo 2
Inicio
PASO 1.  Aflojar los tornillos de la rueda pinchada con la llave inglesa.
PASO 2.    Ubicar el gato mecánico en su sitio.
PASO 3.    Levantar el gato hasta que la rueda pinchada pueda girar libremente.
PASO 4.    Quitar los tornillos y la rueda pinchada.
PASO 5.    Poner rueda de repuesto y los tornillos.
PASO 6.    Bajar el gato hasta que se pueda liberar.
PASO 7.    Sacar el gato de su sitio.
PASO 8.  
  Apretar los tornillos con la llave inglesa.
Fin


 PROBLEMA: Realizar la suma de los números 2448 y 5746. Grupo 3
Inicio
PASO 1. Colocar los números el primero encima del segundo, de tal manera que las unidades, decenas, centenas, etc., de los números queden alineadas. Trazar una línea debajo del segundo número.
PASO 2.  Empezar por la columna más a la derecha.
PASO 3.  Sumar los dígitos de dicha columna.
PASO 4. Si la suma es mayor a 9 anotar un 1 encima de la siguiente columna a la izquierda y anotar debajo de la línea las unidades de la suma. Si no es mayor anotar la suma debajo de la línea.
PASO 5.  Si hay más columnas a la izquierda, pasar a la siguiente columna a la izquierda y volver a 3.
PASO 6.  El número debajo de la línea es la solución.
Fin

Escribir un algoritmo que lea las cuatro notas de un estudiante e imprima la nota definitiva. Grupo 4

Inicio
leer n1, n2, n3, n4
suma = n1 + n2 + n3 + n4
parcial = suma*4/100
notadef = parcial + 1
Imprimir notadef
fin

Expresiones Lógicas

Expresiones Lógicas

Antes de entrar de lleno a el estudio de las estructuras de control analizaremos primero lo que son las expresiones logicas y como las utilizaremos en las estructuras de control.

Expresiones Lógicas

En los programas con frecuencia debemos enfrentarnos con situaciones en las que se deben proporcionar instrucciones alternativas que pueden o no ejecutarse, dependiendo de los datos de entrada, reflejandose el cumplimiento o no de una deteminada condición.

Por ejemplo, supongamos que queremos diseñar un programa para calcular el salario semanal de un empleado que trabaja por horas, la empresa paga una tasa de 1.5 la tasa normal por todas las horas trabajadas mayores a 40. El algoritmo sería:

leer(tasa)
leer(Horas_trabajadas)
si Horas > 40 condición
entonces(se cumple la condición)
  paga <- tasa * 40 + 1.5 * tasa *(horas - 40)
sino (no se cumple la condición)
  paga < tasa * horas
fin_si

Si te das cuenta la solución del problema requiere el uso de estructuras de control selectivassi(if), entonces(then), sino(else). Para realizar el algoritmo anterior se necesita realizar la pregunta: Son las horas trabajadas mayores a 40?.

Esto se realiza mediante la evaluación de expresiones lógicas, comparando dos valores y útilizando un operador de relación.

Una expresión lógica es una expresión que puede ser verdadera o falsa.

Operadores de Relación

Se útilizan para expresar condiciones y describen una relación entre 2 variables. El conjunto de operaciones relacionales se muestran en la siguiente tabla.

Operadores Significado
< Menor que
> Mayor que
= Igual a
>= Mayor o igual que
<= Menor o igual que
<> Distinto o diferente a

Estos operadores se útilizan en condiciones cuyo formato tiene la siguiente forma.

variable  operador relacional  variable
contante  operador relacional  constante.

El resultado de una expresión lógica es un valor de tipo lógico: verdadero o falso.

Cuando se aplican a elementos de tipo caracter se verifican en orden alfabetico, tomando en cuenta el orden del código ASCII. De la siguiente manera:

0 < 1 < 2 ... < 9
a < b < c ... < z
A <>

Estructuras de Control

Estructuras de Control

Las estructuras de control de un lenguaje de programación se refieren a el orden en que las instrucciones de un algoritmo se ejecutarán. El orden de ejecución de las sentencias o instrucciones determinán el flujo de control.

Estas estructuras de control son por consiguiente fundamentales en los lenguajes de programación y en los diseños de algoritmos especialmente los pseudocódigos.

Las tres estructuras de control básico son:

  • secuencia
  • selección
  • repetición

La programación estructurada hace los programas mas faciles de escribir, verificar, leer y mantener, útiliza un número limitado de estructuras de control que minimizan la complejidad de los problemas.

En mayo de 1996, Bôhm y Jacopin demostrarón que un programa propio puede ser escrito útilizando solamente tres tipos de estructuras de control:  secuenciales, selectivas y repetitivas.

Un programa se define como propio si cumple lo siguiente:

  • Posee un solo punto de entrada y salida o fin para control del programa.
  • Existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas las partes del programa.
  • Todas las instrucciones son ejecutadas y no existen lazos o bucles infinitos.

En síntesis la programación estructurada significa:

  • El programa completo tiene un diseño modular
  • Los módulos se diseñan con metodología descendente (método top-down)
  • Cada módulo se codifica útilizando las 3 estructuras de control básicas: secuenciales,selectivas,repetitivas.
  • Estructuración y modularidad son complementarios mas no iguales

Operaciones de Entrada y Salida (I/O) de Datos

Operaciones de Entrada y Salida (I/O) de Datos

Los datos se pueden almacenar en memoria de tres formas diferentes: 
asociados con constantes, asignados a una variable con una sentencia de asignación o una sentencia de lectura. Siendo el último el mas indicado si se desea manipular diferentes datos cada vez que se ejecuta el programa. Además la lectura de datos permite asignar valores desde dispositivos hasta archivos externos en memoria, esto se denomina operación de entrada o lectura.

Algunos ejemplos de dispositivos de entrada y salida, son: 
teclado,monitor,mouse,etc.

La operación de entrada en pseudocódigo se representa de la siguiente manera: 

leer(lista de variables)

A medida que se realizan calculos en el programa, se necesitan visualizar los resultados. Está se conoce como operación de escritura o salida.

Esta operación se representa en pseudocódigo de la siguiente manera: 

escribir(lista de variables,"Mensaje")

En la instrucción de salida se pueden incluir además mensajes de texto y variables.

Con lo que hemos visto hasta aquí podemos ya realizar un pequeño ejemplo, el clásico "Hola Mundo", en pseudocódigo.

Algoritmo Ejemplo
escribir("Hola Mundo")
Fin

Esto imprimirá en pantalla la frase 'Hola Mundo'.

Programación Interactiva

En la programación interactiva el usuario del programa puede interactuar con el programa e introducir datos mientras se ejecuta el programa.

Al objeto de facilitar esta entrada de datos, la computadora debe indicar al usuario el momento en que debe introducir los datos. Para ello se deben visualizar mensajes interactivos con indicaciones al usuario.

Ejemplo: Suma de dos números ingresados por el usuario

Algoritmo Suma
Variables
  numero1,numero2,total

escribir('Introduce el primer número:')
leer(numero1)
escribir('Introduce el segundo número:')
leer(numero2)
escribir('El total es: ',numero1 + numero2)
Fin

Esto debe visualizar en pantalla lo siguiente:

Introduce el primer número:
89  Intro presionado por el usuario
Introduce el segundo número
1  Intro presionado por el usuario
El total es: 90

Precedencia de Operadores

Precedencia de Operadores

Cuando una expresión aritmética se evalúa, el resultado es un número. Ahora bien, cuando aparecen dos o mas expresiones aritméticas, qué operaciones se realizan primero?

Una expresión aritmética en programación tiene una sintaxis de la forma:
x2+1/2

Hay que observar que esta expresión es totalmente diferente a esta otra (x2+1)/2, por lo que es importante codificar las expresiones aritméticas correctamente.

Para realizar esto se deberán conocer las reglas de evaluación de los operadores, que se estudian a continuación.

Reglas de Evaluación
  • Todas las subexpresiones entre parentesis se evalún primero. Las subexpresiones entre parentesis anidados se evalúan de adentro hacia afuera, es decir, que el parentesis mas interno se evalúa primero.
  • Prioridad de Operaciones: Dentro de una misma expresión o subexpresión, los operadores se evalúan en el siguiente orden:
    * , /Multiplicación y división
    div,modDivisión y Modulo de enteros
    +,-Suma y Resta
  • Los operadores en una misma expresión o subexpresión con igual nivel de prioridad se evalún de izquierda a derecha
Escritura de Fórmulas

Las fórmulas matematicas se deben escribir en formato lineal. Esto obliga al uso frecuente de parentesis que indiquen el orden de evaluación correcto de las operaciones.

Por ejemplo, si deseamos codificar la fórmula de Vieta, tendríamos que escribirla así:

Vamos a escribir el dato solo del valor positivo
(-b+raiz(b*b-4*a*c))/(2*a)
Donde a,b,c son numeros reales.

Operadores utilizados en Programación

Operadores utilizados en Programación

En todos los lenguajes de programación se útilizan operadores para efectuar operaciones aritmeticas. Combinando las variables y constantes en expresiones aritméticas por medio de funciones adecuadas.

Una expresión es un conjunto de datos o funciones unidos por operadores aritméticos, los cuales se muestran en la siguiente tabla:

OperadorSignificado
+Suma
-Resta
*Multiplicación
/División
^Exponenciación
ModMódulo

Operadores Lógicos

En ocasiones en los programas se necesitan realizar comparaciones entre distintos valores, esto se realiza utilizando los operadores relaciones, los cuales se listan a continuación:

OperadorSignificado
<Menor que
>Mayor que
<=Menor o igual que
>=Mayor o igual que
=Igual a
<>Distinto a, diferente de

Identificadores

Identificadores

Representan los nombres de los objetos de un programa (constantes, variables, tipos de datos, procedimientos, funciones, etc.). Es una secuencia de carácteres que puede ser de cualquier longitud, aunque tiene ciertas reglas que hay que seguir, las cuales son:

  1. Debe comenzar con una letra o "_" y no puede contener espacios en blanco.
  2. Letras, dígitos y carácteres subrayados ("_") están permitidos después del primer carácter.

En síntesis un identificador es un método para nombrar a las celdas de memoria en la computadora, en lugar de memorizarnos una dirección de memoria.

Se utilizan para nombrar variables, constantes, procedimientos y funciones.

Constantes

Las constantes son valores que no pueden cambiar en la ejecución del programa. Recibe un valor en el momento de la compilación del programa y este no puede ser modificado.

Variables

Las variables son valores que se pueden modificar durante la ejecución de un programa. Al contrario de las constantes estos reciben un valor, pero este valor puede ser modificado durante la ejecución o la compilación del programa.

Sentencia de Asignación

Se utiliza para asignar o almacenar valores a variables o constantes. Es una operación que sitúa un valor determinado en una posición de memoria. Se demuestra en pseudocódigo con el símbolo <- (Una flecha apuntando hacia el identificador, donde se desea guardar el valor.). variable <- expresión

El tipo de expresión debe ser del mismo tipo que el de la variable, en caso contrario en la fase de compilación se produciría un error de tipos. Aunque a la fecha existen lenguajes de programación con una potente herramienta para la conversión de datos (tal es el caso de Visual Basic), no es recomendable asignar valores de un tipo diferente a variables de otro tipo.

Reglas de Asignación
  1. Una variable en el lado derecho de una sentencia de asignación debe tener un valor antes de que la sentencia de asignación se ejecute. Hasta que un programa le da un valor a una variable, esa variable no tiene valor. Por ejemplo:
    Si x no tiene un valor antes de ejecutar y <- x+1, se producirá un error lógico.
  2. En la izquierda de una sentencia de asignación solo pueden existir variables. Por consiguiente no es valido lo siguiente:
    Valor_Neto - Tasas <- 34015.

Además hay que recordar que la operación de asignación es una operación destructiva debido a que el valor almacenado en una variable se pierde o se destruye y se sustituye por el nuevo valor en la sentencia de asignación.

Tipos de Datos

Los diferentes objetos de información con los que un programa trabaja se denominan datos.

Todos los datos tienen un tipo asociados con ellos que nos servirá para poder conocer con que información trabajaremos. Es decir, cuando ingresemos el sueldo de un trabajador necesitamos que este contenga decimales, o al solicitar la edad de una persona está tiene que estar con numeros enteros, etc.. Además la suma entre caracteres no tiene sentido.

La asignación de tipos a los datos tiene dos objetivos principales:

  • Detectar errores de operaciones aritméticas en los programas
  • Determinar como ejecutar las operaciones
Tipos de Datos Comunes

Estos son los tipos de datos mas útilizados en los lenguajes de programación:

  • Númericos
  • Caracteres y
  • Lógicos
Tipos Númericos

Dentro de estos tipos se puede hacer mención de los tipos enteros, reales o de coma flotante, y de los exponenciales.

Tipos Carácter

Los tipos carácter se dividen también en caracteres ASCII, como por ejemplo: a A & * , etc.. El otro grupo de caracteres son los strings o cadenas de caracteres, como por ejemplo: "Hola Mundo".

Tipos Lógicos

Los tipos lógicos solamente pueden tomar los valores verdadero o falso.

Fases para la Resolución de Problemas

En esta sección describire brevemente las fases o pasos a seguir para la resolución de problemas con ayuda de la computadora.

Análisis del Problema

Esta fase requiere una clara definición donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada.

Dado que se busca una solución se precisan especificaciones de entrada y salida.

Para poder definir bien un problema es conveniente responder a las siguientes preguntas:

  • ¿Qué entradas se requieren? (cantidad y tipo)
  • ¿Cuál es la salida deseada? (cantidad y tipo)
  • ¿Qué método produce la salida deseada?
Diseño del Algoritmo

En la fase de análisis en el proceso de programación se determina que hace el programa. En la fase de diseño se determina como hace el programa la tarea solicitada.

Los métodos utilizados para el proceso del diseño se basan en el conocido divide y vencerás. Es decir la resolución de un problema complejo se realiza diviendo el problema en subproblemas y a continuación dividir estos subproblemas en otros de nivel mas bajo, hasta que sea implementada una solución en la computadora. Este método se conoce tecnicamente como diseño descendente (top-down) o modular.

Verificación y depuración: Es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba como son: valores normales de entrada, valores extemos de entrada que comprueben los límites del programa y valores de entrada que comprueben aspectos especiales del programa. Estos determinarán si el programa contiene errores o no.

Al ejecutar un programa se pueden producir tres tipos de errores:

  • Errores de Compilación: Se producen normalmente por un uso incorrecto de las reglas del lenguaje de programación, suelen ser errores de sintaxis.
  • Errores de Ejecución: Se producen por instrucciones que la computadora puede comprender pero no ejecutar. En estos casos se detiene la ejecución del programa y se imprime un mensaje de error. Ejemplo de esto puede ser una división por cero.
  • Errores Lógicos: Se producen en la lógica del programa y la fuente del error suele ser el diseño del algoritmo, son mas dificiles de detectar puesto que el programa puede funcionar y no producir errores de compilación ni de ejecución pero regresará resultados incorrectos. En este caso se debe regresar a la fase de diseño, modificar el algoritmo, cambiar el programa fuente y compilar y depurar una vez mas.

Documentación: La importancia de la documentación debe ser destacada por su influencia en la etapa final, ya que programas pobremente documentados son dificiles de leer, mas dificiles de depurar y casi imposibles de mantener y modificar.

Puede ser interna y externa. La documentación interna es la contenida en lineas de comentarios. La documentación externa incluye análisis, diagramas de flujo y/o pseudocodigos, manuales de usuarios con instrucciones para ejecutar el programa y para interpretar los resultados.

La documentación es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa. Estos cambios se denominan mantenimiento del programa.

Además es de buena costumbre para todo buen programador, dejar comentado su codigo, esto es para que el futuro programador pueda darle mantenimiento fácilmente a el programa, o incluso, si es el mismo creador quien debe darle mantenimiento.

Herramientas de Programación

Las herramientas de programación mas utilizadas comunmente para diseñar algoritmos son:

  • Pseudocodigos
  • Diagramas N-S
  • Diagramas de flujo

Siendo el pseudocodigo el mas popular por su sencillez y su parecido a el lenguaje humano.

Cada programa bien diseñado consta de un programa principal (el módulo de nivel mas alto) que llama a subprogramas (módulos) de nivel mas bajo, que a su vez pueden llamar a otros subprogramas.

Los módulos pueden ser planeados, codificados, comprobados y depurados independientemente y a continuación combinarlos entre sí. Este proceso implica la ejecución de estos pasos hasta que el programa se ha terminado:

  • Programar un módulo
  • comprobar el módulo
  • Si es necesario, depurar el módulo
  • Combinar el módulo, con el resto de los otros módulos

El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar posteriormente.

Implementación del Algoritmo

Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos:

  • Codificación
  • Compilación y ejecución
  • Verificación
  • Depuración
  • Documentación

Codificación: Es la escritura en un lenguaje de programación de la representación de un algoritmo. Dado que el diseño del algoritmo es independiente del lenguaje de programación utilizado en su implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro.

Compilación y ejecución: Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operación se realiza con un editor de texto, posteriormente el programa fuente se convierte en un archivo de programa que se guarda en un disco.

El programa fuente debe ser traducido a lenguaje máquina. Este proceso se realiza con el compilador y el sistema operativo que se encarga practicamente de la compilación. Si al compilar el programa fuente se presentan errores (errores de compilación), es necesario volver a editar el programa, corregir los errores y compilar de nuevo. Esto se repite hasta que ya no se presenten mas errores, obteniendose el programa objeto, el cual todavía no es ejecutable directamente. Al ya no existir errores en el programa fuente se debe instruir al sistema operativo para que efectue la fase de montaje o enlace, del programa fuente con las librerias del programa del compilador. Este proceso de montaje produce un programa ejecutable.

Cuando se ha creado un programa ejecutable este se puede ya ejecutar desde el sistema operativo con solo teclear su nombre.

Suponiendo que no existen errores durante la ejecución (errores en tiempo de ejecución), se obtendrá la salida de resultados correctos del programa.

La Resolución de Problemas útilizando la Computadora

Aunque el proceso de diseñar programas es un proceso creativo, se pueden considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores.

La resolución de problemas con computadoras se pueden dividir en tres fases:

  • Análisis del problema
  • Diseño del algoritmo
  • Resolución del algoritmo en la computadora

El análisis y el diseño del algoritmo requiere la descripción del problema en subproblemas a base de refinamientos sucesivos y una herramienta de programación:

  • Diagrama de flujo
  • Diagrama N-S
  • Pseudocódigo

Durante la tercera etapa se implementa este algoritmo en un código escrito en un lenguaje de programación, reflejando las ideas obtenidas en las fases de análisis y diseño.

Antes de conocer las tareas a realizar en cada fase, definiremos el concepto y significado de la palabra algoritmo.

¿Qué es Algoritmo?

Se deriva de la traducción al latín de la palabra árabe Alkhowarismi, 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 un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos.

Características del Algoritmo
  • preciso, tiene que indicar el orden de realización en cada paso.
  • definido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el mismo resultado.
  • finito, es decir, que el algoritmo tiene que tener un número determinado de pasos.
  • Debe producir un resultado en un tiempo finito.

Ejemplos de algoritmos son:

Ver una película
  1. Buscar el videocasette de la película
  2. SI el televisor y la video se encuentran apagados, encenderlos
  3. Sacar el video del estuche
  4. Introducirlo en la videocasetera
  5. Tomar el control del televisor y la video
  6. Dirijirme a el sofa
  7. Ponerme comodo
  8. Disfrutar la película

Fíjate como he descrito en estos pasos el algoritmo para poder ver una película en la video, este pequeño algoritmo cumple con los requisitos descritos arriba, ya que cada paso precisa un orden y tiene un orden de pasos finitos. En este algoritmo aparece la palabra SI remarcada en mayúsculas, el uso de esta palabra la veremos mas adelante, cuando discutamos sobre el control del flujo del programa o estructuras de control.

Los algoritmos se pueden expresar por fórmulas, diagramas de flujo, y pseudocódigos conocidos como herramientas de programación. Está última representación es la mas utilizada por su sencillez y parecido a el lenguaje humano.

Como ejercicio te recomendaría que escribieras algunos algoritmos de sucesos en tu vida cotidiana, como por ejemplo: encender el auto,ir al cine,etc..

sábado, 31 de enero de 2009

Solucionar Mediante los 7 pasos para Solucionar un Problema

Ejemplo: Una persona quien desea tener una casa nueva, sin embargo, el solo dispone de los maderos, las pinturas y las herramientas, en síntesis desea una casa pero solo cuenta con los materiales.

Las siguientes son las etapas que se deben cumplir para resolver con éxito un problema de programación:
1. Definición del problema 
2. Análisis del problema 
3. Selección de la mejor alternativa 
4. Diagramación 
5. Prueba de escritorio 
6. Codificación 
7. Transcripción 
8. Compilación 
9. Pruebas de computador 
10. Documentación externa

sábado, 24 de enero de 2009

Tarea

Pasos en la resolución de un problema
¿Qué es un problema?
Datos y Variables

ECUACION DE SEGUNDO GRADO


Sumamos a ambos miembros - c;   T1::  
asociamos y obtenemos la ecuación equivalente ax 2 + bx = - c
ax 2 + bx + c = 0
ax 2 + bx + (c + (-c)) = - c
ax 2 + bx = - c

POR QUE ESTUDIAR INFORMATICA

Hacer comentario sobre por que estudiar informatica, individualmente

viernes, 23 de enero de 2009

INTRODUCCION A LA PROGRAMACION

ENCUADRAMIENTO DEL MODULO DENTRO DEL CICLO. 

Nivel Del Ciclo

Formación Profesional De Grado Superior

Denominación Del Ciclo

Administración de Sistemas Informáticos

Denominación Del Modulo Profesional

Fundamentos de Programación

Unidad De Competencia

Proponer y coordinar cambios para mejorar la explotación del sistema y las aplicaciones

 

Bloque 0. Introducción Al Módulo. 

Conviene añadir una unidad didáctica para situar al alumno dentro del campo profesional propio de su título, mostrándole las funciones, las unidades didácticas para el Módulo y se explique los criterios metodológicos que se seguirán en la enseñanza del mismo, las actividades para el aprendizaje así como el proceso y las actividades de evaluación y los diversos conceptos por los que será evaluado el alumno.  

Bloque 1: Fundamentos De Programación. 

En éste bloque temático se pretenden impartir los contenidos básicos de programación, para poder codificar en un lenguaje ficticio. Es un bloque muy importante por ser la base de futuros conocimientos para la adquisición de las capacidades requeridas al profesional. 

En el campo de la informática profesional es necesario insistir en la unión de la teoría y la práctica, para conseguir a través de unos mínimos aconsejables, el máximo rendimiento de las estructuras de los datos y de los métodos para manejarlas. 

En este bloque se partirán de unas primeras unidades didácticas con contenidos generales sobre la programación de ordenadores, metodologías  con el fin de dar una visión previa de conocimientos básicos generales en esta ciencia. 

Bloque 2: Los Datos 

El estudio de la estructura de los datos es fundamental para iniciarse y profundizar en los conocimientos de la ciencia de la computación. 

En este bloque, con su posterior desarrollo en unidades temáticas por cada una de las estructuras de datos, se impartirán los contenidos más teóricos, de como se estructuran los datos y las operaciones que permiten, ventajas e inconvenientes de cada una de ellas. Conociendo todo esto sobre la estructura de datos estaremos en condiciones de poder elegir cual será la más conveniente según los problemas que pretendamos resolver.  

Bloque 3. Programación (Algoritmos+Datos).  

En este bloque se agrupa en cinco aspectos bien definidos:

 

1.  El estudio de un lenguaje de programación estructurado. El lenguaje de programación que se utilizará será ANSI C. El Lenguaje C es un lenguaje estructurado con un IDE de fácil manejo, en nuestro caso utilizaremos el entorno de desarrollo de Borland C++ 5.25, que posee de una serie de utilidades externas para confección de las distintas fases (compilación, linkado etc) y de rápida asimilación por parte del alumno. Sus contenidos se distribuyen en distintas UD que se temporalizan de la manera adecuada para poder implementar , mediante esta sencilla herramienta, otros contenidos y de ésta manera “palpar” los conceptos.

2.  Desarrollo mediante el uso del lenguaje de programación estructurado mencionado anteriormente de programas y aplicación que impliquen la implementación y uso de las estructuras de datos estudiadas.

3.  Introducción a los conceptos de programación orientada a objetos. La orientación a objetos en programación, es comparable con la aparición del arco en arquitectura, de manera que nos permite construcciones mas robustas con menos material. La programación actual se encuentra totalmente impregnada de ésta metodología. El lenguaje elegido para su implementación es JAVA. Esta elección está motivada por ser el lenguaje que nos permite manejar los objetos al nivel mas bajo y como consecuencia el que mas posibilidades de aprendizaje ofrece.

4.  Introducción a los conceptos de programación visual. La programación actual se encuentra totalmente impregnada de ésta metodología. El lenguaje elegido para su implementación es Visual Basic.

5.  Desarrollo de una aplicación informática mediante el uso del lenguaje de programación estructurado ANSI C, que resuelva un problemas cercano a la realidad.

Las unidades didácticas están estructuradas en función del grado de dificultad para asimilarlas y siguiendo la trilogía "teoría-algoritmo-codificación".

 

Bloque 0: Introducción al Módulo

 

 UNIDADES DIDÁCTICAS

0

U.T.: Introducción al Módulo Fundamentos de Programación

 

 

Bloque 1: Fundamentos de Programación

 

 UNIDADES DIDÁCTICAS

1

U.T.: Introducción a la Programación

2

U.T.: Sistemas de Representación.

3

U.T.: Tipo de Dato, Dato, Variable y Expresiones.

4

U.T.: Desarrollo de Algoritmos. Programación Secuencial.

5

U.T.: Técnicas de Programación. Programación Modular.

  
 

Bloque 3: Programación “Algoritmos+Datos”

 

 UNIDADES DIDÁCTICAS

6

U.T.: Programación Básica en C.

 

Bloque 2: Datos
Bloque 3: Programación “Algoritmos+Datos”
 

 

 UNIDADES DIDÁCTICAS (Datos)

7

U.T.: Estructuras estáticas de datos.

8

U.T.: Estructuras dinámicas de datos.

9

U.T:  Estructuras De Datos Externas.

  

Bloque 3: Programación “Algoritmos+Datos”

 

 UNIDADES DIDÁCTICAS

10

U.T.: Desarrollo de un PROYECTO INFORMÁTICO

 

Bloque 3: Programación “Algoritmos+Datos”

 

 UNIDADES DIDÁCTICAS

11

U.T.: Programación Orientada a Objetos.

12

U.T.: Programación básica en Java.

13

U.T.: Programación Avanzada en Java.

 

Bloque 3: Programación “Algoritmos+Datos”

 

 UNIDADES DIDÁCTICAS

14

U.T.: Programación Básica en Visual Basic.

 

Bloque 1: Fundamentos de Programación

 

 UNIDADES DIDÁCTICAS

1

U.T.: Introducción a la Programación

2

U.T.: Sistemas de Representación.

3

U.T.: Tipo de Dato, Dato, Variable y Expresiones.

4

U.T.: Desarrollo de Algoritmos. Programación Secuencial.

5

U.T.: Técnicas de Programación. Programación Modular.

 

Unidad de Trabajo 1: Introducción a la Programación.

Índice de Contenidos

  1. Principios Básicos. Conceptos
  2. Sistemas Operativos.
  3. Lenguajes de Programación.
  4. Desarrollo de Software. Ingeniería del Software.
  5. Ensambladores, Compiladores e Interpretes.

Unidad de Trabajo 2: Sistemas de Representación.

Índice de Contenidos

  1. El Sistema Decimal.
  2. Teorema Fundamental de la Numeración.
  3. El sistema Binario.
  4. Operaciones con Binarios.
  5. El sistema Octal.
  6. El Sistema Hexadecimal.
  7. Conversión entre los distintos Sistemas.
  8. Representación de números enteros.
  9. Desbordamiento (Overflow).
  10. Coma Flotante.
  11. Representación interna de la Información: Codificación alfanumérica.
  12. Tabla de Conversión.
  13. Ejercicios.

Unidad de Trabajo 3: Tipo de Dato, Dato, Variable y Expresiones.

  1. Elementos Básicos.
    •  Constantes
    • Identificadores.
    • Palabras Reservadas.
    • Comentarios.
    • Operadores y Expresiones.
       
  2. Tipos de Datos.

Unidad de Trabajo 4: Desarrollo de Algoritmos. Programación Secuencial.

  1. Concepto de Algoritmo.
  2. Algoritmo vs Codificación.
  3. Estructuras de Control.
  4. Tipos de Algoritmos.
  5. Diseño de Algoritmos.
  6. Técnicas de Diseño de Algoritmos.

Unidad de Trabajo 5: Técnicas de Programación. Programación Modular.

  1. Programación Convencional.
  2. Programación modular estructurada.
  3. Subprogramas. Funciones y Procedimientos.
  4. Alcance. Global y Local.
  5. Visibilidad.
  6. Parámetros. Tipos de parámetros. Paso de parámetros.
  7. Otras técnicas de programación.
  8. Recursividad.
  9. Librerías y paquetes. APIs.

Bloque 3: Programación “Algoritmos+Datos”

 

 UNIDADES DIDÁCTICAS

6

U.T.: Programación Básica en C.

Unidad de Trabajo 6: Programación Básica en C.

1.      Programación Convencional.
         1.1.  Estructuras algorítmicas básicas en C.
                 1.1.1.    Secuencia. 
                 1.1.2.    Selección. 
                 1.1.3.    Repetición.
2.      Programación Modular estructurada en C.
         2.1.  Subprogramas.
                 2.1.1.    Procedimientos.
                 2.1.2.    Funciones.
         2.2.  Alcance
                2.2.1.    Global.
                2.2.2.    Local.
         2.3.  Visibilidad.
         2.4.  Parámetros en C
                2.4.1.    Formales, Reales.
                2.4.2.    Tipos de Paso.
                             2.4.2.1.         Por valor.
                             2.4.2.2.         Por referencia.
3.      Recursividad. 
 

Recursos:
  1. Tarjeta de Referencia ANSI.
  2. Ficheros C/C++
  3. Funciones y Librerías en C.
  4. Manual de C.
  5. El Rincón de C.
  6. Manuel de C: Tipo de datos, datos, expresiones ..
  7. Curso de Lenguaje C.
  8. Manual de C. II
  9. Curso C/C++. Formato WEB.
  10. Manual de programación en C (Español)
  11. Referencia de funciones de la biblioteca estandard de C (Español)
  12. Aprenda C como si estuviera en primero. Manual de aprendizaje del lenguaje C en formado PDF. Universidad de Navarra (Español)
  13. Referencia de funciones de la biblioteca estandard de C (Inglés)
  14. Manual de programación en C sobre sistemas UNIX (Inglés)
  15. Ejercicios Parte 1.
  16. Ejercicios Parte 2.
  17. Ejercicios Parte 3.
Descargas:
  1. Tutorial interactivo de C (700KB)
  2. SciTEEditor multilenguaje con coloreado de sintaxis. (400KB)
  3. DOXYGENUtilidad para la generación semiautomática de documentación de código en diferentes formatos. (3,7MB)
  4. Inno Setup, Creador de programas de instalación para windows (1MB)
  5. PE Resource Editor, Editor de ficheros de recursos de windows (327KB)

Funciones de Consola.

  1. Funciones de Consola. Programa cpp.
  2. Web Funciones de Consola. #include

Bloque 2: Datos
Bloque 3: Programación “Algoritmos+Datos”
 

 

 UNIDADES DIDÁCTICAS (Datos)

7

U.T.: Estructuras estáticas de datos.

8

U.T.: Estructuras dinámicas de datos.

9

U.T:  Estructuras De Datos Externas.

 Unidad de Trabajo 7: Estructuras Estáticas de Datos.

      1.      Introducción.
2.      Operaciones.
3.      Arrays.
      3.1.  Definición.
      3.2.  Tamaño.
      3.3.  Dimensión
      3.4.  Ventajas de estructurar los datos mediante arrays.
      3.5.  Modo de acceso a elementos.
      3.6.  Ventajas de la clasificación de arrays por su contenido.
4.   Registros.
5.   Enumerados. 
6.      Implementación mediante C.
      6.1.      Tipo Puntero. *&.
      6.2.    Reserva de memoria. malloc, realloc ...
      6.3.    Array dinámicos. (int*) malloc().
      6.4.    Struct.
      6.5.    Typedef Struct.
      6.6.    Typedef Struct *.  
      6.7.    (void *) f().
      6.8.    #include .

Unidad de Trabajo 8: Estructuras Dinámicas de Datos. TDA.

      1.      Semántica referencia vs Semántica almacenamiento.
2.      
Semántica referencia.
      2.1.  
Operador de indirección
      2.2.  
Operador Referencia
      2.3.  
Indirecciones múltiples.
      2.4.  
Punteros a funciones.
      2.5.  
Listas Secuenciales: 
             2.5.1.    
Pilas
             2.5.2.    
Colas.
      2.6.  
Listas No Secuenciales:
             2.6.1.    
Cadenas
             2.6.2.    
Anillos.
     2.7.  
Estructuras Jerárquicas:
            2.7.1.    
Árboles.
            2.7.2.    
Árboles B.
            2.7.3.    
Árboles B+.
            2.7.4.    
Árboles B*.
     2.8.  
Operaciones.

Unidad de Trabajo 9: Estructuras De Datos Externas.

      1.      Introducción.
2.      Conceptos y Definiciones.
      2.1.  
Organización.
      2.2.  
Modo de acceso
3.      
Variable de estado asociada al fichero.
4.      
Operaciones Sobre Registros.
      4.1.  
Consultas
      4.2.  
Actualizaciones
             4.2.1.    
Altas
             4.2.2.    
Bajas
             4.2.3.    
Modificaciones
5.      
Características de los Archivos.
6.      
Clasificación Según Su Uso.
7.      
Organización De Archivos.
      7.1.  
Organización Secuencial.
      7.2.  
Organización Aleatoria o   Directa.
      7.3.  
Organización Secuencial Indexada.
8.      
Operaciones sobre Archivos.
      8.1.  
A nivel interno del Programa
             8.1.1.    
Apertura
             8.1.2.    
Cierre
      8.2.  
A nivel externo del Programa.
             8.2.1.    
Clasificación
             8.2.2.    
Mezcla
             8.2.3.    
Partición.
9.      
Utilización de Archivos.
      9.1.  
Rupturas de Control en Informes
10. 
Implementación mediante C.

  • Anexo: Mysql y C.
  1. Servidor y Cliente de Mysql para Windows.
  2. Administrador remoto para Windows de Mysql.
  3. Entorno SQL remoto para Windows de Mysql.
  4. Librería de Mysql-C.
  5. Mysql - ODBC.
  6. Librería Mysql - ODBC en Visual Studio 6 C++.
  7. Ejemplo de aplicación C y ODBC.
  8. http://www.mysql.com
  9. http://www.mysql-hispano.com
  10. Librería C/C++ ODBC.

 

Unidad de Trabajo 4: Desarrollo de Algoritmos. Programación Secuencial.Ejercicios
Unidad de Trabajo 5: Técnicas de Programación. Programación Modular.Ejercicios
Unidad de Trabajo 7: Estructuras Estáticas de Datos.Ejercicios
Unidad de Trabajo 8: Estructuras Dinámicas de Datos. TDA.Ejercicios
Unidad de Trabajo 9: Estructuras De Datos Externas.Ejercicios