Introduccion a C Parte II

43

description

Segunda parte de la introducción al lenguaje C. Diapositivas muy buenas para entender un poco el lenguaje y empezar a desarrollar sus propios programas.

Transcript of Introduccion a C Parte II

  • Operadores y expresiones en C++Operadores aritmticosOperadores de incremento y decrementoOperadores relacionalesOperadores lgicosEstructuras de flujo de controlSecuencialesCondicionalesRepetitivasFunciones

  • Una expresin es una sucesin de operandos y operadores debidamente relacionados que especifican un clculo, ejemplo:Los programas en C++ constan de datos, sentencias de programas (if, while, ) y expresiones. Otro tipo de operador es el unitario que acta sobre un nico valor. Como por ejemplo el valor de -10 .

  • Los operadores aritmticos sirven para realizar operaciones aritmticas bsicas.

    OperadorTipos enteros Tipos realesEjemplo+SumaSumax + y-RestaRestab c *MultiplicacinMultiplicaciny * z/Divisin entera: cocienteDivisin en coma flotanteb / 10%Divisin entera: restoNo permitidaa % 5

  • Al evaluar una expresin construida en C++, hay que considerar el orden de prioridad de los operadores.

    El orden de prioridad es el orden en que la computadora ejecuta los operadores aritmticos, que se encuentran en una sola lnea de instruccin.El cuadro anterior indica que tiene mayor prioridad los operadores *, / y %, en relacin a los operadores + y -.

    Orden de Prioridad Operadores 1*, /, %2+, -

  • Los operadores que tienen mayor prioridad son los que se ejecutan primero.Es importante resaltar que los parntesis se pueden usar para cambiar el orden usual de evaluacin de una expresin.

    En ausencia de los parntesis, los operadores aritmticos contiguos que tienen la misma prioridad, se ejecutan de izquierda a derecha.

  • Cul es el resultado de la siguiente expresin: 10 + (8 - 4) * (10 * (12 + 6) / 6)10 + (8 - 4) * (10 * 18 / 6) 10 + 4 * (10 * 18 / 6)10 + 4 * (180 / 6)10 + 4 * 3010 + 120130

  • SmboloUsoDescripcinSentencia no abreviada=a = b Asigna el valor de b a aa = b*=a *= b Multiplica a por b y asigna el resultado a la variable aa = a * b/=a /= b Divide a entre b y asigna el resultado a la variable aa = a / b%=a %= b Fija en a el resto de a/ba = a % b+=a += b Suma b y a y asigna el resultado a la variable aa = a + b-=a -= b Resta b de a y asigna el resultado a la variable aa = a - b

  • El lenguaje C++ incorpora los operadores de incremento ++ y decremento --

    Estos operadores unitarios suman o restan 1 (uno), respectivamente, al valor de una variable.

    Tienen la propiedad de que pueden utilizarse como sufijo o prefijo. El resultado de la expresin puede ser distinto dependiendo del contexto que se maneje.

  • IncrementoDecremento++n--nn += 1n -= 1n = n +1n = n -1

  • Si los operadores ++ -- estn de sufijos, la asignacin se efecta en primer lugar y el incremento o decremento a continuacin.Si los operadores ++ -- estn de prefijos, la operacin de incremento o decremento se efecta antes de la operacin de asignacin.

  • Ejemplo del operador de incrementoCul es el valor de a y de b?

  • Son aquellos operadores que comprueban una relacin entre dos operandos.Se usan normalmente en sentencias de seleccin (if) y de iteracin (while, do-while y for), para construir condiciones simples.Cuando se utilizan los operadores relacionales en una expresin, la evaluacin del operador produce un cero (0), o un uno (1). El cero (0) lo devuelve para una condicin falsa y el uno (1) lo devuelve para una condicin verdadera.Ejemplo: a = 7 > 3, la variable a toma el valor de 1.

  • OperadorSignificadoUsoEjemplo==Igual aa == b'A' == ' C' falso!=No igual a a != b2 != 4 verdadero>Mayor quea > b7 > 9 falso=Mayor o igual quea >= b'A' >= 'a' falso

  • Los operadores lgicos relacionan expresiones lgicas, dando como salida a su vez nuevas expresiones lgicas, que al ser evaluados pueden devolver un valor verdadero (cualquier valor distinto de 0), o (un valor falso (0))El operador ! tiene prioridad mas alta que &&, que a su vez tiene mayor prioridad que el ||. El operador ! se evala de derecha a izquierda Al evaluar una expresin que contiene operadores lgicos contiguos de igual prioridad, pero sin parntesis que permitan cambiar el orden de ejecucin, se cumple, que ambos operadores && y || se evalan de izquierda a derecha

    OperadorOperacin lgicaEjemploNegacin(!, not)! operandonot operando! (x >= y) not (x >= y) Y lgica(&&, and)operando1 && operando 2operando1 and operando 2m < n && i > j m < n and i > jO lgica(||, or)operando1 || operando 2operando1 or operando 2a = 10 || n != 5 a = 10 or n != 5

  • Los operadores aritmticos tienen prioridad sobre los operadores relacionales, y los operadores relacionales tienen prioridad sobre los operadores lgicos, excepto los operadores ! (negacin lgica) y ,+ (menos y mas unitario) que tienen prioridad sobre todos los dems.

  • Las estructuras bsicas son:

    SecuencialesCondicionalesRepetitivas

  • La ejecucin comienza con la primera sentencia y luego se ejecutan las dems, una tras otra, hasta llegar al final del bloque. El bloque de sentencias se define por el carcter llave de apertura ( { ) para marcar el inicio del mismo, y el carcter llave de cierre ( } ) para marcar el final, como se muestra a continuacin: { sentencia1; sentencia2; sentencian; }

  • La sentencia if permite decidir, a partir del resultado de evaluar una expresin lgica, si se ejecuta o no una sentencia o un bloque de sentencias, segn sea el caso.

    Ejemplo:

    if (num1 % num2 == 0) cout

  • Formato 2Este formato permite ejecutar una sentencia o un bloque de sentencias (segn sea el caso) cuando se evala una expresin lgica, ya sea que el resultado sea verdadero o falso.

  • Ejemplo Formato 2

  • Formato 3Este formato muestra como se puede utilizar la sentencia if para implementar decisiones que impliquen varias alternativas.

  • Ejemplo Formato 3

  • La sentencia switch es una sentencia de C++ que se utiliza para seleccionar una alternativa entre varias disponibles y tiene el siguiente formato:switch (expresion){ case etiqueta1 : sentencia1; ::: break; case etiqueta2 : sentencia2; ::: break; ::: case etiquetaN : sentencian; ::: break; default : sentenciad; :::}

  • En el siguiente ejemplo se evala el dato que contiene edo_civil y dependiendo de su valor, se guarda un mensaje como una cadena de caracteres.

  • La estructura repetitiva permite que una o varias sentencias se ejecuten un nmero determinado de veces. Tambin conocidas como bucles, ciclos o lazos.La sentencia o grupo de sentencias que se repiten se llaman cuerpo del bucle.Cada repeticin del cuerpo del bucle se llama iteracin del bucle.En C++ se dispone de las sentencias: while, do .. while y for, para construir los bucles o estructuras repetitivas.

  • Un bucle while tiene una condicin del bucle (expresin lgica) que controla la secuencia de repeticin. La ejecucin de la(s) sentencia(s) se repite mientras la condicin del bucle permanece verdadera y termina cuando es falsa.

    Sintaxis:while (condicin){ sentencia 1; sentencia 2; ::: sentencia n;}Primero se chequea la condicin y luego se ejecuta sentencia(s)Ciclo Pre test (0..n veces) while (condicin) sentencia;

  • Ejemplo de un bucle o estructura repetitiva, que permite mostrar por pantalla los nmeros enteros del 1 al 100.

  • Ejemplo que lee varias notas (no se saben cuentas) las acumula y cuenta dentro del bucle. Usa un valor centinela (-1) como ltimo dato para salirse del ciclo y por ltimo se calcula e imprime el promedio de notas.

  • Es el usuario el que tiene la potestad de continuar o no con el bucle, respondiendo a una pregunta que se le hace, relacionada con el control del mismo. A continuacin se ilustra esta tcnica con el ejemplo anterior.

  • La sentencia do-while se utiliza para especificar un bucle condicional que se ejecuta al menos una vez. Si la condicin es verdadera, entonces se repite la ejecucin de la(s) sentencia(s), este proceso contina hasta que la condicin sea falsa.

    Sintaxis:do sentencia;while (condicin)Primero se ejecuta sentencia(s) y luego se chequea la condicinCiclo Post test(1..n veces)do{ sentencia 1; sentencia 2; ::: sentencia n;}while (condicin)

  • Si conocemos exactamente la cantidad de veces que necesitamos repetir un conjunto de sentencias, entonces podemos usar un bucle for. La sentencia for es un mtodo para ejecutar un bloque de sentencias un nmero fijo de veces.Sintaxis:

    for (inicializacion; condicion iteracin; incremento) { conjunto de sentencias }

  • Ejemplo, donde se suman los 10 primeros nmeros enteros y se imprime el resultado obtenido.

  • Una funcin contiene una o ms sentencias que realizan una tarea especfica.Pueden retornar o no un valor y ser llamadas desde cualquier parte de un programa.La funcin tiene un nombre, y cuando el control de la ejecucin del programa consigue este nombre, inmediatamente es ejecutada, y se dice que la funcin fue invocada o llamada. Una vez que termina la ejecucin de la funcin (finaliz con su tarea), el control de ejecucin es devuelto al punto desde el cual la funcin fue llamada.

  • Las funciones pueden tener parmetros (son datos del exterior que la funcin necesita para poder realizar su tarea). Estos parmetros se suministran a la funcin cuando esta es invocada.En la programacin orientada a objetos, las funciones se utilizan para definir los mtodos de las clases.

  • tipo_de_retorno: tipo del valor devuelto por la funcin, puede ser de un tipo predefinido del C++, de un tipo definido por el usuario, o de tipo void que indica que no retorna ningn valor.nombre_funcin: cualquier identificador vlido.tipo param1, tipo param2 ... tipo paramn: tipos de valores que se le deben suministrar a la funcin para que haga su trabajo; estos valores se conocen como parmetros. Algunas funciones no los requieren. Una funcin no puede ser invocada (llamada) si no ha sido declarada previamente. La declaracin de una funcin, llamada tambin prototipo de la funcin tiene el siguiente formato:

  • Los parmetros de una funcin pueden ser por valor y por referencia, o puede no tener parmetros.

    Parmetros por valor (copia del dato): En C++ el paso por valor significa, que cuando el control pasa a la funcin, los valores de los parmetros en la llamada, se copian en los parmetros formales o ficticios de la funcin. Si en las instrucciones que contiene la funcin, se cambia el valor de un parmetro que fue pasado por valor, el cambio solo se refleja en la funcin y no tiene efecto fuera de esta.

  • Parmetros por referencia (dato original): Cuando se necesita que un parmetro pasado a la funcin, sea modificado por alguna de las instrucciones que esta contiene y su valor sea devuelto al punto donde fue invocada la funcin, se debe pasar el parmetro por referencia. Para declarar un parmetro como paso por referencia, el smbolo & debe preceder al nombre del parmetro.

  • La definicin de una funcin le indica al compilador como sta trabaja. Incluye el encabezado y el cuerpo de la funcin. El encabezado es igual al prototipo de la funcin, pero sin el punto y coma. El cuerpo describe lo que hace la funcin y va encerrado entre llaves. La definicin de una funcin tiene el siguiente formato:Si una funcin tiene un tipo de retorno, sta lo devuelve utilizando la sentencia return que normalmente aparece al final.Una funcin puede tener ms de una sentencia return.

  • A continuacin se muestra la definicin de la funcin LeerNombrePersona()

  • Las funciones para poder ser ejecutadas han de ser llamadas o invocadas. Una funcin se invoca por su nombre, y se le debe suministrar valores a cada uno de los parmetros incluidos en su definicin (si los tiene).

    Una funcin que es llamada, recibe el control del programa y comienza a ejecutarse desde el principio (primera instruccin) y cuando termina (se alcanza una sentencia return o la llave de cierre ( } )) el control del programa vuelve y retorna al punto desde el cual la funcin fue llamada.

  • A continuacin se muestra como invocar la funcin LeerNombrePersona definida anteriormente.

    *******************************************