SlideShare una empresa de Scribd logo
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
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
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
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?
17/04/17 Angel Vázquez-Patiño 5/52
Tipos básicos de datos
Gustedt,2017
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?)
17/04/17 Angel Vázquez-Patiño 7/52
Manejo de constantes
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'
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;
}
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;
}
17/04/17 Angel Vázquez-Patiño 11/52
Operadores unarios
17/04/17 Angel Vázquez-Patiño 12/52
Operadores unarios
Definición
● Requieren sólo un operando
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
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");
}
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
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/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
}
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
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);
17/04/17 Angel Vázquez-Patiño 20/52
Datos lógicos
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 (!)
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);
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");
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);
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
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
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
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
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
17/04/17 Angel Vázquez-Patiño 30/52
Caracteres
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
17/04/17 Angel Vázquez-Patiño 32/52
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);
17/04/17 Angel Vázquez-Patiño 34/52
Caracteres
Ejercicio
● Imprimir en pantalla todos los caracteres ASCII
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);
17/04/17 Angel Vázquez-Patiño 36/52
Type casting
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
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);
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);
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
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
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
17/04/17 Angel Vázquez-Patiño 43/52
Librería <math.h>
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
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>
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
17/04/17 Angel Vázquez-Patiño 47/52
Otras funciones
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);
}
17/04/17 Angel Vázquez-Patiño 49/52
Conceptos y términos importantes
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
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
/
17/04/17 Angel Vázquez-Patiño 52/52
Preguntas
Programación 1: tipos básicos de datos en C

Más contenido relacionado

PDF
03 - Entrada y salida en lenguaje C
PPS
Identificadores, variables y constantes
PPT
Perceptron Simple y Regla Aprendizaje
PPTX
Matemáticas Discretas - Unidad III: Logica matemática
DOCX
Proyecto fernando compiladores 1
PDF
Programación 1: arreglos en C
PPTX
Desigualdad de bessel igualdad de parseval
PPTX
Unidad 2 expresiones regulares
03 - Entrada y salida en lenguaje C
Identificadores, variables y constantes
Perceptron Simple y Regla Aprendizaje
Matemáticas Discretas - Unidad III: Logica matemática
Proyecto fernando compiladores 1
Programación 1: arreglos en C
Desigualdad de bessel igualdad de parseval
Unidad 2 expresiones regulares

La actualidad más candente (20)

PDF
Ejercicios resueltos de ecuaciones diferenciales
PPTX
PAQUETES EN JAVA
PDF
Tabla de-integrales
PDF
194394390 118403057-defensa-holandesa-variante-muro-de-piedra-pdf
PDF
Módulo Timer 1 del PIC16F887
PDF
Puertas logicas y sistemas combinacionales
PDF
Solucionario demidovich tomo III
PDF
Pila dinamica y pila estatica
PPTX
Métodos de programación no lineal
PDF
Prob resueltost3 mapas k
PDF
Guia programacion modular
PPTX
Estructura de datos: lista, pilas y colas
PPTX
Teorema de la serie de fourier
PDF
Pasos para la solución de un problema por computador
PDF
METODOS NUMERICOS para ingenieria -Chapra
PDF
calculo III.pdf
DOCX
ciruitos digitales
PDF
Particiones y relaciones de equivalencia.pdf
PDF
sintaxis de los lenguajes de programación
DOC
Functii, tablouri si pointeri in c si c++
Ejercicios resueltos de ecuaciones diferenciales
PAQUETES EN JAVA
Tabla de-integrales
194394390 118403057-defensa-holandesa-variante-muro-de-piedra-pdf
Módulo Timer 1 del PIC16F887
Puertas logicas y sistemas combinacionales
Solucionario demidovich tomo III
Pila dinamica y pila estatica
Métodos de programación no lineal
Prob resueltost3 mapas k
Guia programacion modular
Estructura de datos: lista, pilas y colas
Teorema de la serie de fourier
Pasos para la solución de un problema por computador
METODOS NUMERICOS para ingenieria -Chapra
calculo III.pdf
ciruitos digitales
Particiones y relaciones de equivalencia.pdf
sintaxis de los lenguajes de programación
Functii, tablouri si pointeri in c si c++
Publicidad

Similar a Programación 1: tipos básicos de datos en C (20)

PDF
Programación 1: introducción a C
PPT
Tipos de Datos en Java, String Entero Decimales
PPT
1.Tipos de Datos.ppt
PPT
1.Tipos de Datos.ppt
PPT
1.Tipos de Datos.ppt
PPT
1.tipos de datos
PPT
Tipos de Datos y su tipologia en contexto.ppt
PDF
Diapositivs~Elementos_basicos_C.pdf
PDF
Elementos basicos cpp_oto2014
PDF
Elementosbasicosc
PDF
Elementos basicos c
PDF
Estructura de un programa
PPT
1.Tipos de Datos.ppt
DOC
Guía no. 1 grado 7
DOC
Guía no. 1 grado 7
DOC
Guía no. 1 grado 7
Programación 1: introducción a C
Tipos de Datos en Java, String Entero Decimales
1.Tipos de Datos.ppt
1.Tipos de Datos.ppt
1.Tipos de Datos.ppt
1.tipos de datos
Tipos de Datos y su tipologia en contexto.ppt
Diapositivs~Elementos_basicos_C.pdf
Elementos basicos cpp_oto2014
Elementosbasicosc
Elementos basicos c
Estructura de un programa
1.Tipos de Datos.ppt
Guía no. 1 grado 7
Guía no. 1 grado 7
Guía no. 1 grado 7
Publicidad

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

PDF
Capítulo 1: funciones, límites y continuidad
PDF
Python aplicado en las Ciencias Ambientales
PDF
Introducción al lenguaje de programación Python
PDF
Integral definida e integración
PDF
Valores extremos y comportamiento de las funciones y de sus gráficas
PDF
Derivada y diferenciación
PDF
Causality and climate networks approaches for evaluating climate models, trac...
PDF
Diferencias finitas y Ecuación de calor
PPTX
Puntos ordinarios y singularidades de una EDO lineal
PPTX
La ecuación diferencial de Legendre
PPTX
Solución en series de y' = f(x,y)
PPTX
Métodos de resolución de EDOs mediante series
PPTX
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
PDF
Problemas que originan sistemas de ecuaciones
PPTX
Linealización de sistemas de primer orden
PPTX
Sistemas de EDOs
PDF
Método de la secante
PDF
Iteraciones de punto fijo
PDF
Objetos y variables en Python
PDF
Definiciones de Error
Capítulo 1: funciones, límites y continuidad
Python aplicado en las Ciencias Ambientales
Introducción al lenguaje de programación Python
Integral definida e integración
Valores extremos y comportamiento de las funciones y de sus gráficas
Derivada y diferenciación
Causality and climate networks approaches for evaluating climate models, trac...
Diferencias finitas y Ecuación de calor
Puntos ordinarios y singularidades de una EDO lineal
La ecuación diferencial de Legendre
Solución en series de y' = f(x,y)
Métodos de resolución de EDOs mediante series
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Problemas que originan sistemas de ecuaciones
Linealización de sistemas de primer orden
Sistemas de EDOs
Método de la secante
Iteraciones de punto fijo
Objetos y variables en Python
Definiciones de Error

Último (20)

PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PDF
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
PPT
Sustancias Peligrosas de empresas para su correcto manejo
PDF
S15 Protección de redes electricas 2025-1_removed.pdf
PPTX
GEOLOGIA, principios , fundamentos y conceptos
PPTX
Manual ISO9001_2015_IATF_16949_2016.pptx
PDF
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
PPT
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PDF
Módulo-de Alcance-proyectos - Definición.pdf
PDF
1132-2018 espectrofotometro uv visible.pdf
PDF
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
PDF
Primera formulación de cargos de la SEC en contra del CEN
PDF
MATRIZ IDENTIFICACIÓN EVALUACION CONTROL PRL.pdf
PDF
Oficio SEC 293416 Comision Investigadora
PDF
Electricidad-Estatica-Peligros-Prevencion.pdf
PDF
SUBDIVISIÓN URBANA PUEDE ENFRENTAR SERVIDUMBRE DE PASO.pdf
PDF
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
PPTX
Cortinas-en-Presas-de-Gravedad-Vertedoras-y-No-Vertedoras.pptx
PDF
Durabilidad del concreto en zonas costeras
clase MICROCONTROLADORES ago-dic 2019.pptx
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
Sustancias Peligrosas de empresas para su correcto manejo
S15 Protección de redes electricas 2025-1_removed.pdf
GEOLOGIA, principios , fundamentos y conceptos
Manual ISO9001_2015_IATF_16949_2016.pptx
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
357161027-seguridad-industrial-diapositivas-ppt.ppt
Módulo-de Alcance-proyectos - Definición.pdf
1132-2018 espectrofotometro uv visible.pdf
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
Primera formulación de cargos de la SEC en contra del CEN
MATRIZ IDENTIFICACIÓN EVALUACION CONTROL PRL.pdf
Oficio SEC 293416 Comision Investigadora
Electricidad-Estatica-Peligros-Prevencion.pdf
SUBDIVISIÓN URBANA PUEDE ENFRENTAR SERVIDUMBRE DE PASO.pdf
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
Cortinas-en-Presas-de-Gravedad-Vertedoras-y-No-Vertedoras.pptx
Durabilidad del concreto en zonas costeras

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

  • 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. 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. 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. 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. 17/04/17 Angel Vázquez-Patiño 5/52 Tipos básicos de datos Gustedt,2017
  • 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. 17/04/17 Angel Vázquez-Patiño 7/52 Manejo de constantes
  • 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. 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. 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. 17/04/17 Angel Vázquez-Patiño 11/52 Operadores unarios
  • 12. 17/04/17 Angel Vázquez-Patiño 12/52 Operadores unarios Definición ● Requieren sólo un operando
  • 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. 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. 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. 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/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. 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. 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. 17/04/17 Angel Vázquez-Patiño 20/52 Datos lógicos
  • 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. 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. 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. 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. 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. 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. 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. 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. 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
  • 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
  • 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. 17/04/17 Angel Vázquez-Patiño 34/52 Caracteres Ejercicio ● Imprimir en pantalla todos los caracteres ASCII
  • 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. 17/04/17 Angel Vázquez-Patiño 36/52 Type casting
  • 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. 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. 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. 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. 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. 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. 17/04/17 Angel Vázquez-Patiño 43/52 Librería <math.h>
  • 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. 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. 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. 17/04/17 Angel Vázquez-Patiño 47/52 Otras funciones
  • 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. 17/04/17 Angel Vázquez-Patiño 49/52 Conceptos y términos importantes
  • 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. 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 /