root пре 8 година
родитељ
комит
a24dfc39bc
3 измењених фајлова са 319 додато и 318 уклоњено
  1. 0
    0
      README-en.md
  2. 317
    0
      README-es.md
  3. 2
    318
      README.md

+ 317
- 0
README-es.md Прегледај датотеку

@@ -0,0 +1,317 @@
1
+
2
+#Introducción al laboratorio y a los programados que utilizaremos
3
+
4
+
5
+![main1.png](images/main1.png)
6
+
7
+
8
+El curso Introducción a la Programación de Computadoras provee una introducción a los fundamentos de la programación de computadoras y a la solución de problemas mediante el desarrollo de algoritmos, incluyendo técnicas de programación paralela. Los estudiantes dominarán las piezas básicas de un programa comenzando con estructuras de control usando instrucciones condicionales e iterativas con expresiones lógicas, así como la definición y uso de variables y tipos de datos. Desarrollarán procedimientos y funciones para tareas  comunes que se repiten o más complejas que requieren descomposición, incluyendo funciones recursivas. Utilizarán tipos de datos estructurados tales como arreglos, cadenas, archivos y punteros. Además, los estudiantes estarán expuestos a la estructura de la computadora: medios de entrada y salida, memoria y unidad central de procesamiento. Se incluye también una visión general al campo de Ciencia de Cómputos y a su efecto en la sociedad, incluyendo principios éticos en computación.
9
+
10
+Durante este semestre los estudiantes del curso de Introducción a la Programación de Computadoras estarán participando del proyecto EIP: "Engaging Introductory Programming Laboratory". En este proyecto, auspiciado por el programa TUES de la National Science Foundation, los estudiantes podrán trabajar en experiencias de laboratorio en donde practicarán los conceptos y destrezas aprendidos en el curso y obtendrán productos atractivos que les ayudarán a entusiasmarse con las posibilidades que ofrece la ciencia de cómputos.
11
+
12
+Cada una de las experiencias de laboratorio utilizará bibliotecas y secciones de programas que han sido desarrolladas por profesores y estudiantes del Programa de Bachillerato en Ciencia de Cómputos de la UPR-Río Piedras. Al completar la experiencia de laboratorio el estudiante no solo reforzará los conceptos aprendidos en clase, sino que también conocerá productos que el o ella serán capaces de producir con un poco más de conocimiento y experiencia en cómputos.
13
+
14
+En la experiencia de laboratorio del día de hoy aprenderás cómo
15
+trabajaremos en las próximas reuniones, la manera de acceder los
16
+archivos que se usarán y cómo entregar los trabajos. También aprenderás
17
+a manejar los elementos básicos de Qt, la plataforma que nos permitirá
18
+desarrollar y ejecutar proyectos en C++.
19
+
20
+##Objetivos:
21
+
22
+1. Conocer las metas del laboratorio del curso CCOM 3033.
23
+
24
+2. Conocer sobre las experiencias de laboratorio preparadas y las expectativas generales de las sesiones de laboratorio.
25
+
26
+3. Conocer la estrategia de programación en parejas.
27
+
28
+4. Conocer las reglas de las sesiones de laboratorio y los métodos de evaluación.
29
+
30
+5. Practicar el uso de *Git* y *Bitbucket* bajar y guardar los archivos necesarios para cada experiencia de laboratorio.
31
+
32
+6. Practicar cómo compilar, corregir errores y ejecutar un programa usando Qt.
33
+
34
+
35
+---
36
+
37
+---
38
+
39
+## Sobre el laboratorio
40
+
41
+###Política del curso y evaluación
42
+
43
+* Todos los estudiantes deberán registrarse en la página de Moodle de la Sección 1 del Laboratorio utilizando un correo electrónico que lean frecuentemente. La página se encuentra en moodle.ccom.uprrp.edu. Toda la información, materiales y asignaciones del curso estará en esta página; cada estudiante es responsable de mirarla regularmente y conocer el calendario de entrega de trabajos.
44
+* Todos los teléfonos celulares deben estar apagados durante la sesión de laboratorio. Si uno de estos aparatos interrumpe la sesión, la profesora asumirá que es una emergencia y se le pedirá al estudiante que salga del laboratorio. El celular tampoco deberá estar en vibración o con señales de luces, ni encima del escritorio. Simplemente apágalo y guárdalo. De esta manera podrás concentrarte en la clase. 
45
+* Solo se utilizarán las laptops del laboratorio.
46
+* La sesión de laboratorio empezará puntualmente y debes llegar a tiempo. En caso de que algo extraordinario ocurra y la profesora tenga que ausentarse o llegar un poco más tarde tratará de informarlo al Departamento. Si llegas más de 15 minutos tarde, por favor, no entres al laboratorio. Si sales del laboratorio, que sea por una emergencia; se espera que una vez empiece la sesión el estudiante permanezca en el laboratorio hasta que el mismo finalice.
47
+* Para cada sesión de laboratorio, habrá documentos en Moodle relacionados a la experiencia de laboratorio que deberás leer antes de llegar al laboratorio. Lee y sigue las instrucciones en la sección *Pre-Lab*. Los documentos de cada experiencia de laboratorio estarán disponibles en Moodle desde viernes de la semana anterior.
48
+* Habrá un *Quiz Pre-Lab* que deberás tomar durante los primeros 10 minutos de la sesión de laboratorio. El quiz se toma utilizando Moodle y no estará disponible después de la 1:10 pm. El quiz estará relacionado a los conceptos aprendidos en clase que serán necesarios para la experiencia de laboratorio y también incluirá preguntas de comprobación de lectura de las instrucciones de la experiencia de laboratorio de esa semana. No se repondrán quizes. Se eliminará la peor nota.
49
+* Las experiencias de laboratorio serán trabajadas en pareja. Luego de cada experiencia de laboratorio, cada pareja debe entregar los archivos indicados en las instrucciones usando Moodle. La fecha límite para entregar los archivos de cada experiencia es el martes siguiente a la sesión de laboratorio. Como las experiencias de laboratorio se trabajarán en pareja, solo se hará una entrega por pareja.
50
+* Al finalizar el trabajo de cada experiencia de laboratorio cada estudiante deberá tomar un *Post-Test* de 10 minutos. Con la prueba Pre-Lab y el Post-Test evaluaremos la utilidad de la experiencia de laboratorio en el aprendizaje de conceptos y destrezas. El Post-Test no tendrá puntuación específica en la nota del laboratorio pero será utilizado para dar bonificaciones en la entrega de cada experiencia de laboratorio. El Post-Test estará disponible en Moodle desde las 2:00 pm del viernes de la sesión de laboratorio hasta las 11:59 pm del martes siguiente.
51
+* Siéntete en libertad de pasar por mi oficina para aclarar cualquier duda. Si la puerta de la oficina está abierta estás bienvenido a entrar; si está cerrada, por favor espera a las horas de oficina. En caso de que tengas conflicto con las horas de oficina asignadas, puedes hacer una cita en cualquier momento.
52
+* Responsabilidad y honestidad son cualidades muy importantes para mí....
53
+
54
+####Evaluación 
55
+
56
+* La nota de laboratorio será el 25% de la nota de la clase.
57
+* Las pruebas "Pre-Lab" serán el 40% de la nota del laboratorio.
58
+* Las entregas serán el 60% de la nota de laboratorio.
59
+* Los criterios para obtener un bono de 5 puntos en la entrega de cada experiencia de laboratorio son los siguientes:
60
+
61
+    1.  Obtienes 80 en el Pre-Lab y mantienes o mejoras la puntuación en Post-Test.
62
+    2.  Obtienes 75 o más en el Post-Test y mejoraste 15 puntos o más de Pre-Lab a Post-Test.
63
+    3.  Obtienes 80 o más en el Post-Test y  mejoraste 10 puntos o más de Pre-Lab a Post-Test.
64
+    4. Obtienes 85 o mas en el Post-Test.
65
+    5. La puntuación total de la entrega no será mayor de 100.
66
+
67
+
68
+
69
+
70
+### Programación en parejas
71
+
72
+Durante todo el semestre las experiencias de laboratorio se trabajarán usando la técnica de programación en pareja. En cada sesión los estudiantes del curso se dividirán en parejas para trabajar la experiencia de laboratorio. Cada pareja utilizará una computadora y cada estudiante de la pareja tendrá uno de dos roles: conductor o navegante. El conductor estará a cargo de escribir y editar el código o lo que requiera el laboratorio. El navegante estará leyendo y evaluando lo que el conductor escriba para indicar si hubo algún error o hacer sugerencias. La composición de las parejas para cada sesión de laboratorio se anunciará en la página de Moodle. 
73
+
74
+### Pre-Lab y Post-Test
75
+
76
+Cada experiencia de laboratorio contendrá una sección llamada *Pre-Lab*. En esta sección encontrarás los objetivos de la experiencia y los conceptos que debes repasar o estudiar antes de llegar al laboratorio. En la página de Moodle habrá un enlace a una prueba corta que deberás tomar durante los primeros 10 minutos de la sesión de laboratorio. El quiz se toma utilizando Moodle y no estará disponible después de la 1:10 pm.  Los conceptos que deberás repasar para la experiencia de laboratorio son conceptos cubiertos durante las secciones de conferencia del curso. La prueba corta también tendrá preguntas de comprobación de lectura de las instrucciones del laboratorio.
77
+
78
+El *Post-Test* es una prueba corta sobre las mismas destrezas y conceptos que se evaluaron en el Pre-Lab. El Post-Test estará disponible en Moodle desde las 2:00 pm del viernes de la sesión de laboratorio hasta las 11:59 pm del martes siguiente. Estas pruebas nos permitirán evaluar la efectividad de la experiencia de laboratorio en el aprendizaje de los conceptos y destrezas del curso. Las puntuaciones obtenidas se utilizarán como bonificación en la puntuación del laboratorio.
79
+
80
+### Entrega de trabajos
81
+
82
+Al finalizar cada experiencia de laboratorio cada pareja deberá entregar archivos con el código implementado o algún otro material. Estas entregas se harán utilizando Moodle y las instrucciones se incluirán en cada experiencia de laboratorio.
83
+
84
+---
85
+
86
+---
87
+
88
+##Servicios y programados que utilizaremos:
89
+
90
+### Libro electrónico
91
+
92
+Las instrucciones para las experiencias de laboratorio de este semestre están contenidas en el libro electrónico al que puedes acceder en http://eip.ccom.uprrp.edu/_book-es/.
93
+
94
+En la página de Moodle te indicamos el nombre del laboratorio correspondiente a cada semana y puedes acceder a las instrucciones buscando en el índice del libro electrónico.
95
+
96
+Esta es una versión preliminar del libro y por lo tanto puede contener errores. Te agradeceremos que nos indiques si encuentras algún error y si tienes alguna sugerencia que pueda ayudar a que las instrucciones sean más claras.
97
+
98
+###Bitbucket y Git
99
+
100
+
101
+*Bitbucket* es un repositorio o depósito de archivos digitales al que se
102
+puede acceder en línea y que permite trabajar proyectos en grupo de
103
+manera ordenada y simple. Los archivos del Laboratorio de Introducción a
104
+la Programación estarán almacenados en este lugar y se podrán bajar a
105
+las computadoras personales utilizando *Git*.
106
+
107
+*Git* es un programado de código abierto que permite manejar archivos de
108
+programas que se desarrollan en grupo. Puedes obtener este programado en
109
+<http://git-scm.com/>. Al comienzo de cada experiencia de laboratorio cargarás los archivos necesarios a una de las laptops del salón usando el comando
110
+`git clone url` desde el terminal de cada computadora. 
111
+
112
+
113
+###Terminal y Linux
114
+
115
+
116
+Para utilizar Git en OS X debemos usar comandos de línea en la pantalla de *terminal*. Los comandos que utilizaremos son comandos del sistema operativo *Unix*. Unix distingue entre letras mayúsculas y minúsculas. Algunos comandos básicos de Unix son:
117
+
118
+---
119
+
120
+|    **Comando**     |                      **Acción**                     |
121
+| ------------------ | --------------------------------------------------- |
122
+| ls                 | muestra lista de los archivos en el directorio      |
123
+| mv nombre1 nombre2 | mueve contenido de nombre1 a archivo nombre2 (cambia nombre del archivo)       |
124
+| cp nombre1 nombre2 | copia contenido de nombre1 a archivo nombre2        |
125
+| rm nombre          | borra archivo                                       |
126
+| mkdir nombre       | crea directorio nombre dentro del directorio actual |
127
+| cd ..              | cambia al directorio anterior                       |
128
+| cd ~               | cambia al directorio hogar                          |
129
+| cd nombre          | cambia al directorio nombre (dentro del actual)     |
130
+| flecha hacia arriba| repite comando anterior                             |
131
+
132
+           
133
+**Figura 1.** Comandos básicos de Unix.
134
+
135
+---
136
+
137
+
138
+###Qt
139
+
140
+
141
+Qt es una aplicación para programación que es utilizada por
142
+desarrolladores que usan el lenguaje de programación C++. Este ambiente
143
+funciona en, y puede crear versiones de, las aplicaciones para distintas
144
+plataformas (desktop, plataformas móbiles y otras). Qt contiene un
145
+ambiente de desarrollo integrado (IDE), llamado *Qt Creator*. Desde ese
146
+ambiente se puede programar y crear interfaces gráficas utilizando la
147
+opción de diseño que contiene Qt. Te instamos a que instales Qt en tu
148
+computadora personal y explores las otras opciones que esta aplicación
149
+provee.
150
+
151
+### Máquina virtual
152
+
153
+Cada laptop en el laboratorio tiene instalada una *máquina virtual* que contiene la aplicación de Qt necesaria para trabajar las experiencias laboratorios y un terminal en donde podrás escribir los comandos de Unix para bajar los archivos.
154
+
155
+Puedes instalar esta máquina en tu computadora personal desde el siguiente lugar: http://eip.ccom.uprrp.edu/vms/eip-ubuntu-qt.tar.gz .
156
+
157
+Debes usar esta máquina porque contiene la versión para que los programas para cada experiencia de laboratorio funcionen correctamente. Si instalas otra versión de Qt pudieras tener problemas con algunos de los programas.
158
+
159
+## Cómo obtener Qt
160
+
161
+Si quieres instalar la aplicación Qt en tu máquina puedes ir a la página del proyecto Qt, http://qt-project.org/. Allí encontrarás más información sobre Qt y desde la página podrás bajar el programa. Puedes ver videos de cómo instalar Qt en distintas plataformas en: <http://youtu.be/6eY5VSPYZCw> (Linux), <http://youtu.be/CImDCSxi7Wc> (Windows), <http://youtu.be/_zq-pSw3Ox4> (Mac).
162
+
163
+---
164
+
165
+---
166
+
167
+## Usando Qt
168
+
169
+Qt es una aplicación usada por desarrolladores profesionales y tiene
170
+muchísimas posibilidades y opciones. En esta experiencia de laboratorio
171
+veremos cómo utilizar las opciones básicas que necesitaremos durante el
172
+semestre.
173
+
174
+Para el laboratorio mayormente utilizaremos la parte de editar programas
175
+en C++ pero también existe una opción para diseñar interfaces gráficos.
176
+Esta opción fue utilizada para incorporar el código que presenta los
177
+interfaces gráficos de las experiencias de laboratorio.
178
+El aprender a utilizar esta opción no es parte de este curso pero puedes
179
+aprender a utilizarla por tu cuenta. En https://docs.google.com/file/d/0B_6PcmpWnkFBOXJxVDlUNEVfOFk/edit puedes encontrar una presentación, preparada por el estudiante Jonathan
180
+Vélez, que muestra aspectos básicos de cómo utilizar la opción de diseño
181
+de interfaces gráficos.
182
+
183
+### Proyectos en C++
184
+
185
+Cada proyecto en C++ se compone de varios tipos de archivos. En Qt
186
+tendrás archivos del tipo *fuente (source), encabezados (header) y
187
+formulario (form)*.
188
+
189
+-   **Archivos "sources":** Estos archivos tienen extensión `.cpp` (C plus
190
+    plus) y contienen el código en C++ de tu programa. Entre estos
191
+    archivos encontrarás el `main.cpp`; este es el archivo que buscará
192
+    el preprocesador y es donde comienza tu programa. Otro de los
193
+    archivos tipo "source" que encontrarás en proyectos creados en Qt es
194
+    el archivo `mainwindow.cpp`; este archivo lo crea Qt y contiene el
195
+    código asociado a la ventana principal diseñada con la opción de
196
+    design (por ejemplo las funciones que aparecen bajo "Private
197
+    slots").
198
+
199
+-   **Archivos "headers":** Estos archivos tienen extensión `.h` y
200
+    contienen declaraciones de las funciones que son utilizadas en el programa. Durante el pre-procesamiento de cada programa, la
201
+    instrucción `#include<nombre.h>` incluye el contenido del archivo
202
+    llamado "nombre.h" en el código del archivo `.cpp` que contiene esa
203
+    instrucción.
204
+
205
+-   **Archivos "forms":** Estos archivos tienen extensión `.ui` (user
206
+    interface) y contienen los formularios creados con la opción de
207
+    diseño. Un archivo que encontrarás en proyectos creados en Qt es el
208
+    archivo `mainwindow.ui`; este archivo lo crea Qt y contiene el
209
+    diseño de la ventana principal del programa.
210
+
211
+
212
+
213
+---
214
+
215
+---
216
+
217
+
218
+## Sesión de laboratorio
219
+
220
+En la experiencia de laboratorio de hoy practicarás el uso de algunos de los programados que utilizarás durante el semestre. Utilizarás los programas que están instalados en la máquina virtual.
221
+
222
+###Ejercicio 0: Crear directorio para los archivos de los laboratorios
223
+
224
+Utiliza el terminal y el comando `mkdir` para crear un directorio `Documents/eip` para los archivos de los laboratorios. 
225
+
226
+
227
+###Ejercicio 1: Comenzar proyecto nuevo
228
+
229
+####Instrucciones
230
+
231
+1. Para comenzar un proyecto en C++, marca el botón de `New Project` o ve al menú principal de Qt y en `File` selecciona `New File or Project`. Saldrá una ventana similar a la ventana en la Figura 2. Selecciona `Non-Qt Project`, `Plain C++ Project` y marca `Choose`.
232
+
233
+    ---
234
+
235
+    ![figure2.png](images/figure2.png)
236
+
237
+    **Figura 2.** Comenzar proyecto en C++ sin aplicaciones gráficas.
238
+
239
+    ---
240
+
241
+
242
+2. Escribe el nombre del proyecto, selecciona el directorio en donde quieres guardarlo, marca `Continue` en esa y la siguiente ventana y luego `Done` en la próxima.
243
+
244
+    Este proceso creará un nuevo proyecto en Qt con el esqueleto de un programa básico en C++ que solo despliega "Hello World!". Antes de continuar, selecciona `Projects` en el menú vertical de la izquierda. Deberá aparecer la pantalla de `Build Settings`. En esa pantalla, asegúrate que la cajita de `Shadow build` NO esté seleccionada, como ocurre en la Figura 3.
245
+
246
+    ---
247
+
248
+    ![figure3.png](images/figure3.png)
249
+
250
+    **Figura 3.** No seleccionar opción `Shadow build`.
251
+
252
+    ---
253
+
254
+
255
+
256
+3. Regresa a la pantalla donde puedes editar el programa seleccionando `Edit` en el menú de la izquierda y haciendo "doble click" en `Sources` y luego en `main.cpp`. Presiona la flecha verde en el menú de la izquierda para ejecutar el programa. Los resultados del programa se desplegarán en una pantalla de terminal. Si hubiera errores, estos aparecerán en la pantalla de `Issues` en Qt.
257
+
258
+4. Cambia el contenido de `main.cpp` para que sea:
259
+
260
+    ```cpp
261
+
262
+        #include <iostream>
263
+        using namespace std;
264
+
265
+
266
+        int main()
267
+        {
268
+            cout << endl << "Me gusta el laboratorio de programacion." << endl;
269
+            return 0;
270
+        }
271
+
272
+    ```
273
+
274
+5. Marca el botón verde del menú de la izquierda para compilar y ejecutar el programa. Saldrá una ventana que te ofrece la opción de guardar los cambios. Marca `Save all`. Al ejecutar, si no cometiste ningún error, el programa debe desplegar "Me gusta el laboratorio de programacion." en la pantalla de terminal.
275
+
276
+###Ejercicio 2: Bajar proyectos de Bitbucket
277
+
278
+Los archivos para cada experiencia de laboratorio están guardados en Bitbucket. En cada sesión de laboratorio bajarás de Bitbucket la carpeta que contiene los archivos de esa experiencia de laboratorio y los guardarás en el directorio `Documents/eip` que creaste en el Ejercicio 0. Para bajar la carpeta correspondiente a esta experiencia de laboratorio, abre un terminal, utiliza los comandos de Linux para moverte al directorio `Documents/eip` y escribe el comando `git clone https://bitbucket.org/eip-uprrp/introduccion.git`. Ve al directorio `Documents/eip` y verifica que contiene la carpeta `Introducción`.
279
+
280
+###Ejercicio 3: Abrir proyecto ya creado compilar y ejecutar
281
+
282
+En este ejercicio practicarás cómo compilar, corregir errores y ejecutar un programa usando Qt. 
283
+
284
+####Instrucciones
285
+
286
+1. Primero borrarás los archivos creados por Qt y cerrarás los archivos del proyecto anterior. Para hacer esto, en el menú principal de Qt ve a `Build`  y selecciona `Clean all`; luego ve a `File` y selecciona `Close all projects and editors`. 
287
+
288
+2. Carga a `QtCreator` el proyecto `Practica`  haciendo doble "click" en  el archivo `Practica.pro` en el directorio `Documents/eip/introduccion` de tu computadora. En la ventana que aparece marca `Configure Project`.
289
+
290
+    Cada vez que cargues o comiences algún proyecto asegúrate de que el `Shadow build` no esté seleccionado: en el menú de la izquierda, selecciona `Projects` y luego, en `Build Settings`, verifica que la cajita de `Shadow build` no esté seleccionada, como vimos en la Figura 3.
291
+
292
+
293
+3. Como viste anteriormente, Qt te permite compilar y ejecutar el programa marcando la flecha verde
294
+que aparece en la columna de la izquierda. Presiona la flecha y nota que
295
+obtienes una ventana de "Issues" que ocurrieron al compilar. La lista
296
+que aparece te muestra información que te permitirá encontrar y corregir
297
+los errores. 
298
+
299
+4. Selecciona el archivo `main.cpp` en el directorio de
300
+`Sources` para que puedas encontrar y corregir los errores. 
301
+
302
+    Corrige todos los errores y presiona nuevamente la flecha verde para compilar y ejecutar el programa. Una vez
303
+    corrijas todos los errores, el programa debe abrir la pantalla
304
+    `Application Output` y desplegar `Salida: 1`.
305
+
306
+5. Como mencionamos antes, durante el proceso de compilación y ejecución Qt crea varios archivos que debemos borrar luego de terminar con el programa. Para hacer esto, en la opción `Build` del menú de Qt, selecciona `Clean All`.
307
+
308
+
309
+###Ejercicio 4: Entrega de trabajos
310
+
311
+Durante cada experiencia de laboratorio cada pareja deberá entregar algunos resultados de su trabajo. Estas entregas se harán en la sección de "Entregas" que aparece en Moodle. Hoy cada estudiante practicará una entrega individualmente. 
312
+
313
+####Instrucciones
314
+
315
+1. Abre el enlace de "Entregas" en Moodle y entrega el archivo `main.cpp`. Recuerda utilizar buenas prácticas de programación incluyendo  el nombre de los programadores como comentario al inicio de tu programa.
316
+
317
+

+ 2
- 318
README.md Прегледај датотеку

@@ -1,318 +1,2 @@
1
-[English](#markdown-header-introduction) | [Español](#markdown-header-introduccion)
2
-
3
-#Introducción al laboratorio y a los programados que utilizaremos
4
-
5
-
6
-![main1.png](images/main1.png)
7
-
8
-
9
-El curso Introducción a la Programación de Computadoras provee una introducción a los fundamentos de la programación de computadoras y a la solución de problemas mediante el desarrollo de algoritmos, incluyendo técnicas de programación paralela. Los estudiantes dominarán las piezas básicas de un programa comenzando con estructuras de control usando instrucciones condicionales e iterativas con expresiones lógicas, así como la definición y uso de variables y tipos de datos. Desarrollarán procedimientos y funciones para tareas  comunes que se repiten o más complejas que requieren descomposición, incluyendo funciones recursivas. Utilizarán tipos de datos estructurados tales como arreglos, cadenas, archivos y punteros. Además, los estudiantes estarán expuestos a la estructura de la computadora: medios de entrada y salida, memoria y unidad central de procesamiento. Se incluye también una visión general al campo de Ciencia de Cómputos y a su efecto en la sociedad, incluyendo principios éticos en computación.
10
-
11
-Durante este semestre los estudiantes del curso de Introducción a la Programación de Computadoras estarán participando del proyecto EIP: "Engaging Introductory Programming Laboratory". En este proyecto, auspiciado por el programa TUES de la National Science Foundation, los estudiantes podrán trabajar en experiencias de laboratorio en donde practicarán los conceptos y destrezas aprendidos en el curso y obtendrán productos atractivos que les ayudarán a entusiasmarse con las posibilidades que ofrece la ciencia de cómputos.
12
-
13
-Cada una de las experiencias de laboratorio utilizará bibliotecas y secciones de programas que han sido desarrolladas por profesores y estudiantes del Programa de Bachillerato en Ciencia de Cómputos de la UPR-Río Piedras. Al completar la experiencia de laboratorio el estudiante no solo reforzará los conceptos aprendidos en clase, sino que también conocerá productos que el o ella serán capaces de producir con un poco más de conocimiento y experiencia en cómputos.
14
-
15
-En la experiencia de laboratorio del día de hoy aprenderás cómo
16
-trabajaremos en las próximas reuniones, la manera de acceder los
17
-archivos que se usarán y cómo entregar los trabajos. También aprenderás
18
-a manejar los elementos básicos de Qt, la plataforma que nos permitirá
19
-desarrollar y ejecutar proyectos en C++.
20
-
21
-##Objetivos:
22
-
23
-1. Conocer las metas del laboratorio del curso CCOM 3033.
24
-
25
-2. Conocer sobre las experiencias de laboratorio preparadas y las expectativas generales de las sesiones de laboratorio.
26
-
27
-3. Conocer la estrategia de programación en parejas.
28
-
29
-4. Conocer las reglas de las sesiones de laboratorio y los métodos de evaluación.
30
-
31
-5. Practicar el uso de *Git* y *Bitbucket* bajar y guardar los archivos necesarios para cada experiencia de laboratorio.
32
-
33
-6. Practicar cómo compilar, corregir errores y ejecutar un programa usando Qt.
34
-
35
-
36
----
37
-
38
----
39
-
40
-## Sobre el laboratorio
41
-
42
-###Política del curso y evaluación
43
-
44
-* Todos los estudiantes deberán registrarse en la página de Moodle de la Sección 1 del Laboratorio utilizando un correo electrónico que lean frecuentemente. La página se encuentra en moodle.ccom.uprrp.edu. Toda la información, materiales y asignaciones del curso estará en esta página; cada estudiante es responsable de mirarla regularmente y conocer el calendario de entrega de trabajos.
45
-* Todos los teléfonos celulares deben estar apagados durante la sesión de laboratorio. Si uno de estos aparatos interrumpe la sesión, la profesora asumirá que es una emergencia y se le pedirá al estudiante que salga del laboratorio. El celular tampoco deberá estar en vibración o con señales de luces, ni encima del escritorio. Simplemente apágalo y guárdalo. De esta manera podrás concentrarte en la clase. 
46
-* Solo se utilizarán las laptops del laboratorio.
47
-* La sesión de laboratorio empezará puntualmente y debes llegar a tiempo. En caso de que algo extraordinario ocurra y la profesora tenga que ausentarse o llegar un poco más tarde tratará de informarlo al Departamento. Si llegas más de 15 minutos tarde, por favor, no entres al laboratorio. Si sales del laboratorio, que sea por una emergencia; se espera que una vez empiece la sesión el estudiante permanezca en el laboratorio hasta que el mismo finalice.
48
-* Para cada sesión de laboratorio, habrá documentos en Moodle relacionados a la experiencia de laboratorio que deberás leer antes de llegar al laboratorio. Lee y sigue las instrucciones en la sección *Pre-Lab*. Los documentos de cada experiencia de laboratorio estarán disponibles en Moodle desde viernes de la semana anterior.
49
-* Habrá un *Quiz Pre-Lab* que deberás tomar durante los primeros 10 minutos de la sesión de laboratorio. El quiz se toma utilizando Moodle y no estará disponible después de la 1:10 pm. El quiz estará relacionado a los conceptos aprendidos en clase que serán necesarios para la experiencia de laboratorio y también incluirá preguntas de comprobación de lectura de las instrucciones de la experiencia de laboratorio de esa semana. No se repondrán quizes. Se eliminará la peor nota.
50
-* Las experiencias de laboratorio serán trabajadas en pareja. Luego de cada experiencia de laboratorio, cada pareja debe entregar los archivos indicados en las instrucciones usando Moodle. La fecha límite para entregar los archivos de cada experiencia es el martes siguiente a la sesión de laboratorio. Como las experiencias de laboratorio se trabajarán en pareja, solo se hará una entrega por pareja.
51
-* Al finalizar el trabajo de cada experiencia de laboratorio cada estudiante deberá tomar un *Post-Test* de 10 minutos. Con la prueba Pre-Lab y el Post-Test evaluaremos la utilidad de la experiencia de laboratorio en el aprendizaje de conceptos y destrezas. El Post-Test no tendrá puntuación específica en la nota del laboratorio pero será utilizado para dar bonificaciones en la entrega de cada experiencia de laboratorio. El Post-Test estará disponible en Moodle desde las 2:00 pm del viernes de la sesión de laboratorio hasta las 11:59 pm del martes siguiente.
52
-* Siéntete en libertad de pasar por mi oficina para aclarar cualquier duda. Si la puerta de la oficina está abierta estás bienvenido a entrar; si está cerrada, por favor espera a las horas de oficina. En caso de que tengas conflicto con las horas de oficina asignadas, puedes hacer una cita en cualquier momento.
53
-* Responsabilidad y honestidad son cualidades muy importantes para mí....
54
-
55
-####Evaluación 
56
-
57
-* La nota de laboratorio será el 25% de la nota de la clase.
58
-* Las pruebas "Pre-Lab" serán el 40% de la nota del laboratorio.
59
-* Las entregas serán el 60% de la nota de laboratorio.
60
-* Los criterios para obtener un bono de 5 puntos en la entrega de cada experiencia de laboratorio son los siguientes:
61
-
62
-    1.  Obtienes 80 en el Pre-Lab y mantienes o mejoras la puntuación en Post-Test.
63
-    2.  Obtienes 75 o más en el Post-Test y mejoraste 15 puntos o más de Pre-Lab a Post-Test.
64
-    3.  Obtienes 80 o más en el Post-Test y  mejoraste 10 puntos o más de Pre-Lab a Post-Test.
65
-    4. Obtienes 85 o mas en el Post-Test.
66
-    5. La puntuación total de la entrega no será mayor de 100.
67
-
68
-
69
-
70
-
71
-### Programación en parejas
72
-
73
-Durante todo el semestre las experiencias de laboratorio se trabajarán usando la técnica de programación en pareja. En cada sesión los estudiantes del curso se dividirán en parejas para trabajar la experiencia de laboratorio. Cada pareja utilizará una computadora y cada estudiante de la pareja tendrá uno de dos roles: conductor o navegante. El conductor estará a cargo de escribir y editar el código o lo que requiera el laboratorio. El navegante estará leyendo y evaluando lo que el conductor escriba para indicar si hubo algún error o hacer sugerencias. La composición de las parejas para cada sesión de laboratorio se anunciará en la página de Moodle. 
74
-
75
-### Pre-Lab y Post-Test
76
-
77
-Cada experiencia de laboratorio contendrá una sección llamada *Pre-Lab*. En esta sección encontrarás los objetivos de la experiencia y los conceptos que debes repasar o estudiar antes de llegar al laboratorio. En la página de Moodle habrá un enlace a una prueba corta que deberás tomar durante los primeros 10 minutos de la sesión de laboratorio. El quiz se toma utilizando Moodle y no estará disponible después de la 1:10 pm.  Los conceptos que deberás repasar para la experiencia de laboratorio son conceptos cubiertos durante las secciones de conferencia del curso. La prueba corta también tendrá preguntas de comprobación de lectura de las instrucciones del laboratorio.
78
-
79
-El *Post-Test* es una prueba corta sobre las mismas destrezas y conceptos que se evaluaron en el Pre-Lab. El Post-Test estará disponible en Moodle desde las 2:00 pm del viernes de la sesión de laboratorio hasta las 11:59 pm del martes siguiente. Estas pruebas nos permitirán evaluar la efectividad de la experiencia de laboratorio en el aprendizaje de los conceptos y destrezas del curso. Las puntuaciones obtenidas se utilizarán como bonificación en la puntuación del laboratorio.
80
-
81
-### Entrega de trabajos
82
-
83
-Al finalizar cada experiencia de laboratorio cada pareja deberá entregar archivos con el código implementado o algún otro material. Estas entregas se harán utilizando Moodle y las instrucciones se incluirán en cada experiencia de laboratorio.
84
-
85
----
86
-
87
----
88
-
89
-##Servicios y programados que utilizaremos:
90
-
91
-### Libro electrónico
92
-
93
-Las instrucciones para las experiencias de laboratorio de este semestre están contenidas en el libro electrónico al que puedes acceder en http://eip.ccom.uprrp.edu/_book-es/.
94
-
95
-En la página de Moodle te indicamos el nombre del laboratorio correspondiente a cada semana y puedes acceder a las instrucciones buscando en el índice del libro electrónico.
96
-
97
-Esta es una versión preliminar del libro y por lo tanto puede contener errores. Te agradeceremos que nos indiques si encuentras algún error y si tienes alguna sugerencia que pueda ayudar a que las instrucciones sean más claras.
98
-
99
-###Bitbucket y Git
100
-
101
-
102
-*Bitbucket* es un repositorio o depósito de archivos digitales al que se
103
-puede acceder en línea y que permite trabajar proyectos en grupo de
104
-manera ordenada y simple. Los archivos del Laboratorio de Introducción a
105
-la Programación estarán almacenados en este lugar y se podrán bajar a
106
-las computadoras personales utilizando *Git*.
107
-
108
-*Git* es un programado de código abierto que permite manejar archivos de
109
-programas que se desarrollan en grupo. Puedes obtener este programado en
110
-<http://git-scm.com/>. Al comienzo de cada experiencia de laboratorio cargarás los archivos necesarios a una de las laptops del salón usando el comando
111
-`git clone url` desde el terminal de cada computadora. 
112
-
113
-
114
-###Terminal y Linux
115
-
116
-
117
-Para utilizar Git en OS X debemos usar comandos de línea en la pantalla de *terminal*. Los comandos que utilizaremos son comandos del sistema operativo *Unix*. Unix distingue entre letras mayúsculas y minúsculas. Algunos comandos básicos de Unix son:
118
-
119
----
120
-
121
-|    **Comando**     |                      **Acción**                     |
122
-| ------------------ | --------------------------------------------------- |
123
-| ls                 | muestra lista de los archivos en el directorio      |
124
-| mv nombre1 nombre2 | mueve contenido de nombre1 a archivo nombre2 (cambia nombre del archivo)       |
125
-| cp nombre1 nombre2 | copia contenido de nombre1 a archivo nombre2        |
126
-| rm nombre          | borra archivo                                       |
127
-| mkdir nombre       | crea directorio nombre dentro del directorio actual |
128
-| cd ..              | cambia al directorio anterior                       |
129
-| cd ~               | cambia al directorio hogar                          |
130
-| cd nombre          | cambia al directorio nombre (dentro del actual)     |
131
-| flecha hacia arriba| repite comando anterior                             |
132
-
133
-           
134
-**Figura 1.** Comandos básicos de Unix.
135
-
136
----
137
-
138
-
139
-###Qt
140
-
141
-
142
-Qt es una aplicación para programación que es utilizada por
143
-desarrolladores que usan el lenguaje de programación C++. Este ambiente
144
-funciona en, y puede crear versiones de, las aplicaciones para distintas
145
-plataformas (desktop, plataformas móbiles y otras). Qt contiene un
146
-ambiente de desarrollo integrado (IDE), llamado *Qt Creator*. Desde ese
147
-ambiente se puede programar y crear interfaces gráficas utilizando la
148
-opción de diseño que contiene Qt. Te instamos a que instales Qt en tu
149
-computadora personal y explores las otras opciones que esta aplicación
150
-provee.
151
-
152
-### Máquina virtual
153
-
154
-Cada laptop en el laboratorio tiene instalada una *máquina virtual* que contiene la aplicación de Qt necesaria para trabajar las experiencias laboratorios y un terminal en donde podrás escribir los comandos de Unix para bajar los archivos.
155
-
156
-Puedes instalar esta máquina en tu computadora personal desde el siguiente lugar: http://eip.ccom.uprrp.edu/vms/eip-ubuntu-qt.tar.gz .
157
-
158
-Debes usar esta máquina porque contiene la versión para que los programas para cada experiencia de laboratorio funcionen correctamente. Si instalas otra versión de Qt pudieras tener problemas con algunos de los programas.
159
-
160
-## Cómo obtener Qt
161
-
162
-Si quieres instalar la aplicación Qt en tu máquina puedes ir a la página del proyecto Qt, http://qt-project.org/. Allí encontrarás más información sobre Qt y desde la página podrás bajar el programa. Puedes ver videos de cómo instalar Qt en distintas plataformas en: <http://youtu.be/6eY5VSPYZCw> (Linux), <http://youtu.be/CImDCSxi7Wc> (Windows), <http://youtu.be/_zq-pSw3Ox4> (Mac).
163
-
164
----
165
-
166
----
167
-
168
-## Usando Qt
169
-
170
-Qt es una aplicación usada por desarrolladores profesionales y tiene
171
-muchísimas posibilidades y opciones. En esta experiencia de laboratorio
172
-veremos cómo utilizar las opciones básicas que necesitaremos durante el
173
-semestre.
174
-
175
-Para el laboratorio mayormente utilizaremos la parte de editar programas
176
-en C++ pero también existe una opción para diseñar interfaces gráficos.
177
-Esta opción fue utilizada para incorporar el código que presenta los
178
-interfaces gráficos de las experiencias de laboratorio.
179
-El aprender a utilizar esta opción no es parte de este curso pero puedes
180
-aprender a utilizarla por tu cuenta. En https://docs.google.com/file/d/0B_6PcmpWnkFBOXJxVDlUNEVfOFk/edit puedes encontrar una presentación, preparada por el estudiante Jonathan
181
-Vélez, que muestra aspectos básicos de cómo utilizar la opción de diseño
182
-de interfaces gráficos.
183
-
184
-### Proyectos en C++
185
-
186
-Cada proyecto en C++ se compone de varios tipos de archivos. En Qt
187
-tendrás archivos del tipo *fuente (source), encabezados (header) y
188
-formulario (form)*.
189
-
190
--   **Archivos "sources":** Estos archivos tienen extensión `.cpp` (C plus
191
-    plus) y contienen el código en C++ de tu programa. Entre estos
192
-    archivos encontrarás el `main.cpp`; este es el archivo que buscará
193
-    el preprocesador y es donde comienza tu programa. Otro de los
194
-    archivos tipo "source" que encontrarás en proyectos creados en Qt es
195
-    el archivo `mainwindow.cpp`; este archivo lo crea Qt y contiene el
196
-    código asociado a la ventana principal diseñada con la opción de
197
-    design (por ejemplo las funciones que aparecen bajo "Private
198
-    slots").
199
-
200
--   **Archivos "headers":** Estos archivos tienen extensión `.h` y
201
-    contienen declaraciones de las funciones que son utilizadas en el programa. Durante el pre-procesamiento de cada programa, la
202
-    instrucción `#include<nombre.h>` incluye el contenido del archivo
203
-    llamado "nombre.h" en el código del archivo `.cpp` que contiene esa
204
-    instrucción.
205
-
206
--   **Archivos "forms":** Estos archivos tienen extensión `.ui` (user
207
-    interface) y contienen los formularios creados con la opción de
208
-    diseño. Un archivo que encontrarás en proyectos creados en Qt es el
209
-    archivo `mainwindow.ui`; este archivo lo crea Qt y contiene el
210
-    diseño de la ventana principal del programa.
211
-
212
-
213
-
214
----
215
-
216
----
217
-
218
-
219
-## Sesión de laboratorio
220
-
221
-En la experiencia de laboratorio de hoy practicarás el uso de algunos de los programados que utilizarás durante el semestre. Utilizarás los programas que están instalados en la máquina virtual.
222
-
223
-###Ejercicio 0: Crear directorio para los archivos de los laboratorios
224
-
225
-Utiliza el terminal y el comando `mkdir` para crear un directorio `Documents/eip` para los archivos de los laboratorios. 
226
-
227
-
228
-###Ejercicio 1: Comenzar proyecto nuevo
229
-
230
-####Instrucciones
231
-
232
-1. Para comenzar un proyecto en C++, marca el botón de `New Project` o ve al menú principal de Qt y en `File` selecciona `New File or Project`. Saldrá una ventana similar a la ventana en la Figura 2. Selecciona `Non-Qt Project`, `Plain C++ Project` y marca `Choose`.
233
-
234
-    ---
235
-
236
-    ![figure2.png](images/figure2.png)
237
-
238
-    **Figura 2.** Comenzar proyecto en C++ sin aplicaciones gráficas.
239
-
240
-    ---
241
-
242
-
243
-2. Escribe el nombre del proyecto, selecciona el directorio en donde quieres guardarlo, marca `Continue` en esa y la siguiente ventana y luego `Done` en la próxima.
244
-
245
-    Este proceso creará un nuevo proyecto en Qt con el esqueleto de un programa básico en C++ que solo despliega "Hello World!". Antes de continuar, selecciona `Projects` en el menú vertical de la izquierda. Deberá aparecer la pantalla de `Build Settings`. En esa pantalla, asegúrate que la cajita de `Shadow build` NO esté seleccionada, como ocurre en la Figura 3.
246
-
247
-    ---
248
-
249
-    ![figure3.png](images/figure3.png)
250
-
251
-    **Figura 3.** No seleccionar opción `Shadow build`.
252
-
253
-    ---
254
-
255
-
256
-
257
-3. Regresa a la pantalla donde puedes editar el programa seleccionando `Edit` en el menú de la izquierda y haciendo "doble click" en `Sources` y luego en `main.cpp`. Presiona la flecha verde en el menú de la izquierda para ejecutar el programa. Los resultados del programa se desplegarán en una pantalla de terminal. Si hubiera errores, estos aparecerán en la pantalla de `Issues` en Qt.
258
-
259
-4. Cambia el contenido de `main.cpp` para que sea:
260
-
261
-    ```cpp
262
-
263
-        #include <iostream>
264
-        using namespace std;
265
-
266
-
267
-        int main()
268
-        {
269
-            cout << endl << "Me gusta el laboratorio de programacion." << endl;
270
-            return 0;
271
-        }
272
-
273
-    ```
274
-
275
-5. Marca el botón verde del menú de la izquierda para compilar y ejecutar el programa. Saldrá una ventana que te ofrece la opción de guardar los cambios. Marca `Save all`. Al ejecutar, si no cometiste ningún error, el programa debe desplegar "Me gusta el laboratorio de programacion." en la pantalla de terminal.
276
-
277
-###Ejercicio 2: Bajar proyectos de Bitbucket
278
-
279
-Los archivos para cada experiencia de laboratorio están guardados en Bitbucket. En cada sesión de laboratorio bajarás de Bitbucket la carpeta que contiene los archivos de esa experiencia de laboratorio y los guardarás en el directorio `Documents/eip` que creaste en el Ejercicio 0. Para bajar la carpeta correspondiente a esta experiencia de laboratorio, abre un terminal, utiliza los comandos de Linux para moverte al directorio `Documents/eip` y escribe el comando `git clone https://bitbucket.org/eip-uprrp/introduccion.git`. Ve al directorio `Documents/eip` y verifica que contiene la carpeta `Introducción`.
280
-
281
-###Ejercicio 3: Abrir proyecto ya creado compilar y ejecutar
282
-
283
-En este ejercicio practicarás cómo compilar, corregir errores y ejecutar un programa usando Qt. 
284
-
285
-####Instrucciones
286
-
287
-1. Primero borrarás los archivos creados por Qt y cerrarás los archivos del proyecto anterior. Para hacer esto, en el menú principal de Qt ve a `Build`  y selecciona `Clean all`; luego ve a `File` y selecciona `Close all projects and editors`. 
288
-
289
-2. Carga a `QtCreator` el proyecto `Practica`  haciendo doble "click" en  el archivo `Practica.pro` en el directorio `Documents/eip/introduccion` de tu computadora. En la ventana que aparece marca `Configure Project`.
290
-
291
-    Cada vez que cargues o comiences algún proyecto asegúrate de que el `Shadow build` no esté seleccionado: en el menú de la izquierda, selecciona `Projects` y luego, en `Build Settings`, verifica que la cajita de `Shadow build` no esté seleccionada, como vimos en la Figura 3.
292
-
293
-
294
-3. Como viste anteriormente, Qt te permite compilar y ejecutar el programa marcando la flecha verde
295
-que aparece en la columna de la izquierda. Presiona la flecha y nota que
296
-obtienes una ventana de "Issues" que ocurrieron al compilar. La lista
297
-que aparece te muestra información que te permitirá encontrar y corregir
298
-los errores. 
299
-
300
-4. Selecciona el archivo `main.cpp` en el directorio de
301
-`Sources` para que puedas encontrar y corregir los errores. 
302
-
303
-    Corrige todos los errores y presiona nuevamente la flecha verde para compilar y ejecutar el programa. Una vez
304
-    corrijas todos los errores, el programa debe abrir la pantalla
305
-    `Application Output` y desplegar `Salida: 1`.
306
-
307
-5. Como mencionamos antes, durante el proceso de compilación y ejecución Qt crea varios archivos que debemos borrar luego de terminar con el programa. Para hacer esto, en la opción `Build` del menú de Qt, selecciona `Clean All`.
308
-
309
-
310
-###Ejercicio 4: Entrega de trabajos
311
-
312
-Durante cada experiencia de laboratorio cada pareja deberá entregar algunos resultados de su trabajo. Estas entregas se harán en la sección de "Entregas" que aparece en Moodle. Hoy cada estudiante practicará una entrega individualmente. 
313
-
314
-####Instrucciones
315
-
316
-1. Abre el enlace de "Entregas" en Moodle y entrega el archivo `main.cpp`. Recuerda utilizar buenas prácticas de programación incluyendo  el nombre de los programadores como comentario al inicio de tu programa.
317
-
318
-
1
+## [\[English\]](README-en.md) - for README in English
2
+## [\[Spanish\]](README-es.md) - for README in Spanish