Вы находитесь на странице: 1из 8

2

Es preciso servirse de todas las ayudas del entendimiento, de la imaginacin, de los sentidos y de la memoria, bien sea para tener una intuicin distinta de las proposiciones simples, bien sea para establecer entre las cosas que uno busca y las que uno sabe una vinculacin adecuada que permita reconocerlas, bien sea para encontrar las cosas que deben ser comparadas entre s, sin descuidar ningn recurso del ingenio o industria humanos. Ren Descartes Reglas para la direccin de la mente Regla XII - 1628.

2.1 Concepto de Variable


Imagine una calculadora que slo es capaz de realizar las cuatro operaciones aritmticas, nada ms. Cuando se utiliza una calculadora como sta para calcular una expresin como 256-24+169, no hay problema alguno en llevar a cabo este clculo, pero si se pretende calcular una expresin como la siguiente:
1 59 4 + + 3 14 3

, entonces se

hace necesario utilizar adicionalmente papel y lpiz para almacenar temporalmente los resultados parciales ya que, por ejemplo, el resultado de la operacin
1 3

se pierde en

este inconveniente, las calculadoras poseen una memoria donde se pueden almacenar estos resultados parciales para disponer de ellos cuando sean necesarios y as poder calcular frmulas ms complejas sin hacer uso de otro instrumento adicional. Por supuesto, en la medida que las calculadoras proveen un nmero cada vez mayor de operaciones, tambin lo hacen en una mayor cantidad de memorias; ahora bien, si se considera un computador como una calculadora muy compleja, es razonable suponer entonces que ste tendr un nmero elevado de estas memorias. En un contexto de programacin, estas memorias reciben el nombre de variables, y son los elementos fundamentales de operacin de un programa

el momento de calcular la operacin 5-9. Para solucionar

Pag. 2-2

Cap.2: El Mtodo Algortmico

ya que ellas albergan los datos para los cuales el programa est elaborado. En computacin, el concepto de variable es similar al mismo concepto en lgebra: un nombre que representa un valor que puede cambiar en el tiempo. En computacin, sin embargo, el concepto va ms all para incluir entonces la idea expresada en el prrafo anterior acerca de una localidad de memoria que se utiliza para el almacenamiento temporal de valores. Sabiendo esto, se puede definir una variable como una localidad especfica de la memoria del computador, identificada con un nombre y que almacena un dato. Una vez que se hayan diseado algunos programas, se podr observar claramente que stos operan sobre un grupo de datos para producir un grupo de resultados y que todos ellos estarn ubicados en variables, incluso se podr afirmar que programar no es otra cosa que manipular variables. Si la afirmacin anterior es cierta, entonces es razonable concluir que el desarrollo de un programa debe comenzar con la representacin de los elementos del problema como variables. Esta idea, as como otras relativas a los distintos tipos de datos a manipular, sern desarrolladas en los prximos captulos.

produce un resultado o, lo que es lo mismo, resuelve un problema. Segn esta definicin se puede afirmar que cosas como las recetas de cocina, los manuales de operaciones, las normas de clculo y las instrucciones para manejo de aparatos son procedimientos. Pues bien, un algoritmo es un procedimiento que rene las siguientes caractersticas: debe ser definido: es decir, sin importar el nmero de veces que se aplique en las mismas condiciones, siempre se obtendr el mismo resultado; debe ser preciso: es decir, no deber sembrar duda alguna sobre el orden de ejecucin de cada uno de los pasos y sobre la naturaleza y el propsito de cada uno de ellos;

debe ser finito: es decir, el algoritmo deber producir un resultado en un nmero finito de pasos. Y por qu estas caractersticas? Pues precisamente porque los pasos de un algoritmo deben ser susceptibles de ser traducidos a un lenguaje creado para hacer trabajar un computador y ste, dada su naturaleza lgicoelectrnica, no acepta ambigedades en ninguna de las instrucciones que se le dan ni en su orden.
Existen excepciones aparentes a estas reglas: una de ellas ocurre cuando un algoritmo lleva a cabo operaciones que involucran nmeros aleatorios. Otra ocurre cuando es imposible en trminos prcticos obtener una solucin exacta a un problema a partir de un algoritmo, obligando al programador a utilizar soluciones aproximadas.

A PROPSITO

2.2 Resolucin de problemas.


Debido a que un estudiante ha resuelto una gran cantidad de problemas, sera razonable plantearle las siguientes preguntas: Cmo los resolvi? Utiliz algn mtodo general para resolverlos? El mtodo utilizado presenta esquemas que siempre estn en su mente cuando resuelve los problemas? Utiliz el mismo mtodo para resolver problemas de distintas asignaturas o de distinta naturaleza? Probablemente haya utilizado un mtodo cuyo nombre no conoce o probablemente haya utilizado elementos de varios mtodos para resolver un solo problema. En el presente captulo se presenta el Mtodo Algortmico cuyo nombre responde al hecho de que precisamente est enfocado en producir un Algoritmo. Por ello, para entender el mtodo hay que entender qu es un algoritmo.

2.4 Mtodo Algortmico.


El mtodo algortmico est concebido para resolver no slo un problema particular sino para proporcionar un instrumento que permita resolver variaciones del problema original, del mismo modo que una frmula no slo devuelve un valor para un grupo de variables sino tambin para todos los valores que puedan tomar esas variables. Este mtodo consiste en la aplicacin de los siguientes pasos: Anlisis del problema. Diseo del algoritmo. Codificacin.

2.3 Algoritmos.
Es bueno aclarar primero que un algoritmo es importante en el estudio de la programacin porque, si bien el mtodo algortmico produce algoritmos, el presente curso pretende, entre otras cosas, que el estudiante produzca programas de computacin. Y un programa de computacin no es otra cosa que la expresin en lenguaje de programacin de un algoritmo, por lo que el proceso de resolucin de problemas con el computador comienza con el desarrollo de algoritmos. Tambin es bueno definir primero lo que es un procedimiento o una receta: un conjunto de instrucciones o de tareas que ejecutados siguiendo un orden preestablecido o establecido por el mismo procedimiento,
Programacin con Delphi

2.4.1

Anlisis del problema.

Este paso consiste en identificar muy claramente los elementos que componen el problema, es decir: Las incgnitas, porque son precisamente, el propsito del problema. En ocasiones no son fcilmente identificables; en estos casos, no se debe seguir adelante hasta haber resuelto con toda claridad este paso. Los datos, porque son los elementos que se deben manipular para hallar respuesta a las incgnitas.

Ing. Jos Ricardo Vargas

Cap.2: El Mtodo Algortmico

Pag. 2-3

Las restricciones, porque indicando lo que no se debe hacer o lo que no se debe aceptar, limitan el conjunto de caminos para resolver el problema, representando con ms fiabilidad el universo, ayudando a su solucin y

Las frmulas, porque siendo las expresiones con los que se manipulan los datos para resolver las incgnitas, indican el rumbo que debe tomar el desarrollo del algoritmo. La determinacin de las mismas puede requerir de deduccin o de investigacin extra de informacin, lo cual se traduce en el gasto de un porcentaje, a veces alto, del tiempo de resolucin del problema. En otras palabras, se puede decir que en esta etapa se determina qu es lo que debe hacer el algoritmo, a partir de qu datos y bajo qu condiciones.

un estado de nimo adecuado y el disfrute de una buena salud facilita enormemente el desarrollo de los procesos mentales. Cuando se presenta el caso de un problema complicado, entonces el individuo debe echar mano de recursos que despejen el camino entre las ideas en su forma mental y su expresin, con miras a construir el algoritmo. Para ello se aconseja el uso de dibujos, diagramas, grficos y frmulas as como de tcnicas, individuales o colectivas, para el desarrollo de ideas, tales como el brainstorming y los mapas mentales, con el propsito de ir y volver de la parte anterior para producir ideas cada vez ms claras y desarrollar cada uno de los pasos que componen el algoritmo.
Durante el desarrollo del algoritmo, el programador debe pensar tambin en el modo ms conveniente de organizar variables ya que, como se ver ms adelante, la mayora de los problemas exige la manipulacin de una gran variedad y una gran cantidad de stas. Para facilitar esta tarea, los lenguajes ofrecen estructuras de datos que permiten agrupar variables segn su naturaleza o segn la conveniencia que stos brinden en cada problema. Por ello, el diseo de un buen algoritmo implica la creacin de un buen conjunto de instrucciones y un buen conjunto de estructuras de datos.

A PROPSITO

2.4.2

Diseo del algoritmo

Este gran paso se ejecuta a travs de las siguientes etapas: Una primera etapa se lleva a cabo a un nivel puramente mental, ya que de la mente nacer un bosquejo general del conjunto de pasos que resolvern el problema o del rumbo que debern tomar las siguientes acciones, todo ello como resultado de una serie de fenmenos en los que intervienen la memoria, las capacidades creativas y las asociaciones mentales que cada individuo haya construido entre los elementos del problema y el resto del universo. El individuo le ordena o le pide a la mente ayuda para resolver un problema y sta responde en la medida de sus posibilidades y de un modo sorprendentemente mgico con una idea. Una segunda etapa consiste en hacer esa idea lo suficientemente clara y definida para formar un primer conjunto de pasos de tal manera que stos puedan ser expresados, bien sea con palabras, dibujos, smbolos, etc. y, como se ver ms adelante, mediante pseudocdigo o mediante diagramas de flujo. Esta tarea puede ser complicada si se torna difcil transformar la idea en algo suficientemente claro y preciso o si el problema a resolver tambin es complicado. Si se presenta el primer caso, recuerde que la claridad de esa idea depende de muchos factores, entre los que se mencionan: a) la cantidad y calidad de informacin que sobre ese problema o problemas similares y sus componentes hayan en su mente y lo accesible que sta sea en un momento dado, b) el entrenamiento recibido y realizado por el individuo, ya que ste hace que se desarrolle un mayor nmero de asociaciones recurrentes, facilitando a la mente la formacin de la idea al tener mayor intuicin sobre los elementos del problema, c) el estado de salud y nimo del individuo, ya que est demostrado que una actitud mental positiva,

Una tercera etapa es necesaria cuando la complejidad del problema es tal que para resolverlo, ste debe ser dividido en mdulos de complejidad menor que el problema original. Entonces cada mdulo se transforma en un nuevo problema cuya solucin se encontrara por la aplicacin del mismo mtodo aplicado al problema original anlisis del problema, procesos mentales, etc. Cabe hacer notar que cada mdulo sera tambin susceptible de ser subdividido en mdulos ms simples. Este proceso se conoce como proceso de descomposiciones sucesivas, refinamientos sucesivos, diseo descendente, diseo top-down o diseo modular y sus nombres derivan del hecho de que en cada refinamiento, el problema original quedar dividido en un nmero cada vez mayor de mdulos de solucin ms sencilla. Y hasta cundo se realizan esos refinamientos? Hasta que se cuenta con un algoritmo cuyos pasos son fcilmente transformables en instrucciones de un lenguaje de computacin, sin perder de vista las caractersticas de un algoritmo: definicin, precisin y finitud.

Ejemplo 2-1
Examnese el siguiente problema: Dadas dos rectas por las coordenadas de dos de sus puntos, ambas rectas inclinadas, elabore un algoritmo para determinar si esas rectas se interceptan y, si lo hacen, determine las coordenadas del punto de interseccin. Primera parte: Anlisis del problema.
DATOS ........ Las dos rectas coordenadas de dados dos por de las sus

Programacin con Delphi

Ing. Jos Ricardo Vargas

Pag. 2-4
puntos. Llmense A y B a las dos rectas, (x1,y1) y (x2,y2) las coordenadas de los puntos de la recta A y (x3,y3) y (x4,y4) las coordenadas de los puntos de la recta B. INCGNITAS ... Las coordenadas llamadas (xint,yint) del punto de interseccin de las dos rectas si stas se interceptan o un mensaje que indique que no se interceptan si no lo hacen. RESTRICCIONES Dado que el enunciado establece que las rectas deben ser inclinadas, entonces los datos deben cumplir con las siguientes condiciones: x1<>x2, y1<>y2, x3<>x4 y y3<>y4. Aunque no se especifica en el enunciado, es obviamente necesario verificar tambin que las rectas no sean paralelas. FRMULAS ..... Si se denota a la pendiente del segmento A como PA y a la pendiente del segmento B como PB, entonces se tiene que: Abscisa del punto de interseccin:
xint = y3 y1 + PAx1 PBx3 (PA PB)

Cap.2: El Mtodo Algortmico Observe ahora la particularidad de algunos pasos como si se cumple que ... entonces... o imprima... o vaya al paso... . Ms adelante se ver que existen tipos de pasos o instrucciones con caractersticas propias que permiten clasificarlos segn la tarea que ejecutan. Tambin cabe destacar en este ejemplo, que el mismo no es lo suficientemente complejo como para que el algoritmo sea subdividido en mdulos, pero ste no ser siempre el caso.
Recuerde que se pretende que al final, el problema sea resuelto por un computador. De ah la existencia de instrucciones como lea, imprima, etc.

A PROPSITO

2.4.3

Codificacin

Ordenada del interseccin:

punto

de

yint = PA(xint-x1)+y1

Consiste en escribir el algoritmo desarrollado utilizando los elementos de un lenguaje de programacin, con la finalidad de transformarlo en un programa. Este tema ser cubierto extensamente en los prximos captulos. Durante el desarrollo del algoritmo, es conveniente representarlo mediante alguna herramienta independiente del lenguaje de programacin que se planee utilizar; esto le brinda al programador una serie de ventajas, como son las siguientes: primero, el algoritmo puede ser escrito posteriormente en varios lenguajes de programacin; segundo, el algoritmo puede ser codificado por una persona o un equipo diferentes al que lo dise, y tercero, se desarrolla en el programador el hbito de trabajar ordenadamente. A continuacin se presentan algunas de ellas.

Observe que durante el anlisis no solo se identifican los elementos del problema sino que tambin se les asigna un nombre a cada uno de ellos, es decir, son representados como variables. Esto es sumamente importante debido a que, como se mencion anteriormente, ayuda a la manipulacin de los mismos. Segunda parte: Desarrollo del algoritmo.
IDEA: Verificar los datos de entrada, calcular las pendientes y verificarlas y calcular luego las coordenadas del punto de interseccin. PASO 1 . Designar las coordenadas de los puntos extremos de los segmentos como x1, x2, x3, x4, y1, y2, y3 y y4. PASO 2 . Si se cumple que x1=x2 x3=x4 y1=y2 y3=y4, entonces imprima el mensaje Datos incorrectos y vuelva al paso 1. PASO 3 . Calcular las pendientes de las rectas A y B mediante las frmulas PA=(y2y1)/(x2-x1) y PB=(y4-y3)/(x4-x3). PASO 4 . Si se cumple que |PA|=|PB|, entonces imprima el mensaje Rectas paralelas y vaya al paso 7. PASO 5 . Calcular las coordenadas del punto de interseccin de las rectas mediante las frmulas: xint = (y3-y1+PAx1-PBx3)/(PA-PB) yint = PA(xint-x1)+y1 PASO 6 . Imprima xint y yint. PASO 7 . Fin.

2.5

Pseudocdigo.

Expresar un algoritmo mediante pseudocdigo consiste en expresar cada uno de los pasos con palabras y smbolos escritos del lenguaje comn, como se mostr en el ejemplo anterior, de tal manera que el mismo pueda ser reproducido por cualquier persona que conozca por lo menos dichas palabras y el significado de los smbolos. An cuando estos pasos sern luego ejecutados secuencialmente, se recomienda enumerarlos ya que el orden de ejecucin de los mismos puede alterarse por instruccin de alguno de ellos.

Ejemplo 2-2
Examnese el siguiente problema: Dado un nmero entero positivo, elaborar un algoritmo para determinar si el nmero dado es primo. Primera parte: Anlisis del problema.
DATOS ...........El nmero dado, que se llamar N INCGNITAS ......Una caracterstica del nmero: si es primo o no. RESTRICCIONES ...El nmero N deber cumplir con la condicin de ser entero ya que el concepto de nmero primo se aplica slo a los nmeros enteros. FRMULAS ........El concepto de nmero primo es un concepto relativo a divisibilidad de nmeros. Un

Programacin con Delphi

Ing. Jos Ricardo Vargas

Cap.2: El Mtodo Algortmico


nmero N es divisible entre otro nmero B si la divisin N/B produce un cociente entero.

Pag. 2-5

Segunda parte: Desarrollo del algoritmo.


IDEA: Un numero ser primo slo si es divisible entre si mismo y la unidad. Entonces, para verificar si el nmero N es primo, bastar comprobar que no es divisible entre algn nmero situado entre 2 y N-1. PASO 1.. Designar el nmero como N. PASO 2.. Si el nmero N no es entero o es negativo, repetir el paso 1. PASO 3.. Llame B a una variable y asgnele el valor 2. PASO 4.. Compruebe si N es divisible entre B. Si lo es, entonces imprima el mensaje NO es primo y vaya al paso 8. PASO 5.. Incremente el valor de B en uno. PASO 6.. Si B es menor que N, vaya al paso 4; si no, siga con el siguiente paso. PASO 7.. Imprima el mensaje SI es primo. PASO 8.. Fin.

instrucciones. Esta representacin permite al programador reconocer rpidamente y manipular grficamente tanto esquemas de instrucciones como la secuencia de ejecucin de estas, de modo que la concepcin o la modificacin de un grupo de ellas se hace ms fcil. Tambin adapta al programador novato al modo de desarrollar los algoritmos tomando en consideracin el uso de pasos fcilmente adaptables a instrucciones en lenguaje de computacin. Cuando se trabaja con diagramas de flujo y con lenguajes de programacin, se acostumbra utilizar el trmino instruccin en lugar del trmino paso debido a que una instruccin conlleva la idea de una orden dada al computador para que ste ejecute una tarea. Como se mencion al final del ejemplo 2.1, existen tipos de instrucciones, cada uno de estos con caractersticas que permiten clasificarlos segn la labor realizan. En la siguiente tabla se puede observar no slo algunos de estos tipos, sino tambin del smbolo correspondiente.

2.6

Comprobacin manual de algoritmos: Corrida en fro.

Terminal. Indica el inicio, el fin o una parada del programa. Instruccin simple. Usualmente usado para representar clculos. Operacin general de entrada/salida de datos y resultados. Invocacin de un subprograma. Instruccin de seleccin. Bifurca la secuencia de instrucciones segn el resultado de una seleccin. Instruccin de Iteracin. Permite la repeticin controlada de un grupo de instrucciones. Lneas de flujo. Indican la secuencia de ejecucin de las instrucciones. Conectores de secuencia. Permiten seguir la secuencia de instrucciones entre puntos distantes sin el uso de flechas.

Esta tarea consiste en representar por escrito el comportamiento de los elementos involucrados en el algoritmo durante una ejecucin del mismo con valores de entrada cuyo resultado se conozca de antemano, con el propsito de verificar si el algoritmo funciona, y si no funciona, entonces como una forma de ubicar los pasos del mismo que contengan errores. Una prctica comn de realizar una corrida en fro utiliza una tabla donde se escriben todos los valores tomados por estos elementos y donde se escriben los resultados finales del algoritmo.

Ejemplo 2-3
Examine los valores que toma la variable B en las siguientes tablas que representan las corridas en fro del algoritmo del ejemplo 2-2: la primera con un nmero primo y la segunda con un nmero que no lo es, y observe en la segunda tabla que, apenas se verifica que el nmero es divisible entre 2, se imprime el mensaje NO ES PRIMO y termina la ejecucin del algoritmo.

N 7

B 2 3 4 5 6 7

Salida SI es primo

N 9

B 2 3

Salida NO es primo

Tabla 2-1. Simbologa bsica de los diagramas de flujo.

2.7

Diagrama de Flujo.

Un diagrama de flujo (flowchart) es la expresin de un algoritmo en la que se utiliza un conjunto de smbolos universalmente reconocidos y aceptados, cuya forma se corresponde con tipos de pasos algortmicos o
Programacin con Delphi

Por supuesto, los smbolos mostrados en la tabla anterior no son todos los smbolos utilizados para elaborar diagramas de flujo, pero son suficientes para los propsitos de un curso bsico de programacin. Existen normas como la norma ISO 1028-1973 y versiones en distintos pases de la simbologa general que incluyen
Ing. Jos Ricardo Vargas

Pag. 2-6

Cap.2: El Mtodo Algortmico

smbolos especficos para manejo de accesorios o para operaciones que estn implementadas slo en algunos lenguajes de programacin e incluso en algunos sistemas operativos. Estas normas no slo especifican la simbologa sino tambin la gramtica de los diagramas de flujo, la cual tambin sufre de variaciones menores segn el lugar donde se apliquen, pero cuyo resumen, que se muestra a continuacin, ha sido aceptado por la mayora de los organismos y las empresas involucradas en el uso de estos: El flujo de ejecucin de instrucciones estar indicado nicamente por flechas y conectores de flujo.

Todo smbolo tiene al menos una flecha de llegada y al menos una flecha de salida, con excepcin de los bloques terminales y los conectores de flujo. El flujo de ejecucin de instrucciones ser preferiblemente de arriba abajo y de izquierda a derecha. Slo habr un smbolo de inicio y un smbolo de fin de programa, pudiendo haber varios de parada del programa. Slo los bloques de seleccin podrn tener varias flechas de salida.

Ejemplo 2-4
Observe a continuacin el diagrama de flujo correspondiente al problema del ejemplo 2.2, el cual muestra adems, las instrucciones correspondientes a los pasos desarrollados en el mencionado ejemplo.
INICIO

Leer N

PASO 1:

Designar el nmero como N.

no

N>0 y N entero? si B 2

PASO 2:

Si el nmero N no es entero o es negativo, repetir el paso 1. Llame B a una variable y asgnele el valor 2.

PASO 3:

N es divisible entre B? no B B +1

si

PASO 4:

Compruebe si N es divisible entre B. Si lo es, entonces imprima el mensaje NO es primo y vaya al paso 8.

Imprimir "No es primo"

PASO 5:
si B < N? no Imprimir "Si es primo"

Incremente el valor de B en uno. Si B es menor que N, vaya al paso 4.

PASO 6:

PASO 7:

Imprima el mensaje SI es primo.

FIN

PASO 8:

Fin.

De nuevo, este resumen es suficiente para un curso bsico de programacin. Observe que tanto los smbolos como las normas son pocas y sencillas, razn que hace a los diagramas de flujo una herramienta sumamente fcil de aprender y de gran ayuda para comprender los conceptos de programacin que se vern en los prximos
Programacin con Delphi

captulos. An cuando existen varias formas de representacin de algoritmos, el diagrama de flujo se ha destacado como una herramienta conveniente para facilitar el proceso de transformacin de ideas en instrucciones debido a la facilidad con que el cerebro manipula objetos grficos en lugar de palabras.
Ing. Jos Ricardo Vargas

Cap. 2: El Mtodo Algortmico

Pag. 2-7

Igualmente se ha destacado como un mtodo importante para documentar procesos y para transmitir instrucciones entre programadores debido a su independencia de los lenguajes de programacin. En los prximos captulos se expondrn los elementos de construccin de programas y se utilizar el diagrama de flujo como herramienta til en el inicio del proceso de desarrollo de habilidades para construir algoritmos y para sembrar en la mente del estudiante los procesos bsicos de programacin.

Preguntas de repaso
1. Qu es, en programacin, una variable? Tiene sta el mismo significado que en lgebra? 2. Cree usted que un programa puede procesar un valor que no est almacenado en una variable? 3. Qu es un procedimiento? Qu es una receta? Qu es un algoritmo? Puede considerarse el conjunto de los algoritmos como un subconjunto de los procedimientos? 4. Cules son las caractersticas de un algoritmo? Cree usted que un algoritmo sea slo para construir programas de computacin? 5. Cuntos y cules son los pasos del Mtodo Algortmico? Describa brevemente cada uno de ellos. 6. Puede afirmarse que el anlisis de un problema se reduce a un proceso de identificacin de elementos? Por qu? 7. En qu consiste el diseo de un algoritmo? En cuntas etapas se lleva a cabo? Una vez diseado, qu paso sigue? 8. Cmo cree usted que influye el entrenamiento del programador en su habilidad para disear algoritmos? 9. Qu es brainstorming? Qu son los mapas mentales? Qu otras tcnicas de ayuda para resolucin de problemas conoce usted? Cree usted que todas estas tcnicas son individuales o de grupo? 10. Qu son las estructuras de datos? Cmo influyen en el diseo de un algoritmo? 11. En qu consiste el proceso de descomposiciones sucesivas? Es siempre necesario aplicarlo al diseo de un algoritmo? 12. Cree usted que, una vez codificado un algoritmo, ha terminado el proceso de resolucin de un problema? Explique. 13. Qu es pseudocdigo? Por qu es til representando algoritmos? 14. Es obligatoria la numeracin de los pasos en un pseudocdigo? Si no, cmo se garantiza la ejecucin secuencial de los pasos? 15. Qu es corrida en fro? Por qu se dice que sta es una comprobacin manual? Cmo cree usted que se

ubican errores en un algoritmo mediante la corrida en fro? 16. Qu es un diagrama de flujo? De qu est formado? Describa brevemente cmo se construye un diagrama de flujo. 17. Por qu hay smbolos distintos en un diagrama de flujo? Describa brevemente el significado de cada smbolo. 18. De qu maneras se representa el flujo de ejecucin de instrucciones en un diagrama de flujo? 19. Cree usted que una corrida en fro tambin sirve para comprobar un diagrama de flujo? 20. Cules son las cualidades que hacen til a un diagrama de flujo?

Problemas propuestos
1. Escribir procedimientos o algoritmos para llevar a cabo las siguientes tareas. Diga en cada caso si se trata de un algoritmo o de un procedimiento: Sacar la cdula de identidad Organizar una fiesta de cumpleaos Pintar su casa o apartamento Construir una casa Calcular el punto medio de un segmento de recta conociendo las coordenadas de los extremos. Graficar una funcin Preparar una pizza Reparar la grifera de un lavamanos Redactar una carta de presentacin comercial. Redactar el Curriculum Vitae. Cambiar un caucho. Elaborar un informe de inventario. Jugar a la vieja. Jugar al billar. Jugar ajedrez. Jugar Pker. 2. Dado un tringulo por las coordenadas de sus vrtices, cmo se averigua si en su interior existen puntos con coordenadas enteras? 3. Dados dos puntos en el plano por sus coordenadas (x1, y1) y (x2, y2), cmo se escribe la ecuacin de la recta que pasa por ellos, cul es la longitud del segmento que determinan y cules son las coordenadas del punto medio de dicho segmento. 4. Escriba un algoritmo para calcular el monto a pagar a un trabajador en una semana si se conocen los siguientes datos: las horas normales de trabajo se pagan a 2000 Bs la hora
Ing. Jos Ricardo Vargas

Programacin con Delphi

Pag. 2-8

Cap. 2: El Mtodo Algortmico

las horas de sobretiempo de lunes a viernes se pagan a 3500 Bs/h las horas trabajadas en fin de semana se pagan a 5000 Bs/h 5. Escriba un algoritmo para calcular la nota de un estudiante de programacin, conociendo las notas y los pesos de los exmenes parciales, los qices y los trabajos prcticos, segn las normas del Departamento. 6. El Domingo de Pascua es el primer domingo despus de la primera luna llena posterior al equinoccio de primavera. Cree usted que esta regla es suficientemente precisa para clasificarla como un algoritmo? 7. Desarrolle un algoritmo que, dados tres nmeros enteros que indiquen mes, da y ao de una fecha dada, determine el da de la semana y el da del mes a que corresponde esa fecha. 8. Desarrolle un algoritmo que, dados los componentes de un vector de N dimensiones, encuentre aquel de mayor valor absoluto. 9. Ample el algoritmo anterior para que ordene de mayor a menor los componentes del vector. 10. Escriba un algoritmo para determinar qu es ms conveniente para el comprador de un automvil: 4000$ de inicial y 6000$ luego de transcurridos 6 meses o 6000$ de inicial y 4000$ luego de transcurrido un ao. Suponga un inters simple de 6% anual. 11. Escriba un algoritmo para convertir un nmero representado en una base cualquiera a otra base cualquiera convirtiendo de una base a base diez y de esta a la otra base. Desarrolle primero el algoritmo para nmeros enteros y luego para nmeros reales. 12. Desarrolle un algoritmo para hallar la representacin binaria de un nmero real cualquiera, almacenado como un nmero de tipo Single de la Norma IEEE 754. 13. Dado un sistema triangular de ecuaciones lineales de orden N, desarrolle un algoritmo para resolverlo. Un sistema triangular de ecuaciones es aquel en el que los coeficientes ubicados por debajo de la diagonal principal, son nulos. Como ejemplo, observe el siguiente sistema de orden 4: a1,1x1 + a1,2x2 + a1,3x3 + a1,4x4 a2,2x2 + a2,3x3 + a2,4x4 a3,3x3 + a3,4x4 a4,4x4 = = = = b1 b2 b3 b4

14. A ambas orillas de un ro crecen dos palmeras, una frente a la otra. La altura de una es de X m, y la de la otra, de Y m. La distancia entre sus troncos es de D m. En la copa de cada palmera hay un pjaro. De
Programacin con Delphi

sbito los dos pjaros descubren un pez que aparece en la superficie del agua, entre las palmeras. Los pjaros se lanzan y alcanzan el pez al mismo tiempo. Escriba un algoritmo para averiguar a qu distancia de la palmera mayor apareci el pez. 15. En una plaza hay instalados 5 altavoces distribuidos en dos grupos: uno de ellos consta de dos aparatos y el otro, de tres. La distancia que separa los dos grupos es de X m. Dnde habr que colocarse para que el sonido de ambos grupos se oiga con igual intensidad? 16. Dados tres puntos no colineales en el plano y por sus coordenadas x y y, encontrar las coordenadas del punto que hace que los cuatro formen el cuadriltero menos agudo. 17. Dados tres puntos no colineales en el plano y un nmero real n, encontrar la cantidad mxima de crculos de radio n que caben en el tringulo formado por los puntos dados. 18. Dado un polgono de n lados, encontrar las reas de los cuadrados ms grande y ms pequeo que envuelven al polgono. 19. Dados tres puntos en el espacio por las coordenadas de sus vrtices, encontrar el vector normal a la cara que forman los vrtices. 20. Para graficar una funcin en la pantalla de un computador, se deben convertir las coordenadas reales de los puntos de la grfica en coordenadas de la pantalla. Para ello se deben conocer los valores mximo y mnimo de las abscisas y de las ordenadas de la funcin, as como los valores mximo y mnimo de las coordenadas de los puntos de la pantalla. Una vez conocidos estos datos, se puede llevar a cabo un "mapeo" de los puntos reales de tal modo que el punto con la menor abscisa quede representada en el punto con la menor coordenada de pantalla, igualmente se aplica al punto con mayor abscisa y a los puntos con mayor y menor ordenada. Escriba un algoritmo para implementar este mapeo con el fin de representar en pantalla una funcin matemtica. 21. Escriba un algoritmo para averiguar los movimientos que debe hacer un caballo de ajedrez para recorrer todo un tablero del mismo juego, comenzando en cualquier posicin y sin repetir su ubicacin en alguna casilla. 22. Un tringulo equiltero de lado L se divide mediante la eliminacin de una porcin de su rea igual a tres tringulos equilteros, como se muestra en la siguiente figura, proceso que puede repetirse indefinidamente. Escriba un algoritmo para determinar el rea sombreada luego de N divisiones y estime el rea cuando N tienda a infinito.

Ing. Jos Ricardo Vargas

Вам также может понравиться