Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
Programación 1
¡Bienvenidos a nuestro Blog! Espero puedan disfrutarlo y aprender. Este será un contacto que podrá superar los límites de tiempo de las horas de clase: aprovéchenlo para construir algo nuevo.
04 de Abril, 2015    LENGUAJE C

05- Expresiones y sentencias

Expresiones y sentencias



Obs:
Un token o también llamado componente léxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programación. Ejemplos de tokens podrían ser palabras clave (if, else, while, int, ...), identificadores, números, signos, o un operador de varios caracteres, (por ejemplo, :=).

Construcción de expresiones

Literales y variables son expresiones primarias:

1.7 // Literal real de tipo double

sum // Variable

-Los literales se evalúan a sí mismos.

-Las variables se evalúan a su valor.


Los operadores nos permiten combinar expresiones primarias y

otras expresiones formadas con operadores:

1 + 2 + 3*1.2 + (4 +8)/3.0

Los operadores se caracterizan por:

-El número de operandos (unarios, binarios o ternarios).

-El tipo de sus operandos (p.ej. numéricos o booleanos).

-El tipo del valor que generan como resultado

Número de operandos

-Operadores unarios



Sentencias de asignación

Las sentencias de asignación constituyen el ingrediente básico en la

construcción de programas con lenguajes imperativos.


Al ejecutar una sentencia de asignación:

1.Se evalúa la expresión que aparece a la derecha del operador de

asignación (=).

2.El valor que se obtiene como resultado de evaluar la expresión

se almacena en la variable que aparece a la izquierda del

operador de asignación (=).

Restricción:

El tipo del valor que se obtiene como resultado de evaluar la expresión ha de ser compatible con el tipo de la variable.

Ejemplos

x = x + 1;

int miVariable=20;// Declaración con inicialización

otraVariable=miVariable;// Sentencia de asignación


NOTA IMPORTANTE:

Una sentencia de asignación no es una igualdad matemática.


Efectos colaterales

Al evaluar una expresión, algunos operadores provocan efectos colaterales (cambios en el estado del programa; es decir, cambios en el valor de alguna de las variables del programa).



El uso de operadores de incremento y decremento reduce el tamaño de las expresiones pero las hace más difíciles de interpretar. Es mejor evitar su uso en expresiones que modifican múltiples variables o usan varias veces una misma variable.


Operadores combinados de asignación (op=)


C define 10 operadores que combinan el operador de asignación con

otros operadores (aritméticos y a nivel de bits):


La forma general de los operadores combinados de asignación es

Variable op= expresión;

que pasa a ser

variable = variable op (expresión);



OJO:

Las expresiones con y sin operadores combinados de asignación no son siempre equivalentes.

Ejemplo

V [i++]+= 2; y v[i++]=v[i++]+2; no son equivalentes.


Conversión de tipos

En determinadas ocasiones, nos interesa convertir el tipo de un dato en otro tipo para poder operar con él.

Ejemplo

Convertir un número entero en un número real para poder realizar divisiones

en coma flotante


C permite realizar conversiones entre datos de tipo numérico (enteros y reales), así como trabajar con caracteres como si fuesen números enteros:

-La conversión de un tipo con menos bits a un tipo con más bits es automática (vg. de short a long, de float a double), ya que el tipo mayor puede almacenarcualquier valor representable con el tipo menor (además de valores que “no caben”en el tipo menor).

-La conversión de un tipo con más bits a un tipo con menos bits serealizar de forma explícita con “castings”. Como se pueden perder datos en la conversión, un buen compilador de C nos avisa de posibles conversiones erróneas (warnings)


Castings

Para realizar una conversión explícita de tipo (un “casting”) basta con poner el nombre del tipo deseado entre paréntesis antes del valor que se desea convertir:


Algunas conversiones de interés

De números en coma flotante a números enteros

Al convertir de número en coma flotante a entero, el número se trunca (redondeo a cero).

En la biblioteca math.h existen funciones que nos permiten realizar el redondeo de otras formas:

floor(x), ceil(x)

El redondeo al que estamos acostumbrados tendremos que implementarlo nosotros:

int i = x+0.5;


Conversión entre caracteres y números enteros

Como cada carácter tiene asociado un código ASCII, los caracteres pueden interpretarse como números enteros

int i;

char c;



Resumen de conversión de tipos

Conversiones implícitas

Long double > double > float > unsigned long > long > unsigned short > short > char

Conversiones explícitas (castings)

(tipo) expresión




Evaluación de expresiones

- La precedencia de los operadores determina el orden deevaluación de una expresión (el orden en que se realizan las operaciones):

3*4+2 es equivalente a (3*4)+2

porque el operador * es de mayor precedencia que el operador +

- Cuando en una expresión aparecen dos operadores con el mismo nivel de precedencia, la asociatividad de los operadores determina el orden de evaluación.

a –b + c –d es equivalente a ((a –b) + c) –d

porque los operadores aritméticos son asociativos de izquierda a derecha

a = b += c = 5 es equivalente a a = (b += (c = 5))

porque los operadores de asignación son asociativos de derecha a izquierda -

La precedencia y la asociatividad determinan el orden de los operadores, pero no especifican el orden en que se evalúan los operandos de un operador binario (un operador con dos operandos):

En C, los operandos se evalúan de izquierda a derecha:

el operando de la izquierda se evalúa primero.

Si los operandos no tienen efectos colaterales (esto es, no cambian el valor de una variable), el orden de evaluación de los operandos es irrelevante.

NOTA:

Siempre es recomendable el uso de paréntesis.

Los paréntesis nos permiten especificar el orden de evaluación de una expresión, además de hacer su interpretación más fácil.


Palabras claves , ,
publicado por mariof2005 a las 05:15 · Sin comentarios  ·  Recomendar
 
Más sobre este tema ·  Participar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
SOBRE MÍ
FOTO

Héctor Mario Freschinaldi

Mail: enviotp@gmail.com
En AS.: PROG1 2016(su nombre y apellido)

En un mundo donde los cambios se suceden vertiginosamente, incluso los tecnológicos, es menester asimilar las nuevas tecnologías para su aplicación inmediata y su proyección a futuro.

» Ver perfil

CALENDARIO
Ver mes anterior Septiembre 2017 Ver mes siguiente
DOLUMAMIJUVISA
12
3456789
10111213141516
17181920212223
24252627282930
TÓPICOS
» COMO SE EVALUA (2)
» COMUNICADOS (16)
» EVALUACIONES (3)
» Información Tecnológica (91)
» LENGUAJE C (18)
» PROGRAMA (2)
» TEORIA (10)
» Trabajos prácticos (8)
SECCIONES
» Inicio
ENLACES
» ¿Hay seguridad en lo que ponés en la WEB?
» ¡Te estoy espìando! (y colaborás conmigo)
» Los peligros de la WEB
» Otra de Facebook
» Historias del CHAT
» 1984/George Orwell
» Revistas de Informática, Tecnica y Nuevas Tecnolog
MÁS LEÍDOS
» 07 Elementos léxicos del lenguaje de programación C
» 1. Algoritmos.
» 10 aplicaciones útiles para llevar a todos lados 10 en un pendrive
» 03- Datos y tipos de datos
» EE UU recurre a una gran conspiración para minar la privacidad en Internet
» McAfee reveló un masivo pero silencioso ataque informático
» Por qué el jefe de seguridad tiene razón
» Seguridad en el aire
» Software gratis: los programas que no deben faltar en la PC
» TEORIA EN PDF
NUBE DE TAGS  [?]
AL MARGEN
¡Bienvenidos!
Este será un canal de comunicación entre nosotros.
Tendrá diferentes instancias dinamizadoras, y utilidades para trabajar los diferentes trabajos prácticos en diversas modalidades.
BUSCADOR
Blog   Web
SE COMENTA...
» Seguridad en el aire
2 Comentarios: uk vpn, uk vpn
FULLServices Network | Crear blog | Privacidad