Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Programación 1: tipos básicos de datos en C

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Cargando en…3
×

Eche un vistazo a continuación

1 de 53 Anuncio

Más Contenido Relacionado

Presentaciones para usted (20)

Anuncio

Más de Angel Vázquez Patiño (20)

Más reciente (20)

Anuncio

Programación 1: tipos básicos de datos en C

  1. 1. Programación 3 Tipos básicos de datos en C Angel Vázquez-Patiño angel.vazquezp@ucuenca.edu.ec Departamento de Ciencias de la Computación Universidad de Cuenca 17 de abril de 2017
  2. 2. 17/04/17 Angel Vázquez-Patiño 2/52 Objetivos 1. Conocer los tipos básicos de datos en C 2. Conocer cómo se manejan constantes en C 3. Conocer los principales operadores en C 4. Usar funciones/librerías predefinidas de C
  3. 3. 17/04/17 Angel Vázquez-Patiño 3/52 Contenido Tipos básicos de datos Manejo de constantes Operadores unarios Prefix y postfix Datos lógicos Caracteres Librería <math.h> Otras funciones
  4. 4. 17/04/17 Angel Vázquez-Patiño 4/52 Tipos básicos de datos Statically-typed ● Todas las variables deben primero ser declaradas antes de ser usadas. Se debe especificar el tipo de la variable y el nombre: int miVariable = 1; ● El tipo de dato de una variable determina el valor que esta puede contener, además indica las operaciones que se pueden hacer con/en esta ¿Cómo se debe nombrar una variable?
  5. 5. 17/04/17 Angel Vázquez-Patiño 5/52 Tipos básicos de datos Gustedt,2017
  6. 6. 17/04/17 Angel Vázquez-Patiño 6/52 Tipos básicos de datos Eficiencia ● Los datos enteros ocupan menos memoria que los datos reales ● Las operaciones entre datos enteros suelen ser mucho más rápidas (¿Y con los CPUs actuales?)
  7. 7. 17/04/17 Angel Vázquez-Patiño 7/52 Manejo de constantes
  8. 8. 17/04/17 Angel Vázquez-Patiño 8/52 Manejo de constantes Constante ● Variable que mantiene un valor inmutable a lo largo de toda la vida del programa Definición #define NOMBRE valor #define PI 3.14 #define TAMANIO 100 #define CARACTER 'u'
  9. 9. 17/04/17 Angel Vázquez-Patiño 9/52 Manejo de constantes //Inclusión de cabeceras #include <stdio.h> //Definición de constantes. No se termina con ; #define CONSTANTE1 16 #define CONSTANTE2 20 void main() { //Declaración de variables int variable1=123, variable2=456; char caracter1='a'; float f; }
  10. 10. 17/04/17 Angel Vázquez-Patiño 10/52 Manejo de constantes #include <stdio.h> #define D_SEM 7 #define D_LAB 5 int main() { printf("Días de la semana: %dn", D_SEM); printf("Días laborables: %dn", D_LAB); return 0; }
  11. 11. 17/04/17 Angel Vázquez-Patiño 11/52 Operadores unarios
  12. 12. 17/04/17 Angel Vázquez-Patiño 12/52 Operadores unarios Definición ● Requieren sólo un operando
  13. 13. 17/04/17 Angel Vázquez-Patiño 13/52 Operadores unarios Operador Descripción + operador unario más; indica un valor positivo (números son positivos sin el operador) - operador unario menos; niega una expresión ++ operador de incremento; incrementa un valor en 1 -- operador de decremento; decrementa un valor en 1 ! operador lógico de complemento; invierte un valor booleano
  14. 14. 17/04/17 Angel Vázquez-Patiño 14/52 Operadores unarios #include <stdio.h> int main() { int r = +1; // r contiene 1 printf("%dn", r); r--; // r contiene 0 printf("%dn", r); r++; //r contiene 1 printf("%dn", r); r = -r; // r contiene -1 printf("%dn", r); _Bool exitoso = 0; // falso printf("%dn", exitoso); printf(exitoso?"Truen":"Falsen"); // true printf("%dn", !exitoso); printf(!exitoso?"True":"False"); }
  15. 15. 17/04/17 Angel Vázquez-Patiño 15/52 Operadores unarios Prefix y postfix ● Los operadores de incremento y decremento pueden ser aplicados antes (prefix) o después (postfix) del operando. Ambas versiones tienen el mismo resultado final; sin embargo, por ejemplo, ++res es evaluado con el valor incrementado y res++ con el valor original
  16. 16. 17/04/17 Angel Vázquez-Patiño 16/52 Operadores unarios ¡Importante! Si se usa el incremento o decremento en una operación simple, no importa la versión usada. Pero, puede haber una diferencia significativa en una expresión más larga
  17. 17. 17/04/17 Angel Vázquez-Patiño 17/52 Operadores unarios #include <stdio.h> int main() { int i = 3; i++; printf("%dn", i); // 4 ++i; printf("%dn", i); // 5 printf("%dn", ++i); // 6 printf("%dn", i++); // 6 printf("%dn", i); // 7 }
  18. 18. 17/04/17 Angel Vázquez-Patiño 18/52 Precedencia de operadores Operador Operación Orden de evaluación op++ op-- posfijos Primero ++op --op +op -op ! unarios Segundo * Multiplicación Tercero. Si hay varios operadores de este tipo, son evaluados de izq a der / División % Residuo + Adición Cuarto. Si hay varios operadores de este tipo, son evaluados de izq a der - Sustracción < > <= >= Relacional Quinto = Asignación Evaluado al final
  19. 19. 17/04/17 Angel Vázquez-Patiño 19/52 Operadores unarios 1) int x = -3 + 2 * 4 – 12 / 6 + 5 ; 2) int y = -3 + 2 * (14 – 2) / 6 + 5 ; 3) int i = 10; int n = i++ % 5; printf(n); n = ++i % 5; printf(n); 4) X = 7 % 2; 5) X = 8 % 3; 6) int x=5; y=5; int z; z=x++; 7) z=++y; 8) int i = 1; printf(i); printf(++i); printf(i); 9) i = 1; printf(i); printf(i++); printf(i);
  20. 20. 17/04/17 Angel Vázquez-Patiño 20/52 Datos lógicos
  21. 21. 17/04/17 Angel Vázquez-Patiño 21/52 Datos lógicos ● True o False ● 1 o 0 Operadores lógicos ● And (&&) ● Or (||) ● Not (!)
  22. 22. 17/04/17 Angel Vázquez-Patiño 22/52 Datos lógicos Declaración, asignación e impresión _Bool boolVar; boolVar = 1; // boolVar: True printf("boolVar: %dn", boolVar); // boolVar: False printf("boolVar: %dn", !boolVar);
  23. 23. 17/04/17 Angel Vázquez-Patiño 23/52 Datos lógicos Operador ternario _Bool boolVar; boolVar = 1; printf(boolVar ? "True":"False"); printf(!boolVar ? "True":"False");
  24. 24. 17/04/17 Angel Vázquez-Patiño 24/52 Datos lógicos Operadores de comparación ● Evaluación de datos ● Devuelve valor lógico _Bool boolVar; boolVar = 2<3; printf("¿2<3?: %dn", boolVar); printf("¿4=5?: %dn", 4==5);
  25. 25. 17/04/17 Angel Vázquez-Patiño 25/52 Datos lógicos Operador algebraico Operador C Condición C de ejemplo Operadores de igualdad = == x == y ≠ != x != y Operadores relacionales > > x > y < < x < y ≥ >= x >= y ≤ <= x <= y
  26. 26. 17/04/17 Angel Vázquez-Patiño 26/52 Datos lógicos Operador Asociatividad Tipo * / % Izquierda a derecha Multiplicativo + - Izquierda a derecha Aditivo < <= > >= Izquierda a derecha Relacional == != Izquierda a derecha Igualdad = Derecha a izquierda Asignación Precedencia y asociatividad de los operadores
  27. 27. 17/04/17 Angel Vázquez-Patiño 27/52 Datos lógicos Operador Asociatividad ( ) not Derecha and Izquierda xor Izquierda or Izquierda Precedencia y asociatividad de los operadores
  28. 28. 17/04/17 Angel Vázquez-Patiño 28/52 Datos lógicos Ejemplo ● not p se evalúa p y después se aplica la negación ● p and q se evalúa p y después se evalúa p and q ● not p or q se evalúa (not p) or q ya que el operador not tiene más prioridad que el operador or
  29. 29. 17/04/17 Angel Vázquez-Patiño 29/52 Datos lógicos Con a=5, b=e, c=-12 1) a > 3 2) b < c 3) b != c 4) a == 3 5) a * b == -30 6) c/b < a 7) (a+b==8) && (a-b==2) 8) a > 3 && b > 3 && c < 3 1) True 2) False 3) True 4) False 5) False 6) True 7) True 8) False
  30. 30. 17/04/17 Angel Vázquez-Patiño 30/52 Caracteres
  31. 31. 17/04/17 Angel Vázquez-Patiño 31/52 Caracteres American Standard Code for Information Interchange ● Un tipo de dato caracter contiene sólo un elemento como su valor. Elementos establecidos y normalizados por el estándar llamado ASCII, el cual establece cuáles son los elementos y el orden de precedencia entre los mismos. Los elementos son las letras (mayúsculas y minúsculas), números (0-9) y símbolos especiales (e.g., !, @, #, $, %) disponibles en el teclado de la computadora y algunos otros elementos gráficos. El código ASCII no es único, pero es el más utilizado internacionalmente
  32. 32. 17/04/17 Angel Vázquez-Patiño 32/52
  33. 33. 17/04/17 Angel Vázquez-Patiño 33/52 Caracteres Declaración, asignación e impresión char ch; ch = 'a'; printf("Caracter:t %cn", ch); printf("ASCII:tt %dn", ch); printf("ASCII + 2:t %dn", ch+2); printf("Caracter:t %cn", ch+2);
  34. 34. 17/04/17 Angel Vázquez-Patiño 34/52 Caracteres Ejercicio ● Imprimir en pantalla todos los caracteres ASCII
  35. 35. 17/04/17 Angel Vázquez-Patiño 35/52 Caracteres Lectura de un carácter desde teclado char ch1, ch2; printf("Caracter 1: "); scanf("%c", &ch1); printf("Caracter: %cn", ch1); printf("Caracter 2: "); ch2 = getchar(); printf("Caracter: %cn", ch2);
  36. 36. 17/04/17 Angel Vázquez-Patiño 36/52 Type casting
  37. 37. 17/04/17 Angel Vázquez-Patiño 37/52 Type casting Type casting ● Una forma de convertir un tipo de dato a otro Cast operator (type_name) expression
  38. 38. 17/04/17 Angel Vázquez-Patiño 38/52 Type casting Cast operator int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Media: %fn", mean);
  39. 39. 17/04/17 Angel Vázquez-Patiño 39/52 Type casting Promoción entera ● Proceso mediante el cual los valores enteros “más pequeños” que int o unsigned int son convertidos a int o unsigned int int i = 17; char c = 'c'; // valor ascii: 99 int sum = i + c; printf("Suma: %dn", sum);
  40. 40. 17/04/17 Angel Vázquez-Patiño 40/52 Type casting Conversiones aritméticas usuales ● Son implícitamente realizadas para convertir sus valores a un tipo común ● El compilador primero realiza la promoción entera ● Si los operandos aún tienen diferentes tipos, son convertidos al tipo que aparece en lo más alto de la siguiente jerarquía
  41. 41. 17/04/17 Angel Vázquez-Patiño 41/52 Type casting ● Las conversiones aritméticas usuales no son realizadas por los operadores de asignación ni para los operadores lógicos && y || long double double float unsigned long long long long unsigned long long unsigned int int
  42. 42. 17/04/17 Angel Vázquez-Patiño 42/52 Type casting int i = 17; char c = 'c'; // valor ascii: 99 float sum = i + c; printf("Suma: %fn", sum); ● C primero convierte c a int pero como el valor final es doble, se aplica la conversión aritmética usual y el compilador convierte i y c en float y los añade obteniendo un resultado float
  43. 43. 17/04/17 Angel Vázquez-Patiño 43/52 Librería <math.h>
  44. 44. 17/04/17 Angel Vázquez-Patiño 44/52 Librería <math.h> ● double acos(double x): arco coseno de x en radianes ● double asin(double x) ● double atan(double x) ● double atan2(double y, double x): arco tangente en radianes de y/x basado en los signos de ambos valores para determinar el cuadrante correcto ● double exp(double x): ex
  45. 45. 17/04/17 Angel Vázquez-Patiño 45/52 Librería <math.h> ● double log(double x): logaritmo natural (base e) de x ● double log10(double x) ● double pow(double x, double y) ● double sqrt(double x) ● double ceil(double x): el valor entero más pequeño mayor o igual a x ● double fabs(double x): ABS. Para enteros: int abs(int x), <stdlib.h>
  46. 46. 17/04/17 Angel Vázquez-Patiño 46/52 Librería <math.h> ● double floor(double x): el valor más grande menor o igual a x ● double fmod(double x, double y): residuo de x/y ● double round(double x) ● float roundf(float x) ● long double roundl(long double x) ● Constante pi: M_PI ● Más: https://goo.gl/eEnRiY
  47. 47. 17/04/17 Angel Vázquez-Patiño 47/52 Otras funciones
  48. 48. 17/04/17 Angel Vázquez-Patiño 48/52 Otras funciones Números aleatorios #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); printf("Aleatorio[0,6]: %dn", rand()%7); }
  49. 49. 17/04/17 Angel Vázquez-Patiño 49/52 Conceptos y términos importantes
  50. 50. 17/04/17 Angel Vázquez-Patiño 50/52 Conceptos y términos importantes ● Librerías ● Type casting ● Tipos básicos ● Operadores ● Reglas de precedencia
  51. 51. 17/04/17 Angel Vázquez-Patiño 51/52 Referencia ● Gustedt, J., 2017. Modern C. France. ● C Programming Operators, https://goo.gl/7wHPax ● C - Type Casting, https://goo.gl/VOh2pV ● Más funciones: http://www.tutorialspoint.com/c_standard_library /
  52. 52. 17/04/17 Angel Vázquez-Patiño 52/52 Preguntas

×