Professional Documents
Culture Documents
1 Primer lectura
table.MsoNormalTable {mso-style-name:"Tabla normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;}
INSTRUCCIONES DE CONTROL y CICLOS REPETITIVOS FLUJO DE CONTROL: Se llama flujo de control de un programa al orden en que se ejecutan las instrucciones que lo conforman. El flujo de control de los programas, es lineal, esto significa que la computadora ejecuta una a una las instrucciones que se le indican, sin alterar el orden en que se escriben. EXPRESION LGICA: Una expresin lgica en C es una sentencia que al ser evaluada, la computadora da un valor 0 si es falsa y un valor distinto de cero si es verdadera. OPERADORES DE RELACIN: Los siguientes operadores los utilizaremos para construir expresiones lgicas y establecen relaciones que pueden ser falsas o verdaderas. OPERADOR SIGNIFICADO >= Mayor o igual que <= Menor o igual que == Igual que != Diferente < Menor que > Mayor que EJEMPLO: A+B>=C*2; X= ='S'; X<>S; La expresin: z= a+b>=c*2;
Compara el valor de la suma de a y b con el doble de c, si es menor almacena en z el valor 0 si es mayor o igual almacena un valor distinto de cero. OPERADORES LGICOS: OPERADORES SIGNIFICADO && y || o ! no EJEMPLOS: Si tenemos la expresin : !(5>3) al evaluarla el resultado que da es 0. La expresin: z=!(5>3); Almacena 0 en la variable z La expresin: z=!(a+b>=c*2) Almacena 1 en la variable z si el resultado de comparar a+b con el doble de c es menor, puesto que la proposicin es falsa, al negarla da verdadera PRIORIDAD DE OPERADORES:
Teniendo los operadores ya definidos, debemos definir la prioridad nuevamente as: CATEGORA DEL OPERADOR Operadores Monarios Multiplicacin divisin y residuo Suma y sustraccin aritmtica Operadores de relacin Operadores de igualdad y o Operadores de asignacin OPERADORES ASOCIATIVA
-,++,--,!, sizeof(tipo) *, /, % +, <, <=, >, >= = = , != && || =, +=, - =, *=, /=, %=
Derecha a Izquierda Izquierda a Derecha Izquierda a derecha Izquierda a derecha Izquierda a derecha Izquierda a derecha Izquierda a derecha Izquierda a derecha
Las expresiones entre parntesis se evalan primero. Los operadores de asignacin tiene menor prioridad que todos los otros operadores. Por tanto las operaciones monarios, aritmticos, de relacin, de igualdad y lgicos se realizan antes que las de asignacin.
En C pueden operarse entre variables o nmeros:
numero1
4;
total total
= =
3 total
+ *
numero1; total;
La
variable
total
almacena
el
nmero
Su respuesta : 49 Respuesta correcta Considrese la expresin ( 7 * (10 5) % 3 ) * 4 + 9, el resultado final es ? Su respuesta : 17 Respuesta Correcta
Algunos operadores Aritmticos son ?
La instruccin si evala la expresin lgica, si sta es verdadera, ejecuta la instruccin definida en <accin A>, si es falsa se ejecuta la instruccin inmediata al else definida en <accin B>, despus de eso ejecuta la instruccin siguiente a la <accin B> y las que le siguen
Escriba un programa en lenguaje C que le permita a un estudiante calcular la nota definitiva de tres notas, que tienen el mismo valor porcentual. El programa debe imprimir la nota definitiva y un mensaje adecuado que diga 'Gano la materia', o 'Perdi la Materia', segn si la nota sea mayor igual que cero o menor que cero.
#include <stdio.h> void main() { double nota1, nota2, nota3; double definitiva; clrscr(); printf("Escriba la primera nota\n"); scanf("%lf",¬a1); printf("Escriba la segunda nota\n"); scanf("%lf",¬a2); printf("Escriba la tercera nota\n"); scanf("%lf",¬a3); definitiva=(nota1+nota2+nota3)/3; if (definitiva>=6) printf("Su nota es %f GANO",definitiva); else printf("Su nota es %f PERDIO",definitiva); getch(); }
Otra versin del programa usando la instruccin que hemos visto es: #include <iostream.h> #include <conio.h>
#define gano "Gano la Materia" #define perdio "Perdio la Materia" void main() { double nota1, nota2, nota3; double definitiva; clrscr(); cout<<"Escriba la primera nota"; cin>>nota1; cout<<"Escriba la segunda nota"; cin>>nota2; cout<<"Escriba la tercera nota"; cin>>nota3; definitiva=(nota1+nota2+nota3)/3; if (definitiva>=6) cout<<"Su nota es "<<definitiva<<gano; else cout<<"Su nota es "<<definitiva<<perdio; getch(); }
SENTENCIA COMPUESTA:
Cuando un programador, necesita que la computadora ejecute ms de una instruccin en el momento de que la expresin lgica sea verdadera o sea falsa, lo indica encerrando entre llaves { } las instrucciones que siguen al then o al else. EJEMPLO: Escriba un programa que lea tres nmeros reales a, b, c. Una vez ledos, el programa debe calcular la solucin a la ecuacin: y debe escribir las soluciones reales si existen y las soluciones complejas.
#include <iostream.h> #include <conio.h> #include <math.h> #define imagin 'i' voidmain(void) {doublea,b,c, discri, preal, x1, x2, pimag; clrscr() ; cout<<"Escribe los coeficientes ?"; cin >>a>>b>>c; discri=pow(b,2)-4*a*c; if (discri>=0) {x1=(-b+sqrt(discri))/(2*a); x2=(-b-sqrt(discri))/(2*a); cout<<"X1="<<x1; cout<<"x2="<<x2; } else { preal=-b/(2*a); pimag=sqrt(abs(discri))/(2*a); cout<<"\n x1="<<preal<<imagin<<pimag; cout<<"\n x1="<<preal<<imagin<<-pimag; } getch(); }
IF ANIDADOS :
Tendremos situaciones lgicas en las cuales despus de hacernos una pregunta se nos hace necesario hacer una nueva pregunta, en esos caso tenemos entonces que despus del then y/o else es necesario volver a tener una sentencia ifthen else decimos entonces que anidamos if.
Para resolver problemas ms complejos, nos puede interesar que dependiendo de los valores de los datos, se ejecuten unas instrucciones u otras. Las instrucciones condicionales que conocemos son ? Su respuesta : if y switch Respuesta correcta #include <stdio.h> main() { int i; int tabla1,tabla2; tabla1 = 2; tabla2 = 5; for (i=1;i<11;i++) { printf ("\n %d x %d = %d",tabla1,i,tabla1*i); printf (" %d x %d = %d",tabla2,i,tabla2*i); } } De acuerdo con el programa anterior el resultado es ? Su respuesta : muestra los nmeros del 1 al 10 Respuesta correcta if (x) if (z) printf ("1"); else printf ("2"); En el ejemplo anterior, a qu if se refiere el else?
int main () { clrscr(); for (int i=1;i<=20;i++) { cout<<i; if (i%3==0) cout<<" Es multiplo de 3" <<endl; else cout<<" No es multiplo de 3"<<endl; } getch(); return 0; }
Su respuesta : los multiplos de 3 comprendidos entre los numeros 1 y 20 Correcta Un puntero es un tipo especial de variable que contiene una direccin de memoria. Por supuesto, a partir de esa direccin de memoria puede haber cualquier tipo de objeto: un char, un int, un float, un array, una estructura, una funcin u otro puntero. El programador ser el responsable de decidir ese contenido. Los punteros se declaran igual que el resto de las variables, pero precediendo el identificador con el operador de indireccin, (*), que leeremos como "puntero a". Ejemplos: int *entero; char *carcter; struct stPunto *punto;
Los punteros siempre apuntan a un objeto de un tipo determinado, en el ejemplo, "entero" siempre apuntar a un objeto de tipo "int". Debes tener muy claro que "entero" es una variable del tipo "puntero a int", y que "*entero" NO es una variable de tipo "int". Si "entero" apunta a una variable de tipo "int", "*entero" ser el contenido de esa variable, pero no olvides que "*entero" es un operador aplicado a una variable de tipo "puntero a int", es decir "*entero" es una expresin, no una variable. Para averiguar la direccin de memoria de cualquier variable usaremos el operador de direccin (&), que leeremos como "direccin de". Como todas las variables, los punteros tambin contienen "basura" cuando son declaradas. Es costumbre dar valores iniciales nulos a los punteros que no apuntan a ningn sitio concreto: entero = NULL; caracter = NULL; NULL es una constante, que est definida como cero en varios ficheros de cabecera, como "stdio.h" o "iostream.h", y normalmente vale 0. Por ejemplo: "int *entero;" no crea un objeto de tipo "int" en memoria, slo crea una variable que puede contener una direccin de memoria. Se puede decir que existe fsicamente la variable "entero", y tambin que esta variable puede contener la direccin de un objeto de tipo "int". Cual procedimiento es el correcto. Su respuesta : int A, B; int *entero; ... B = 213; /* B vale 213 */ entero = &A; /* entero apunta a la direccin de la variable A */ *entero = 103; /* equivale a la lnea A = 103; */ B = *entero; /* equivale a B = A; */ Respuesta correcta
int v = 4; int* p = &v; Mientras que la expresin '*p' es sinnimo del elemento individual que se encuentra en la localidad apuntada por el puntero. Por lo tanto la siguiente sentencia: cout<<*p dar como resultado
Su respuesta : 4
Correcta int *q, *p; int a; q = &a; /* q apunta al contenido de a */ p = q; Su respuesta : Es una operacin de asignacin Respuesta correcta