1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en">
4 <title>Curso Intensivo C - ITESM Campus Ciudad Juarez - Sep-Oct
2010</title>
6 <link rel=
"stylesheet" type=
"text/css" href=
"./style.css" title=
"default" />
8 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8"/>
12 <h1>Curso Intensivo de C
</h1>
15 <li>Rubén Beltrán del Río
— ben@nsovocal.com</li>
17 <h2>Ligas de Interes
</h2>
19 <li><a href=
"./syllabus-curso-c.pdf">Syllabus
</a> — <em>Temario y Descripción del Curso.
</em></li>
20 <li><a href=
"http://www.cygwin.com/">Cygwin
</a> — <em>Un Ambiente tipo Linux para Windows.
</em></li>
21 <li><a href=
"http://www.ubuntu.com/">Ubuntu
</a> — <em>Una distribución recomendada de Linux.
</em></li>
22 <li><a href=
"http://www.acm.uiuc.edu/webmonkeys/book/c_guide/">Referencia C
</a> — <em>Para buscar funciones que usaremos.
</em></li>
23 <li><a href=
"http://www.freebsd.org/cgi/man.cgi?query=style&sektion=9">Guía de Estilo FreeBSD
</a> — <em>Para escribir buen C.
</em></li>
25 <h2><a id=
"labs">Laboratorios
</a></h2>
27 <li><a href=
"#lab01">LAB01
</a></li>
28 <li><a href=
"#lab02">LAB02
</a></li>
29 <li><a href=
"#lab03">LAB03
</a></li>
30 <li><a href=
"#lab04">LAB04
</a></li>
31 <li><a href=
"#lab05">LAB05
</a></li>
32 <li><a href=
"#lab06">LAB06
</a></li>
33 <li><a href=
"#lab06">LAB07
</a></li>
39 <h3><a id=
"lab01">LAB01
</a></h3>
40 <p>Programa que imprime un listado de Celsius a Fahrenheit desde
<code>MIN_VAL
</code> a
<code>MAX_VAL
</code> aumentando los grados en
<code>STEP
</code>.
</p>
41 <p><em>(ver
<code>printf()
</code> y las opciones de formato
<code>%d
</code> y
<code>%f
</code>)
</em></p>
42 <h4>Ejemplo de Salida.
</h4>
65 <p><a href=
"#" class=
"solucion">Mejor Solución de la clase
</a> <br/> <a href=
"#labs" class=
"volver">Volver Arriba.
</a></p>
70 <h3> <a id=
"lab02">LAB02
</a></h3>
71 <p>Programa que cuente el número de líneas y carácteres de una entrada de texto sencilla hasta que llegue a EOF.
</p>
72 <p><em>(usar
<code>getchar()
</code> para obtener carácter de uno en uno.
<code>Ctrl+D
</code> es igual a EOF en Unix)
</em></p>
73 <h4>Ejemplo de Salida.
</h4>
75 this is a sample thing
77 until you end the file with EOF
79 91 caracteres en
4 lineas.
</pre>
80 <p><a href=
"#" class=
"solucion">Mejor Solución de la clase
</a> <br/> <a href=
"#labs" class=
"volver">Volver Arriba.
</a></p>
85 <h3> <a id=
"lab03">LAB03
</a></h3>
86 <p>Escribir un programa que lea varias líneas de tamaño máximo
<code>MAXLINE
</code> hasta que encuentre una línea vacía e imprima la más larga. Se deben usar variables externas para las funciones: una función
<code>getline(void)
</code> que almacene la línea actual y regrese su tamaño y una función
<code>copy(void)
</code> que copie la línea actual a un buffer especial para la más larga.
</p>
87 <p><em>(No olvides que debes terminar el buffer con el carácter nulo
<code> '\
0'</code>.)
</em></p>
88 <h4>Ejemplo de Salida.
</h4>
90 Esta es una linea Larga.
91 Esta linea es mas larga que la anterior.
92 La siguiente linea esta vacia:
95 Esta linea es mas larga que la anterior.
</pre>
96 <p><a href=
"#" class=
"solucion">Mejor Solución de la clase
</a> <br/> <a href=
"#labs" class=
"volver">Volver Arriba.
</a></p>
101 <h3> <a id=
"lab04">LAB04
</a></h3>
102 <p>Escribir un programa que reciba una línea de longitud
<code>MAXLINE
</code> y la imprima al revés. Se puede lograr fácilmente modificando ligeramente LAB03. De nuevo, se deben usar variables externas y ninguna de las funciones debe recibir parametros.
</p>
103 <p><em>(Ver la función
<code>putchar()
</code>.)
</em></p>
104 <h4>Ejemplo de Salida.
</h4>
106 Esta linea debe estar al reves
108 sever la ratse ebed aenil atsE
</pre>
109 <p><a href=
"#" class=
"solucion">Mejor Solución de la clase
</a> <br/> <a href=
"#labs" class=
"volver">Volver Arriba.
</a></p>
114 <h3> <a id=
"lab05">LAB05
</a></h3>
115 <p>Escribir una función
<code>invert(x,p,n)
</code> que reciba un numero entero sin signo, una posición y un rango y devuelva x con
<code>n
</code> bits invertidos a partir de
<code>p
</code>.
</p>
116 <p><em>(XOR (
<code>^
</code>) tiene una propiedad de invertir bits.)
</em></p>
117 <h4>Ejemplo de Salida.
</h4>
119 Introduzca un numero:
1
120 Introduzca una posicion:
2
121 Introduzca un rango:
4
122 Invertir
4 bits en
1 empezando de
2 es igual a:
61</pre>
123 <p><a href=
"#" class=
"solucion">Mejor Solución de la clase
</a> <br/> <a href=
"#labs" class=
"volver">Volver Arriba.
</a></p>
128 <h3> <a id=
"lab06">LAB06
</a></h3>
129 <p>Escribir una función
<code>strindex()
</code> que reciba dos strings. Debe devolver la posición en la que ocurre el
<code>string2
</code> dentro del
<code>string1
</code> o
<code>-
1</code> si no se encuentra.
</p>
130 <p><em>(La función
<code>gets
</code> puede servir para obtener strings con espacios.)
</em></p>
131 <h4>Ejemplo de Salida.
</h4>
133 Escribe un String: Esta es una prueba
134 Escribe algo que Buscar: prueba
135 Encontre el string en la posición:
12
138 Escribe un String: Esta es otra prueba
139 Escribe algo que Buscar: string
140 No se encontro "string" en "Esta es otra prueba".
</pre>
141 <p><a href=
"#" class=
"solucion">Mejor Solución de la clase
</a> <br/> <a href=
"#labs" class=
"volver">Volver Arriba.
</a></p>
146 <h3> <a id=
"lab07">LAB07
</a></h3>
147 <p>Escribir una versión recursiva de LAB04.
</p>
148 <p><em>(Considerar el orden de ejecución de los miembros de la función recursiva.)
</em></p>
149 <h4>Ejemplo de Salida.
</h4>
152 .abeurp anu se atsE
</pre>
153 <p><a href=
"#" class=
"solucion">Mejor Solución de la clase
</a> <br/> <a href=
"#labs" class=
"volver">Volver Arriba.
</a></p>