Elementos Básicos de un Programa del C / Operadores Aritméticos
Subtitles of the Movie
En este modulo fundamental veremos los operadores aritmeticos. En el C, como en todos los lenguajes de programacion, podemos ejecutar operaciones aritmeticas dentro del lenguaje. Me refiero a la adicion, la substraccion, la multiplicacion, la division. y una quinta operacion que veremos mas adelante. Los operadores aritmeticos son los signos mas, menos, asterisco, barra diagonal y porcentaje. Estos representan respectivamente a la adicion, la substraccion, la multiplicacion, la division y el modulo. Tal vez usted no conozca la operacion del modulo, asi que la veremos mas adelante. Estos se utilizan igual que en matematicas. Regresemos al compilador y veamos algunos ejemplos. Aqui tenemos el programa de la edad del capitulo 2. Vamos a realizar una operacion aritmetica con la edad ingresada. Por ejemplo, vamos a hallar la edad de alguien si este tiene la mitad de la edad ingresada. Creamos otra variable llamada "half" mediante la sentencia "int half". Una vez ingresada la edad, asignamos un valor a "half" para indicar la mitad de la edad de esta manera: "half", el signo de igualdad y a continuacionÉ "age/2", es decir, "age" dividido por 2 para hallar la mitad de la edad. Por supuesto modificamos la funcion "printf" para desplegarÉ "A person half your age would be", el codigo "%d" y la variable "half". Veamos si el programa se compila y se ejecuta bien. No obtenemos errores y lo ejecutamos. Obtenemos "Please enter your age". Ingresamos el valor 36 y obtenemos "A person half your age would be 18". Funciona bien. Perfecto. Lo ejecutamos de nuevo e ingresamos una edad diferente. Ingresamos el valor 23. ÀCual cree usted que sea la respuesta? Podemos pensar en tres opciones diferentes. Puede ser 11, 12 u 11.5 dependiendo de la definicion del compilador del C. Veamos lo que obtenemos. 11. Tal vez usted se pregunte por que no obtenemos el valor 11.5É cuya representacion seria once y medio. El valor 11.5 es un numero decimal y no un numero entero. Recuerde que la variable "half" es de tipo "int", asi que no puedeÉ contener numeros con fracciones. Esto es extrano pero se debe a que la variable es un valor entero, asi que el resultado debe ser 11 o 12. Pero Àel valor se aproxima al valor mas cercano hacia arriba o hacia abajo? En el C en valor se aproxima hacia abajo. Puede parecer extrano pero es asi. Habra notado que he cometido un error de sitanxis en la variable "half". Voy a corregirlo. Veamos otras operaciones que podemos realizar. Veamos la substraccion. Hallemos los anos transcurridos desde que teniamos 5 anos. Creamos otra variable entera llamada "years" y le asignamos el valor de "age - 5"É para indicar los anos transcurridos desde la edad de 5 anos. Obviamente, antes de compilar y ejecutar el programaÉ debemos modificar la funcion "printf" para desplegar el ano en cuestion. Duplicamos esta linea y la modificamos con la fraseÉ "It has been", el codigo "%d" y "years since you were 5". Finalmente debemos cambiar aqui la variable "half" por la variable "years". Vamos a compilarlo para verificarlo. Compilamos bien y lo ejecutamos. ObtenemosÉ "Please enter your age". Digitamos 36É y obtenemos "It has been 31 years since you were 5". Eso es correcto. Son bastantes anos. Veamos otros ejemplos de operaciones aritmeticas en el C. He declarado las variables enteras "x", "y" y "z" y he realizado varias operaciones aritmeticasÉ como "x = 9", "y = x" mas 6 dividido por 3, "z = x" por "y" mas 1 mas 2 menos 3 por 4. Luego desplegamos las respuestas. Obviamente "x" tendra el valor 9. ÀQue cree que ocurra? Pienselo mientras compilo y ejecuto este programa. Compilamos y ejecutamos. Obviamente obtenemos "x = 9" y "y = 11". Veamos este resultado: "y = 11". À"y" es igual a 11? Tenemos 9 mas 6, es decir 15, dividido por 3. 15 dividido por 3 es supuestamente 5. ÀAlgo esta incorrecto? De hecho, nada esta incorrecto. Tal vez lo incorrecto sea nuestro entendimiento de la aritmetica. Tal vez usted no me cree. Veamos el tema de la precedencia. Tal vez usted sepa su significado aritmetico, en especial si ya ha programado o si ha utilizado programas como el Excel de Microsoft o el Lotus 1-2-3. Obtenemos el valor 11 porque la division ocurre primero. En esta linea de codigo la division ocurre antes que la adicion. ÀPor que ocurre esto? Veamoslo de esta manera. La division es mas importante que la adicion y ocurre primero. 6 dividido por 3 ocurre primero generando como resultado 2, al cual se suma 9 generando 11. Esto no ocurre de manera contraria. No sumamos primero 9 a 6 y luego dividimos el resultado por 3. Recuerde que este proceso no ocurre de manera inversa. No comenzamos al final de la linea y nos desplazamos hasta el signo de igualdad, pues tampoco funciona de esa manera. La division siempre ocurre antes que la adicion. ÀCuales son las normas de la precedencia? Veamos. Estamos hablando acerca de la precedenciaÉ la cual luce asi. He ubicado los signos de multiplicacion, division y modulo sobre los signos de adicion y substraccionÉ para indicar que son mas importantes. El termino tecnico apropiado es que estos son ejecutados primero. Cualquier multiplicacion ocurrira antes que las adiciones o substracciones. Asi mismo, la division y el modulo ocurren antes que las adiciones y las substracciones. Si tenemos una linea de codigo con operadores mezclados, las adiciones y las substracciones se evaluaran en ultimo lugar. ÀY si hay muchas multiplicaciones y divisiones en la misma linea, estas se ejecutaran al mismo tiempo o que ocurre? Esto funciona asi. Estas son ejecutadas en el orden en el cual el compilador lo crea conveniente. Esto no significa que obtendremos un numero aleatorio como resultado, pues si multiplicamos un numero por otro y lo dividimos por otro valorÉ obtendremos el mismo resultadoÉ que si dividimos y luego multiplicamos. Espero que haya entendido la precedencia. ÀY que ocurre si queremos realizar las operaciones de manera inversa? Si queremos que una adicion se ejecute antes que una multiplicacionÉ debemos utilizar unos parentesis. Veamos como hacerlo. Regresamos al programa en la linea "y = x" mas 6 divido por 3. Para que "x" mas 6 se ejecute primero, utilizamos unos parentesis de esta manera. Los ubicamos alrededor de los dos operandos del signo de adicion, es decir, rodeamos con ellos el signo de adicion. Los parentesis tienen el mayor orden de precedencia que cualquier operador del C. Las operaciones entre parentesis se evaluan antes que las demas. Aqui, "x + 6" se evalua antes que todo lo demas, asi que 9 mas 6 genera 15, y al dividirlo por 3, obtenemos 5. Veamos si funciona. Compilamos, ejecutamos y obtenemos "y = 5". Eso es correcto. Observe que no es importante donde ubicamos los espacios alrededor de los signos de adicion, substraccion, division, etc. Aqui tenemos unos espacios alrededor de ellos y no obtenemos ninguna diferencia. En este capitulo vimos que el espacio en blanco es completamente irrelevante para el compilador. Ahora veamos el operador aritmetico del modulo. ÀCual es su funcion? ÀAlguna vez lo hemos visto? Tal vez usted haya oido hablar acerca del modulo de la division. Veamos un ejemplo para comprender este aspecto. Primero tenemos un ejemplo estandar del modulo: "x = 15" modulo 6. Si movemos esta linea arriba de la funcion "printf", se desplegara este valor de "x". Veamos. ÀPuede decir cual sera la respuesta? Tenemos 15 modulo 6. Veamos lo que obtenemos. Compilamos, ejecutamos y la respuesta es 3. ÀSabe por que obtenemos el valor 3? Probablemente no. Veamos la explicacion del operador del modulo. El modulo es el residuo que queda despues de una division. Podemos verlo de esa manera. Al dividir 15 por 6, la respuesta es 2É y no tenemos fracciones, pues la aproximacion se realiza en forma descendente. Obtenemos 2 y no 2.5. Solamente el valor 2. ÀY el residuo? ÀExiste un residuo del calculo de esta division? 15 dividido por 6 es 2 y el residuo es 3. ÀEsto parece correcto? Observe el residuo 3. La variable "x" obtiene el valor restanteÉ de la operacion 15 modulo 6, que es 3. Ese es el residuo. Esto puede parecer extrano y completamente innecesario. ÀHabia visto una operacion de modulo? Veamos este ejercicio. Si son las 10 de la manana y le pregunto que hora es 5 horas mas tarde, Àcual es la respuesta? Es muy sencillo. La respuesta es 3. Pienselo un momento. 10 mas 5 nos da 3. ÀComo puede serÉ que 10 mas 5 sea 3? Por supuesto, ya que hablamos de horas, existen otras 12 horas, etc. En este punto nos referimos a la operacion aritmetica del modulo. Las horas son sumadas y el resultado es presentado como modulo 12. Vamos a utilizar un codigo para explicarlo. Tenemos 10 mas 5 modulo 12. Veamos esto con detalle. Son las 10 de la manana. Agregamos 5 horas y averiguamos que hora es. Obtenemos las 3 de la tardeÉ porque utilizamos la operacion modulo 12. Lo ejecutamos y obtenemos 3 como antes. Veamos algunos otros ejemplos. Si son las 10 de la manana, Àque hora es 12 horas despues? Obviamente, las 10 de la noche. Lo verificamos y obtenemos las 10 de la noche. Esto nos da una idea al respecto. Veamos 10 mas 35. 35 es 1 menos que 36, asi que 36 horas despues de las 10 de la manana son las 10 de la noche del siguiente dia. Si no es 36 sino 35, seran las 9 de la noche del siguiente dia. Vamos a verificarlo. Obtenemos las 9 de la noche. No se especifica si es en la noche pero obtenemos las 9 en punto. Aqui utilizamos la operacion modulo 12 para indicar las 12 en punto, pues no hay 24 horas, a.m. o p.m., etc. Cada 12 horas regresamos al 0. Esa es la operacion aritmetica del moduloÉ que puede ser muy util de vez en cuandoÉ y que hace parte del lenguaje C. Es necesario explicar su funcion. Antes de terminar este moduloÉ veamos que es posible obtener el resultado de un calculo sin utilizar ninguna variable. Vamos a hacerlo aqui. Utilizamos la funcion "printf"É y la respuesta es "%d", una barra diagonal invertida y la letra "n". ÀLa respuesta de que? Por ejemplo de 3 por 17. Intentemoslo. Compilamos, ejecutamosÉ y la respuesta es 51. Eso es correcto, pues es la respuestaÉ de 3 por 17É y no utilizamos ninguna variableÉ "x", "y" o "z". Si solo buscamos la respuesta de 3 por 17, no necesitamos ninguna variable. Quiero que observe que es posible realizar calculos dentro de una funcion "printf" si queremos. Tiene sentido hacerlo para lograr mayor claridad. Es recomendable hacerlo porque asi ahorramos un poco de memoria al no tener que declarar una variable. Obviamente, tambien ahorramos un poco de tiempo de procesamiento y de codificacion. Con esto concluimos la leccion de los operadores aritmeticos.
Tutorial Information
| Course: | C Programming (Español) |
| Author: | Mark Virtue |
| SKU: | 33759 |
| ISBN: | 1-933736-81-X |
| Release Date: | 2007-04-16 |
| Duration: | 21.5 hrs / 139 lessons |
| Captions: | Available on CD and Online University |
| Compatibility: |
Vista/XP/2000, OS X, Linux QuickTime 7, Flash 8 |
VTC Sign up & Benefits
- Unlimited Access
- 98,729 Video Tutorials (23,265 free)
- Video Available as Flash or QuickTime
- Over 1026 Courses
- $30 for One Month Access
- Multi-User Discounts Available
United States 