---------------------------------------------------
Capítulo 4: Funciones y la estructura del programa
---------------------------------------------------

---------------------------------------------------
4.1. Conceptos básicos de funciones
---------------------------------------------------

4.1. Escriba la función strrindex(s,t), que regresa la posición de la 
ocurrencia de más a la derecha de t en s, ó -1 si no hay alguna.

---------------------------------------------------
4.2. Funciones que regresan valores no enteros
---------------------------------------------------

4.2. Extienda atof() para que maneje notación científica de la forma 
123.45e-6, donde un número de punto flotante puede ir seguido por e ó E 
y opcionalmente por un exponente con signo.

---------------------------------------------------
4.3. Variables externas
---------------------------------------------------

4.3. Dada la estructura básica, es fácil extender la calculadora.  
Agregue el operador módulo (%) y consideraciones para números negativos.

4.4. Agregue órdenes para imprimir el elemento al tope de la pila sin 
sacarlo de ella, para dupliicarlo y para intercambiar los dos elementos 
del tope.  Agregue una orden para limpiar la pila.

4.5. Agregue acceso a funciones de biblioteca como sin, exp y pow.  
Consulte .

4.6. Agregue órdenes para manipular variables.  (Es fácil proporcionar 
veintiseis variables con nombres de una letra.)  Añada una variable para 
el valor impreso más reciente.

4.7. Escriba una rutina ungets(s) que regresa a la entrada una cadena 
completa.  Debe ungets() conocer acerca de buf y bufp, o sólo debe usar 
ungetch()?

4.8. Suponga que nunca existirá más de un carácter de regreso.  
Modifique getch() y ungetch() de acuerdo con eso.

4.9. Nuestros getch() y ungetch() no manejan correctamente un EOF que se 
regresa.  Decida cuáles deben ser sus propiedades si se regresa un EOF, 
y después realice su diseño.

4.10. Una organización alternativa emplea getline() para leer una línea 
completa de entrada; esto hace innecesarios a getch() y ungetch().  
Corrija la calculadora para que use este planteamiento.


---------------------------------------------------
4.4. Reglas de alcance
---------------------------------------------------
No hay ejercicios.

---------------------------------------------------
4.5. Archivo de encabezamiento o header
---------------------------------------------------
No hay ejercicios.

---------------------------------------------------
4.6. Variables estáticas
---------------------------------------------------

4.11. Modifique getop() de modo que no necesite utilizar ungetch().  
Sugerencia: emplee una variable static interna.

---------------------------------------------------
4.7. Variables tipo registro
---------------------------------------------------
No hay ejercicios.

---------------------------------------------------
4.8.  Estructura de bloques
---------------------------------------------------
No hay ejercicios.

---------------------------------------------------
4.9. Inicialización
---------------------------------------------------
No hay ejercicios.

---------------------------------------------------
4.10.  Recursividad
---------------------------------------------------

4.12. Adapte las ideas de printd() al escribir la versión recursiva del 
programa itoa(); esto es, convierta un entero en una cadena llamando a 
una rutina recursiva.

4.13. Escriba una versión recursiva de la función reverse(s), que 
invierta la cadena s en su lugar.

---------------------------------------------------
4.11. El preprocesador de C
---------------------------------------------------

4.14. Defina una macro swap(t,x,y) que intercambie dos argumentos de 
tipo t.  (La estructura de bloques ayudará.)

    Source: geocities.com/ar/uap_c2a/ej-04

               ( geocities.com/ar/uap_c2a)                   ( geocities.com/ar)