Mi página güeb principal

Ejercicios propuestos para Programación I

Inicio Página de inicio : Página de asignaturas : Programación I

Unidad didáctica I

Programa 1. hola.mod

Escribir un programa en Modula2 que diga “hola mundo”

Programa 2. fulanito.mod (**)

Modificar el programa anterior para que le pida el nombre al usuario y diga “hola fulanito”. ¿Qué problemas surgen?. (Se verá más adelante cómo solucionar los problemas surgidos…) Por ejemplo:

Hola fulanito
=============
¿Cómo te llamas?: Miguel Angel (se ecribe un nombre)
Hola Miguel Angel (saluda “hola” + el nombre)

Programa 3. mengano.mod

Modificar el programa anterior para que tome el nombre de usuario de la línea de comandos. En caso de no existir argumentos en la línea de comandos, que le pida el nombre al usuario. El resultado, en cualquier caso es “hola mengano”. Por ejemplo con argumentos en la línea de comandos:

C:>mengano Miguel Angel
Hola Miguel Angel
C:>_

Ejemplo en el que no se especifican argumentos en la línea de comando:

C:>mengano
¿Cómo te llamas?: Miguel Angel (se ecribe un nombre)
Hola Miguel Angel
C:>_

Programa 4.cuadrado.mod (**)

Escribir un programa en Modula2 que pida un numero natural (entero y no negativo) y devuelva el cuadrado del número. ¿Hasta qué número se puede pedir al usuario, para poder devoler el cuadrado del mismo? ¿Y con números naturales?

Programa 5.tabla2.mod

Escribir un programa en Modula2 que imprima en pantalla la tabla de multiplicar del 2. El formato debe ser el siguiente (obsérvese la tabulación) :

 2  x   1 =   2
2 x 2 = 4
2 x 3 = 6
...
2 x 9 = 18
2 x 10 = 20

Programa 6.tablamul.mod

Modificar el programa anterior para que imprima cualquier tabla de multiplicar, dependiendo de un dato introducido por el usuario.

Programa 7.tablamv2.mod (**)

Modificar el programa anterior para que imprima cualquier tabla de multiplicar, desde un número X hasta un número Y cualesquiera, dependiendo de los datos introducidos por el usuario. Es decir, se le pide al usuario el número de tabla (N), desde dónde (X) hasta dónde (Y) se quiere imprimir.

Tabla de multiplicar

====================

Introduzca un número para la tabla: 2 (se escribe un número)
desde: 4 (se escribe un número)
hasta: 8 (se escribe un número)

        2  x  4 =   8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16

¿Qué parámetros recibe este programa para hacer exactamente lo mismo que tabla2.mod?

Programa 8.supertab.mod

Escribir un programa en Modula2 que imprima la siguiente tabla:

   1   2   3   4   5   6   7   8   9  10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

Pensar en distintas implementaciones para hacer este programa,

Programa 9.repsimb.mod (**)

Escribir un programa en Modula2 que imprima un carácter dado, un número de veces dado. Pedir al usuario estos datos. Por ejemplo:

Repetir símbolo

===============

Introduzca un símbolo: *            (asterisco)

Introduzca un número: 10            (diez)

**********                          (resultado: 10 asteriscos)

Programa 10.rombo.mod (**)

Escribir un programa en Modula2 que dado un numero N construya en pantalla un rombo de N símbolos por cada lado. Por ejemplo:

Rombo

===============

Introduzca un número: 4

   *
  ***
 *****
*******
 *****
  ***
   *

Programa 11.romboh.mod

Escribir un programa en Modula2 que dado un número N construya en pantalla un rombo hueco de N símbolos por cada lado. Por ejemplo:

Rombo

===============

Introduzca un número: 4

   *
  * *
 *   *
*     *
 *   *
  * *
   *

Programa 12.rombop.mod (**)

Escribir un programa en Modula2 que, dado un número N, construya en pantalla un cuadrado de N símbolos por cada lado, apoyado sobre uno de sus vértices. Obsérvese que se puede usar el programa del rombo, aplicando un factor de proporción. (¿cuál es la relación de filas/columnas?) Por ejemplo:

Rombo proporcional

==================

Introduzca un número: 4

*
*****
*********
*************
*********
*****
*

Programa 13.Máximo y mínimo (**)

Escribir el fragmento de código de Modula2 que permita determinar si una variable contiene un valor mayor (menor) que el de otra variable.

Programa 14.Intercambiar valores (**)

Escribir el fragmento de código de Modula2 que permita intercambiar el valor entre dos variables. Pista: Intercambiar el líquido de dos vasos, sin que se mezclen.

Programa 15.serie.mod (**)

Escribir un programa en Modula2 que escriba el resultado de la suma de los N primeros números, es decir, el resultado de la serie aritmética 1 + 2 + 3 + … + N. ¿se conoce la fórmula de esta serie?

Programa 16.distancia.mod (**)

Escribir un programa en Modula2 que dados dos puntos del plano, mediante sus coordenadas cartesianas (x1, y1) (x2, y2), calcule la distancia euclídea entre ellos, es decir, la distancia “habitual”. Aplicar Pitágoras.

Programa 17.triangul.mod

Escribir un programa en Modula2 que dados tres datos numéricos a, b y c, que representan los lados de un triángulo, diga información acerca de cómo es este triángulo: Equilátero, Isósceles, Escaleno, Rectángulo; calcule el perímetro; y caso de ser un triángulo imposible que lo indique (un lado mayor que la suma de los otros dos, o un lado con un valor negativo o cero). Realizar un diagrama de flujo.

Programa 18.fib.mod (**)

Escribir un programa en Modula2 que imprima en pantalla la serie de Fibonacci: (Utilizando enteros o cardinales, hallar todos los términos posibles)

0 1 1 2 3 5 8 11 17 28 45 73 128 201 329 530 859 1389 2248

Programa 19.primo.mod (**)

Escribir un programa en Modula2 que determine si un número es primo o no.

Programa 20.pascal.mod

Escribir un programa en Modula2 que, dado un número natural, pinte tantas líneas del triángulo de Pascal.

Programa 21.tartaglia.mod

Escribir un programa en Modula2 que, dado un número natural, pinte tantas líneas del triángulo de Tartaglia.

Programa 22.palindro.mod

Escribir un programa en Modula2 que determine si un vector de caracteres contiene un texto palíndromo o no (palíndromo es al texto lo que capicúa a los números). No se consideran los espacios. Ejemplos de palíndromos: “arenera”, “sos”, “dabale arroz a la zorra el abad”

Programa 23.sumacomp.mod (**)

Escribir un programa en Modula2 que determine la suma de las componentes de un vector de enteros.

Programa 24.paridad.mod

Escribir un programa en Modula2 que dado un array de texto diga si el array contiene una cadena de paréntesis correcta, es decir, tiene pardidad. Si por cada paréntesis de abrir, existe uno de cerrar, y en ningún momento se cierra un paréntesis que no ha sido abierto. ¿Qué ocurre si introducimos una regla más: contemplar los corchetes, llaves…?

()                                    <correcta>

((()())())                          <correcta>

)(                                  <incorrecta>

)                                   <incorrecta>

(()                                 <incorrecta>

Programa 25.mimenu.mod (**)

Escribir un programa en Modula2 que tenga la estructura de un menú principal (de un programa típico de MS-DOS de los de los años 80). Que presente opciones en pantalla (seleccionables mediante un número, o una letra), pida una tecla y esté preparado para realizar la opción elegida por el usuario. No acaba hasta que el usuario no pulsa la opción “Salir”. Realizar un diagrama de flujo.

************
* Mi Menu *
************

1.- Saludar
2.- Rombo
3.- Tabla multiplicar

9.- Triángulos

0.- Salir

Opción: _

Programa 26.burbuja.mod (**)

Escribir un programa en Modula2 que ordene los elementos de un vector por el método de la burbuja.

Programa 27.ordinser.mod (**)

Escribir un programa en Modula2 que ordene los elementos de un vector por el método de inserción directa.

Programa 28.ordselec.mod (**)

Escribir un programa en Modula2 que ordene los elementos de un vector por el método de selección directa.

Programa 29.busdicot.mod (**)

Escribir un programa en Modula2 que determine en qué posición está un elemento X dentro de un vector V de 100 posiciones, mediante el método de la búsqueda dicotómica.

Se tienen que dar la siguientes circunstancias:

·      El vector está ordenado en orden creciente (por ejemplo) y sin huecos, y

·      el elemento buscado existe.

¿Cuántos pasos son necesarios? ¿y para un vector de 1000 posiciones?

Programa 30.Máximo de un vector

Escribir un programa en Modula2 que determine la posición en la que se encuentra el elemento máximo de un vector.

Si existen varios iguales, entonces se considerará una de las tres siguientes implementaciones: Devolver el primero, devolver el ultimo, devolver todos. (Ojo, devolver la posicion de todos los datos, NO imprimirlos en pantalla.

Programa 31.Máximo de una matriz

Escribir un programa en Modula2 que, dada una matriz de m filas y n columnas de enteros, determine la posición en la que se encuentra el primer elemento con un valor máximo absoluto.

 

[puede que haya más próximamente]

Unidad didáctica II

[próximamente]

Unidad didáctica III

[próximamente]


Inicio Página de inicio : Página de asignaturas : Programación I

Valid HTML 4.01!

Última actualización:  27-01-2004 mac at innova (dot) uned (dot) es
1