Materiales y repaso taller 2 PIE 2021-03-11

Materiales y repaso taller 2 PIE 2021-03-11

de Juan Pablo Garella -
Número de respuestas: 0

Taller2: Conceptos básicos: tipos, control de flujo, operadores.

Requisitos: 

  1. Capítulos 2 y 3 del Libro.
  2. Relevamiento sobre instalación de la maquina virtual.

Esquema: 

  1. Repasamos las siguientes soluciones provistas en el taller 1 ahondando en conceptos relacionados a tipos, control de flujo, operadores.

  - Ejercicio1_mod_a.c 

  - Ejercicio1_mod_b.c  

  - Ejercicio5_a.c (Repasamos args y control de flujo: while)

  - Ejercicio5_a_for.c (Solución del ejercicio con un bucle for)

         2.      Realizamos el ejercicio 2 del práctico 1 (Simulador de dados)

  - simulador_dados.c 

Con el fin de obtener números pseudo-aleatorios utilizamos la función rand() (The C Programming Language Kernighan Ritchie - Apéndice B5) cada vez que esta función es llamada devuelve un número entero entre 0 y RAND_MAX. Para obtener un número entre 1 y 6 es útil el uso de ciertos operadores como % y + (repasar solución). 
EL inconveniente es que si ejecutamos varias veces el programa, los números pseudo-aleatorios se repiten. Esto se debe a que la función rand() obtiene estos números partiendo de una condición inicial denominada "semilla".  

Ahora bien, para evitar este problema utilizamos la función srand(). A dicha función se le debe pasar un parámetro de entrada que se usará como semilla. Por lo tanto el nuevo problema es encontrar la manera de generar un número distinto cada vez que ejecutamos nuestro programa. 

Hay dos valores comúnmente utilizados con este propósito: 

srand (time(NULL)); utilizar la fecha/hora del sistema. 

srand (getpid()); Obtener el identificador del proceso.

3.        Repasamos: tipos, control de flujo y operadores:

Tipos (The C Programming Language Kernighan & Ritchie - Chapter 2 - Types, Operators and Expressions):

Hay sólo algunos tipos de datos básicos en C:

- char:  un solo byte, capaz de contener un carácter del conjunto de caracteres local.

- int: un entero, normalmente del tamaño natural de los enteros en la máquina en la que se ejecuta.

- float: punto flotante de precisión normal. 

- double: punto flotante de doble precisión.

Además, existen algunos calificadores que se aplican a estos tipos básicos, short y long se aplican a enteros:

- short int sh;

- long int counter;

Por otro lado el calificador signed o unsigned puede aplicarse a char o a cualquier entero. Los números unsigned son siempre positivos o cero y obedecen las leyes de la aritmética módulo 2^n, donde n es el número de bits en el tipo. Así, por ejemplo, si los char son de 8 bits, las variables unsigned char tienen valores «entre 0 y 255, en tanto que las variables signed char tienen valores entre -128 y 127 (en una maquina de complemento a dos).

Operadores:

Repasamos operadores de manipulación de bits:

C provee seis operadores para manipulación de bits, éstos deben aplicarse a variables de tipo char, short, int y long, sean con signo (signed) o sin signo (unsigned):

& bitwise AND

| bitwise inclusive OR

^ bitwise exclusive OR

<< leftshift 

>> right shift

~ one's complement (unary)

Precedencia y orden de evaluación (The C Programming Language Kernighan & Ritchie - 2.12 Precedence and Order of Evaluation).

        Por más tipos de operadores, referirse a The C Programming Language Kernighan & Ritchie - Chapter 2.

       Control de flujo (The C Programming Language Kernighan & Ritchie - Chapter 3 Control Flow):

Condicionales: if-else-if, ? y switch.

Bucles: for, while, do {} while ().

Salto: goto, break.

4.      Repasamos el sistema binario, decimal, hexadecimal. Se hicieron conversiones en calculadora en modo programador Hex, Dec, Bin. 

5.       Se realizó el ejercicio6: Operadores de bit, parte a, del práctico 2 (solución p2_ej6_a.c).

6.       Se pide a los estudiantes que hagan la parte b. (Solución: p2_ej6_b.c).

   

Links de interés: 

- https://es.wikipedia.org/wiki/Anexo:Operadores_de_C_y_C%2B%2B