Ejercitario Algoritmo

3
Algoritmos ( IEK, IEL. ICM, IA) Año 2016 - 1-marzo-2016 - Práctica de SL en Sala de Máquinas Objetivo de la clase Familiarizar al alumno con el entorno de programación SL para la representación y ejecución de algoritmos de solución computacional. Resolver ejercicios algorítmicos de tipo lineal. Sugerencia: Al escribir código de programa es importante que pueda “leerse” fácilmente. Para ello puede utilizar la cantidad de lineas en blanco así como sangrías y tabulaciones suficientes. En el ejemplo del ejercicio 1 puede notar que las palabras reservadas se encuentran más a la izquierda que el código que escribe de forma que puede notar fácilmente la estructura del programa (cabecera, definición de variables y cuerpo). Todas las soluciones debe alzar a Educa. Indique en cada solución el nombre de los integrantes del grupo (como comentario). Esta se considerará como asistencia a la clase. Debe nombrar sus ejercicios de acuerdo al número, comprimirlos (.zip o .rar) y alzar un solo archivo. Ejercicio 0 Ingrese al entorno de SL ( generalmente se encuentra instalado en “c:\archivos de programa\SLE2” ) o puede accederlo desde: Inicio->Programas->SLE Ejercicio 1 Escriba el código correspondiente a la solución de cálculo de circunferencia y círculo que se presenta en el cuadro de la derecha. Para ello seleccione Archivo->Nuevo. Compile el programa (Ejecutar->Compilar o puede usar la combinación de teclas ALT-F9), el entorno le pedirá un nombre de archivo. Es conveniente que coloque su programa en algún lugar fácilmente “recordable”, por ejemplo en el directorio <Escritorio>\alg2016. Si no existe este directorio, créelo. Nombre su programa con algún nombre que tenga relación con el código que contiene. En este caso un nombre adecuado seria: “calc_cia_co”. Si su programa tiene algún error el compilador le dará el mensaje de error en un cuadro de diálogo y el cursor se posicionará en el lugar donde se encontró el error (dejará la línea en rojo). Para comprobar esto puede introducir intencionalmente algunos errores, ejemplos: No declare una variable; coloque en mayúscula alguna palabra reservada como var, inicio o fin; olvide algún paréntesis que cierra la llamada a una función; trate de asignar a una constante una expresión, etc. Puede ejecutar su programa mediante la opción del menú Ejecutar->Ejecutar , la combinación de teclas ALT+F9 o mediante el botón de herramienta que se encuentra debajo del menú. Al ejecutar aparecerá la venta de ejecución, la entrada y salida se realiza a través de esta ventana. Notará que las palabras reservadas, constantes literales y tipo de datos básicos se "pintan" de otro color. También puede hacer uso de las guías de indentación para "observar" mejor la estructura de su programa. Puede usar F1 desde del menú acceder a la ayuda que contiene la lista de funciones predefinidas en el lenguaje. Ahora intente usar el depurador del entorno. Ejecute su programa paso a paso y trate de "inspeccionar" el valor de las variables de su programa. Además coloque un punto de parada en algún lugar de ejecución de su programa. Su instructor le ayudará en esto pero trate de experimentar y probar antes de preguntar. Opción de depuración en el menú Ejecutar Ejercicio 2 Cambie ahora el código teniendo en cuenta lo siguiente (puede ir haciendo los cambios en el mismo archivo fuente) Tener un variable auxiliar para guardar el Radio y hacer los cálculos con Radio y no con Diámetro. Agregar más precisión a PI, digamos 3.1415926535. Lo mismo que el anterior pero mejorando la precisión de PI a 3.14159265358979 En vez de tener a PI como constante literal conviértalo en una constante nominal. Si ahora quiere mejorar la precisión, ¿cuántas veces tiene que modificar? Para definir una constante nominal cambie así la parte inicial de su programa: programa .. const PI = 3.14 var .. inicio .. cia = 2 * PI * diametro/2 ... En este momento su programa no imprime ningún mensaje para solicitar el diámetro, ¿cómo puede hacer para que Usted se dé cuenta que tiene que introducir el diámetro?, es decir imprimir un mensaje antes de la lectura. ¿Cómo puede modificar el código de manera a tener una sola variable, la que contiene el valor del diámetro? ¿Cómo aparece la impresión? Seguramente en una linea separada del número que introdujo para el diámetro. Fíjese que existen dos impresiones. ¿Como puede hacer para que exista una linea de por medio entre la impresión de cia y de co ? ¿Que pasa cuando agrega “\n” a “La circunferencia es ”? Haga ahora para que la impresión siga siendo como el ítem anterior, pero use solo una sentencia “imprimir” Ahora intente limpiar la pantalla, seguramente se habrá dado cuenta que despues de varias ejecuciones la pantalla de salida tiene muchos valores (de la ejecución actual y de anteriores)... intente usar la función cls() colocado inmediatamente luego de inicio, vea que efecto tiene. programa calc_cia_co var cia, co : numerico diametro : numerico inicio leer(diametro) cia = 2 * 3.14 * diametro / 2 co = 3.14 * (diametro / 2) ^ 2 imprimir (“La circunferencia es “, cia ) imprimir (“El circulo es “, co ) fin

description

Algunos ejercicios de Algoritmo para plantear

Transcript of Ejercitario Algoritmo

Page 1: Ejercitario Algoritmo

Algoritmos ( IEK, IEL. ICM, IA)Año 2016 - 1-marzo-2016 - Práctica de SL en Sala de Máquinas

Objetivo de la claseFamiliarizar al alumno con el entorno de programación SL para la representación y ejecución de algoritmos de solución computacional. Resolver ejercicios algorítmicos de tipo lineal.

Sugerencia:Al escribir código de programa es importante que pueda “leerse” fácilmente. Para ello puede utilizar la cantidad de lineas enblanco así como sangrías y tabulaciones suficientes. En el ejemplo del ejercicio 1 puede notar que las palabras reservadas se encuentran más a la izquierda que el código que escribe de forma que puede notar fácilmente la estructura del programa (cabecera, definición de variables y cuerpo).

Todas las soluciones debe alzar a Educa. Indique en cada solución el nombre de los integrantes del grupo (como comentario). Esta se considerará como asistencia a la clase. Debe nombrar sus ejercicios de acuerdo al número, comprimirlos (.zip o .rar) y alzar un solo archivo.

Ejercicio 0Ingrese al entorno de SL ( generalmente se encuentra instalado en “c:\archivos de programa\SLE2” ) o puede accederlo desde: Inicio->Programas->SLE

Ejercicio 1Escriba el código correspondiente a la solución de cálculo decircunferencia y círculo que se presenta en el cuadro de la derecha. Para ello seleccione Archivo->Nuevo.

Compile el programa (Ejecutar->Compilar o puede usar la combinación de teclas ALT-F9), el entorno le pedirá un nombre dearchivo. Es conveniente que coloque su programa en algún lugarfácilmente “recordable”, por ejemplo en el directorio <Escritorio>\alg2016. Si no existe este directorio, créelo. Nombre suprograma con algún nombre que tenga relación con el código quecontiene. En este caso un nombre adecuado seria: “calc_cia_co”.

Si su programa tiene algún error el compilador le dará el mensaje de error en un cuadro de diálogo y el cursor se posicionará enel lugar donde se encontró el error (dejará la línea en rojo). Para comprobar esto puede introducir intencionalmente algunos errores, ejemplos: No declare una variable; coloque en mayúscula alguna palabra reservada como var, inicio o fin; olvide algúnparéntesis que cierra la llamada a una función; trate de asignar a una constante una expresión, etc.

Puede ejecutar su programa mediante la opción del menú Ejecutar->Ejecutar , la combinación de teclas ALT+F9 o mediante elbotón de herramienta que se encuentra debajo del menú. Al ejecutar aparecerá la venta de ejecución, la entrada y salida se realiza a través de esta ventana.

Notará que las palabras reservadas, constantes literales y tipo de datos básicos se "pintan" de otro color. También puede hacer uso de las guías de indentación para "observar" mejor la estructura de su programa.Puede usar F1 desde del menú acceder a la ayuda que contiene la lista de funciones predefinidas en el lenguaje.

Ahora intente usar el depurador del entorno. Ejecute su programa paso a paso y trate de "inspeccionar" el valor de las variables de su programa. Además coloque un punto de parada en algún lugar de ejecución de su programa. Su instructor le ayudará en esto pero trate de experimentar y probar antes de preguntar. Opción de depuración en el menú Ejecutar

Ejercicio 2Cambie ahora el código teniendo en cuenta lo siguiente (puede ir haciendo los cambios en el mismo archivo fuente)– Tener un variable auxiliar para guardar el Radio y hacer los cálculos con Radio y no con Diámetro.– Agregar más precisión a PI, digamos 3.1415926535. – Lo mismo que el anterior pero mejorando la precisión de PI a 3.14159265358979– En vez de tener a PI como constante literal conviértalo en una constante nominal. Si ahora quiere mejorar la precisión,

¿cuántas veces tiene que modificar?Para definir una constante nominal cambie así la parte inicial de su programa:

programa ..const PI = 3.14var ..inicio .. cia = 2 * PI * diametro/2 ...

– En este momento su programa no imprime ningún mensaje para solicitar el diámetro, ¿cómo puede hacer para que Usted se dé cuenta que tiene que introducir el diámetro?, es decir imprimir un mensaje antes de la lectura.

– ¿Cómo puede modificar el código de manera a tener una sola variable, la que contiene el valor del diámetro?– ¿Cómo aparece la impresión? Seguramente en una linea separada del número que introdujo para el diámetro. Fíjese que

existen dos impresiones. ¿Como puede hacer para que exista una linea de por medio entre la impresión de cia y de co ? ¿Que pasa cuando agrega “\n” a “La circunferencia es ”?

– Haga ahora para que la impresión siga siendo como el ítem anterior, pero use solo una sentencia “imprimir”– Ahora intente limpiar la pantalla, seguramente se habrá dado cuenta que despues de varias ejecuciones la pantalla de salida

tiene muchos valores (de la ejecución actual y de anteriores)... intente usar la función cls() colocado inmediatamente luego de inicio, vea que efecto tiene.

programa calc_cia_covar cia, co : numerico diametro : numericoinicio leer(diametro) cia = 2 * 3.14 * diametro / 2 co = 3.14 * (diametro / 2) ^ 2 imprimir (“La circunferencia es “, cia ) imprimir (“El circulo es “, co )fin

Page 2: Ejercitario Algoritmo

Ejercicio 3

Escriba un programa que calcule el valor denominado círculo máximo entre dos puntos de la tierra. Este valor corresponde a la menor distancia entre los puntos en una superficie de una esfera. Para ello recibe dos coordenadas, una de cada punto de la tierra (xg1, xm1, xs1: yg1, ym1, ys1); (xg2, xm2, xs2, yg2, ym2, ys2)) que corresponde a la latitud y longitud en grados, minutos y segundos sexagesimales de ambos puntos. Se asumen que los datos proporcionados son correctos.

La siguiente fórmula corresponde al cálculo del círculo máximo en metros.

d=6371000 . arccos(sin(x1)sin (x2)+ cos (x1)cos(x2)cos ( y1− y2))

En este caso x1, x2, y1, y2 corresponden a los valores en radianes. Usted debe encargarse de realizar la conversión correspondiente.

Al final debe imprimir la distancia entre dichos puntos expresada en kilómetros.

En SL no existe la función arccos() por lo que debe utilizar un cálculo auxiliado por arctan() que si existe en SL.

arccos x=arctan √1− x2

x

Ejemplo de los datos de entrada:

La distancia entre Asunción y París ( Sur(S) y Oeste(W) son negativos , Norte(N) y Este(E) positivos )Asunción ( -25º16'00'' -57º40'00”) (tomado de https://es.wikipedia.org/wiki/Asunción)París (48º51'36” -2º20'40'') (tomado de https://es.wikipedia.org/wiki/París)

El resultado final es aproximadamente 9900 km. Puede verificar en el sitio http://www.movable-type.co.uk/scripts/latlong.html

Abajo se muestra un gráfico del resultado arrojado por el calculador de distancia. Lo mostrado en el mapa es referencial.

Page 3: Ejercitario Algoritmo

Ejercicio 4

Codifique el siguiente problema de solución lineal (no se puede utilizar sentencias condicionales)Dada la siguiente tabla que corresponde a la cotización de venta de monedas extranjeras

Moneda Valor en Gs.Euro 6300Dólar 5700Libra 8400

Se leen tres variables que indican cantidades en dólares, euros y libras respectivamente.

Genere la siguiente tabla con la equivalencia en otras monedas (no podrá dibujar las lineas llenas pero podrá simular con los caracteres: - + | así como se muestra abajo en el ejemplo:

+------------+-----------+-----------+-------------+-------------+------------+| | Monto | Gs. | Euros | Dolares | Libras |+------------+-----------+-----------+-------------+-------------+------------+| Euros | 100 | 630000 | - | 110.52 | 75 |+------------+-----------+-----------+-------------+-------------+------------+| Dolares | 200 | 1140000 | 180.95 | - | 135.71 |+------------+-----------+-----------+-------------+-------------+------------+| Libras | 300 | 2520000 | 400 | 442.11 | - |+------------+-----------+-----------+-------------+-------------+------------+

Resuelva el ejercicio utilizando la menor cantidad de variables posibles (no es obligatorio, una vez que lo resuelva puede ir mejorando su código)

Para formatear los números puede utilizar la función str(). Vea la ayuda sobre dicha función (Presione F1 y busque el nombre de la función str ). Como sugerencia pruebe el ejemplo que se muestra en la ayuda para ver el efecto de las

diferentes formas de uso de la función

Por ejemplo para imprimir formateado el número 87.825 de manera que ocupe 8 espacios de ancho con dos decimales, hacemos lo siguiente:

imprimir(str(87.825,8,2)) ==> imprimirá “ 87.83” (sin las comillas, fijarse que también redondea!!)