Serie de Ejercicios

Los ejercicios que a continuación se presentas deberán entregarlos el día lunes 24 de septiembre y deberán incluir el siguiente formato.
1. Debe contener una caratula impresa con sus datos y el trabajo que entregan (no incluir el nombre del profesor).
2. Deberán ser a mano en hojas blancas o de reciclaje, si son blancas ocupar ambos lados.
3. No deben tener manchones o borrones muy visibles en las hojas, entregarlo lo mas limpio posible.
4. Deberán ser entregados al momento del pase de lista, posterior mente no se reciben.
5. Deberán ir engrapadas las hojas,no gasten en folder o engargolados.

 

  1. Construya un diagrama de flujo y el pseudocódigo que la recibir como datos dos números reales, calcule la suma, la resta y la multiplicación de dichos números.
  2. Construya un algoritmo y diagrama de flujo para que al recibir como datos el costo de un artículo vendido y  la cantidad de dinero entregada por el cliente, calcule e imprima el cambio que se debe entregar al cliente.
  3. Construya un diagrama de flujo y un pseudocódigo que al recibir como dato el radio de un círculo, calcule e imprima tanto su área como la longitud de su circunferencia.
  4. En una casa de cambio  necesitan construir un programa tal que al dar como datos una cantidad expresada en dólares, convierta esa cantidad a pesos, construye el diagrama de flujo y le pseudocódigo. El precio del dólar es de 12.48 pesos.
  5. Escribe un pseudocódigo que genere una impresión como la que se muestra a continuación:

XXXX
XX
XXX
XXX
XXX
XX
XXX
6. Construya un diagrama de flujo  y pseudocódigo que calcule e imprima el número de segundos que hay en un determinado número de días.
7. En las olimpiadas de invierno el tiempo que realizan los participantes en la competencia de velocidad en pista se mide en minutos, segundos y centésimas.
La distancia que recorren se expresa en metros. Construye un diagrama de flujo que calcule la velocidad de los participantes en kilómetros por la hora de diferentes competencias.

Tiempo en segundos: TSE =MIN * 60 + SEG + CEN / 100
Velocidad: VMS = DIS(METROS)/TES(SEGUNDOS)
Velocidad en kilómetros: VKH = VMS*3600(KILOMETROS)/1000(HORA)

8. Construya un pseudocódigo que al recibir como datos el radio, la generatriz y la altura de un cono, calcule e imprima el área de la base, el área lateral, el área total y su volumen
Área de la base:   AB= pi * radio2
Área lateral:          AL = pi * radio * gene
Área total:             AT = AB + AL
Volumen:              V = 1/3 * AB * ALTU

9. Construya el algoritmo y el pseudocódigio que al recibir como dato el radio de una esfera, calcule e imprima el área y su volumen.
Área = 4 * pi * radio2
Volumen = 1/3 * pi * radio3
10. Construya un diagrama de flujo y el pseudocódigo para que la recibir como dato e lado de un hexaedro calcule el área de la base, el área lateral, el área total y el volumen.
AB = L2
AL = 4 * L2
AT = 6 * L2
V= L 3
 

2.2. Representación de algoritmos: gráfica y pseudocódigo.

Las dos herramientas más utilizadas para diseñar algoritmos son: diagramas de flujo y pseudocódigos.

Un diagrama de flujo es una representación gráfica de un algoritmo.

Los principales símbolos son:

 

El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabas similares al inglés que facilitan tanto la escritura como la lectura de programas. En escancia un pseudocódigo se puede definir como lenguaje de especificaciones de algoritmos.

2.1 Análisis de problemas.

La primera fase de la resolución de un problema con una computadora es el análisis del problema. Esta fase requiere una clara definición, donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada.
Para poder identificar y definir un problema es conveniente responder a las siguientes preguntas:

• ¿Qué datos se requieren?
• ¿Cuál es la salida deseada?
• ¿Qué método produce la salida deseada?
• Requisitos o requerimientos adicionales y restricciones a la solución.

2. Algoritmos

Un Algoritmo es método para resolver un problema mediante una serie de pasos precisos, definidos y finitos.

Un algoritmo debe producir un resultado en tiempo finito. Los métodos que utilizan algoritmos se denominan métodos algorítmicos, en oposición a los métodos que implican algún juicio o interpretación que se denomina métodos heurísticos. Los métodos algorítmicos se pueden implementar en computadoras; sin embargo los procesos heurísticos no han sido convertidos fácilmente en las computadoras. En los últimos años las técnicas de inteligencia artificial han hecho posible la implantación del proceso heurístico en computadoras.

Los algoritmos se pueden expresar por fórmulas, diagramas de flujo o N-S y pseudocódigos. Esta última representación es la más utilizada para sus uso con lenguajes estructurados.

 

 

1.10 Consola de línea de comandos.

Los sistemas operativos con Windows o GNU/Linux se manejan gráficamente, en general con la ayuda de un mouse y un teclado, o con pantallas táctiles, y la gente está acostumbrada a que eso es lo único que existe… pero también pueden manejarse mediante comandos de texto. Las consolas o terminales suelen llamarse Konsole, Xterm, Mrxvt, Gnome-terminal, etc.

El manejo por medio de comandos de texto puede suceder mezclado con un manejo gráfico, o puede ser exclusivo, es decir, manejar todo con comandos de texto. Claro que no vamos a utilizar GIMP, Inkscape u otro programa gráfico de esa manera, pero lo que respecta a copiar archivos, ir a otra carpeta, pedir un listado, reproducir mp3, ogg, wav, ver una foto, un video, convertir un video o un audio de un formato a otro, instalar o remover programas, y muchas cosas más se pueden realizar con comandos de texto.

En general los usuarios «avanzados» utilizan estas consolas o ventanas de terminal para acceder más rápidamente a los archivos, funciones, programas, sin tener que hacer 10.000 clics con el mouse.

Por otro lado, los comandos que se ejecutan en una consola de GNU/Linux pueden combinarse para lograr resultados impensados, brindar más posibilidades al usuario.

Daré algunos ejemplos. Supongamos que quiero buscar una foto que saqué en Junín sobre una charla que dí el año pasado.

Si queremos encontrar un archivo podríamos utilizar el comando locate (antes hay que actualizar la base de datos con updatedb, pero eso debería hacerlo el sistema periódicamente de forma automatizada).

Entonces, escribiendo «locate jpg» obtendremos un listado quizá enorme de todos los archivos jpg de nuestro disco rígido.

Pero existe algo que serviría para filtrar esas imágenes JPG a nuestro antojo, podemos enviar esa salida que obtuvimos, hacia otro comando que nos muestre sólo los archivos que contienen la palabra «junin», para ver las fotos sacadas en la ciudad de junin.

Con el caracter | se envía la salida de locate hacia cualquier otro comando (esa acción se llama tubería, pipe o entubar), en este caso usaremos el comando GREP, que sirve para filtrar texto, básicamente. Entonces, si ejecutamos

locate jpg | grep junin
Obtuve algo así:
/mnt/hda1/marcos/doc/musix-dev/charlas-conferencias/Junin-2007-agosto-17/Fotos/charla_junin_2007-08-17_f1.jpg

Tengamos en cuenta que GNU/Linux distingue las mayúsculas de las minúsculas, por lo cual si escribimos junin en minúscula no encontrará las fotos que fueron guardadas con un nombre al estilo Junin. Si queremos que GREP no distinga entre mayúsculas y minúsculas deberemos agregar la opción -i (ignorar), así
locate jpg | grep -i junin

 

1.9 Ejecutables.

Un ejecutable o archivo ejecutable, es tradicionalmente un o como se le conoce mayormente archivo binario cuyo contenido se interpreta por el ordenador como un programa.
Generalmente, contiene instrucciones en código máquina de un procesador en concreto, pero también puede contener bytecode que requiera un intérprete para ejecutarlo. Además suele contener llamadas a funciones específicas de un sistema operativo (llamadas al sistema).
Dependiendo del tipo de que se traten las instrucciones, hablaremos de ejecutables portables (se pueden ejecutar en varias plataformas) y no portables (destinado a una plataforma concreta). Por ejemplo, un ejecutable Java es portable ya que utiliza un bytecode no asociado a un procesador en concreto.
Sin embargo en un sentido más general, un programa ejecutable no tiene por qué necesariamente contener código de máquina, sino que puede tener instrucciones a interpretar por otro programa. Este tipo de ejecutables son conocidos con el nombre de scripts.
Determinar si un archivo es ejecutable es sobre todo una cuestión de convención. Unos sistemas operativos se basan en la extensión de archivo (como la terminación .exe) y otros lo hacen leyendo los metadatos (como los bits de permiso de ejecución en Unix).
En la mayoría de los sistemas modernos, un archivo ejecutable contiene mucha información que no es parte del programa en sí: recursos como textos e imágenes, requisitos del entorno de ejecución, información simbólica y de depuración, u otra información que ayude al sistema operativo a ejecutar el programa.

1.8 Compiladores e intérpretes.

El proceso de traducción de un programa fuente, escrito en un lenguaje de alto nivel a un lenguaje máquina comprensible pro la computadora, se realiza mediante programas llamados Traductores. Los Traductores de Lenguaje son programas que traducen a su vez los programas fuente escritos en el lenguaje de alto nivel a código máquina. Los traductores se dividen en Compiladores e Intérpretes.

Intérpretes.

Un Intérprete es un traductor que toma un programa fuente, lo traduce y, a continuación, lo ejecuta. El sistema de traducción consiste en: traducir la primera sentencia del programa a lenguaje máquina, se detiene la traducción, se ejecuta la sentencia y a continuación se traduce la siguiente sentencia, se detiene la traducción, se ejecuta la sentencia, y así sucesivamente hasta terminar el programa.

Compiladores.

Un compilador es un programa que traduce los programas fuente escritos en lenguaje de alto nivel a lenguajes máquina. La traducción del programa completo se realiza en una sola operación denominada compilación del programa; es decir, se traducen todas las instrucciones del programa en un solo bloque, el programa compilado y depurado se denomina programa ejecutable por que ya se puede ejecutar directamente y cuantas veces se desee, sólo deberá volver a compilarse de nuevo en el caso que se modifique alguna instrucción del programa. De este modo el programa ejecutable no necesita del compilador para su ejecución.

 

 

1.7 Editores de texto.

Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes leídos según el código de caracteres que usa el editor. Hoy en día es comúnmente de 7- ó 8-bits en ASCII o UTF-8, rara vez EBCDIC.

Por ejemplo, un editor ASCII de 8 bits que lee el número binario 0110 0001 (decimal 97 ó hexadecimal 61) en el archivo lo representará en la pantalla por la figura a, que el usuario reconoce como la letra «a» y ofrecerá al usuario las funciones necesarias para cambiar el número binario en el archivo.

Los editores de texto son incluidos en el sistema operativo o en algún paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuración, scripts o el código fuente de algún programa.

El archivo creado por un editor de texto incluye por convención en DOS y Microsoft Windows la extensión «.txt», aunque pueda ser cambiada a cualquier otra con posterioridad. Tanto Unix como Linux dan al usuario total libertad en la denominación de sus archivos.

Al trasladar archivos de texto de un sistema operativo a otro se debe considerar que existen al menos dos convenciones diferentes para señalar el término de una línea: Unix y Linux usan sólo retorno de carro en cambio Microsoft Windows usa al término de cada línea retorno de carro y salto de línea.

Tipos de editores de texto

Hay una gran variedad de editores de texto. Algunos son de uso general, mientras que otros están diseñados para escribir o programar en un lenguaje. Algunos son muy sencillos, mientras que otros tienen implementadas gran cantidad de funciones.

El editor de texto debe ser considerado como una herramienta de trabajo del programador o administrador de la máquina. Como herramienta permite realizar ciertos trabajos, pero también requiere de aprendizaje para que el usuario conozca y obtenga destreza en su uso. La llamada curva de aprendizaje es una representación de la destreza adquirida a lo largo del tiempo de aprendizaje. Un editor puede ofrecer muchas funciones, pero si su curva de aprendizaje es muy larga, puede desanimar el aprendizaje y terminará siendo dejado de lado. Puede que un editor tenga una curva de aprendizaje muy empinada y corta, pero si no ofrece muchas funciones el usuario le remplazará por otro más productivo. Es decir la elección del editor más apropiado depende de varios factores, alguno de ellos muy subjetivos. Algunos editores son sencillos mientras que otros ofrecen una amplia gama de funciones.

Editores para profesionales deben ser capaces de leer archivos de gran extensión, mayor que la capacidad e la memoria RAM de la máquina y también arrancar rápidamente, ya que el tiempo de espera disminuye la concentración y disminuye de por si la productividad. Los editores de texto sirven para muchas cosas pues facilitan el trabajo.

Algunos editores de texto incluyen el uso de lenguajes de programación para automatizar engorrosos o repetidos procedimientos a realizar en el texto. Por ejemplo, Emacs puede ser adaptado a las necesidades del usuario, incluso las combinaciones de teclas para ejecutar funciones pueden ser adaptadas y es programable en Lisp.

Muchos editores de texto incluyen coloreado de sintaxis y funciones que ofrecen al usuario completar una palabra iniciada usando para ello la configuración.

Algunas funciones especiales son:

Editores diseñados para un lenguaje de programación determinado, con coloreado de sintaxis, macros, completación de palabras, etc.

Editores con regiones plegables. A veces no todo el texto es relevante para el usuario. Con este tipo de editores ciertas regiones con texto irrelevante pueden ser plegadas, escondidas, mostrando al usuario solo lo importante del texto.

Un Entorno de desarrollo integrado es un programa que incluye un editor y otras herramientas de trabajo, como compiladores, extractores de diferencias entre dos textos, repositorios, etc, incluidos en un solo programa.

Funciones típicas de un editor de texto:

Marcar región
Es la función que marca, visualmente o no, una parte del texto para ser elaborada con otras funciones. La región puede contener varias líneas del texto (región horizontal) o bien varias columnas adyacentes del texto (región vertical).
Búsqueda y reemplazo
El proceso de búsqueda de una palabra o una cadena de caracteres, en un texto plano y su reemplazo por otra. Existen diferentes métodos: global, por región, reemplazo automático, reemplazo con confirmación, búsqueda de texto o búsqueda de una Expresión regular.
Copiar, cortar y pegar
Sirve para copiar, trasladar o borrar una región marcada.
Formatear
Los editores de texto permiten automatizar las únicas funciones de formateo que utilizan: quebrar la línea, indentar, formatear comentarios o formatear listas.
Deshacer y rehacer
Consiste en que el programa editor va almacenando cada una de las operaciones hechas por el usuario hasta un número configurable. Si el usuario se arrepiente de algún cambio, por muy anterior que sea, el editor le permite revertir todos los cambios hechos hasta el número configurado. Rehacer es por consiguiente, revertir algo revertido.
Importar
Agregar o insertar el contenido de un archivo en el archivo que se está editando. Algunos editores permiten insertar la salida o respuesta a un programa cualquiera ejecutado en la Línea de comandos al archivo que se está editando.
Filtros
Algunos editores de texto permiten hacer pasar las líneas del texto o de una región por algún programa para modificarlas u ordenarlas. Por ejemplo, para ordenar alfabéticamente una lista de nombres o sacar un promedio de una lista de números.
Acceso remoto
Un editor para trabajar en la administración de una red de computadoras debe ofrecer la funcionalidad de editar archivos en máquinas remotas, ya sea por medio de ftp, ssh o algún otro Protocolo de red. Emacs lo puede hacer mediante el Plugin tramp (ampliamente configurable con ssh, ftp, scp, sftp, etc), Ultraedit, del ambiente Windows, lo hace mediante ftp.