Programar en lenguaje C: de 0 a 99 en un solo libro
Enviado por floamana • 24 de Marzo de 2025 • Tarea • 19.096 Palabras (77 Páginas) • 28 Visitas
Programar en lenguaje en C: de 0 a 99 en un solo libro
Colección de ejercicios resueltos y propuestos.
© 2005, 2017 A. M. Vozmediano Primera edición en este formato, abril de 2017.
http://ensegundapersona.es
¿QUÉ ENCONTRARÁS EN ESTE TEXTO?
Esta colección de ejercicios resueltos y propuestos es un complemento al texto "Programar en lenguaje C: de 0 a 99 en un solo libro", que puede adquirirse en Amazon en formato electrónico y en papel.
Como justifico allí, no soy muy partidario de los ejercicios guiados porque creo que constituyen más una traba que coarta la motivación del aprendiz, sumiéndolo en la tediosa resolución de problemas que no tienen por qué interesarle, más que una ayuda en el desarrollo de sus habilidades. Pero, como también razono allí, comprendo que hay mucha gente que, por hábito o por la nada desdeñable posibilidad de que yo esté equivocado, prefiere encontrarse una batería de ejercicios graduados para ejercitarse con ellos antes de lanzarse a desarrollar sus propios programas. Para ese tipo de lector está diseñado este documento que tienes ahora en tus manos (o en tu pantalla)
Los ejercicios están estructurados siguiendo el mismo esquema del libro matriz, para que sea sencillo saber a qué parte corresponde cada uno. Así, los hemos distribuido en cinco partes:
- Primera parte: Fundamentos. Sistema binario y hexadecimal. Datos, variables,
expresiones y operadores. Programación estructurada y modular con pseudocódigo.
- Segunda parte: Programación estructurada y modular con C.
- Tercera parte: Estructuras de datos estáticas con C: arrays, cadenas, structs, etc.
- Cuarta parte: Ficheros con C: binarios y de texto; de acceso secuencial, aleatorio e indexado.
- Quinta parte: Punteros, gestión dinámica de la memoria y estructuras de datos dinámicas: listas, pilas, colas y árboles. Recursividad.
¿CÓMO USAR ESTE TEXTO?
Mi recomendación es que acudas a la parte que te interese (recuerda que los ejercicios están organizados igual que el libro sobre C) y eches un vistazo a los ejercicios propuestos. En general, se ha procurado ordenarlos de menor a mayor dificultad, aunque esto siempre supone una apreciación subjetiva. Escoge alguno que te llame especialmente la atención. Es importante sentirse motivado. La programación exige tiempo y dedicación, y, si tu motivación flaquea, también flaquearán los resultados.
Lee bien el enunciado y asegúrate de comprender con exactitud lo que se te pide hacer. Después, imagina la solución antes de sentarte a teclear. Esboza esquemas, ideas, resúmenes, listas de variables o cualquier otra cosa que te parezca oportuna con lápiz y papel. Sí, sí, lápiz y papel. Eso ayuda mucho más de lo que puede parecer.
Después, escribe el código. Ve poco a poco. Prueba cada parte que vayas haciendo, y no pases a la siguiente hasta asegurarte que lo que llevas hecho hasta el momento funciona. Depura los errores. Recuerda que los warnings también son errores. Revisa el libro "Aprender a programar en C" para más detalles sobre el flujo de trabajo.
Para algunos ejercicios, presentaremos una solución. Los ejercicios resueltos los puedes encontrar en archivos a parte, con extensión .c (y .h cuando corresponda). Es más fácil leerlos como archivos independientes que si hubiéramos colocado todo el código fuente en un libro electrónico. Así puedes abrirlos con un editor para programación, leerlos, modificarlos, compilarlos, etc.
Los archivos fuente están distribuidos en directorios (nombrados "Parte 1", "Parte 2", "Parte 3", etc, siguiendo la estructura general del libro). Los nombres de los archivos comienzan por el número del ejercicio e incluyen una breve descripción del mismo, para que los encuentres con facilidad. Por ejemplo, el archivo "47 Número secreto.c" es el código fuente del ejercicio número 47, que consiste en un juego de adivinar un número secreto.
En la primera parte los ejercicios aún no se codifican en C, así que la extensión de los
archivos, solo en esa parte, es .txt o .png, dependiendo de si se han resuelto con pseudocódigo o con diagrama de flujo. En algunos casos, se proporcionan ambas soluciones. Así, por ejemplo: "21 Positivo o negativo.txt" es la solución en pseudocódigo del ejercicio número 21, mientras que "21 Positivo o negativo.png" es la misma solución, expresada con diagrama de flujo.
En unos pocos casos en esa primera parte, además, se proporciona la solución en C para que el lector más curioso pueda ir viendo cómo es la sintaxis del lenguaje, pero no será hasta la segunda parte cuando todas las soluciones se planteen en C.
Ten en cuenta que estos ejercicios resueltos son solo una posible solución. Para un problema dado existen muchas posibles soluciones correctas. Esto es tanto más cierto cuanto más complejo es el problema, así que la solución propuesta no tiene que coincidir con la tuya, pero sí te puede aportar ideas para futuros programas, o ayudarte a salir de un aprieto si te has atascado con algo.
Si deseas hacernos cualquier sugerencia, puedes escribirnos a admin@ensegundapersona.es.
Eso es todo. Esperamos que esta colección de ejercicios te sea de provecho. Un saludo, y feliz codificación.
PRIMERA PARTE:
PROGRAMACIÓN ESTRUCTURADA
Actividades introductorias
- Investiga y responde a las siguientes cuestiones:
- ¿Por qué los ordenadores digitales sólo utilizan ceros y unos, es decir, códigos binarios, en lugar de manejar internamente códigos decimales, como hacemos los humanos?
- ¿Por qué los humanos estamos habituados a un sistema de numeración basado en 10 símbolos y no a cualquier otro, por ejemplo, uno con 8 símbolos, o con 5, o con 12?
- Ya debes conocer la diferencia entre hardware y software. ¿Cuál es más importante de los dos? ¿Cuál piensas suele evolucionar antes? ¿Cuál es más difícil de diseñar y fabricar?
- ¿Qué es el firmware?
- Tenemos un viejo ordenador con una capacidad de almacenamiento en la memoria principal de 2 MB. Suponiendo que un nombre ocupe 30 caracteres y un apellido ocupe 25, ¿cuántos nombres y apellidos puede almacenar este ordenador?
- Convierte las siguientes cantidades de información:
- 30 GB a MB
- 128 KB a bits
- 2 MB a bits
- 64512 KiB a MiB
- Convierte los siguientes números al sistema de numeración indicado:
- 1001012 a decimal
- 25410 a binario
- 11111112 a decimal
- 19110 a binario
- Convierte los siguientes números entre los sistemas hexadecimal y binario, utilizando la tabla de conversión que hemos visto en este tema. Si puedes hacerlo sin mirar la tabla, mucho mejor.
- 100111012 a hexadecimal
- 1101001110110011012 a
hexadecimal
- 38C16 a binario
- FDCA16 a binario
- ¿A qué tipo pertenecen los siguientes datos?
- 0
- 90.234
- 90
- 90.0
- 'A'
- "Almería"
- falso
- "falso"
- "90"
- Indica cuál es la mantisa y cuál el exponente de los siguientes números reales:
- 0.75
- 12.5
- 0.0000000023
- 587300000000000000000000.0
- ¿Cuáles de los siguientes identificadores de variable no son correctos y por qué?
- XYZ
- _xyz
- 'valor'
- 56vértice
- indice28
- año
- año&actual
- año_actual
- ZZZZ
- Calcula el valor de estas expresiones, sabiendo que A = 2, B = 5 y C = 8:
- 4 / 2 * 3 / 6 + 6 / 2 / 1 / 5 ^ 2 / 4 * 2 b) 3 * A – 4 * B / A ^ 2
- B * A – B ^ 2 / 4 * C
- (((B + C) / 2 * A + 10) * 3 * B) 6
- 7 div 2
- 7 % 2
- 0 % 5
- 7 * 10 – 50 % 3 * 4 + 9
- (7 * (10 – 5) % 3) * 4 + 9
- 7 % 5 % 3
- raiz (B^B)
- raiz(B*B)
- trunc(81.5) + redondeo(81.5)
- trunc(raiz(C)) > abs((A^2))
- Se tienen las siguientes variables: A y B de tipo entero; C y D de tipo real; E y F de tipo carácter; y G de tipo lógico. Señala cuáles de las siguientes asignaciones no son válidas y por qué:
- A = 20
- B = 12
- F = '0'
- B = 5500
- C = 0
- D = C
- E = 'F'
- E = F
- A = 12.56
- G =
verdadero
- G = "falso"
- F = G
- ¿Cuáles son los valores de las variables A, B y C después de la ejecución de estas expresiones?
A, B, C son enteros
A = 3
B = 4
C = A + 2 * B C = C + B
B = C – A A = B * C
- ¿Cuál es el valor de la variable X después de la ejecución de estas expresiones?
X es real
X = 2.0
X = (X + X)^2
X = raiz(X + raiz(X) + 5)
- ¿Cuál es el valor de las variables X, Y y Z después de estas instrucciones?
X, Y son enteros Z es lógico
X = 5
Y = X – 2
X = Y^2 + 1
Z = (X > (Y + 5))
- ¿Cuál es el valor de las variables A y B después de la ejecución de estas expresiones?
A, B son enteros
A = 10
B = 5
A = B
B = A
- Se tienen dos variables, A y B. Escribe las asignaciones necesarias para intercambiar sus valores, sean cuales sean.
- Se tienen tres variables, A, B y C. Escribe las asignaciones necesarias para intercambiar sus valores, sean cuales sean, de manera que:
- B tome el valor de A
- C tome el valor de B
- A tome el valor de C
- Escribe, en castellano (ya que aún no conocemos el pseudocódigo) un algoritmo para hacer una tortilla francesa.
- Escribe, en castellano, un algoritmo que determine, dados dos números A y B, cuál es el mayor de los dos.
- Escribe en castellano un algoritmo que, dados tres números A, B y C, averigüe cuál es el mayor de los tres.
Actividades sobre programación estructurada
Nota: En los ejercicios siguientes hay que diseñar un algoritmo que resuelva el problema propuesto. Todos se deben describir con pseudocódigo y con diagramas de flujo, salvo que en el ejercicio se indique otra cosa.
...