IPC

Universidad de San Carlos

Segundo semestre 2021


Semana 0 Scratch

Semana 1 C

Semana 2 Arrays

Semana 3 Algoritmos

Semana 4 Memoria

Semana 6 Python

Proyecto Final


Programa de estudios

Horas de oficina

Conjuntos de problemas

Preguntas Frecuentes


IDE

Manual

Scrath

Guías de estilo

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/63fd8be9-afbf-4e82-8e87-5fc4a2b5deca/Untitled.png

Legibilidad


Implemente un programa que calcule el nivel de grado aproximado necesario para comprender un texto, según se indica a continuación


$ ./readability
Text: Congratulations! Today is your day. You're off to Great Places! You're off and away!
Grado 3

Niveles de Lectura


Según Scholastic, E.B White's "Charlotte's Web" esta entre un nivel de lectura de segundo y cuarto grado, y Lois Lowry "The Giver" esta entre un nivel de lectura de octavo y un nivel de lectura de duodécimo grado. Sin embargo, ¿Qué significa que un libro este en un "nivel de lectura de cuarto grado"?

Bueno, en muchos casos, un experto puede leer un libro y tomar una decisión sobre la calificación para la que cree que el libro es más apropiado. Pero también podría imaginarse un algoritmo que intenta averiguar cuál es el nivel de lectura de un texto.

Entonces, ¿Qué tipo de rasgos son característicos de niveles más altos de lectura? Bueno, las palabras más largas probablemente se correlacionan con niveles más altos de lectura. Del mismo modo, las oraciones más largas probablemente también se correlacionan con niveles más altos de lectura. Se han desarrollado varias "pruebas de legibilidad" a lo largo de los años, para proporcionar un proceso de fórmulas para calcular el nivel de lectura de un texto.

Una de esas pruebas de legibilidad es el índice Coleman-Liau. El índice Coleman-Liau de un texto está diseñado para generar qué nivel de grado (EE.UU.) Se necesita para comprender el texto. La formula es:

index = 0.0588 * L - 0.296 * S - 15.8

Donde, L es el número promedio de letras por cada 100 palabras en el texto y S es el número promedio de oraciones por cada 100 palabras en el texto.

Escribamos un programa llamado legibilidad que toma un texto y determina su nivel de lectura. Por ejemplo, si el usuario escribe una línea del Dr. Seuss:

$ ./readability
Text: Congratulations! Today is your day. You're off to Great Places! You're off and away!
Grade 3

El texto que ingresó el usuario tiene 65 letras, 4 oraciones y 14 palabras. 65 letras por 14 palabras es un promedio de aproximadamente 464,29 letras por 100 palabras. Y 4 oraciones por 14 palabras es un promedio de aproximadamente 28.57 oraciones por 100 palabras. Conectado a la fórmula de Coleman-Liau y redondeado al número entero más cercano, obtenemos una respuesta de 3: por lo que este pasaje está en un nivel de lectura de tercer grado.

Probemos con otro:

$ ./readability
Text: Harry Potter was a highly unusual boy in many ways. For one thing, he hated the summer holidays more than any other time of year. For another, he really wanted to do his homework, but was forced to do it in secret, in the dead of the night. And he also happened to be a wizard.
Grade 5

Este texto tiene 214 letras, 4 oraciones y 56 palabras. Eso equivale a aproximadamente 382,14 letras por 100 palabras y 7,14 oraciones por 100 palabras. Conectado a la fórmula Coleman-Liau, obtenemos un nivel de lectura de quinto grado.

A medida que aumenta el número promedio de letras y palabras por oración, el índice Coleman-Liau le da al texto un nivel de lectura más alto. Si tomara este párrafo, por ejemplo, que tiene palabras y oraciones más largas que cualquiera de los dos ejemplos anteriores, la fórmula le daría al texto un nivel de lectura de undécimo grado.

$ ./readability
Text: As the average number of letters and words per sentence increases, the Coleman-Liau index gives the text a higher reading level. If you were to take this paragraph, for instance, which has longer words and sentences than either of the prior two examples, the formula would give the text an eleventh grade reading level.
Grade 11

Especificación


Obtener información del usuario


Primero escribamos un código C que solo obtenga alguna entrada de texto del usuario y lo vuelva a imprimir. Específicamente, escriba el código en legibilidad.c de manera que cuando el usuario ejecute el programa, se le solicite "Texto:" para ingresar algún texto.

El comportamiento del programa resultante debería ser como el siguiente.

$ ./readability
Text: In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.
In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.

Letras


Ahora que ha recopilado información del usuario, comencemos a analizar esa entrada contando primero el número de letras que aparecen en el texto. Modifique legibilidad.c para que, en lugar de imprimir el texto literal en sí, imprima un recuento del número de letras del texto.

El comportamiento del programa resultante debería ser como el siguiente.

$ ./readability
Text: Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, "and what is the use of a book," thought Alice "without pictures or conversation?"
235 letter(s)

Las letras pueden ser caracteres alfabéticos en mayúsculas o minúsculas, pero no deben incluir signos de puntuación, dígitos u otros símbolos.

Puede consultar https://man.cs50.io/ para conocer las funciones de biblioteca estándar que pueden ayudarlo aquí. También puede encontrar que escribir una función separada, como count_letters, puede ser útil para mantener su código organizado.

Palabras


El índice Coleman-Liau se preocupa no solo por la cantidad de letras, sino también por la cantidad de palabras en una oración. A los efectos de este problema, consideraremos cualquier secuencia de caracteres separados por un espacio como una palabra (por lo que una palabra con guiones como "audio-libro" debe considerarse una palabra, no dos).

Modifique legibilidad.c para que, además de imprimir el número de letras del texto, también imprima el número de palabras del texto.

Puede suponer que una oración no comenzará ni terminará con un espacio, y puede asumir que una oración no tendrá varios espacios seguidos.

El comportamiento del programa resultante debería ser como el siguiente.

$ ./readability
Text: It was a bright cold day in April, and the clocks were striking thirteen. Winston Smith, his chin nuzzled into his breast in an effort to escape the vile wind, slipped quickly through the glass doors of Victory Mansions, though not quickly enough to prevent a swirl of gritty dust from entering along with him.
250 letter(s)
55 word(s)

Oraciones


El último dato que le importa a la fórmula de Coleman-Liau, además del número de letras y palabras, es el número de oraciones. Determinar el número de oraciones puede resultar sorprendentemente complicado. Primero puede imaginar que una oración es cualquier secuencia de caracteres que termina con un punto, pero, por supuesto, las oraciones también pueden terminar con un signo de exclamación o un signo de interrogación. Pero, por supuesto, no todos los puntos significan necesariamente que la oración ha terminado. Por ejemplo, considere la oración a continuación.

Mr. and Mrs. Dursley, of number four Privet Drive, were proud to say that they were perfectly normal, thank you very much.

Esta es solo una oración, ¡pero hay tres puntos! Para este problema, le pediremos que ignore esa sutileza: debe considerar cualquier secuencia de caracteres que termine en . o un ! o un ? para ser una oración (por lo tanto, para la “oración” anterior, puede contarla como tres oraciones). En la práctica, la detección de límites de oraciones debe ser un poco más inteligente para manejar estos casos, pero no nos preocuparemos por eso por ahora.

Modifique legibilidad.c para que ahora también imprima el número de oraciones en el texto.

El comportamiento del programa resultante debería ser como el siguiente.

$ ./readability
Text: When he was nearly thirteen, my brother Jem got his arm badly broken at the elbow. When it healed, and Jem's fears of never being able to play football were assuaged, he was seldom self-conscious about his injury. His left arm was somewhat shorter than his right; when he stood or walked, the back of his hand was at right angles to his body, his thumb parallel to his thigh.
295 letter(s)
70 word(s)
3 sentence(s)

Poniéndolo todo junto


¡Ahora es el momento de juntar todas las piezas! Recuerde que el índice Coleman-Liau se calcula usando la fórmula:

index = 0.0588 * L - 0.296 * S - 15.8

donde L es el número promedio de letras por cada 100 palabras en el texto y S es el número promedio de oraciones por cada 100 palabras en el texto.

Modifique legibilidad.c para que, en lugar de mostrar el número de letras, palabras y oraciones, muestre el nivel de grado tal como lo indica el índice Coleman-Liau (por ejemplo, "Grado 2" o "Grado 8"). ¡Asegúrese de redondear el número de índice resultante al número entero más cercano!

Si el número de índice resultante es 16 o mayor (equivalente o mayor que el nivel de lectura de un estudiante de último año), su programa debería generar "Grado 16+" en lugar de dar el número de índice exacto. Si el número de índice es menor que 1, su programa debería generar "Antes del grado 1".

Tutorial


Cómo probar su código


Intente ejecutar su programa en los siguientes textos.