lunes, 24 de noviembre de 2008

Segundo Parcial

Hacer un programa que Maneje lo Siguiente:

1. Un Menu dinamico que permita escoger para dar alta, baja, modiicar, eliminar, buscar cualquier estudiante del curso.

1. que me permita introducir las calificaciones, y pueda modificar, eliminar.

que me permita una consulta por estudiante, ademas de un reporte de todos los estudiantes de la materia

que me permita imprimir el record de cada estudiante.

sábado, 22 de noviembre de 2008

Empleado.bas

' Section 1
CLS
TYPE employeeType
firstname AS STRING * 30
lastname AS STRING * 30
age AS INTEGER
wage AS SINGLE
END TYPE
DIM employee AS employeeType

' Section 2
PRINT "1.) Create new recordset"
PRINT "2.) View existing recordset"
INPUT "Which option? ", selection%

' Section 3
IF selection% = 1 THEN
INPUT "How many employees are in the company? ", numRecords%
recordLen# = LEN(employee)
OPEN "database.dat" FOR RANDOM AS #1 LEN = recordLen#
FOR i% = 1 TO numRecords%
CLS
INPUT "First name: ", employee.firstname
INPUT "Last name: ", employee.lastname
INPUT "Age: ", employee.age
INPUT "Wage: ", employee.wage
PUT #1, , employee
NEXT i%
CLS
CLOSE #1
PRINT "Recordset creation complete"
END
END IF

' Section 4
IF selection% = 2 THEN
recordLen# = LEN(employee)
OPEN "database.dat" FOR RANDOM AS #1 LEN = recordLen#
format$ = "\ \,\ \ ### $$##.##"
PRINT "Last name First name Age Wage "
PRINT "------------------ ------------------ --- -------"
DO WHILE NOT EOF(1)
GET #1, , employee 'Sorry about the length of this line!!!
PRINT USING format$; employee.lastname; employee.firstname; employee.age; employee.wage
LOOP
CLOSE #1
END
END IF

sábado, 8 de noviembre de 2008

pantalla.bas

PALETTE 0, 32
PALETTE 3, 11
PALETTE 4, 8
PALETTE 5, 17
PALETTE 7, 63
PALETTE 10, 4
PALETTE 11, 52
PALETTE 12, 36
PALETTE 13, 38
PALETTE 14, 54
COLOR 15, 3
CLS
COLOR 15, 4
LOCATE 2, 11: PRINT "É"; STRING$(57, "Í"); "»"
LOCATE 3, 11: PRINT "º"; SPACE$(57); "º"
LOCATE 4, 11: PRINT "È"; STRING$(57, "Í"); "¼"
COLOR 14, 4: LOCATE 3, 14
PRINT "A  G  E  N  D  A    S  U  P  E  R    B  A  R  A  T  A"

COLOR 1, 7
LOCATE 7, 20:  PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
LOCATE 8, 20:  PRINT "³  A ... A¤adir nueva persona           ³"
LOCATE 9, 20:  PRINT "³  B ... Borrar persona                 ³"
LOCATE 10, 20: PRINT "³  M ... Modificar persona              ³"
LOCATE 11, 20: PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
LOCATE 12, 20: PRINT "³  N ... Buscar persona por nombre      ³"
LOCATE 13, 20: PRINT "³  D ... Buscar persona por direcci¢n   ³"
LOCATE 14, 20: PRINT "³  T ... Buscar persona por tel‚fono    ³"
LOCATE 15, 20: PRINT "³  E ... Buscar persona por edad        ³"
LOCATE 16, 20: PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
LOCATE 17, 20: PRINT "³  L ... Ver listado de personas        ³"
LOCATE 18, 20: PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
LOCATE 19, 20: PRINT "³  C ... Compactar base de datos        ³"
LOCATE 20, 20: PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
LOCATE 21, 20: PRINT "³  S ... Salir                          ³"
LOCATE 22, 20: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"

COLOR 0, 7
LOCATE 8, 29:   PRINT "A¤adir nueva persona"
LOCATE 9, 29:   PRINT "Borrar persona"
LOCATE 10, 29: PRINT "Modificar persona"
COLOR 10
LOCATE 12, 29: PRINT "Buscar persona por nombre"
LOCATE 13, 29: PRINT "Buscar persona por direcci¢n"
LOCATE 14, 29: PRINT "Buscar persona por tel‚fono"
LOCATE 15, 29: PRINT "Buscar persona por edad"
COLOR 12: LOCATE 17, 29: PRINT "Ver listado de personas"
COLOR 11: LOCATE 19, 29: PRINT "Compactar base de datos"
COLOR 13: LOCATE 21, 29: PRINT "Salir"



COLOR 14, 5: LOCATE 25, 1: PRINT SPACE$(80);
LOCATE 25, 10: PRINT "Curso de Programaci¢n";
COLOR 13: LOCATE 25, 46: PRINT "J.M.G.B.   HECHO EN RONDA";
SLEEP

sábado, 25 de octubre de 2008

abrearchivo

'Abre el archivo que le pasamos como par metro y le asigna un descriptor
'usado FREEFILE que devuelve el pr¢ximo disponible.
'
SUB AbreArchivo (archivo$)

DIM registro AS tipopersona
OPEN archivo$ FOR RANDOM AS FREEFILE LEN = LEN(registro)

END SUB

Compacta.bas

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        
'
'______________________________________________________________________
'         
SUB Compacta
   DIM registro AS tipopersona
   numregS = (LOF(1) / LEN(registro)) 'Calculamos cuantos registros hay

   AbreArchivo "Agenda.tmp" 'Creamos archivo temporal para ir copiando
                            'registros si no est n borrados y quedarnos
                            'solo con los que sirven.
   CLS
   PRINT , "COMPACTAR BASE DE DATOS"
   PRINT
   PRINT "Compactando..."
   PRINT

   n1 = 1 'Contador para recorrer archivo original
   n2 = 1 'Contador para recorrer archivo nuevo
   WHILE n1 <= numregS
      GET #1, n1, registro

      IF registro.nombre <> SPACE$(LEN(registro.nombre)) OR registro.direccion <> SPACE$(LEN(registro.direccion)) OR registro.telefono <> SPACE$(LEN(registro.telefono)) OR registro.edad <> -1 THEN
         'Si el registro no est  vac¡o lo copiamos al nuevo fichero
         PUT #2, n2, registro
         n2 = n2 + 1  'Y aumentamos su contador
      END IF
      n1 = n1 + 1 'aumentamos el contador del fichero original siempre
   WEND
                                         
   CLOSE 'Cerramos LOS DOS archivos

   KILL "Agenda.dat" 'Borramos el archivo viejo
   NAME "Agenda.tmp" AS "Agenda.dat"'Renombramos el temporal como "Agenda.dat"
  
   AbreArchivo "Agenda.dat" 'Abrimos para seguir normalmente con el programa

   'ahora sacamos un mensaje para terminar
   PRINT
   PRINT "La base de datos ha sido compactada"
   SLEEP
END SUB

Segundo Programa PintaMenu.bas


'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...       OYM DOMINICANA
'
'______________________________________________________________________
'         
'Dibuja en la pantalla el t¡tulo del programa y las opciones del men£
'
SUB PintaMenu

CLS
PRINT
PRINT , , "* * * * * * * * * * * *"
PRINT , , "* AGENDA ESTUDIANTE   *"
PRINT , , "*                     *"
PRINT , , "* INSTRUCTIVO O&M     *"
PRINT , , "* * * * * * * * * * * *"
PRINT
PRINT
PRINT , "A ... A¤adir nueva persona"
PRINT , "B ... Borrar persona"
PRINT , "M ... Modificar persona"
PRINT
PRINT , "N ... Buscar persona por nombre"
PRINT , "D ... Buscar persona por direcci¢n"
PRINT , "T ... Buscar persona por tel‚fono"
PRINT , "E ... Buscar persona por edad"
PRINT
PRINT , "L ... Ver listado de personas"
PRINT
PRINT , "C ... Compactar base de datos"
PRINT
PRINT , "S ... Salir"


END SUB

Primer Programa del Menu Agenda.bas QBasic

'
'  © PROGRAMA HECHO PARA PARTE INSTRUCTIVA
'
'
'  Procedente de...        UNIVERSIDAD O&M DOMINICANA
'
'______________________________________________________________________
'         
DECLARE SUB Compacta ()
DECLARE SUB AbreArchivo (archivo$)
DECLARE SUB Modifica ()
DECLARE SUB Listado ()
DECLARE SUB BuscaDireccion ()
DECLARE SUB BuscaTelefono ()
DECLARE SUB BuscaEdad ()
DECLARE SUB Borra ()
DECLARE SUB Nuevo ()
DECLARE SUB BuscaNombre ()
DECLARE SUB PintaMenu ()

TYPE tipopersona
   nombre AS STRING * 20
   direccion AS STRING * 30
   telefono AS STRING * 9
   edad AS INTEGER
END TYPE


AbreArchivo "Agenda.dat"

DO
   PintaMenu
   WHILE INKEY$ <> "": WEND 'Para limpiar INKEY$
   DO
      tecla$ = UCASE$(INKEY$)'Transforma a may£sculas para evitar confusiones
   LOOP WHILE tecla$ = ""    'Espera activa mientras no pulsemos una tecla

   SELECT CASE tecla$
      CASE "A": Nuevo
      CASE "B": Borra
      CASE "M": Modifica
      CASE "N": BuscaNombre
      CASE "D": BuscaDireccion
      CASE "T": BuscaTelefono
      CASE "E": BuscaEdad
      CASE "L": Listado
      CASE "C": Compacta
      CASE "S"  'Aqui no hacemos nada poque ya vamos a salir del bucle
      CASE ELSE: BEEP 'Toque de timbre si puls¢ tecla no v lida
   END SELECT
LOOP UNTIL tecla$ = "S"

CLOSE #1

sábado, 18 de octubre de 2008

Manual QBasic

http://nutriserver.com/Cursos/Informatica_Aplicada/QBASIC/QBASIC_IMC.html

sábado, 4 de octubre de 2008

Ejecicios

Para los siguientes problemas, determine los objetos conocidos, desconocidos, las condiciones y el tipo de problema. Para aquellos problemas algorítmicos desarrolle adicionalmente un algoritmo que permita encontrar una solución.

1. Se tienen dos jarras (A y B) de capacidades 3 y 7 litros respectivamente, sobre las cuales se pueden efectuar las siguientes acciones: Llenar totalmente cualquiera de las dos jarras, vaciar una de las dos jarras en la otra hasta que la jarra origen este vacía o hasta que la jarra destino este llena y vaciar el contenido de una jarra (este llena o no) en un sifón. ¿Cómo se puede dejar en la jarra A un solo litro utilizando solamente las anteriores acciones?.

2. Es cierta o no es cierta la siguiente frase: “Esta frase no es cierta”.

3. Si Juan tiene el doble de la edad de Pedro y la suma de las edades de los dos es 33 años, ¿Cuántos años tiene Juan y cuántos tiene Pedro?.

4. ¿Qué figura se forma al unir los puntos marcados con números consecutivos con una línea?

5. Calcular de manera exacta el número de átomos del universo.

6. Calcular el costo de una serie de productos comprados en el supermercado.

7. Determinar quien es el mejor jugador de fútbol de toda la historia.

8. Construir un barco de papel.

EJERCICIOS DE ALGORITMOS

EJERCICIOS DE ALGORITMOS

Para los siguientes problemas dar un algoritmo y si es posible una ejecución del mismo.

1. Buscar en el directorio telefónico, el número de:

a. José González Pérez
b. Pedro Gómez Bernal.
c. Escribir un algoritmo que sirva para buscar a cualquier persona.

2. Calcular el número de días entre las fechas:

a. Enero 17 de 1972 y Julio 20 de 1973
b. Febrero 2 de 1948 y Agosto 11 de 1966
c. Escribir un algoritmo que sirva para calcular la cantidad de días entre cualquier dos fechas.

3. Solicitar en préstamo algún libro de una biblioteca.

4. haga una caja de cartón con tapa de:

a. 20 cm de largo, por 10 cm de ancho y 5 cm de alto.
b. 10 cm de largo, por 30 cm de ancho y 15 cm de alto.
c. Escribir un algoritmo que sirva para construir una caja de cartón con tapa de cualquier tamaño.

5. Construir un avión de papel.

6. Calcular manualmente la división de cualquier par de números naturales. El resultado también debe ser un número natural. Escribir un algoritmo para calcular el residuo de la división.

7. Un juego muy famoso entre dos niños es el de adivina mi número,el cual consiste en que cada niño trata de adivinar el número pensado por el otro niño. Dicho número generalmente está entre 1 y 100. Las reglas del juego son las siguientes:

a. Cada niño posee un turno en el que trata de averiguar el número del otro.
b. En su turno el primer niño pregunta si un número que dice es el pensado por el segundo.
c. Si el número que ha dicho el primer niño es el que pensó el segundo, este último debe informarle al primero que ganó.
d. Si el número no es el segundo niño debe decir si su número pensado es menor o mayor al que el primer niño dijo.
e. Luego el segundo niño tiene su turno y de esta manera se van intercalando hasta que alguno de los dos gane.Desarrollar un algoritmo para jugar adivina mi número.

8. Una balanza se encuentra en equilibrio cuando el producto de la carga aplicada sobre el brazo derecho por la longitud de este brazo, es igual al producto de la carga aplicada sobre el brazo izquierdo por la longitud de este otro brazo. Determinar si la balanza se encuentra en equilibrio si:

a. La longitud del brazo izquierdo es3 m, la del derecho es 2 m, la carga aplicada al brazo izquierdo es 5 Kg y la carga aplicada al derecho es 7 Kg.
b. La longitud del brazo izquierdo es4 m, la del derecho es 2 m, la carga aplicada al brazo izquierdo es 4 Kg y la carga aplicada al derecho es 4 Kg.
c. Desarrollar un algoritmo que sirva para cualquier conjunto de valores para las longitudes de los brazos y las cargas aplicadas.

sábado, 27 de septiembre de 2008

Metodologia de la Programacion( Un Programa)

http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html

Resolver Los Siguientes Algoritmos

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?




. 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.


Ejemplo

3. PROBLEMA: Realizar la suma de los números 2448 y 5746.

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




Tipos de Datos e Indentificadores

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.

En esta sección conoceremos los otros objetos que se útilizan en los programas, a saber, las variables y las constantes; además conoceremos también lo que es un identificador y para que se útiliza.

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.

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:

Operador

Significado

+

Suma

-

Resta

*

Multiplicación

/

División

^

Exponenciación

Mod

Mó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:

Operador

Significado

<

Menor que

>

Mayor que

<=

Menor o igual que

>=

Mayor o igual que

=

Igual a

<>

Distinto a, diferente de

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,mod

Divisió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.

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

Preceden

Capítulo 2
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

Estos son los temas a tratar:

Fases para la Resolución de Problemas (Segunda Parte)

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.

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.

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.

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.

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.

Fases para la Resolución de Problemas

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.

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

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..