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

Metodologa de la Programacin

CAPITULO

La programacin de ordenadores

Un ordenador, en general, slo es capaz de realizar tres operaciones bsicas: 1. Sumar, restar, multiplicar y dividir dos valores numricos. 2. Comparar dos valores (comprobar si son iguales, si el primero es mayor que el segundo, etc; estos valores pueden ser numricos o alfabticos). 3. Almacenar o recuperar informacin. Con estas pocas operaciones utilizadas y combinadas de forma adecuada, mediante lo que llamamos programa de ordenador, se pueden llegar a realizar tareas increblemente complejas que aporten la solucin a un determinado problema, ya sea de gestin, tcnico o de cualquier otro tipo. La potencia de clculo de un ordenador se deriva de las caractersticas fsicas que posee: Rapidez, Precisin y Memoria. Nuestro objetivo es, para un problema dado, disear una solucin que pueda ser realizada por un ordenador. Para ello necesitaremos, en primer lugar, un lenguaje o notacin para expresar la solucin obtenida. Tal solucin deber estar adaptada a las particularidades del ordenador, aunque en una primera fase, para su diseo, podremos utilizar una notacin intermedia entre el lenguaje natural y el del ordenador; pero posteriormente, ser preciso escribirla en un lenguaje comprensible por la mquina, como, por ejemplo, en VISUAL BASIC.

-1-

Metodologa de la Programacin

Fases del diseo y puesta a punto de un programa


El proceso que se sigue desde el planteamiento de un problema, hasta que se tiene una solucin instalada en el ordenador y lista para su ejecucin, se compone de varias fases agrupadas en dos bloques bien diferenciados.

Diseo del programa


Se engloban en este bloque las fases correspondientes a la creacin del programa.

-2-

Metodologa de la Programacin

INICIO

SW = 0 A CU = 0 LEER NUM

NUM <> 3 NO

S I

FIN NOT A S 1 2 ELSE

SW = 1 SW = 1 I = -1 I = -1 I=I+1 I=I+1 LEER NOT A S(I) ACU = A CU + NOT A S(I) NO I >= 9 NO S I I >= 9 S I E SCRIBIR A CU / 10

ES CRIBIR OPCION INCORRECT A

A CU = 0

E SCRIB IR "INT RODUCIR A NT E S LAS NOT AS "

SW = 0

LEER OP CION

-3-

Metodologa de la Programacin

Figura 1 Fase de anlisis Consiste en el examen y descripcin detallada de los siguientes aspectos relativos al problema: Equipo a utilizar (ordenador, perifricos, soportes, material auxiliar, etc.). Personal informtico. Estudio de los datos de entrada (INPUT). Estudio de los datos de salida o resultados (OUTPUT). Relacin entre la salida y la entrada. Descomposicin del problema en mdulos.

El resultado de esta fase es lo que se denomina especificacin del problema, formada por el conjunto de documentos elaborados para los aspectos citados. Fase de programacin Consiste en el diseo de la solucin al problema planteado en forma de algoritmo. Se debe abordar de forma sistemtica, esto es, aplicando explcitamente un conjunto de tcnicas, como son las de programacin estructurada y diseo descendente. El resultado es un algoritmo o descripcin del conjunto de acciones que debern ser realizadas por el ordenador. Para su representacin se utilizan diferentes notaciones como ordinogramas, pseudocdigos, etc. Fase de codificacin En esta fase se transcribe el algoritmo resultante de la fase anterior a un lenguaje de programacin concreto. Al resultado se le denomina programa.

Puesta a punto del programa


Se engloban en este bloque las fases correspondientes a la instalacin del programa en el ordenador. (Figura 2). Fase de edicin

-4-

Metodologa de la Programacin

Escritura del programa fuente en la memoria del ordenador, grabndolo en algn soporte permanente. Fase de compilacin Traduccin del programa fuente a lenguaje mquina cuyo resultado es el programa objeto. Para ello se dispone de programas compiladores o intrpretes, que adems comprueban la correcta sintaxis del programa. Fase de montaje En los programas compilados es necesario aadir al programa objeto algunas rutinas del sistema o, en algunos casos, subprogramas externos que se hayan compilado separadamente. De ello se encarga el programa montador (linker). Fase de ejecucin Consiste en probar el programa con datos de prueba, para asegurar el correcto funcionamiento del mismo.

Figura 2

Objetos de un programa: Constantes y Variables


Son objetos de un programa todos aquellos manipulados por las instrucciones. Mediante ellos, en un programa podremos realizar el almacenamiento de los datos y de los resultados de las distintas operaciones que intervienen en la solucin del problema.

Atributos de un objeto
Todo objeto tiene tres atributos:
-5-

Metodologa de la Programacin

Nombre: Es el identificador del mismo. Tipo: Conjunto de valores que puede tomar. Valor: Elemento del tipo que se le asigna.

Constantes
Son objetos cuyo valor permanece invariable a lo largo de la ejecucin de un programa. Una constante es la denominacin de un valor concreto, de tal forma que se utiliza su nombre cada vez que se necesita referenciarlo. Ejemplos: PI = 3.151592 E = 2.718281

Variables
Son objetos cuyo valor puede ser modificado a lo largo de la ejecucin de un programa. Ejemplos: X=0 X=X+1 X es una variable de tipo numrico.

Expresiones
Se define una expresin de la siguiente forma: 1. Un valor es una expresin. Ejemplos: 1.25,

JUAN

2. Una constante o variable es un expresin. Ejemplos: PI, E, X 3. Una funcin es una expresin.
-6-

Metodologa de la Programacin

Ejemplos:

COS(X),

SQR(25)

4. Una combinacin de valores, constantes, variables, funciones y operadores cumpliendo unas determinadas reglas de construccin es una expresin. Ejemplos: COS(PI * X) + 1.25 2 * PI * X N = JUAN

Tipos de expresiones
Las expresiones, segn el resultado que producen, se clasifican en: Numricas Son las que producen resultados de tipo numrico. Se construyen mediante los operadores aritmticos. Ejemplo: PI * SQR(X) Alfanumricas Son las que producen resultados de tipo alfanumrico. Se construyen mediante los operadores alfanumricos. Ejemplo: Don + N Booleanas Son las que producen resultados CIERTO o FALSO. Se construyen mediante los operadores relacionales y lgicos. Ejemplo: A > 0 AND B <= 5

Operadores
Para la construccin de expresiones se pueden utilizar de forma general, los siguientes: Tipo Aritmticos Operador ^ * / + Nombre Potencia Producto Divisin Suma Resta
-7-

Ejemplo 6^2 6*2 6/2 6+2 62

Resultado 36 12 3 8 4

Metodologa de la Programacin

Alfanumricos Relacionales

+ = < <= > >= <> Lgicos NOT AND OR * Ver tablas de verdad

Concatenacin Igual a Menor que Menor o igual que Mayor que Mayor o igual que Distinto a Negacin Conjuncin Disyuncin

A + + B 6=2 6<2 6 <= 2 6>2 6 >= 2 6 <> 2 * * *

A B FALSO FALSO FALSO CIERTO CIERTO CIERTO * * *

Tablas de verdad de los operadores lgicos


El resultado de las operaciones lgicas viene determinado por las tablas de verdad correspondientes a cada una de ellas. Operador NOT A F C Siendo: A F C NOT A C F

Una expresin booleana. Valor FALSO. Valor CIERTO.

Operador AND A F F C C B F C F C A AND B F F F C

Siendo A y B expresiones booleanas. Operador OR A F F C B F C F


-8-

A OR B F C C

Metodologa de la Programacin

Siendo A y B expresiones booleanas.

Orden de evaluacin de los operadores


Los operadores de una expresin se evalan, en general, segn el siguiente orden: 1. 2. 3. 4. 5. 6. 7. 8. 9. Parntesis (comenzando por los ms internos). Potencias. Productos y divisiones. Sumas y restas. Concatenacin. Relacionales. Negacin. Conjuncin. Disyuncin.

La evaluacin de operadores de igual orden se realiza siempre de izquierda a derecha. Este orden de evaluacin tiene algunas modificaciones en determinados lenguajes de programacin.

-9-

Metodologa de la Programacin

CAPITULO

Diagramas de flujo (flowchart)

Durante el diseo de un programa, y en sus fases de anlisis y programacin, surge la necesidad de representar de una manera grfica los flujos que van a seguir los datos manipulados por el mismo, as como la secuencia lgica de las operaciones para la resolucin del problema.

Esta representacin grfica debe tener las siguientes cualidades: Sencillez en su construccin. Claridad en su comprensin. Normalizacin en su diseo. Flexibilidad en sus modificaciones.

En la prctica se suelen utilizar indistintamente los trminos diagrama de flujo, organigrama y ordinograma para referenciar cualquier representacin grfica de los flujos de datos o de las operaciones de un programa. Es importante diferenciarlos porque no corresponden a las mismas fases del diseo de los programas. Aunque utilicen algunos smbolos comunes, el significado de stos no es el mismo. En la Figura 3 se puede ver la secuencia de aparicin de los diagramas de flujo.

- 10 -

Metodologa de la Programacin

Figura 3

Diagramas de flujo del sistema


Tambin se denominan organigramas. Representan grficamente el flujo de datos e informaciones que maneja un programa. En los casos de aplicaciones que comprenden ms de un programa, se realizar un organigrama para cada uno de ellos, y es conveniente realizar uno general que englobe todo el conjunto. Un organigrama debe reflejar: Los soportes de los datos. Los nombres de los programas. Los soportes de los resultados. El flujo de los datos.

En su representacin se siguen las siguientes reglas: En el centro del organigrama figurar el smbolo de proceso correspondiente al programa. En la parte superior, los soportes de entrada. En la parte inferior, los soportes de salida. Al mismo nivel que el smbolo de proceso y a ambos lados, los soportes de entrada y salida.

Smbolos de SOPORTE
Representan los soportes fsicos donde se encuentran los datos de entrada y donde van a ser registrados los resultados.

- 11 -

Metodologa de la Programacin

Tarjeta Perforada

Cinta de Papel

Impresora

Teclado

Pantalla

Tambor Magntico

Disco Magntico

Soporte Secuencial

Disco Flexible

Soporte Genrico

Figura 4

Smbolos de PROCESO

Proceso

Operacin Auxiliar

Figura 5

- 12 -

Metodologa de la Programacin

Lneas de FLUJO

Direccin del Flujo

Figura 6

- 13 -

Metodologa de la Programacin

Ejemplos:

El organigrama de una aplicacin que tome nmeros perforados en fichas y realice alguna operacin con ellos, dando los resultados por impresora, es:

DATOS

PROCESO

RESULTADOS

Figura 7

- 14 -

Metodologa de la Programacin

El organigrama de una aplicacin de actualizacin de un archivo soportado en disco, con entrada de datos por teclado, consulta de datos por pantalla y salida de datos modificados por impresora es:

ENTRADA DE DATOS

ACTUALIZACION

ARCHIVO

LISTADO DE ACTUALIZACIONES

VISUALIZACION DE DATOS

Figura 8

- 15 -

Metodologa de la Programacin

El organigrama de una aplicacin para crear un archivo de ventas en cinta, extradas de un determinado documento base en papel, con un listado por impresora de dichas ventas y consultas por pantalla es:

DOCUMENTOS BASE

ENTRADA DE DATOS

CREACION DE ARCHIVO DE VENTAS

LISTADO DE VENTAS

VISUALIZACION DE DATOS

ARCHIVO DE VENTAS

Figura 9

- 16 -

Metodologa de la Programacin

Diagramas de flujo del programa


Tambin se denominan ordinogramas. Representan grficamente la secuencia lgica de las operaciones en la resolucin de un problema, por medio de un programa de ordenador. En la fase de programacin, el programador crea para cada programa un ordinograma, a partir del cual realiza la codificacin en lenguaje de programacin. Es necesario decir que el empleo de ordinogramas es una tcnica de diseo de programas y no es la nica, por lo tanto no es de obligado uso. Resulta muy prctico, a nivel de metodologa de diseo de programas, que se utilice una tcnica general e independiente de los lenguajes de programacin, puesto que los distintos lenguajes de que disponemos poseen sus propias caractersticas y restricciones, aunque suelen seguir una lgica similar. Una vez diseado un ordinograma que representa grficamente un programa y sabiendo en qu lenguaje se va a codificar, lo nico que necesitamos saber es la tcnica de paso del ordinograma al lenguaje, que en la mayora de los casos es bastante sencilla. Hace tiempo que se mantiene una polmica entre los diseadores de programas acerca de la utilidad de los diagramas de flujo. Unos manifiestan que su uso es innecesario, mientras que otros afirman la conveniencia de documentar todo programa con su ordinograma. Un ordinograma debe reflejar: El comienzo del programa. Las operaciones. La secuencia en que se realizan. El final del programa.

En la representacin de ordinogramas, es conveniente seguir las siguientes reglas: El comienzo del programa figurar en la parte superior del ordinograma. Los smbolos de comienzo y fin debern aparecer una nica vez. El flujo de las operaciones ser, siempre que sea posible, de arriba abajo y de izquierda a derecha, en cuyo caso pueden omitirse las puntas de flecha. Se debe guardar una cierta simetra en la representacin de bifurcaciones y bucles, as como en el conjunto total del ordinograma. Se evitarn siempre los cruces de lneas de flujo utilizando conectores.
- 17 -

Metodologa de la Programacin

El uso de comentarios estar restringido al mnimo imprescindible; al contrario que en la codificacin, en la que son mucho ms recomendables. Si en un ordinograma se ha separado una parte de otra por medio de un conector, las posibles conexiones que puedan aparecer desde esta ltima a la anterior, se harn igualmente con conectores, evitando el uso de lneas de flujo directas.

Los smbolos utilizados en la confeccin de ordinogramas son:

Smbolos de OPERACION

TERMINAL (INICIO, FIN)

OPERACION GENERAL

OPERACION DE E/S EN GENERAL

SUBPROGRAMA

Figura 10

El smbolo de OPERACIN DE E/S EN GENERAL, indica que la misma se realiza desde un dispositivo estndar de E/S. En la prctica, se utilizan los smbolos de soporte de organigramas para los ordinogramas en los casos que es necesario especificar el tipo de soporte utilizado.

Smbolos de COMENTARIOS
COMENTARIO

Figura 11

- 18 -

Metodologa de la Programacin

Smbolos de DECISIN

DECISION (2/3 SALIDAS)

DECISION MULTIPLE DE N SALIDAS

Figura 12

Smbolos de CONEXION

REAGRUPAMIENTO

n.

CONECTOR EN LA MISMA PAGINA

n.

CONECTOR EN DISTINTA PAGINA

Figura 13

- 19 -

Metodologa de la Programacin

CAPITULO

Estructura general de un programa

Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos). Contendr, por lo tanto, dos bloques para la descripcin de los dos aspectos citados. Bloque de declaraciones: En l se especifican todos los objetos que utiliza el programa (constantes, variables, tablas, registros, archivos, etc.). Bloque de instrucciones: Constituido por el conjunto de operaciones que se han de realizar para la obtencin de los resultados deseados.

En algunos lenguajes de programacin no figura explcitamente el bloque de declaraciones (FORTRAN, BASIC), pero, en general, es necesario declarar todos los objetos que se van a usar. La ejecucin de un programa consiste en la realizacin secuencial del conjunto de instrucciones, desde la primera a la ltima, de una en una. Este orden de realizacin nicamente ser alterado mediante instrucciones denominadas de ruptura de secuencia. Las instrucciones de un programa consisten, en general, en modificaciones sobre los objetos del programa, que constituyen su entorno, desde un estado inicial hasta otro final que contendr los resultados del proceso.

- 20 -

Metodologa de la Programacin

Partes principales de un programa


Dentro del bloque de instrucciones de un programa podemos diferenciar tres partes fundamentales. En algunos casos, estas tres partes estn perfectamente delimitadas; pero, en la mayora, sus instrucciones quedan entremezcladas a lo largo del programa, si bien mantienen una cierta localizacin geomtrica impuesta por la propia naturaleza de las mismas.

Entrada de datos
La constituyen todas aquellas instrucciones que toman datos de un dispositivo externo, almacenndolos en la memoria central para que puedan ser procesados. Tambin se consideran dentro de este apartado las instrucciones de depuracin de los datos de entrada, es decir, aquellas que se encargan de comprobar la correccin de los mismos.

DATOS DE ENTRADA

MEMORIA CENTRAL

Figura 14

Proceso o algoritmo
Est formado por las instrucciones que modifican los objetos a partir de su estado inicial hasta el estado final, dejando stos disponibles en la memoria central.

- 21 -

Metodologa de la Programacin

Salida de resultados
Conjunto de instrucciones que toman los datos finales de la memoria central y los envan a los dispositivos externos.

MEMORIA CENTRAL

DATOS DE SALIDA

Figura 15

Clasificacin de las instrucciones


Una instruccin se caracteriza por un estado inicial y final del entorno. El estado final de una instruccin coincide con el inicial de la siguiente. No siempre una instruccin modifica el entorno, pues su cometido puede limitarse a una mera observacin del mismo o a un cambio en el orden de ejecucin de otras. Segn la funcin que desempean dentro del algoritmo, las instrucciones pueden ser:

Instrucciones de declaracin
Se utilizan en aquellos lenguajes de programacin que no tienen declaracin explcita de los objetos. Su misin consiste en indicar al procesador que reserve espacio en la memoria para un objeto del programa, indicando asimismo su nombre, tipo y caractersticas. Ejemplo: En BASIC se declara una variable, NOMBRE, de tipo entera, mediante la instruccin:
DIM NOMBRE AS INTEGER

Los distintos tipos admitidos por BASIC son: Para nmeros enteros: INTEGER y LONG. Para nmeros reales: SINGLE y DOUBLE.
- 22 -

Metodologa de la Programacin

Cadena de caracteres: STRING Verdadero / Falso: BOOLEAN

Instrucciones primitivas
Son aquellas que ejecuta el procesador de modo inmediato. Las principales son asignacin, entrada y salida. Instruccin de asignacin Consiste en calcular el valor de una expresin y almacenarlo en una variable. Ejemplo: Asignacin del valor numrico entero 29 a la variable EDAD.
EDAD = 29

Instruccin de entrada Toma un dato de un dispositivo de entrada y lo almacena en un objeto. Ejemplo: Entrada del dato numrico 29 a la variable EDAD.
INPUT EDAD

Instruccin de salida Toma el valor de una expresin u objeto y lo lleva a un dispositivo externo. Ejemplo: Salida del dato almacenado en la variable EDAD.
PRINT EDAD

Instrucciones de control
Son aquellas encargadas de controlar la ejecucin de otras instrucciones.

- 23 -

Metodologa de la Programacin

Instruccin alternativa Controla la ejecucin de unas u otras instrucciones segn una condicin.
Alternativa simple

SI

CONDICION

NO

ACCION

Figura 16

Ejemplo: Instruccin que visualiza el valor de A si se cumple que A > 10.


IF A > 0 THEN PRINT A ENDIF

Alternativa doble

SI

CONDICION

NO

ACCION A

ACCION B

Figura 17

- 24 -

Metodologa de la Programacin

Ejemplo: Instruccin que visualiza el valor de A si se cumple que A > B, y en caso contrario visualiza B.
IF A > B THEN PRINT A ELSE PRINT B ENDIF

Instruccin repetitiva Hace que se repitan una o varias instrucciones un nmero determinado o indeterminado de veces. Instruccin PARA (FOR): El nmero de repeticiones est fijado de antemano.
Donde: Vc = Valor del Contador. Generalmente se usa la variable I como valor del contador. Vi = Valor inicial. In = Incremento.

Vc = Vi - In

Vc = Vc + In

ACCIONES

NO

Vc >= Vf

Donde: Vf = Valor final.

SI

Figura 18

El incremento (In) puede ser positivo o negativo.


- 25 -

Metodologa de la Programacin

Ejemplos: Escritura de los 10 primeros nmeros naturales.


FOR N = 1 TO 10 PRINT N NEXT

Escritura de los 10 primeros nmeros naturales. Se visualizarn de mayor a menor:


FOR N = 10 TO 1 STEP - 1 PRINT N NEXT

Instruccin MIENTRAS (WHILE): El nmero de repeticiones viene determinado por una condicin que se ha de verificar antes de cada nueva repeticin.

CONDICION

NO

SI

ACCIONES

Figura 19

Ejemplo: Lectura y visualizacin de N nmeros introducidos por teclado. WHILE N > 0 INPUT NUMERO PRINT NUMERO N=N-1 WEND

- 26 -

Metodologa de la Programacin

Instruccin ITERAR (LOOP): La terminacin del bucle depende del cumplimiento de una condicin de salida que se evala despus de cada repeticin.

ACCIONES

NO

CONDICION

SI

Figura 20

En BASIC existen dos variantes: ITERAR HASTA:


DO acciones LOOP UNTIL condicin

ITERAR MIENTRAS:
DO acciones LOOP WHILE condicin

Ejemplos: Leer nmeros desde el teclado hasta que el usuario introduzca un 0.


DO INPUT NUMERO LOOP UNTIL NUMERO = 0

DO INPUT NUMERO LOOP WHILE NUMERO <> 0

- 27 -

Metodologa de la Programacin

Elementos auxiliares de un programa


Son variables que realizan funciones especficas dentro de un programa, y por su gran utilidad, frecuencia de uso y peculiaridades, conviene hacer un estudio separado de las mismas. Las ms importantes son los contadores, acumuladores e interruptores.

Contadores
Un contador es un campo de memoria cuyo valor se incrementa en una cantidad fija, positiva o negativa, generalmente asociado a un bucle. Se utiliza en los siguientes casos: Para contabilizar el nmero de veces que es necesario repetir una accin (variable de control de un bucle). Para contar un suceso particular solicitado por el enunciado del problema (asociado a un bucle o independientemente).

Un contador toma un valor inicial (0 en la mayora de los casos) antes de comenzar su funcin, posteriormente, y cada vez que se realiza el suceso a contar, incrementa o disminuye su valor (1 en la mayora de los casos).

Acumuladores
Un acumulador es un campo de memoria cuyo valor se incrementa sucesivas veces en cantidades variables. Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor 0. Tambin en las situaciones en que hay que obtener un total como producto de distintas cantidades se utiliza un acumulador, debindose inicializar con el valor 1.

Interruptores (Switches)
Tambin se denominan conmutadores. Un interruptor es un campo de memoria que puede tomar dos valores exclusivos (0 y 1, -1 y 1, FALSO y CIERTO, etc.).

- 28 -

Metodologa de la Programacin

Se utiliza para: Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior, para salir de un bucle o para decidir en una instruccin alternativa qu accin realizar. Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.

- 29 -

Metodologa de la Programacin

EJERCICIOS

RESUELTOS

- 30 -

Metodologa de la Programacin

1. Programa que lee un nmero que corresponde al radio de una circunferencia, calcula y visualiza la longitud de la misma y el rea del circulo correspondiente.
INICIO

PI = 3.141592

Leer RADIO

LONGITUD = 2 * PI * RADIO

AREA = PI * RADIO ^ 2

ESCRIBIR LONGITUD, AREA

FIN

CONST PI = 3.141592 DIM RADIO AS SINGLE DIM LONGITUD AS SINGLE DIM AREA AS SINGLE INPUT Introduzca el RADIO: ; RADIO LONGITUD = 2 * PI * RADIO AREA = PI * RADIO ^ 2 PRINT La longitud de la circunferencia es: ; LONGITUD PRINT El rea del crculo es: ; AREA

- 31 -

Metodologa de la Programacin

2. Programa que lee dos nmeros del teclado, calcula y visualiza su suma, resta, producto y divisin.
INICIO

Leer N1, N2

SUMA = N1 + N2

RESTA = N1 - N2

PROD = N1 * N2

DIV = N1 / N2

ESCRIBIR SUMA, RESTA, PROD, DIV

FIN

DIM N1 AS INTEGER DIM N2 AS INTEGER DIM SUMA AS INTEGER DIM RESTA AS INTEGER DIM PROD AS INTEGER DIM DIV AS SINGLE INPUT Introduzca el primer nmero: ; N1 INPUT Introduzca el segundo nmero: ; N2 SUMA = N1 + N2 RESTA = N1 N2 PROD = N1 * N2 DIV = N1 / N2 PRINT La suma es: ; SUMA PRINT La resta es: ; RESTA PRINT El producto es: ; PROD PRINT La divisin es: ; DIV

- 32 -

Metodologa de la Programacin

Otra posibilidad de codificacin: DIM N1 AS INTEGER DIM N2 AS INTEGER INPUT Introduzca el primer nmero: ; N1 INPUT Introduzca el segundo nmero: ; N2 PRINT La suma es: ; N1 + N2 PRINT La resta es: ; N1 N2 PRINT El producto es: ; N1 * N2 PRINT La divisin es: ; N1 / N2

- 33 -

Metodologa de la Programacin

3. Programa que lee un nmero del teclado, comprueba y visualiza si dicho nmero es nulo, positivo o negativo.

INICIO

Leer N

SI

N=0

NO

SI

N>0

NO

ESCRIBIR "NULO"

Escribir "POSITIVO"

Escribir "NEGATIVO"

FIN

DIM N AS INTEGER INPUT Introduzca un nmero: ; N IF N = 0 THEN PRINT NULO ELSE IF N > 0 THEN PRINT PROSITIVO ELSE PRINT NEGATIVO ENDIF ENDIF

- 34 -

Metodologa de la Programacin

4. Programa que nos permita introducir por teclado un ao y nos indique si es o no bisiesto.

Para saber si un ao es bisiesto, solo tenemos que comprobar si es divisible por 4. Por tanto debemos obtener el resto de dividir el ao entre 4. En BASIC podemos obtenerlo mediante el operador MOD.
INICIO

Leer ANNO

RESTO = ANNO MOD 4

SI

RESTO = 0

NO

ESCRIBIR "EL AO ES BISIESTO"

ESCRIBIR "EL AO NO ES BISIESTO"

FIN

DIM ANNO AS INTEGER DIM RESTO AS SINGLE INPUT Introduzca el ao: ; ANNO RESTO = ANNO MOD 4 IF RESTO = 0 THEN PRINT El ao ; ANNO; es bisiesto ELSE PRINT El ao ; ANNO; no es bisiesto ENDIF

- 35 -

Metodologa de la Programacin

Otra versin del mismo programa:


INICIO

Leer ANNO

SI

(ANNO MOD 4) = 0

NO

ESCRIBIR "EL AO ES BISIESTO"

ESCRIBIR "EL AO NO ES BISIESTO"

FIN

DIM ANNO AS INTEGER INPUT Introduzca el ao: ; ANNO IF (ANNO MOD 4) = 0 THEN PRINT El ao ; ANNO; es bisiesto ELSE PRINT El ao ; ANNO; no es bisiesto ENDIF

- 36 -

Metodologa de la Programacin

5. Programa que lea 3 nmeros y los visualice ordenados ascendentemente. Los nmeros se leen sobre 3 variables A, B, C, visualizndolas en el orden que corresponda.
INICIO

Leer A, B, C

SI

A>B

NO

SI

B>C

NO

SI

B>C

NO

SI

A>C

NO

SI

A>C

NO

ESCRIBIR C, B, A

ESCRIBIR B, C, A

ESCRIBIR B, A, C

ESCRIBIR C, A, B

ESCRIBIR A, C, B

ESCRIBIR A, B, C

FIN

- 37 -

Metodologa de la Programacin

DIM A AS INTEGER DIM B AS INTEGER DIM C AS INTEGER INPUT Introduzca el primer nmero: ; A INPUT Introduzca el segundo nmero: ; B INPUT Introduzca el tercer nmero: ; C IF A > B THEN IF B > C THEN PRINT El orden es: ; C; ; B; ; A ELSE IF A > C THEN PRINT El orden es: ; B; ; C; ; A ELSE PRINT El orden es: ; B; ; A; ; C ENDIF ENDIF ELSE IF B > C THEN IF A > C THEN PRINT El orden es: ; C; ; A; ; B ELSE PRINT El orden es: ; A; ; C; ; B ENDIF ELSE PRINT El orden es: ; A; ; B; ; C ENDIF ENDIF

- 38 -

Metodologa de la Programacin

6. Programa que lee una calificacin entre 0 y 10 y la transforma en nota alfabtica segn la siguiente tabla: Nota numrica 0 <= Nota < 3 3 <= Nota < 5 5 <= Nota < 6 6 <= Nota < 7 7 <= Nota < 9 9 <= Nota <= 10 Nota alfabtica M.D. Ins. Suf. Bien Not. Sob.
INICIO

Leer NOTA

SI

NOTA < 6

NO

SI

NOTA < 5

NO

SI

NOTA < 7

NO

SI

NOTA < 3

NO

SI

NOTA < 9

NO

ESCRIBIR "M.D."

ESCRIBIR "INS."

ESCRIBIR "SUF."

ESCRIBIR "BIEN"

ESCRIBIR "NOT."

ESCRIBIR "SOB."

FIN

- 39 -

Metodologa de la Programacin

DIM NOTA AS SINGLE INPUT Introduzca la nota: ; NOTA IF NOTA < 6 THEN IF NOTA < 5 THEN IF NOTA < 3 THEN PRINT M.D. ELSE PRINT INS. ENDIF ELSE PRINT SUF. ENDIF ELSE IF NOTA < 7 THEN PRINT BIEN ELSE IF NOTA < 9 THEN PRINT NOT. ELSE PRINT SOB. ENDIF ENDIF ENDIF

- 40 -

Metodologa de la Programacin

7. Programa que lea 100 nmeros y cuente cuntos de ellos son positivos. Se utilizan dos contadores, el primero I contabiliza la cantidad de nmeros ledos, y el segundo POSITIVO cuenta el resultado pedido.
INICIO

POSITIVO = 0

I=0

I=I+1

LEER NUM

NUM > 0

SI

NO

POSITIVO = POSITIVO + 1

NO

I = 100

SI

ESCRIBIR POSITIVO

FIN

- 41 -

Metodologa de la Programacin

DIM NUM AS INTEGER DIM POSITIVO AS INTEGER DIM I AS INTEGER POSITIVO = 0 FOR I = 1 TO 100 INPUT Introduzca un nmero: ; NUM IF NUM > 0 THEN POSITIVO = POSITIVO + 1 ENDIF NEXT PRINT Ha introducido ; POSITIVO; nmeros positivos

- 42 -

Metodologa de la Programacin

8. Programa que calcule el factorial de un nmero.


INICIO

FAC = 1

LEER NUM

I=0

I=I+1

FAC = FAC * I

NO

I >= NUM

SI

ESCRIBIR FAC

FIN

DIM FAC AS INTEGER DIM NUM AS INTEGER DIM I AS INTEGER FAC = 1 FOR I = 1 TO NUM FAC = FAC * I NEXT PRINT El factorial de ; NUM; es: ; FAC

- 43 -

Metodologa de la Programacin

9. Programa que obtenga el producto de dos nmeros enteros positivos mediante sumas sucesivas.
INICIO

LEER N1, N2

SI

N1 > N2

NO

I=0

I=0

I=I+1

I=I+1

PROD = PROD + N1

PROD = PROD + N2

NO

I >= N2

NO

I >= N1

SI

SI

ESCRIBIR PROD

FIN

- 44 -

Metodologa de la Programacin

DIM N1 AS INTEGER DIM N2 AS INTEGER DIM PROD AS LONG DIM I AS INTEGER INPUT Introduzca el primer nmero: ; N1 INPUT Introduzca el segundo nmero: ; N2 IF N1 > N2 THEN FOR I = 1 TO N2 PROD = PROD + N1 NEXT ELSE FOR I = 1 TO N1 PROD = PROD + N2 NEXT ENDIF PRINT El producto es: ; PROD

- 45 -

Metodologa de la Programacin

10. Programa que calcule y visualice la suma y el producto de los nmeros pares comprendidos entre el 10 y el 20 (ambos inclusive). Se utilizan dos acumuladores SUMA y PROD que totalizan los dos resultados pedidos.
INICIO

SUMA = 0

PROD = 1

I=8

I=I+2

SUMA = SUMA + I

PROD = PROD * I

NO

I = 20

SI

ESCRIBIR SUMA, PROD

FIN

- 46 -

Metodologa de la Programacin

DIM SUMA AS INTEGER DIM PROD AS INTEGER SUMA = 0 PROD = 1 FOR I = 10 TO 20 STEP 2 SUMA = SUMA + I PROD = PROD * I NEXT PRINT La suma es: ; SUMA PRINT El producto es: ; PROD

- 47 -

Metodologa de la Programacin

11. Programa que lea una secuencia de nmeros no nulos y obtenga el nmero mayor. El programa debe finalizar cuando se lea un 0.
INICIO

LEER NUM

NUM <> 0

SI

NO

NO

NUM > MAYOR

SI MAYOR = NUM

LEER NUM

ESCRIBIR MAYOR

FIN

- 48 -

Metodologa de la Programacin

DIM MAYOR AS INTEGER DIM NUM AS INTEGER INPUT Introduzca un nmero: ; NUM WHILE NUM <> 0 IF NUM > MAYOR THEN MAYOR = NUM ENDIF INPUT Introduzca un nmero: ; NUM WEND PRINT El nmero mayor es: ; MAYOR

- 49 -

Metodologa de la Programacin

12. Programa que sume independientemente los pares y los impares de los nmeros comprendidos entre 1 y 100.
INICIO

PAR = 0

IMP = 0

SW = - 1

I=0

I=I+1

SW = - SW

SI

SW = 1

NO

IMP = IMP + I

PAR = PAR + I

NO

I = 100

SI

ESCRIBIR PAR, IMP

FIN

- 50 -

Metodologa de la Programacin

DIM PAR AS INTEGER DIM IMP AS INTEGER DIM SW AS INTEGER DIM I AS INTEGER PAR = 0 IMP = 0 SW = - 1 FOR I = 1 TO 100 SW = - SW IF SW = 1 THEN IMP = IMP + I ELSE PAR = PAR + I ENDIF NEXT PRINT La suma de los pares es: ; PAR PRINT La suma de los impares es: ; IMP

- 51 -

Metodologa de la Programacin

EJERCICIOS

PROPUESTOS

- 52 -

Metodologa de la Programacin

Realizar los ordinogramas y programas siguientes: 13. Programa para resolver una ecuacin de primer grado:

Y = Ax + B En primer lugar se leen los coeficientes A, B y, a continuacin, se leen 2 valores de la variable x, obteniendo como resultado las coordenadas cartesianas X, Y de 2 puntos, que nos permitirn representar la recta correspondiente a la ecuacin.
14. Programa para resolver la ecuacin de segundo grado:

Ax2 + Bx + C = 0 Se leen los coeficientes A, B, C y, a partir de ellos, se dan las races de la ecuacin. Representamos la raz cuadrada como la elevacin a la potencia 0.5.

15. Programa que calcule la suma de los N primeros nmeros mayores que cero. 16. Programa que obtenga la lista de los divisores de un nmero N entero positivo. 17. Programa que calcule los nmeros perfectos menores que 1000. Un nmero es perfecto si la suma de sus divisores excepto l mismo es igual al propio nmero. 18. Programa que obtenga el cociente y el resto de dos nmeros enteros positivos mediante restas. 19. Programa que lea una secuencia de nmeros no nulos, terminada con la introduccin de un 0, y obtenga el mayor, visualizando un mensaje de si se ha ledo algn nmero negativo.

El programa consiste en un bucle de lectura, cuya condicin de terminacin es la lectura del nmero 0. Utiliza un interruptor que cambia de valor al detectarse el primer nmero negativo.
20. Programa que determine si dos nmeros enteros positivos son amigos. Dos nmeros son amigos si la suma de los divisores del primero excepto l mismo es igual al segundo y viceversa.

- 53 -

Metodologa de la Programacin

21. Programa que lee un nmero X y otro entero positivo N y calcula la N-sima potencia de X mediante multiplicaciones sucesivas. 22. Programa que genere una lista de los N primeros nmeros primos. El nmero N ser introducido por teclado. 23. Se introducen por teclado una secuencia de informaciones, cada una de ellas compuesta por un nombre y 6 nmeros, correspondientes al nombre de un alumno y las calificaciones que ha obtenido en sus 6 asignaturas. La secuencia termina al introducir el nombre FIN.

Se desea un programa que imprima un listado de calificaciones, en el que ha de figurar el nombre del alumno seguido de su nota media. Finalmente se imprimir la nota media del grupo.
24. Programa que obtenga y visualice la lista de inters producido y capital acumulado anualmente, por un capital inicial C, impuesto con un rdito R durante N aos a inters compuesto.

El inters anual obtenido se calcula mediante la frmula: I = (C * R) / 100 El capital se incrementa cada ao con los intereses producidos en el mismo.
25. Programa que calcule el producto de dos nmeros enteros positivos mediante el denominado algoritmo ruso del producto.

El algoritmo consiste en duplicar el primer factor y dividir (cociente entero) por 2 el segundo, obteniendo un producto equivalente, salvo si el segundo factor es impar, en cuyo caso es necesario acumular previamente el primero en donde se va a obtener el resultado. El proceso termina cuando el segundo factor se hace 0. Ejemplo: 25 * 6 = 150
PRIMER FACTOR 25 50 100 200 SENGUNDO FACTOR 6 3 1 0 ACUMULADOR 0 50 150 150

- 54 -

Metodologa de la Programacin

26. Programa que lea 100 datos, compuesto cada uno de ellos por un nombre de persona y su sueldo neto mensual, y obtenga e imprima el nombre y sueldo de la persona que ms cobra y de la que menos. Si hay varias se imprime la primera que aparezca en la secuencia de entrada. 27. Realizar el ordinograma cclico para calcular volmenes de esfera, realizando en cada ciclo la lectura del radio y la visualizacin del volumen. Al final, indicar cuantos volmenes se han hallado. El programa debe finalizar cuando se introduzca un 0 por teclado.

Formula: V = (4 * PI * RADIO ^3) / 3


28. Realizar un programa para confeccionar una estadstica de edades. Se pide:

Leer edades hasta que se introduzca un 0. Contar y sumar los menores de 20 aos. Contar y sumar los que tienen entre 20 y 40 aos. Contar y sumar los que tienen mas de 40 aos. Al final escribir la edad media de cada grupo y del total, el total de edades ledas y la suma total de todas las edades.

29. En BASIC, existe la instruccin SLEEP, la cual permite detener la ejecucin del programa un nmero determinado de segundos. Por ejemplo, para detener la ejecucin durante un segundo, pondramos SLEEP 1. Realizar un programa que simule el funcionamiento de un cronometro. El cronometro tendr una autonoma mxima de 24 horas. 30. Programa que obtenga el total a cobrar por cada uno de los 5 empleados de la empresa Y. La nomina se calcular mediante el siguiente criterio:

Los empleados cobran por horas y semanalmente. Por cada hora trabajada cobraran 1150 pesetas. Por cada hora extra (aquellas que excedan de 40 semanales) cobraran 1675 pesetas.

- 55 -

Metodologa de la Programacin

SOLUCION A LOS EJERCICIOS PROPUESTOS

- 56 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 13
INICIO

LEER A, B, X1, X2

Y1 = A * X1 + B

Y2 = A * X2 + B

ESCRIBIR X1, Y1, X2, Y2

FIN

DIM A AS INTEGER DIM B AS INTEGER DIM X1 AS INTEGER DIM X2 AS INTEGER DIM Y1 AS INTEGER DIM Y2 AS INTEGER INPUT Introduzca el coeficiente A: ; A INPUT Introduzca el coeficiente B: ; B INPUT Introduzca el primer valor de X: ; X1 INPUT Introduzca el segundo valor de X: ; X2 Y1 = A * X1 + B Y2 = A * X2 + B PRINT Las coordenadas cartesianas XY son: PRINT X1: ; X1; Y1: ; Y1 PRINT X2: ; X2; Y2: ; Y2

- 57 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 14
INICIO

LEER A, B, C

RAIZ = B^2-4*A*C

SI

RAIZ = 0

NO

SI

RAIZ > 0

NO

X1 = -B/(2*A) X2 = X1

X1 = (-B+RAIZ^0.5)/(2*A) X2 = (-B-RAIZ^0.5)/(2*A)

ESCRIBIR X1, X2

ESCRIBIR "RAICES COMPLEJAS"

FIN

- 58 -

Metodologa de la Programacin

DIM A AS INTEGER DIM B AS INTEGER DIM C AS INTEGER DIM RAIZ AS SINGLE DIM X1 AS SINGLE DIM X2 AS SINGLE INPUT Introduzca el coeficiente A: ; A INPUT Introduzca el coeficiente B: ; B INPUT Introduzca el coeficiente C: ; C RAIZ = B ^ 2 4 * A * C IF RAIZ = 0 THEN X1 = - B / (2 * A) X2 = X1 PRINT El valor de X1 es: ; X1 PRINT El valor de X2 es: ; X2 ELSE IF RAIZ > 0 THEN X1 = (- B + RAIZ ^ 0.5) / (2 * A) X2 = (- B RAIZ ^ 0.5) / (2 * A) PRINT El valor de X1 es: ; X1 PRINT El valor de X2 es: ; X2 ELSE PRINT RAICES COMPLEJAS ENDIF ENDIF

- 59 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 15
INICIO

SUMA = 0

LEER N

SI N>0

NO I=0

I=I+1

SUMA = SUMA + I

NO I >= N

SI

ESCRIBIR SUMA

FIN

- 60 -

Metodologa de la Programacin

DIM SUMA AS INTEGER DIM I AS INTEGER DIM N AS INTEGER INPUT Introduzca un nmero: ; N IF N > 0 THEN FOR I = 1 TO N SUMA = SUMA + 1 NEXT ENDIF PRINT La suma es: ; SUMA

- 61 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 16
INICIO

LEER N

MITAD = N / 2

I=0

I=I+1

N MOD I = 0

SI

NO

NO

I >= N

SI FIN

- 62 -

Metodologa de la Programacin

DIM MITAD AS INTEGER DIM I AS INTEGER DIM N AS INTEGER INPUT Introduzca un nmero: ; N MITAD = N / 2 FOR I = 1 TO N IF (N MOD I) = 0 THEN PRINT I ENDIF NEXT

- 63 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 17
INICIO

I=0

I=I+1

SUMA = 0

MITAD = I / 2

J=0

J=J+1

I MOD J = 0 NO

SI

SUMA = SUMA + J

NO

J >= MITAD SI SI

SUMA = I NO

NO

I >= 999 SI FIN

- 64 -

Metodologa de la Programacin

DIM I AS INTEGER DIM J AS INTEGER DIM SUMA AS INTEGER DIM MITAD AS INTEGER I=I FOR I = 1 TO 999 SUMA = 0 MITAD = I / 2 FOR J = 1 TO MITAD IF (I MOD J) = 0 THEN SUMA = SUMA + J ENDIF NEXT IF SUMA = I THEN PRINT I ENDIF NEXT

- 65 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 18

INICIO

LEER A, B

COCIENTE = 0

A<B

NO

SI A=A-B

COCIENTE = COCIENTE + 1

COCIENTE, A

FIN

DIM A AS INTEGER, B AS INTEGER, COCIENTE AS INTEGER INPUT Introduzca el primer nmero: ; A INPUT Introduzca el segundo nmero: ; B WHILE A < B A=AB COCIENTE = COCIENTE + 1 WEND PRINT El cociente es: ; COCIENTE PRINT El resto es: ; A

- 66 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 19
INICIO

LEER NUM

MAX = NUM

NUM < 0

NO

SI SW = 1 SW = 0

NUM <> 0

SI

NO MAX LEER NUM

SW = 1

NO

SI

NUM > MAX

NO

SI ESCRIBIR "HAY NEG." ESCRIBIR "NO HAY NEG." MAX = NUM SI NUM <> 0 NO

SW = 1

FIN

- 67 -

Metodologa de la Programacin

DIM NUM AS INTEGER DIM MAX AS INTEGER DIM SW AS INTEGER INPUT Introduzca un nmero: ; NUM MAX = NUM IF NUM < 0 THEN SW = 1 ELSE SW = 0 ENDIF WHILE NUM <> 0 INPUT Introduzca un nmero: ; NUM IF NUM > MAX THEN MAX = NUM ELSE IF NUM < 0 THEN SW = 1 ENDIF ENDIF WEND PRINT El nmero mayor es: ; MAX IF SW = 1 THEN PRINT Hay nmeros negativos ELSE PRINT No hay nmeros negativos ENDIF

- 68 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 20
INICIO LEER N1, N2 N1 > 0 AND N2 > 0 SI MITAD = N1 / 2 I=0 I=I+1 N1 MOD I = 0 SI SUMA1 = SUMA1 + I NO NO

I >= MITAD SI MITAD = N2 / 2 I=0 I=I+1

NO

N2 MOD I = 0 SI SUMA2 = SUMA2 + I

NO

NO I >= MITAD SI SI SUMA1 = N2 AND SUMA2 = N1 NO

ESCRIBIR "SON AMIGOS"

ESCRIBIR "NO SON AMIGOS"

ESCRIBIR "NO SON POSITIVOS"

FIN

- 69 -

Metodologa de la Programacin

DIM N1 AS INTEGER DIM N2 AS INTEGER DIM MITAD AS INTEGER DIM SUMA1 AS INTEGER DIM SUMA2 AS INTEGER DIM I AS INTEGER INPUT Introduzca el primer nmero: ; N1 INPUT Introduzca el segundo nmero: ; N2 IF (N1 > 0) AND (N2 > 0) THEN MITAD = N1 / 2 FOR I = 1 TO MITAD IF (N1 MOD I = 0) THEN SUMA1 = SUMA1 + I ENDIF NEXT MITAD = N2 / 2 FOR I = 1 TO MITAD IF (N2 MOD I = 0) THEN SUMA2 = SUMA2 + I ENDIF NEXT IF (SUMA1 = N2) AND (SUMA2 = N1) THEN PRINT SON AMIGOS ELSE PRINT NO SON AMIGOS ENDIF ELSE PRINT LOS NUMEROS DEBEN SER POSITIVOS ENDIF

- 70 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 21
INICIO

LEER X, N

X>0 AND N>0 SI

NO

P=1

N <> 0

NO

SI

ESCRIBIR P

P=P*X

ESCRIBIR "NO SON POSITIVOS"

N=N-1

FIN

- 71 -

Metodologa de la Programacin

DIM X AS INTEGER DIM N AS INTEGER DIM P AS INTEGER INPUT Introduzca X: ; X INPUT Introduzca N: ; N P=1 IF (X > 0) AND (N > 0) THEN WHILE N <> 0 P=P*X N=N1 WEND PRINT La potencia es: ; P ELSE PRINT Los nmeros no son positivos ENDIF

- 72 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 22
INICIO NUMERO = 0 DIVISORES = 1 LEER N

PRIMOS < N SI

NO

NUMERO = NUMERO + 1

I=0

I=I+1

NUMERO MOD I = 0 SI

NO

DIVISORES = DIVISORES + 1

NO

I >= NUMERO SI

NO

DIVISORES = 2 SI NUMERO

PRIMOS = PRIMOS + 1

DIVISORES = 0

FIN

- 73 -

Metodologa de la Programacin

DIM NUMERO AS INTEGER DIM DIVISORES AS INTEGER DIM PRIMOS AS INTEGER DIM N AS INTEGER DIM I AS INTEGER NUMERO = 0 DIVISORES = 1 INPUT Introduzca un nmero: ; N WHILE PRIMOS < N NUMERO = NUMERO + 1 FOR I = 0 TO NUMERO IF (NUMERO MOD I) = 0 THEN DIVISORES = DIVISORES + 1 ENDIF NEXT IF DIVISORES = 2 THEN PRINT NUMERO PRIMOS = PRIMOS + 1 ENDIF DIVISORES = 0 WEND

- 74 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 23
INICIO

NUMALUMNOS = 0

SUMAMEDIA = 0 LEER NOMBRE

NOMBRE <> "FIN" SI

NO

NUMALUMNOS = NUMALUMNOS + 1

MEDIAGRUPO = SUMAMEDIA / NUMALUMNOS

SUMA = 0

ESCRIBIR MEDIAGRUPO

I=0 FIN I=I+1

LEER NOTA

SUMA = SUMA + NOTA

NO

I=6 SI MEDIA = SUMA / 6

SUMAMEDIA = SUMAMEDIA + MEDIA

ESCRIBIR NOMBRE, MEDIA

LEER NOMBRE

- 75 -

Metodologa de la Programacin

DIM NOMBRE AS STRING DIM NOTA AS SINGLE DIM NUMALUMNOS AS INTEGER DIM MEDIA AS SINGLE DIM SUMAMEDIA AS SINGLE DIM SUMA AS SINGLE DIM I AS INTEGER CLS NUMALUMNOS = 0 SUMAMEDIA = 0 INPUT Introduzca un nombre: ; NOMBRE WHILE NOMBRE <> FIN NUMALUMNOS = NUMALUMNOS + 1 SUMA = 0 FOR I = 1 TO 6 INPUT Introduzca nota: ; NOTA SUMA = SUMA + NOTA NEXT MEDIA = SUMA / 6 SUMAMEDIA = SUMAMEDIA + MEDIA PRINT Nombre: ; NOMBRE PRINT Media: ; MEDIA INPUT Introduzca un nombre: ; NOMBRE WEND MEDIAGRUPO = SUMAMEDIA / NUMALUMNOS PRINT Media del grupo: ; MEDIAGRUPO

- 76 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 24
INICIO

LEER C, R, N

A=0

A=A+1

INTERES = C * R / 100

C=C+1

ESCRIBIR A, INTERES, C

NO

A=N

SI FIN

DIM C AS INTEGER DIM R AS SINGLE DIM N AS INTEGER DIM I AS INTEGER DIM INTERES AS DOUBLE FOR I = 1 TO N INTERES = C * R / 100 C=C+1 PRINT Ao: ; I; Inters: ; INTERES; Capital: ; C NEXT
- 77 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 25
INICIO

LEER PF, SF

PF > 0 AND SF > 0 SI AC = 0

NO

ESCRIBIR "LOS FACTORES DEBEN SER POSITIVOS"

SF <> 0

NO

SI

NO

SF MOD 2 <> 0

ESCRIBIR AC

SI AC = AC + PF

FIN

PF = PF * 2

SF = SF / 2

- 78 -

Metodologa de la Programacin

DIM PF AS INTEGER DIM SF AS INTEGER INPUT Introduzca el primer factor: ; PF INPUT Introduzca el segundo factor: ; SF IF (PF > 0) AND (SF > 0) THEN AC = 0 WHILE SF <> 0 IF SF MOD 2 <> 0 THEN AC = AC +PF ENDIF PF = PF * 2 SF = SF \ 2 WEND PRINT El producto es: ; AC ELSE PRINT Los factores deben ser positivos ENDIF

- 79 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 26
INICIO

LEER NOMBRE, SUELDO NMAX = NOMBRE SMAX = SUELDO NMIN = NOMBRE SMIN = SUELDO

I=1

I=I+1

LEER NOMBRE, SUELDO

SUELDO > SMAX SI NMAX = NOMBRE SMAX = SUELDO

NO

SUELDO < SMIN SI NMIN = NOMBRE SMIN = SUELDO

NO

NO

I = 100 SI ESCRIBIR NMAX, SMAX, NMIN, SMIN

FIN

- 80 -

Metodologa de la Programacin

DIM NOMBRE AS STRING DIM SUELDO AS LONG DIM NMAX AS STRING DIM SMAX AS LONG DIM NMIN AS STRING DIM SMIN AS LONG DIM I AS INTEGER INPUT Nombre: ; NOMBRE INPUT Sueldo: ; SUELDO NMAX = NOMBRE SMAX = SUELDO NMIN = NOMBRE SMIN = SUELDO FOR I = 2 TO 100 INPUT Nombre: ; NOMBRE INPUT Sueldo: ; SUELDO IF SUELDO > SMAX THEN NMAX = NOMBRE SMAX = SUELDO ELSE IF SUELDO < SMIN THEN NMIN = NOMBRE SMIN = SUELDO ENDIF ENDIF NEXT PRINT Cobra ms: ; NMAX; con ; SMAX; pts PRINT Cobra menos: ; NMIN; con ; SMIN; pts

- 81 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 27
INICIO

CONTADOR = 0 PI = 3.141592

LEER RADIO

RADIO <> 0

NO

SI

V = (4 * PI * RADIO ^ 3) / 3 ESCRIBIR CONTADOR CONTADOR = CONTADOR + 1

FIN ESCRIBIR V

LEER RADIO

CONS PI = 3.141592 DIM CONTADOR AS INTEGER DIM RADIO AS SINGLE DIM V AS SINGLE CONTADOR = 0 INPUT Introduzca el Radio: ; RADIO WHILE RADIO <> 0 V = (4 * PI * R ^ 3) / 3 CONTADOR = CONTADOR + 1 PRINT El volumen es: ; V INPUT Introduzca el Radio: ; RADIO WEND PRINT Se han introducido ; CONTADOR; volmenes
- 82 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 28
INICIO

ACU1 = 0 ACU2 = 0 ACU3 = 0 CONT1= 0 CONT2 = 0 CONT3 = 0

LEER EDAD

EDAD <> 0

NO

SI

ESCRIBIR MEDIAS Y TOTALES NO

EDAD >= 0 AND EDAD < 20 SI ACU1 = ACU1 + EDAD CONT1 = CONT1 + 1

FIN EDAD >= 20 AND EDAD <= 40 SI ACU2 = ACU2 + EDAD CONT2 = CONT2 + 1 ACU3 = ACU3 + EDAD CONT3 = CONT3 + 1 NO

LEER EDAD

- 83 -

Metodologa de la Programacin

DIM ACU1 AS INTEGER, ACU2 AS INTEGER, ACU3 AS INTEGER DIM CONT1 AS INTEGER, CONT2 AS INTEGER, CONT3 AS INTEGER DIM EDAD AS INTEGER ACU1 = 0 ACU2 = 0 ACU3 = 0 CONT1 = 0 CONT2 = 0 CONT3 = 0 INPUT Introduzca la edad: ; EDAD WHILE EDAD <> 0 IF (EDAD >= 0) AND (EDAD < 20) THEN ACU1 = ACU1 + EDAD ELSE IF (EDAD >= 20) AND (EDAD <= 40) THEN ACU2 = ACU2 + EDAD CONT2 = CONT2 + 1 ELSE ACU3 = ACU3 + EDAD CONT3 = CONT3 + 1 ENDIF ENDIF INPUT Introduzca la edad: ; EDAD WEND PRINT Media de los menores de 20: ; ACU1 / CONT1 PRINT Media de los que tienen entre 20 y 40: ; ACU2 / CONT2 PRINT Media de los que tienen mas de 40: ; ACU3 / CONT3 PRINT Media total: ; (ACU1 + ACU2 + ACU3) / (CONT1 + CONT2 + CONT3) PRINT Total de edades ledas: ; CONT1 + CONT2 + CONT3 PRINT Suma total de todas las edades: ; ACU1 + ACU2 + ACU3

- 84 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 29
INICIO

H = -1

H=H+1

M = -1

M=M+1

S = -1

S=S+1

SLEEP 1

BORRAR PANTALLA

ESCRIBIR H; ":"; M; ":"; S

NO

S = 59 SI

NO

M = 59 SI

NO

H = 23 SI FIN

- 85 -

Metodologa de la Programacin

DIM H AS INTEGER DIM M AS INTEGER DIM S AS INTEGER FOR H = 0 TO 23 FOR M = 0 TO 59 FOR S = 0 TO 59 SLEEP 1 CLS PRINT H; :; M; :; S NEXT NEXT NEXT

- 86 -

Metodologa de la Programacin

SOLUCION AL EJERCICIO 30
INICIO

I=0

I=I+1

LEER NOMBRE, HORAS

HORAS > 40

NO

SI SUELDO = (HORAS - 40) * 1675 + 40 * 1150 SUELDO = HORAS * 1150

ESCRIBIR NOMBRE, SUELDO

NO

I=5

SI

FIN

- 87 -

Metodologa de la Programacin

DIM NOMBRE AS STRING DIM SUELDO AS INTEGER DIM HORAS AS SINGLE FOR I = 1 TO 5 INPUT Introduzca el nombre: ; NOMBRE INPUT Introduzca horas: ; IF HORAS > 40 THEN SUELDO = (HORAS 40) * 1675 + 40 * 1150 ELSE SUELDO = HORAS * 1150 ENDIF PRINT El empleado ; NOMBRE; tiene un sueldo de ; SUELDO NEXT

- 88 -

Metodologa de la Programacin

CAPITULO

Estructuras de datos internas (tablas)

Hasta ahora, los datos manejados en los programas han sido los denominados datos simples (numricos o alfanumricos). En un gran nmero de problemas es necesario manejar un conjunto de datos, ms o menos grande, que estn relacionados entre s, de tal forma que constituyen una unidad para su tratamiento. Por ejemplo, si se quiere manipular una lista de 100 nombres de personas, es conveniente tratar este conjunto de datos de forma unitaria en lugar de utilizar 100 variables, una para cada dato simple. Un conjunto de datos homogneos que se tratan como una sola unidad se denomina estructura de datos. Si una estructura de datos reside en la memoria central del ordenador, se denomina estructura de datos interna. Recprocamente si reside en un soporte externo, se denomina estructura de datos externa. La estructura de datos interna ms importante desde el punto de vista de utilizacin es la tabla, que existe en la prctica totalidad de los lenguajes de programacin. Esta estructura se corresponde con los conceptos matemticos de vector, matriz y poliedro.

- 89 -

Metodologa de la Programacin

Conceptos y definiciones
Una tabla consiste en un nmero fijo, finito y ordenado de elementos, todos del mismo tipo y bajo un nombre comn para todos ellos. Se denominan componentes a los elementos de una tabla. La posicin de cada componente dentro de la tabla viene determinada por uno o varios ndice. A cada componente se puede acceder de forma directa indicando sus ndices y el nombre de la tabla. Una tabla se puede estructurar en una, dos o ms dimensiones segn el nmero de ndices necesarios para acceder a sus elementos. Por lo tanto, la dimensin de una tabla es el nmero de ndices que utiliza.
Longitud o tamao de una tabla es el nmero de componentes que contiene.

El tipo de una tabla es el tipo de sus componentes. Las componentes de una tabla se utilizan de la misma forma que cualquier otra variable de un programa, pudiendo por tanto intervenir en instrucciones de asignacin, entrada/salida, etc.
Ejemplo:

Tabla que contiene 4 nombres de personas:


ALUMNOS LUIS 1 2 JOSE 3 ROSA 4 JUAN

Figura 21

TABLA: La estructura de datos representada. NOMBRE DE LA TABLA: ALUMNOS. COMPONENTES: ALUMNOS(1), ALUMNOS(2), ALUMNOS(3), ALUMNOS(4). INDICE: Los nmeros del 1 al 4 que direccionan cada componente. DIMENSION: Una. LONGITUD: Cuatro. TIPO: Alfanumrica. En los diferentes lenguajes de programacin hay que declarar las tablas antes de su utilizacin.

- 90 -

Metodologa de la Programacin

Hay que tener en cuenta que los valores de los ndices pueden variar de un lenguaje a otro, es decir, existen lenguajes de programacin donde el primer valor del ndice es el 0 y existen otros lenguajes donde el primer valor del ndice es el 1.
Ejemplo:

Para aquellos lenguajes donde el valor del primer ndice es 0, los componentes de la tabla del ejemplo anterior sera: ALUMNOS(0) = LUIS ALUMNOS(1) = JOSE ALUMNOS(2) = ROSA ALUMNOS(3) = JUAN Para aquellos lenguajes donde el valor del primer ndice es 1, los componentes de la tabla del ejemplo anterior sera: ALUMNOS(1) = LUIS ALUMNOS(2) = JOSE ALUMNOS(3) = ROSA ALUMNOS(4) = JUAN En BASIC y VISUAL BASIC, el valor del primer ndice en las tablas, comienza en el valor 0. As, la declaracin de la tabla del ejemplo sera la siguiente:
DIM ALUMNOS(3) AS STRING

La declaramos con valor 3, aunque el nmero de componentes es 4, ya que el primer ndice es el 0.

Tipos de tablas
Las tablas se clasifican segn su dimensin en: Unidimensionales. Bidimensionales. Multidimensionales.

Tablas unidimensionales
Son tablas de una dimensin. Tambin se denominan vectores.

- 91 -

Metodologa de la Programacin

Tienen un solo ndice. Cada componente del vector se direcciona mediante su nombre seguido del nmero correspondiente al ndice entre parntesis. El ejemplo anterior nos muestra una tabla de este tipo, en la cual la componente tercera que contiene el valor ROSA se denota por:
ALUMOS(3)

Si queremos intercambiar los contenidos de las componentes primera y segunda, lo haremos utilizando una variable alfanumrica auxiliar AUX de la siguiente manera:
AUX = ALUMNOS(1) ALUMNOS(1) = ALUMNOS(2) ALUMNOS(2) = AUX

Tablas bidimensionales
Son tablas de dos dimensiones. Tambin se denominan matrices. Tienen dos ndices, por lo cual cada componente de la matriz se direcciona mediante su nombre seguido de los dos ndices separados por coma y entre parntesis.
Ejemplo:

Matriz de 4 filas y 8 columnas conteniendo el nmero de alumnos matriculados en cada grupo de un centro docente por asignatura. Las filas corresponden a los grupos y las columnas a las asignaturas.
MATRICULA 1 2 3 4 35 40 25 33 1 30 33 23 33 2 32 40 26 33 3 32 37 21 32 4 34 36 24 34 5 35 39 24 30 6 34 40 25 32 7 28 29 15 20 8

Figura 22

- 92 -

Metodologa de la Programacin

NOMBRE DE LA TABLA: MATRICULA COMPONENTES: MATRICULA(1,1), MATRICULA(1,2), ..., MATRICULA(4,7), MATRICULA(4,8). INDICE: Los nmeros del 1 al 4 para las filas y los nmeros 1 al 8 para las columnas. DIMENSION: Dos. LONGITUD: 6 * 8 = 48 TIPO: Numrica entera. La componente MATRICULA(4, 6) almacena el nmero de alumnos matriculados en el grupo nmero 4 en la asignatura nmero 6, que en el ejemplo representado son 30 alumnos. En BASIC y VISUAL BASIC, el valor del primer ndice en las tablas, comienza en el valor 0. As, la declaracin de la tabla del ejemplo sera la siguiente:
DIM MATRICULA(3, 7) AS INTEGER

Para las filas, las declaramos con valor 3, aunque el nmero de componentes es 4, y para las columnas, las declaramos con valor 7, aunque el nmero de componentes es 8.

Tablas multidimensionales
Son tablas de tres o ms dimensiones. Tambin se les denominan poliedros. Este tipo de tablas no son de uso frecuente, no obstante es una herramienta til para un determinado nmero de problemas. La mayora de los lenguajes de programacin admiten estas estructuras, aunque cada uno de ellos tiene una limitacin con respecto al nmero mximo de dimensiones permitidas.

- 93 -

Metodologa de la Programacin

EJERCICIOS

RESUELTOS

- 94 -

Metodologa de la Programacin

31. Realizar el ordinograma y la codificacin en BASIC, de una aplicacin que realice los siguiente: 1 Debemos visualizar un men de opciones: MENU DE OPCIONES 1. Introducir notas. 2. Realizar la media de las notas. 3. Salir Seleccione una opcin 2 El programa deber seguir en ejecucin hasta que seleccionemos la opcin nmero 3. 3 En la opcin nmero 1, debemos introducir 10 notas de exmenes y las almacenaremos en un vector. 4 En la opcin nmero 2, debemos realizar la media de las notas previamente introducidas en el vector. Debemos tener en cuenta la posibilidad de que el usuario, no haya introducido ninguna nota, en cuyo caso, visualizaremos un mensaje de advertencia y por tanto, no realizara la media. NOTAS: - Las opciones del men, debern ser controladas mediante SELECT CASE. - Una vez realizada cualquiera de las dos primeras opciones, el men deber volver a visualizarse.

- 95 -

Metodologa de la Programacin

INICIO

SW = 0 A CU = 0 LEER NUM

NUM <> 3 NO

S I

FIN NOT A S 1 2 ELSE

SW = 1 SW = 1 I = -1 I = -1 I=I+1 I=I+1 LEER NOT A S(I) ACU = A CU + NOT A S(I) NO I >= 9 NO S I I >= 9 S I E SCRIBIR A CU / 10

ES CRIBIR OPCION INCORRECT A

A CU = 0

E SCRIB IR "INT RODUCIR A NT E S LAS NOT AS "

SW = 0

LEER OP CION

- 96 -

Metodologa de la Programacin

DIM NUM AS INTEGER DIM NOTAS AS SINGLE DIM I AS INTEGER DIM ACU AS INTEGER DIM SW AS INTEGER SW = 0 ACU = 0 PRINT MENU DE OPCIONES PRINT 1. Introducir notas PRINT 2. Realizar La media de las notas PRINT 3. Salir INPUT Seleccione una opcin:; NUM WHILE num <> 3 SELECT CASE num CASE 1 SW = 1 FOR I = 0 TO 9 INPUT Introduce la nota:; NOTAS(I) NEXT CASE 2 IF SW = 1 THEN FOR I = 0 TO 9 ACU = ACU + NOTAS(I) NEXT PRINT La nota media es: ; ACU / 10 ELSE PRINT Introduce antes las notas END IF CASE ELSE PRINT Opcin no correcta END SELECT PRINT MENU DE OPCIONES PRINT 1. Introducir notas PRINT 2. Realizar La media de las notas PRINT 3. Salir INPUT Seleccione una opcin:; NUM WEND

- 97 -

Metodologa de la Programacin

32. Programa que lee una secuencia de 10 nmeros almacenndolos en un vector llamado NUMEROS y los visualiza en orden inverso al de entrada.

INICIO

I = -1

I=I+1

LEER NUMEROS(I)

NO

I >= 9

S I I = 10

I=I-1

ESCRIBIR NUMEROS

NO

I <= 0

S I FIN

- 98 -

Metodologa de la Programacin

DIM I AS INTEGER DIM NUMEROS AS INTEGER FOR I = 0 TO 9 INPUT Introduce un nmero: ; NUMEROS(I) NEXT PRINT El orden inverso de entrada es: FOR I = 9 TO 0 STEP 1 PRINT NUMEROS(I) NEXT

- 99 -

Metodologa de la Programacin

33. Se introduce por teclado una secuencia de calificaciones (nmeros ENTEROS entre 0 y 10). La secuencia se termina cuando se introduce un nmero menor que 0 o mayor que 10. Disear un programa que obtenga y visualice la lista de frecuencias (nmero de repeticiones) de cada una de las notas.
INICIO

LEER NUM

(NUM >= 0) AND (NUM <= 10) NO I = -1

S I

NOTA(NUM) = NOT A(NUM) + 1

I=I+1

LEER NUM

ESCRIBIR NOT A(I)

NO

I >= 10

S I

FIN

- 100 -

Metodologa de la Programacin

DIM NUM AS INTEGER DIM NOTA AS INTEGER DIM I AS INTEGER INPUT Introduce la nota (0-10): ; NUM WHILE (NUM >= 0) AND (NUM <= 10) NOTA(NUM) = NOTA(NUM) + 1 INPUT Introduce la nota (0-10):; NUM WEND FOR I = 0 TO 10 PRINT La nota ; I; ha sido introducida ; NOTA(I); veces NEXT

- 101 -

Metodologa de la Programacin

34. Con la misma tabla del ejercicio anterior, disear un programa que obtenga y visualice los siguientes datos estadsticos: media aritmtica, y moda. Media Aritmtica: Es el cociente entre la suma de valores por su frecuencia y la suma de frecuencias. Moda: Valor de mxima frecuencia.

- 102 -

Metodologa de la Programacin

INICIO

LE E R NUM

(NUM >= 0) A ND (NUM <= 10) NO

SI

I = -1

NOT A (NUM) = NOT A (NUM) + 1

I=I+1 NOT A S (NUM) > MA Y OR S UMA F = S UMA F + NOT A (I) SI NO

S UMA M = S UMA M + (NOT A (I) + I)

MA Y OR = NOT A S (NUM)

NOT A (I) = MA Y OR

NO

SI

LE E R NUM

NOT A (I)

NO

I >= 10

SI

E S CRIB IR S UMA M / S UMA F

FIN

- 103 -

Metodologa de la Programacin

DIM NUM AS INTEGER DIM NOTA(10) AS INTEGER DIM I AS INTEGER INPUT Introduce la nota (0-10): ; NUM WHILE (NUM >= 0) AND (NUM <= 10) NOTA(NUM) = NOTA(NUM) + 1 IF NOTA(NUM) > MAYOR THEN MAYOR = NOTA(NUM) END IF INPUT Introduce la nota (0-10): ; NUM WEND FOR I = 0 TO 10 SUMAF = SUMAF + NOTA(I) SUMAM = SUMAM + (NOTA(I) * I) IF NOTAS(I) = MAYOR THEN PRINT I; es el valor de mayor frecuencia con ; NOTA(I); veces END IF NEXT PRINT La media aritmtica es: ; SUMAM / SUMAF

- 104 -

Metodologa de la Programacin

35. Programa que recibe como dato un nmero entero positivo, correspondiente a una cantidad de dinero, calcula y visualiza el mejor desglose de moneda (mnimo nmero de unidades monetarias). Las unidades monetarias existentes son: 10000, 5000, 2000, 1000, 500, 200, 100, 50, 25, 10, 5, 2, 1 El programa almacenar estas cantidades ordenadas en un vector y desglosar la cantidad en orden decreciente de las componentes del vector.

- 105 -

Metodologa de la Programacin

INICIO

CANTIDAD = 0

CARGAR VECTOR

LEER NUM

I = -1

I=I+1

CANTIDAD = NUM \ MONEDA(I)

CANTIDAD<>0 SI

NO

NUM = NUM MOD MONEDA(I)

ESCRIBIR CANTIDAD

CANTIDAD = 0

I >= 12 SI FIN

NO

- 106 -

Metodologa de la Programacin

DIM MONEDA(12) AS INTEGER DIM NUM AS INTEGER DIM I AS INTEGER DIM CANTIDAD AS INTEGER MONEDA(0) = 10000 MONEDA(1) = 5000 MONEDA(2) = 2000 MONEDA(3) = 1000 MONEDA(4) = 500 MONEDA(5) = 200 MONEDA(6) = 100 MONEDA(7) = 50 MONEDA(8) = 25 MONEDA(9) = 10 MONEDA(10) = 5 MONEDA(11) = 2 MONEDA(12) = 1 INPUT Introduce la cantidad: ; NUM FOR I = 0 TO 12 CANTIDAD = NUM \ MONEDA(I) IF CANTIDAD <> 0 THEN NUM = NUM MOD MONEDA(I) PRINT CANTIDAD billetes / monedas de ; MONEDA(I); pesetas CANTIDAD = 0 END IF NEXT Con WHILE DIM MONEDA(12) AS INTEGER DIM NUM AS INTEGER DIM I AS INTEGER DIM CANTIDAD AS INTEGER MONEDA(0) = 10000 MONEDA(1) = 5000 MONEDA(2) = 2000 MONEDA(3) = 1000 MONEDA(4) = 500 MONEDA(5) = 200 MONEDA(6) = 100 MONEDA(7) = 50 MONEDA(8) = 25 MONEDA(9) = 10 MONEDA(10) = 5 MONEDA(11) = 2 MONEDA(12) = 1 INPUT Introduce la cantidad: ; NUM WHILE NUM <> 0 CANTIDAD = NUM \ MONEDA(I) IF CANTIDAD <> 0 THEN NUM =NUM MOD MONEDA(I) PRINT CANTIDAD billetes / monedas de ; MONEDA(I); pesetas I=I+1 END IF WEND

- 107 -

Metodologa de la Programacin

36. En BASIC, podemos cargar automticamente un vector de la siguiente manera ... ... ... DATA 1, 8, 9, 0, 3, 2, 5, 2 FOR I = 0 TO 7 READ COMPONENTE VECTOR(I) = COMPONENTE NEXT ... ... ... La lnea DATA contiene los valores de cada componente y la lnea READ lee los valores de cada componente. Luego la componente leda, se almacena en el vector que recibe el nombre de VECTOR. Programa que lea 20 nmeros enteros sobre un vector existente en memoria y obtenga cules son el mayor y el menor nmero almacenado, y cuntas veces se repiten ambos.

- 108 -

Metodologa de la Programacin

INICIO

MAYOR = 0 MENOR = 0 CONTA = 0 CONTAM = 0 CARGAR VECTOR

MAYOR = VECTOR(0) MENOR = VECTOR(0)

I = -1

I=I+1

VECTOR(I) >= MAYOR SI

NO

VECTOR(I) > MAYOR SI CONTA = 0

NO

VECTOR(I) < MENOR SI

NO

CONTA = CONTA + 1

CONTAM = 0 VECTOR(I) = MENOR NO

MAYOR = VECTOR(I)

MENOR = VECTOR(I) SI

CONTA = CONTA + 1

CONTAM = CONTAM + 1

CONTAM = CONTAM + 1

NO

I <= 19 SI

ESCRIBIR MAYOR, CONTA, MENOR, CONTAM

FIN

- 109 -

Metodologa de la Programacin

DIM VECTOR(19) AS INTEGER DIM I AS INTEGER DIM MAYOR AS INTEGER DIM MENOR AS INTEGER DIM CONTA AS INTEGER DIM CONTAM AS INTEGER DATA 8, 3, 5, 1, 4, 7, 25, 34, 1, 2, 0, 34, 60, 120, 5, 2, 1, 0, 2, 0 FOR I = 0 TO 19 READ COMPONENTE VECTOR(I) = COMPONENTE NEXT MAYOR = VECTOR(0) MENOR = VECTOR(0) FOR I = 0 TO 19 IF VECTOR(I) >= MAYOR THEN IF VECTOR > MAYOR THEN CONTA = 0 MAYOR = VECTOR(I) CONTA = CONTA + 1 ELSE CONTA = CONTA + 1 END IF ELSE IF VECTOR(I) < MENOR THEN CONTAM = 0 MENOR = VECTOR(I) CONTAM = CONTAM + 1 ELSE IF VECTOR(I) = MENOR THEN CONTAM = CONTAM + 1 END IF END IF END IF NEXT PRINT MAYOR; es el nmero mayor. Se repite ; CONTA; vez/veces PRINT MENOR; es el nmero menor. Se repite ; CONTAM; vez/veces

- 110 -

Metodologa de la Programacin

37. Programa que carga una matriz de 5 filas y 3 columnas con nmeros enteros, visualizando los valores mximo y mnimo, y sus posiciones dentro de la tabla.

- 111 -

Metodologa de la Programacin

INICIO

MAYOR = 0 MENOR = 0

CARGAR MATRIZ

MAYOR = MATRIZ(0,0) MENOR = MATRIZ(0, 0)

I = -1

I=I+1

J = -1

J=J+1

MATRIZ(I, J) > MAYOR SI MAYOR = MATRIZ(I, J) MAYORPOSI = I MAYORPOSJ = J

NO

MATRIZ(I, J) < MENOR SI MENOR = MATRIZ(I, J) MENORPOSI = I MENORPOSJ = J

NO

NO

J >= 2

SI NO I >= 4

SI ESCRIBIR MAYOR, MAYORPOSI, MAYORPOSJ, MENOR, MENORPOSI, MENORPOSJ

FIN

- 112 -

Metodologa de la Programacin

DIM MATRIZ(4, 2) AS INTEGER DIM MAYOR AS INTEGER DIM MENOR AS INTEGER DIM I AS INTEGER DIM J AS INTEGER DIM MAYORPOSI AS INTEGER DIM MAYORPOSJ AS INTEGER DIM MENORPOSI AS INTEGER DIM MENORPOSJ AS INTEGER DATA 3, 7, 8, 1, 32, 105, 20, 60, 25, 3, 2, 20, 1, 105, 15 FOR I = 0 TO 4 FOR J = 0 TO 2 READ COMPONENTE MATRIZ(I, J) = COMPONENTE NEXT NEXT MAYOR = MATRIZ(0,0) MENOR = MATRIZ(0,0) FOR I = 0 TO 4 FOR J = 0 TO 2 IF MATRIZ(I, J) > MAYOR THEN MAYOR = MATRIZ(I, J) MAYORPOSI = I MAYORPOSJ = J ELSE IF MATRIZ(I, J) < MENOR THEN MENOR = MATRIZ(I, J) MENORPOSI = I MENORPOSJ = J END IF END IF NEXT NEXT PRINT MAYOR; es el nmero mayor. Posicin (; MAYORPOSI; ,; MAYORPOSJ; ) PRINT MENOR; es el nmero menor. Posicin (; MENORPOSI; ,; MENORPOSJ; )

- 113 -

Metodologa de la Programacin

38. Programa que genere y visualice una matriz unitaria de orden N. Una matriz unitaria de orden N es la que tiene N filas y N columnas con todas sus componentes a 0 excepto las de su diagonal principal, que estn a 1.

- 114 -

Metodologa de la Programacin

INICIO

I = -1

I=I+1

J = -1

J=J+1

SI

I=J

NO

MATRIZ(I, J) = 1

MATRIZ(I, J) = 0

ESCRIBIR 1

ESCRIBIR 0

NO

J >= N

SI

NO I >= N SI

FIN

- 115 -

Metodologa de la Programacin

39. Programa que cargue un vector de 10 elementos. Una vez cargados, se deber rotar todas sus componentes un lugar hacia su derecha, teniendo en cuenta que la ltima componente se ha de desplazar al primer lugar.

- 116 -

Metodologa de la Programacin

INICIO

CARGAR VECTOR

AUX = VECTOR(9)

I = 10

I=I-1

VECTOR(I) = VECTOR(I - 1)

NO

I <= 1

SI VECTOR(0) = AUX

I = -1

I=I+1

ESCRIBIR

NO I <= 1

SI

FIN

- 117 -

Metodologa de la Programacin

DIM VECTOR(9) AS INTEGER DIM I AS INTEGER DIM AUX AS INTEGER DATA 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 FOR I = 0 TO 9 READ VECTOR(I) NEXT AUX = VECTOR(9) FOR I = 9 TO 1 STEP 1 VECTOR(I) = VECTOR(I 1) NEXT VECTOR(0) = AUX FOR I = 1 TO 9 PRINT VECTO(I) NEXT

- 118 -

Metodologa de la Programacin

40. Dado un vector numrico de 10 componentes, obtener la posicin que ocupa el primer nmero negativo, si existe.
INICIO

CARGAR VECTOR

SW = 0 I=0

(SW = 0) AND (I <= 9) SI

NO

NO VECTOR(I) < 0 SW = 1

NO

SI

SI

SW = 1

ESCRIBIR VECTOR(I - 1), (I - 1)

ESCRIBIR "NO HAY NUMEROS NEGATIVOS"

I=I+1

FIN

- 119 -

Metodologa de la Programacin

DIM I AS INTEGER DIM VECTOR(9) AS INTEGER DATA 3, 8, 1, -4, 10, 34, -7, 16, -9, 10 FOR I = 0 TO 9 READ VECTOR(I) NEXT SW = 0 I=0 WHILE (SW = 0) AND (I <= 9) IF VECTOR(I) < 0 THEN SW = 1 END IF I=I+1 WEND IF SW = 1 THEN PRINT El primer nmero negativo es ; VECTOR(I 1); en la posicin ; (I 1) ELSE PRINT No hay nmeros negativos END IF

- 120 -

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