09 - Cadenas/Bool
Objetivos
Trabajar texto en C entendiendo que una cadena es una estructura concreta y cerrar la clase con una introducción breve al uso de bool.
- Comprender que una cadena es un arreglo de
char - Reconocer el papel del terminador nulo
'\0' - Leer y mostrar cadenas simples con
%s - Recorrer una cadena carácter a carácter
- Usar correctamente funciones básicas de
string.h - Entender que
bool,trueyfalseexpresan la misma lógica de0y1con nombres más claros
Contenidos
Qué es una cadena
- Definición: secuencia de caracteres almacenados en un arreglo de
char - Marca de final: el carácter nulo
'\0'indica dónde termina el texto útil - Consecuencia práctica: el arreglo debe tener espacio para las letras y para el terminador
Declaración, inicialización y tamaño
- Formas frecuentes: declarar un arreglo de
charcon tamaño fijo o inicializarlo con un literal - Diferencia clave: el tamaño del arreglo no siempre coincide con la cantidad de texto visible
- Error frecuente: reservar espacio insuficiente para la cadena
Lectura y escritura básica
scanf("%s", ...): lectura básica de una palabra- Límites: en esta forma no sirve para frases con espacios
- Formato: para
%sse usa el nombre del arreglo sin&
Recorrido de una cadena
- Patrón común: avanzar posición a posición hasta encontrar
'\0' - Aplicaciones: contar vocales, medir longitud lógica, inspeccionar caracteres
- Idea central: el final de la cadena depende del terminador, no del tamaño máximo del arreglo
Funciones básicas de string.h
- Medir:
strlen() - Copiar:
strcpy() - Comparar:
strcmp() - Uso correcto: solo sobre cadenas bien formadas y con espacio suficiente
Comparación y estructuras relacionadas
- Comparación correcta: no usar
==para comparar contenido textual - Matriz de cadenas: almacenar varias cadenas en una estructura de filas y columnas
- Puente a funciones: estas ideas reaparecen cuando una función recibe o procesa texto
Cierre breve: bool y stdbool.h
- Idea básica:
boolpermite expresar verdadero o falso con nombres más claros - Equivalencia práctica:
falsecorresponde a0ytruecorresponde a1 - Uso en el curso: en condiciones e impresiones básicas, la lógica sigue siendo la misma que ya se trabajó con enteros
Material de Clase
Presentaciones
Práctico
Ver ejercicios
Ejercicio 1: Longitud de una palabra
Enunciado: Escribir un programa que lea una palabra en un arreglo de char y calcule su longitud recorriéndola carácter a carácter hasta encontrar '\0'. No usar strlen().
Ejercicio 2: Contar vocales
Enunciado: Escribir un programa que lea una palabra y cuente cuántas vocales contiene. Imprimir el resultado.
Ejemplo: Si el usuario ingresa murcielago, el programa debe imprimir 5.
Ejercicio 3: Última letra
Enunciado: Escribir un programa que lea una palabra y muestre cuál es su última letra visible. Resolverlo identificando dónde termina la cadena.
Ejercicio 4: Comparar palabras
Enunciado: Escribir un programa que lea dos palabras y determine si son iguales. Resolverlo con strcmp() e imprimir “Iguales” o “Distintas”.
Ejercicio 5: Palabra más larga
Enunciado: Escribir un programa que lea dos palabras e imprima cuál tiene mayor longitud. Si tienen la misma cantidad de caracteres, informar que empatan.
Ejercicio 6: Matriz de nombres
Enunciado: Escribir un programa que lea 5 nombres en una matriz de cadenas y luego los imprima en orden inverso al de ingreso.
Ejercicio 7: Reserva correcta
Enunciado: Indicar cuáles de las siguientes declaraciones son correctas para almacenar la palabra "Hola" y explicar por qué:
char a[4] = "Hola";char b[5] = "Hola";char c[] = "Hola";
Ejercicio 8: bool e impresión
Enunciado: Escribir un programa que incluya stdbool.h, defina una variable bool es_mayor a partir de la comparación entre dos enteros e imprima su valor con %d.
Ejemplo: Si a = 7 y b = 3, el programa debe imprimir 1. Si a = 2 y b = 5, debe imprimir 0.
Ejercicio 9: Condición con bool
Enunciado: Escribir un programa que lea una edad, calcule una variable bool mayor = edad >= 18 y luego imprima “Mayor” o “Menor” según corresponda.
Recursos
Para Practicar
Bibliografía
- “El lenguaje de programación C” - Kernighan & Ritchie (Capítulo 5)
- “Cómo programar en C/C++” - Deitel & Deitel