0% encontró este documento útil (0 votos)
15 vistas33 páginas

Fundamentos de Operadores en C

Cargado por

fgyhr5rn4c
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas33 páginas

Fundamentos de Operadores en C

Cargado por

fgyhr5rn4c
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

FUNDAMENTOS DE INFORMÁTICA

1º Grado en Ingeniería en Tecnologías Industriales

Tema 4: Operadores
CONTENIDO
1 Introducción

2 Operadores de asignación

3 Operadores aritméticos

4 Operadores monarios

5 Operadores relacionales

6 Operadores lógicos

7 Funciones de biblioteca
1

Introducción
Introducción

• OPERADOR: Entidades que actúan sobre los datos para modificarlos.

1. Operador de asignación
2. Operadores aritméticos
3. Operadores monarios
4. Operadores relacionales
5. Operadores lógicos

• OPERANDOS: Datos sobre los que actúan los operadores.


- Variables, constantes,...

• EXPRESIONES: Distintas formas de agrupar Operandos y Operadores.

4
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 4
2

Operador de Asignación
Operador de asignación
• Operador asignación simple (=)
• El formato de este operador es:
variable = expresión;
• Cuando la expresión y la variable sean de distinto tipo, el valor de la expresión
de la derecha se convertirá automáticamente al tipo del identificador o variable
de la izquierda
• Ejemplos:
a = 3; /* Guarda el valor 3 en la variable a */
x = y; /* Guarda el valor que tenga la variable y en la variable x */
suma = a + b; /* Guarda la suma de los valores de a y b en la variable suma */
area = longitud * anchura;
/*Guarda la multiplicación de los valores de las variables longitud
y anchura en la variable area */

Variable Un valor final

Asigna los resultados de la derecha a la variable de la izquierda


Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 6
Operador de asignación
• Suponiendo i y j variables enteras y j=5

Expresión Valor almacenado en i


i=j 5
i=j/2 2
i=2*j/2 5
i = 2 * (j / 2) 4

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 7
Operador de asignación. EJEMPLOS
#include<stdio.h>
int main(void){
int i_int,j_int, res1_int, res3_int;
float i_float, j_float, res2_float, res4_float;

i_int = 5;
j_int = 2;
i_float = 5.0;
j_float = 2.0;
Salida
res1_int = i_int/j_int;
printf("Valor de res1: %d", res1_int); Valor de res1: 2

res2_float = i_int/j_int;
printf("\n\nValor de res2: %f", res2_float); Valor de res2: 2.000000

res3_int = i_float/j_int;
printf("\n\nValor de res3: %d", res3_int); Valor de res3: 2

res4_float = i_int/j_float;
printf("\n\nValor de res4: %f\n", res4_float); Valor de res4: 2.500000
return 0;
} Time elapsed: [Link]
Press any key to continue
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 8
Operadores de asignación
• Operador de asignación múltiple:
identificador1 = identificador2 = ...... = expresion;
• Se asigna de derecha a izquierda
• Equivalente a:
identificador2 = expresión;
identificador1 = identificador2;
• Mejor no utilizarlo
• Operadores de asignación compuestos:
+=, -=, *=, /=, %=
Por ejemplo:
Operador asignación y suma Operador asignación compuesto
identificador = identificador + expresion2; identificador += expresion2;

i=i+1 i += 1

Si plantea alguna duda, mejor no utilizarlo.


Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 9
3

Operadores aritméticos
Operadores aritméticos
• Realizan operaciones con resultado numérico
• Sus operandos deben ser numéricos
• Tipos de operadores:
• Operador suma (+)
• Operador resta (-)
• Operador multiplicación (*)
• Operador división (/)
• Divisor distinto de cero
• Si dividendo y divisor son:
• Enteros: El resultado será un entero truncado.
• Float: El resultado será un float.
• Entero y float: El resultado será un float.
• Operador resto de división entera (%)
• Ambos operadores deben ser enteros y el divisor no nulo
• Se conserva en el resultado el signo del primer operando
• Se utiliza mucho para saber si un número es múltiplo de otro (resto 0)
• El lenguaje C no dispone de operador para realizar potencias de otros lenguajes (**)
• Utilizar la función pow() de la biblioteca math.h, pero no para el cuadrado.
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 11
Operadores aritméticos

 Si a=10 b=3 (enteros)  Si a=12.5 b=2.0 (reales)

expresión resultado expresión resultado


a+b 13 a+b 14.5
a-b 7 a-b 10.5
a*b 30 a*b 25.0
a/b 3 a/b 6.25
a%b 1 a%b TIPOS INCORRECTOS (deben ser int)

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 12
Operadores aritméticos
 Si a=‘P’ b=‘T’ expresión resultado
ASCII ‘P’=80 a 80
a+b 164
ASCII ‘T’=84
a+b+5 169
ASCII ‘5’=53
a + b + ’5’ 217

#include<stdio.h>
int main(void){
Salida
char letra1, letra2, letra3;
letra1 = P valor ASCII = 80
letra1 = 'P'; letra2 = T valor ASCII = 84
letra2 = 'T'; letra3 = 5 valor ASCII = 53
letra3 = '5'; Time elapsed: [Link]
printf("letra1 = %c valor ASCII = %d\n", letra1, letra1); Press any key to continue
printf("letra2 = %c valor ASCII = %d\n", letra2, letra2);
printf("letra3 = %c valor ASCII = %d\n", letra3, letra3);
return 0;
}

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 13
Operadores aritméticos
• Conversión sobre operandos que difieran en tipo:
El resultado final se expresará con la mayor precisión posible y de
forma consistente con los tipos de datos de los operandos.
• Regla general (cuando ninguno de los operandos sea unsigned):
Se promueve el tipo “inferior” al tipo “superior”, obteniendo un
resultado que es de tipo “superior”.
• Si cualquier operando es de tipo long double
Se convierte el otro operando a long double
• Si no: Si cualquier operando es de tipo double
Se convierte el otro operando a double
• Si no: Si cualquier operando es de tipo float
Se convierte el otro operando a float
• Si no: Si cualquier operando es de tipo long int
Se convierte el otro operando a long int
• Si no:
Se convierte char y short a int
(aunque sean los dos del mismo tipo char o short)
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 14
Operadores aritméticos
Si i = 7 (entera)
f = 5.5 (coma flotante double)
c = ‘w’ (char)

expresión resultado tipo

i+f 12.5 doble precisión

i+c 126 entero

i + c – ‘0’ 78 entero

(i + c) – (2 * f / 5) 123.8 doble precisión

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 15
Operadores aritméticos
• Conversión de tipos o "cast":
• Permite transformar el tipo de datos resultado de una expresión a un tipo
de datos específico
• No modifica el tipo de datos original sino su valor dentro de la expresión.
(tipo de datos) expresión
• Al aplicar la conversión de tipos se modifica el valor dentro de la expresión
en la que se encuentra, no se modifica el tipo de datos original.
• Si i=7 (entero) f=8.5 (float)
(i+f) % 4 : EXPRESIÓN NO VÁLIDAAmbos operando deben ser enteros
( (int) (i+f) ) % 4 : EXPRESIÓN VÁLIDA utilizando la conversión
• Orden de precedencia en los operadores aritméticos:
Los operadores con mayor precedencia se evalúan antes que los de menor
precedencia.

Grupo 1 de precedencia Grupo 2 de precedencia


* / % + -

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 16
4

Operadores monarios
Operadores monarios
• Características:
• Con un único operando
• Mayor precedencia que los operadores aritméticos
• Tipos de operadores monarios:
• Operador signo (-)
• Cambia de signo el operando
• Operador incremento (++)
• Incrementa en uno el operando
• Puede ir delante o detrás del operando
El incremento se realiza antes o después de utilizar el operando con otro fin
• Operador decremento (--)
• Decrementa en uno el operando
• Puede ir delante o detrás del operando
El incremento se realiza antes o después de utilizar el operando con otro fin
• Operador sizeof ()
• Devuelve el tamaño de su operando en bytes
Operando puede ser una variable o un tipo de dato
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 18
Operadores monarios
• Si i=1
Dado: La salida por pantalla es:
printf (“i = %d\n”, i); i=1
printf (“i = %d\n”, ++i); i=2 OJO i vale 3 después
printf (“i = %d\n”, i++); i=2 de mostrar el contenido
printf(““i = %d\n”, i); i = 3; por pantalla
i++; i = 4;
printf(““i = %d\n”, i); i = 5;
++i;
printf(““i = %d\n”, i);

• Si i=1
Dado: La salida por pantalla es:
printf (“i = %d\n”, i); i=1
printf (“i = %d\n”, i++); i=1
printf (“i = %d\n”, i); i=2

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 19
Operadores monarios
• Si se ha declarado:
int i; char c;
float x; double d;
• La salida del siguiente programa:
printf (“Entero: %d\n”, sizeof(i));
printf (“\nReal simple precisión %d\n”, sizeof(x));
printf (“\nReal Doble precision: %d\n” sizeof(d));
printf (“\nCaracter: %d\n”, sizeof (c));
• Sería:
Entero: 4
Real simple precisión : 4
Real doble precisión: 8
Caracter: 1

• Se podría haber utilizado también el tipo del dato:


printf (“Entero: %d\n”, sizeof (int));
printf (“Real simple precisión %d\n”, sizeof (float));
printf (“Real Doble precisión: %d\n” sizeof (double));
printf (“Carácter: %d\n”, sizeof (char));

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 20
5

Operadores relacionales
Operadores relacionales
• Características:
• El resultado siempre es un valor lógico: VERDADERO (>=1) o FALSO (0).
• Los operadores se utilizan para formar expresiones lógicas
• Los operadores relacionales tienen menor precedencia que los
operadores monarios y aritméticos
• Los operadores relacionales tienen mayor precedencia que los
operadores de igualdad
• Asociatividad de izquierda a derecha dentro de una expresión

Operador Función Operador Función


Relacional de Igualdad
< menor que == igual que
<= menor o igual que != no igual que
> mayor que
>= mayor o igual que
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 22
Operadores relacionales

• Si i=1, j=2, k=3 variables enteras

expresión interpretación Valor


i<j cierto 1 ó !=0
(i+j) >= k cierto 1 ó !=0
(j+k)>(i+5) falso 0
k!=3 falso 0

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 23
6

Operadores lógicos
Operadores lógicos
• Características:
• Actúan sobre operandos que son expresiones lógicas
• Permiten combinar expresiones lógicas sencillas para generar
expresiones lógicas más complejas
Operador Significado
– Operadores lógicos de dos && y
operandos:
|| o
&& AND lógico
|| OR lógico ! Negación
– Operadores lógicos de un TABLAS DE VERDAD
solo operando (monarios) p q p && q p || q !p
! Negación Falso Falso Falso Falso Cierto
Falso Cierto Falso Cierto Cierto
Cualquier valor no nulo se
considera cierto. Cierto Falso Falso Cierto Falso
Cierto Cierto Cierto Cierto Falso

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 25
Operadores lógicos
• Si i=7 (entero) f=5.5 (float) y c=‘w’ (char) (ASCII 119)

expresión interpretación Valor


(i >= 6) && (c == ‘w’) cierto 1
(i >= 6) || (c == 119) cierto 1
(f < 11) && (i > 100) falso 0
(c != ‘p’) || ((i+f) <= 10) cierto 1
(i >= 6) || (c == 65) cierto 1

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 26
Tabla de precedencias
Consejo: Utilizar paréntesis siempre y así no hay dudas

Categoría Operadores
Monarios -, ++, --, !, sizeof(), (tipo) + Prioritarios
Multiplicación, división y *, /, %
resto aritméticos

suma y resta aritméticas +, -


operadores relacionales <, <=, >, >=
operadores de igualdad ==, !=
AND lógico &&
OR lógico ||
- Prioritarios
operadores de asignación =, +=, -=, *=, /=, %=
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 27
7

Funciones de biblioteca
Funciones de biblioteca

• Realizan operaciones y cálculos de uso frecuente


• Las funciones de biblioteca no son parte del lenguaje C, pero las incluyen
todos los compiladores
• Están agrupadas en archivos de biblioteca separados, como por ejemplo:
• Entrada/salida (stdio.h)
• Funciones de uso matemático (math.h)
• Funciones de gestión de cadenas (string.h)
• Deben incluirse dentro del programa con la directiva
# include <stdio.h>
# include <math.h>
……

Fundamentos de Informática Tema 4: Operadores


ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 29
Funciones de biblioteca
Función Tipo de dato de Propósito
retorno
abs(i) int Devuelve el valor absoluto de i
cos(d) double Devuelve el coseno de d
cosh(d) double Devuelve el coseno hiperbólico de d
exp(d) double Eleva e a la potencia d
fabs(d) double Devuelve el valor absoluto de d
getchar() int Introducir un carácter desde el dispositivo de entrada
log(d) double Devuelve el logaritmo natural de d
pow(d1,d2) double Devuelve d1 elevado a la potencia d2
printf(....) int Manda datos al dispositivo de salida estándar
putchar(c) int Manda un carácter al dispositivo de salida estándar
rand() int Devuelve un entero positivo aleatorio
sin(d) double Devuelve el seno de d
sqrt(d) double Devuelve la raíz cuadrada de d
srand(u) void Inicializa el generador de números aleatorios
scanf(....) int Introduce datos del dispositivo de entrada estándar
tan(d) double Devuelve la tangente de d
toascii(c) int Convierte el valor del argumento a ASCII
tolower(c) int Convierte una letra a minúscula
toupper(c) int Convierte una letra a mayúscula
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 30
Ejercicio 1
/*
... Este programa calcula el cociente y el resto de una división entera
*/
// Directivas del precompilador
#include <stdio.h>

// Programa principal
int main (void){
int numerador;
int denominador;
int cociente;
int resto;

printf (“\nIntroduzca un numero entero para el numerador: ");


scanf ("%d", &numerador);
printf (“\nIntroduza otro numero entero para el denominador: ");
scanf ("%d", &denominador);
cociente = numerador/denominador;
resto = numerador%denominador;

printf ("%d / %d = %d, resto %d", numerador, denominador, cociente, resto);


return 0;
}
31
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 31
Ejercicio 2
/*
... Este programa pasa una temperatura Celsius a Reamur, Fahrenheit y Kelvin
*/
// Directivas del precompilador
#include <stdio.h>
// Programa principal
int main (void)
{
float celsius;
float reamur;
float fahrenheit;
float kelvin;
printf (“\n**** INICIO PROGRAMA CONVERSION DE TEMPERATURAS ****");
printf ("\n\nIntroduzca una temperatura en la escala Celsius (centigrada). ");
scanf ("%f", &celsius);
reamur = 0.8 * celsius;
fahrenheit = ( 1.8 * celsius ) + 32;
kelvin = celsius + 273;
printf ("\nEl valor de temperatura en la escala Reamur es...%.2f",reamur);
printf ("\nEl valor de temperatura en la escala Fahrenheit es...%.2f",fahrenheit);
printf ("\nEl valor de temperatura en la escala Kelvin es...%.2f",kelvin);
return 0;
} 32
Fundamentos de Informática Tema 4: Operadores
ICAI – 1º Grado en Ingeniería en Tecnologías Industriales 32
Escuela Técnica Superior de Ingeniería ICAI
Alberto Aguilera 25
28015 Madrid
Tel +34 91 542 28 00
Fax + 34 91 542 31 76
[Link]

[Link]

También podría gustarte