Fundamentos de programación Ejercicios

[Pages:86]Fundamentos de programaci?n Ejercicios

Curso 2020/21

1

2

Ejercicios de Fundamentos de Programaci?n - revisi?n 01/01/2021 Copyleft ? Alejandro Cast?n Salinas

Se otorga el permiso para copiar, distribuir y/o modificar este documento bajo los t?rminos de la licencia de documentaci?n libre GNU, versi?n 1.3 o

cualquier otra versi?n posterior publicada por la Free Software Foundation. Puedes consultar dicha licencia en . El contenido de este documento puede cambiar debido a ampliaciones y

correcciones enviadas por los lectores. Encontrar?s siempre la ?ltima versi?n del documento en .

3

?ndice de contenido

Preparados, listos, ... ?ya!.....................................................................................................................5 Pr?ctica 1: Lenguajes de programaci?n, compiladores e int?rpretes, y entornos de desarrollo...........7 Pr?ctica 2: Algoritmos secuenciales...................................................................................................16 Pr?ctica 3: Estructuras de control alternativas....................................................................................21 Pr?ctica 4: Estructuras de control iterativas........................................................................................27 Pr?ctica 5: Estructuras de almacenamiento homog?neas unidimensionales (vectores y strings).......32 Pr?ctica 6: Estructuras de almacenamiento homog?neas multidimensionales (matrices)..................42 Pr?ctica 7: Estructuras de almacenamiento heterog?neas (diccionarios y clases)..............................48 Pr?ctica 8: Funciones y modularidad..................................................................................................55 Pr?ctica 9: Almacenamiento en ficheros.............................................................................................68 Pr?ctica 10: Comunicaci?n por red.....................................................................................................77 Pr?ctica 11: Apuntadores y estructuras din?micas de datos...............................................................82 ?Fin!....................................................................................................................................................85

4

Preparados, listos, ... ?ya!

Este documento no es un curso de programaci?n. Tampoco es un curso de Python. Encontrar?s muchos buenos cursos sobre dichos temas en libros e Internet. Este documento tan s?lo contiene algunos ejercicios de programaci?n, para ir practicando y fijando lo aprendido en clases de programaci?n b?sica. No pretende que resuelvas los problemas en Python, aunque a principio de cada bloque de ejercicios haya un breve resumen de algunas caracter?sticas necesarias de dicho lenguaje. Este curso trabajamos con Python, pero en cursos anteriores utilizamos C o Java. El lenguaje de programaci?n no importa y el entorno de desarrollo tampoco. De hecho, las soluciones que propongo no son "pyth?nicas": intento que no contengan caracter?sticas distintivas de Python, sino estructuras de datos, de control de flujo, y operadores que puedes encontrar en cualquier lenguaje de programaci?n. Para programar hace falta curiosidad, pasi?n por los rompecabezas, y muchas ganas de divertirse. En esta primera secci?n del documento adjunto algunas ideas para practicar la programaci?n con Python de una manera muy l?dica.

Python + Turtle

Python tiene el m?dulo turtle, que te permite dibujar gr?ficos vectoriales al estilo del antiguo lenguaje de programaci?n Logo. Un ejemplo de uso: -

Python + Pygame

Python tiene el m?dulo pygame, que te permite programar videojuegos 2D. Un ejemplo de uso: -

Python + Blender

Blender, el programa libre y gratuito de dise?o 3D, permite utilizar Python para interactuar con los objetos. Encontrar?s varios videotutoriales en internet. La documentaci?n de referencia: -

Python + Robocode

?Te atreves a utilizar una API para programar el comportamiento de un tanque, y lanzarlo a un arena a competir con otros tanques? -

5

Python + Aplicaciones con interfaz gr?fica

?Est?s cansado de escribir aplicaciones para la c?nsola? ?Te apetece utilizar librer?as para que tu aplicaci?n muestre ventanas y elementos gr?ficos? Tkinter, PyQt, wxPython, PySimpleGUI, ... -

Python + Minecraft

Python puede interactuar con el juego Minecraft. Puedes escribir programas que construyan estructuras dentro del juego, o que var?en el comportamiento del personaje. Un ejemplo de uso: - Si dispones del juego Minecraft, que no es gratuito, para poder interactuar con Python debes:

1) Descargar e instalar un servidor de Minecraft como Spigot o Paper. Configurarlo para modo de juego "creativo".

2) Descargar el m?dulo RaspberryJuice en la carpeta "plugins" de dicho servidor. 3) Ejecutar el servidor. 4) Ejecutar el juego Minecraft y escoger una partida multijugador contra tu servidor. Pulsa

simult?neamente las teclas + para activar que cuando abandones la ventana del juego ?ste no se paralice. 5) En la carpeta donde vayas a programar con Python, descarga las librer?as para Minecraft y descompr?melas en la carpeta "mcpi". Aqu? tienes una descripci?n de las funciones de dicha librer?a: Si no dispones del juego Minecraft, no lo compres. Puedes realizar un montaje m?s sencillo que el anterior sobre Minetest, un clon gratuito y libre de Minecraft, En Linux me ha bastado con instalar des de los repositorios los paquetes "minetest", "minetest-mod-pycraft" y "python3-minecraftpi".

Python + Raspberry

El miniordenador Raspberry Pi dispone de una l?nea de entradas y salidas digitales llamada GPIO que permite conectar todo tipo de circuitos electr?nicos e interactuar con ellos. Ejemplos de uso: - - -

Python + sistemas y ciberseguridad

Hay mil y una librer?as: Scapy para crear paquetes TCP/IP; shodan para interactuar con el buscador Shodan; smtplib para enviar correo; Fabric para automatizar tareas de administraci?n; dnspython para consultas DNS; python-whois para consultas WHOIS; PyPDF4 para procesar o crear pdf; ipaddress para c?lculos de subnetting; pyHook para crear keyloggers; psutil, subprocess, os y sys para interactuar con procesos y el sistema; shutil para manipular ficheros a nivel de directorio; etc.

6

Pr?ctica 1: Lenguajes de programaci?n, compiladores e int?rpretes, y entornos de desarrollo

Objetivos de la pr?ctica

Conocer la historia de los lenguajes de programaci?n m?s importantes. Entender los conceptos de c?digo fuente, c?digo m?quina, compilador e int?rprete. Familiarizaci?n con un entorno integrado de desarrollo. Familiarizaci?n con la estructura de un programa en lenguaje Python. Familiarizaci?n con las funciones de entrada y salida del lenguaje Python. Familiarizaci?n con los tipos de datos en Python y comprensi?n de los errores debidos al rango

de precisi?n de los tipos num?ricos.

Algor?tmica

Algoritmo es la exposici?n, paso a paso, de la secuencia de instrucciones que se ha de seguir para resolver un determinado problema. Estructura de datos es una representaci?n en forma l?gica de la informaci?n, una manera de organizar una determinada informaci?n. Lenguaje de programaci?n son el conjunto de instrucciones que permiten controlar una m?quina. Un programa es la descripci?n de un algoritmo en un determinado lenguaje de programaci?n.

Diagramas de flujo

El diagrama de flujo es un lenguaje visual de descripci?n de algoritmos. La representaci?n gr?fica nos permite entender f?cilmente el proceso, aunque para procesos muy complejos los diagramas de flujo se vuelven demasiado extensos y, por lo tanto, intratables.

7



INICIO

FIN

Las cajas con forma de elipse indican el inicio y el final del algoritmo

OPERACI?N

CONDICI?N CIERTO

FALSO

Las cajas con forma de rect?ngulo indican una operaci?n, c?lculos en general.

Las cajas con forma de rombos indican una decisi?n. Seg?n sea el resultado de evaluar la expresi?n l?gica el codigo se bifurcar? hacia un camino o hacia otro.

PEDIR DATOS

DAR RESULTADOS

ENLAZAR OPERACIONES

Las cajas con forma de trapecios indican una petici?n de datos o una salida de resultados.

Las flechas enlazan los diferentes pasos del algoritmo y nos indican el orden de estos.

Ejemplo: descripci?n mediante diagrama de flujo del proceso a seguir un domingo por la ma?ana.

8

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download