Partes: 1, 2, 3, 4, 5, 6

 

Capítulo II: " Lenguaje de Programación Estructurado C"

¿Por qué programación estructurada?

Si el lector recuerda, en el capítulo anterior, se hablaba de las características del lenguaje C, y en una de ellas se decía que, el Lenguaje de Programación C, permite la programación estructurada. Esto implica que, haremos uso de una técnica llamada Lógica Estructurada, y esto no es más ni menos que una de las técnicas básicas y fundamentales de la programación estructurada, su objetivo es diseñar soluciones "correctas" y confiables a los problemas, ignorando al principio consideraciones de eficiencia como la minimización del uso de memoria y el tiempo de su respuesta.

Lo que significa que, haremos uso de esa técnica para crear programas correctos; esta es una técnica que ayuda al programador (un tanto a la fuerza), a ser ordenado, al momento de programar.

Los frutos de ésta técnica se reflejan cuando, queremos darle mantenimiento al programa, es más fácil hacerlo ya que hemos programado de una manera lógica y ordenada. Al igual que al momento de corregir errores de sintaxis y lógica, esta técnica nos facilita el trabajo.

Ahora iniciemos, de una vez por todas, lo que el lector está esperando:

Sintaxis de Algunos Elementos de Un Programa en C

    1. identificadores:
    2. como su nombre lo indica, estos son los nombres, con los que identificamos las variables, constantes, funciones, vectores, etc, de nuestro programa. Para ello debemos tener presente algunas reglas:

      >pueden tener de 1 hasta un máximo de 31 caracteres

      >Debe de iniciar con una letra o subrayado

      Ejemplo:

      (Correctos)

      c2

      _c2

      ( Incorrectos)

      2c

      2 c

      >No es lo mismo una minúscula que una mayúscula, ya que c distingue de entre ellas. Ejemplo: BETA ¹ Beta ¹ beta ¹ BeTa

      >No son válidos los identificadores de palabras reservadas. En un inicio hablamos que c posee 32 palabras reservadas, entre ellas están:

      float char while

      int else return

      Estas palabras no pueden ser utilizadas para identificar variables, constantes, funciones etc

    3. Comentarios
    4. En todo programa que estemos diseñando en C (o en cualquier otro lenguaje de programación); es necesario insertar ciertos comentarios en el código, para que en posteriores modificaciones y cuando se realice el mantenimiento, podamos recordar cosas importantes ya que, en los comentarios, podemos incluir aspectos importantes del programas, explicaciones del funcionamiento de las sentencias, etc.

      El formato de los comentarios en C, es el siguiente:

    5. La Directiva #include
    6. Permite que, el pre-procesador, incluya funciones proporcionadas por el fabricante, a nuestro programa. Ejemplo:

      #include <stdio.h> /* le decimos al compilador que incluya la librería

      stdio.h */

    7. la directiva #define
    8. permite definir constantes simbólicas. Pero hasta ahora ha sido poco lo que hemos hablado acerca de las constantes, es por ello que en aprovechando, este especio; dedicaré unas cuantas líneas para aclarar ello.

      Las variables pueden cambiar de valor, durante la ejecución del programa, por eso es que se llaman variables. Y las constantes como su nombre lo indica, son valores que permanecen constantes durante toda la ejecución del programa, un ejemplo de ello, es el valor de p (pi) que equivale a 3.14159....

      En C existen diferentes tipos de variables, entre ellas tenemos:

      1. Constates Numéricas:

      Son valores numéricos, enteros o de reales (de punto flotante). Se permiten también constantes octales y hexadecimales.

      2. Constantes Simbólicas:

      las constantes simbólicas tiene un nombre (identificador), y en esto se parecen las variables. Sin embargo, no pueden cambiar de valor a lo largo de la ejecución del programa. En C, se pueden definir mediante el preprocesador.

      (Tomado del Manual "Aprenda Lenguaje ANSI C como si estuviera en Primero" Escuela superior de Ingenieros Industriales. Universidad de Navarra. Febrero de 1998).

      Ejemplo:

      Esta directiva (#define) va, inmediatamente después de los #include. Se escribe la directiva, se deja un espacio y se escribe el identificador de la constante, otro espacio y su valor.

    9. Signos de Puntuación y de Separación
    10. / ! % ^ & * () - + {} [] \ ; : <> ¿ .

    11. Todas las Instrucciones o sentencias del programa terminan con un punto y coma (;)
    12. Al momento de programar en C, esta es una regla de oro, y la causa por la cual nuestro programa puede darnos muchos errores de sintaxis, cuando se omite, al final de cada sentencia un punto y coma (;). Ya que con ello le indicamos al compilador que ha finalizado una sentencia.

      NOTA: el lector no debe confundirse, las directivas: #include, #define. Main(), no llevan punto y coma, por que no son sentencias.

      Recordemos el ejemplo 1.1, y vea que al final de cada sentencia lleva su correspondiente punto y coma:

    13. Todo Bloque de Instrucciones debe ir entre llaves
    14. Esta consideración toma mayor auge, cuando veamos las instrucciones anidadas en condiciones, ciclos, etc.

      Ejemplo:

    15. En una línea se pueden escribir más de una instrucción separada por un punto y coma

Esto es posibles, por que con el punto y coma, le estamos indicando al compilador el fin de una sentencia o instrucción.

Ejemplo:

Tipos de Datos en C

Un tipo de dato, se define como un conjunto de valores que puede tener una variables, junto con ciertas operaciones que se pueden realizar con ellas.

*TIPOS DE DATOS PREDEFINIDOS

TABLA CON LOS TIPOS DE DATOS PREDEFINIDOS EN C

>ENTEROS: numeros completos y sus negativos

Palabra reservada:

Ejemplo

Tamaño (byte)

Rango de valores

int

-850

2

-32767 a 32767

VARIANTES DE ENTEROS

short int

-10

1

-128 a 127

unsigned int

45689

2

0 a 65535

long int

588458

4

-2147483648 a 2147483647

unsigned long

20000

4

0 a 4294967295

>REALES: números con decimales o punto flotante

Palabra reservada:

Ejemplo

Tamaño (byte)

Rango de valores

float

85

4

3.4x10-38 a 3.4x1038

VARIANTES DE LOS REALES

double

0.0058

8

1.7x10-308 a 1.7x10308

long double

1.00E-07

10

3.4x10-4932 a 1.1x104932

>CARÁCTER: letras, digitos, símbolos, signos de puntuación.

Palabra reservada:

Ejemplo

Tamaño (byte)

Rango de valores

char

'O'

1

0 ......255

TABLA 2.1

Declaración de Variables

Una Variable, como su nombre lo indica, es capaz de almacenar diferentes valores durante la ejecución del programa, su valor varía. Es un lugar en la memoria el cual, posee un nombre (identificador), y un valor asociado.

La declaración de variables en C, se hace en minúsculas.

Formato:

Tipo_de_dato nombre_de_la_variable;

Ejemplos:

*Declare una variable de tipo entero y otra de tipo real, una con el nombre de "x" y otra con el identificador "y":

int x;

float y;

*Declare una variable de tipo entero llamada moon, e inicialícela con un valor de 20

int x = 20;

*Declare una variable de tipo real, llamada Pi, e inicialícela con una valor de 3.1415

float pi=3.1415;

*Declare una variable de tipo caracrter y asígnele el valor de "M"

char car = ’M’;

*Declare una variable llamada nombre, que contenga su nombre:

char nombre[7]="Manuel";

Explicación:

En el apartado anterior, se explicó, que C, no tiene el tipo de dato llamado string, o mejor conocido como cadenas de texto, pero nosotros podemos hacer uso de ellas, por medio de un arreglo, (de lo cual hablaremos con más detalle, posteriormente); pero para declarar este tipo de datos colocamos el tipo de datos, es decir la palabra reservada char luego el nombre, e inmediatamente abrimos, entre corchetes, va el número de letras, que contendrá dicha variable. Es muy importante que al momento de declarar el tamaño, sea un número mayor, al verdadero número de letras; por ejemplo, la palabra "Manuel", solo tiene 6 letras, pero debemos declararlo para 7 letras ¿Por qué?.

Veámoslo gráficamente, en la memoria, C crea un variable llammada nombre y esta posee la palabra Manuel, así:

en realidad, hay 7 espacios, pero la cuanta llega hasta 6, por que c, toma la primera posición como la posición cero, y para indicar el final de la cadena lo hace con un espacio en blanco.

Declaración de Constantes

Las constantes, como su nombre lo indica, son valores que se mantiene invariables durante la ejecución del programa.

Su formato es el siguiente:

const tipo_de_dato nombre= valor;

donde const, es una palabra reservada, para indicarle al compilador que se esta declarando una constante.

Ejemplo:

const int dia=7;

const float pi=3.14159;

const char caracter= ‘m’;

const char fecha[]="25 de diciembre";

Caso Especial Constantes Simbólicas

Las constantes simbólicas, se declaran mediante la directiva #define, como se explicó anteriormente. Funcionan de la siguiente manera, cuando C, encuentra el símbolo que representa a la constante, lo sustituye por su respectivo valor.

Ejemplo:

#define N 150

#define PI 3.1416

#define P 50

Entrada y Salida Por Consola

Entrada y Salida por consola: se refiere a las operaciones que se producen en el teclado y en la pantalla de la computadora. En C no hay palabras claves para realizar las acciones de Entrada/Salida, estas se hacen mediante el uso de las funciones de la biblioteca estándar (stadio.h).

Para utilizar las funciones de E / S debemos incluir en el programa el archivo de cabecera stdio.h, mediante la declaratoria:

#include <stdio.h>

Las Funciones de E / S más simples son getchar() que lee un carácter del teclado, espera un retorno de carro (¿ ), es decir un enter y el eco aparece. Es decir la tecla presionada.

*putchar(): Imprime un carácter en la pantalla, en la posición actual del cursor.

Algunas variaciones:

*getche(): Aparece el Eco

*getch(): No aparece el eco

estas instrucciones se encuentran en la biblioteca conio.h

Veamos un ejemplo:

Programa que espera que se presiona una tecla, la muestra en pantalla, y además muestra el carácter siguiente:

Ejemplo 2.1:

#include <stdio.h>

#include <conio.h>

main()

{

char car;

clrscr(); /*Se encarga de borrar la pantalla por eso se llama claer screen*/

car=getchar();

putchar(car+1);

getch();

return 0;

}

Ejemplo 2.2:

#include <stdio.h>

#include <conio.h>

main()

{

char x; /*Declaramos x como caracter*/

printf("Para Finalizar Presione cualquier Tecla:");

x= getchar();/*Captura y muestra el caracter presionado*/

getch();/*Espera a que se presione cualquier otra tecla para finalizar*/

return 0;

}

Entrada / Salida de Cadenas

Una Cadena, es una frase, compuesta por varias palabras. En C, podemos hacer uso de las cadenas, mediante, la sentencia:

*gets(): Lee una cadena de carácter introducido por el teclado. Se puede introducir caracteres hasta que se de un retorno de carro, (enter); el cual no es parte de la cadena; en su lugar se coloca un terminador nulo \0.

*puts(): Imprime en pantalla, el argumento guardado en la variable que se manda a impresión.

Ejemplo 2.3

Diseñe un programa en C, que lea su nombre; lo salude y mande a impresión su nombre, usando gets e y puts

#include <stdio.h>

#include <conio.h>

main()

{

char nombre[40];

puts("digite su nombre:");

gets(nombre);

puts("BIENVENIDO:");

puts(nombre);

getch();

return 0;

}

NOTA: No haré mucho énfasis en estas instrucciones, ya que más adelante, veremos las instrucciones scanf() y printf(), que son mucho más completas.

Entrada / Salida Por Consola con Formato

Las funciones gets, puts, getch, etc; son utilizadas, en una forma un poco rudimentaria, sin embargo; C posee otra serie de funciones, que son más completas, las cuales nos permiten leer e imprimir (en pantalla), datos con un formato determinado, el cual ha sido definido por el programador.

Salida Hacia Pantalla [printf()]

Se utiliza para imprimir en pantalla cadenas de texto solas, o mandar a pantalla el valor de alguna variable, o constante, o una combinación de las anteriores. Su formato es el siguiente:

Printf("cadena de control", nombre_de_variables);

En donde:

Cadena de control: contiene códigos de formato que se asocian con los tipos de datos contenidos en las variables.

Código

Formato

%d

Un entero

%i

Un entero

%c

Una caracter

%s

Una cadena

%f

Un real

%ld

Entero largo

%u

Decimal sin signo

%lf

Doble posición

%h

Entero corto

%o

Octal

%x

Hexadecimal

%e

Notación Científica

%p

Puntero

%%

Imprime Porcentaje

TABLA 2.2

Ejemplo:

Int suma=10;

Printf("La suma es %d", suma);

Explicación:

Declaramos primero la variable como entero, con un valor de 10, luego la función printf, el mensaje va entre comillas dobles, luego en el lugar que queremos que aparezca el valor, colocamos el formato de la variable, cerramos comillas, luego una coma y el nombre de la variable. Es importante recalcar, que en la posición que coloquemos el formato es donde aparecerá el valor de la variable en este caso, 10.

Ejemplo:

Char nombre[7]="Manuel";

printf("%s es en creador de este manual", nombre);

NOTA: el número de argumentos que tendrá la función printf() es indefinido, por lo que se puede transmitir cuantos datos sean necesarios.

Ejemplo:

Int x=12, y=15;

char z=’D’;

float v=10.2563;

printf("Estos son números %d %d %f; y esta es una letra %c", x,y,v,z);

También podemos hacer algunos arreglos, al formato de salida, por ejemplo, si deseamos imprimir un número real justificado a la izquierda podemos colocar:

printf("%-f", z);

para justificar colocarle signo: %+f

%20f >> Longitud numérica del campo

%.2f >>Imprime el valor con sólo dos decimales

Secuencias de Escapes

Indica que debe ejecutar algo extraordinario.

Carácter de Escape

Explicación

\n

Simula un Enter. Se utiliza para dejar una línea de por medio

\t

Tabulador horizontal. Mueve el cursor al próximo tabulador

\v

Tabulador vertical.

\a

Hace sonar la alarma del sistema

\\

Imprime un carácter de diagonal invertida

\?

Imprime el carácter del signo de interrogación

\"

Imprime una doble comilla

TABLA 2.3

Ejemplos:

1) printf("Manuel \n Antonio \n Ortez\n\n);

2) int x=15;

printf("El Valor de la variable es %d\n\n", x);

3) float x=8.5689, pi=3.1416;

printf("El valor de x es %.2f\t\n",x);

printf("\t Y el valor de pi es %.2f\n\n", pi);

Entrada Desde Teclado

Se realiza mediante la función scanf(), su formato es:

scanf("Cadena de control", Dirección y nombre de la variable);

Ejemplo 2.4

Diseñe un programa que guarde y muestre la nota del examen final de 3 alumnos

#include <stdio.h>

#include <conio.h>

main()

{

float n1, n2, n3;

char nom1[10], nom2[10], nom3[10];

printf("Introduzca el Nombre del Primer alumno:\n");

scanf("%s", nom1);

printf("Introduzca la nota de este alumno:\n");

scanf("%f", &n1);

printf("Digite el nombre del segundo alumno:\n");

scanf("%s", nom2);

printf("Su nota es:\n");

scanf("%f", &n2);

printf("Finalmente el ultimo alumno es:\n");

scanf("%s", nom3);

printf("Y su nota es:\n");

scanf("%f", &n3);

getch();

return 0;

}



Explicación:

Primero, iniciamos con las directivas del preprocesador:

#include <stdio.h>

#include <conio.h>

Con la cual le indicamos al compilador, que de su librería añada a nuestro programa las funciones estándar de entrada y salida; así como las entradas y salidas por consola (stadio.h y conio.h, respectivamente).

Luego declaramos la variables, que contendrán las notas como reales (o de punto flotante:

float n1, n2, n3;

Ya que, las notas pueden ser deciamales, por ejemplo 9.6, 8.5; etc.

Luego declaramos las variables, que contendrán las notas, caba aclarar que al momento de las declaraciones las podemos hacer en el orden que deseemos, pueden ser primeros los tipo char y luego los float, o viceversa, pero teniendo el cuidado que las variables que contendrán las nombres lleven la longitud máxima entre corchetes, para nuestro caso, 10. ( [10] ).

Posteriormente, mostramos en pantalla, un mensaje con el cual le indicamos al usuario que introduzca los datos respectivos:

printf("Introduzca el Nombre del Primer alumno:\n");

A continuación, va la función scanf, primero y entre comillas el tipo de dato que va a leer:

scanf("%s", nom1);

como puede notarse, va a leer la cadena de texto que contendrá la variable nom1. cabe aclarar, que cuando se van a leer cadenas de texto, no es necesario colocar la dirección (&), lo cual no sucede con los otros tipos de datos:

scanf("%f", &n1);

Después de haber leído los datos, espera a que se presiones cualquier tecla para finalizar la ejecución del programa.

Ejemplo 2.5

Programa que imprime dos veces, la cadena de texto que se ha introducido:

#include <stdio.h>

#include <conio.h>

main()

{

char cadena[15];

printf("Digite la cadena:\n\n");

scanf("%s", cadena);

printf("\n\t LA CADENA ES LA SIGUIENTE:\n\n");

printf("***********************************************\n");

printf("%s\n", cadena);

printf("%s\n", cadena);

printf("***********************************************\n");

getch();

return 0;

}

Es importante, que el lector, intente correr, en su máquina estos ejemplos, para que comprenda con mayor facilidad.

NOTA: Cuando la entrada, es una cadena de carácter, no es necesario el operador direccional (&). El nombre de la cadena contiene la dirección.

Ejemplo:

Char cadena[]="Manuel";

scanf(), finaliza la captación de la cadena al encontrar un espacio en blanco o fin de línea.

Ejemplo:

char cadena[15];

printf("Digite la cadena:\n\n");

scanf("%s", cadena);

Casos Especiales

*JUEGO DE INSPECCIÓN: Define Un conjunto de caracteres que puede leerse utilizando scanf().

Así:

%[ABC]s: A, B y C son los únicos caracteres que puede leer al encontrar uno diferente, finaliza con un valor nulo.

%[ A-Z ]s: También pueden ser rangos de carácter en este caso sólo acepta mayúsculas.

*JUEGO INVERSO: Aquí se declaran que caracteres NO puede tomar, la función scanf(), se utiliza el circunflejo (^), que acepta cualquiera menos...

Ejemplo:

%[^\n]s: Acepta cualquier carácter menos un salto de línea.

%[^0-9]s: Acepta cualquier carácter menos del 0 al 9.

Ejemplo:

Scanf("%[0-9]s", &edad);

Cuestionario

  1. Mencione y Explique que es la lógica estructurada:________________________________________________________________________________________________________________________________________________________________________________
  2. Para que sirven las funciones getch() y putchar():___________________________________________________________________________________________________________________________________________________________________________________
  3. Menciones las diferencias fundamentales entre las funciones de entrada y salida por consola, con las funciones de entrada y salida por consola con formato:___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  4. Escriba algunas restricciones que deben cumplir los Identificadores:______________________________________________________________________________________________________________________________________________________________________________
  5. ¿Cuál es la siferencia entre el tipo de dato %c, y el tipo de dato %s?:_________________________________________________________________________________________________________________________________________________________________________________________
  6. Para que sirve la directiva <stdio.h>:____________________________________________________________________________________________________________________________________________________________________________________
  7. ¿Y la directiva <conio.h>?__________________________________________________________________________________________________________________________________________________________________________________
  8. ¿Para que sirve a declaratoria #define?:_____________________________________________________________________________________________________________________
  9. Para que sirve el punto y coma (;) en C:____________________________________________________________________________________________________________________________
  10. En C, no existe el tipo de dato string; sin embargo, podemos hacer uso de las cadenas de texto, ¿Por qué?. Explique:_____________________________________________________________________________________________________________________

Ejercicios:

  1. Haciendo uso de las funciones gets y puts, diseñe un programa en C, que se lea el nombre del usuario y lo muestre en pantalla junto con un saludo.
  2. Diseñe un programa en C, que lea y muestre en pantalla el valor de tres variables de tipo Entero.
  3. Diseñe un programa que muestre, los diferentes tipos de datos, usados en C. Primero, debe indicársele al usuario que introduzca un valor, de un tipo dado; luego y después de haber introducido valores en todas las variables, debe imprimirse el contenido de ellas, junto con un mensaje que indique, el tipo de dato:

4. Diseñe un programa, en el cual se introduzcan el nombre y el peso y de un alumno, y luego la muestre en pantalla. El Nombre debe incluir el apellido, y en el campo del peso, solo deben incluir valores numéricos.

5. Diseñe un programe en C, en el cual después de haber introducido, una tabla de multiplicación cualquiera, imprima ésta en forma de tabla:

2x2=4

2x3=6

2x4=8

.

.

 

2x10=20

6. Realice el ejercicio 2.5, tal como se muestra, luego ejecútalo, nuevamente, pero quitándole al código las sentencias: getch() y return 0. ¿Qué observas? Realiza tus propias conclusiones de ello y de la importancia de estas dos funciones.

Capítulo III "Operadores, Expresiones y Estructuras"

Hasta ahora, prácticamente hemos visto, como el protocolo esencial, para realizar un programa en C; y algunas funciones muy importantes, como son las funciones de lectura e impresión (scanf y printf, respectivamente).

Ahora veremos, otros aspectos fundamentales, como lo son los operadores, que pueden ser: lógicos, matemáticos, relacionales, etc. Las expresiones, y las estructuras: de secuenciación, de selección y de iteración.

Operadores

Un operador, es un símbolo que indica al compilador que se lleve a cabo ciertas manipulaciones matemáticas o lógicas.

Operadores Aritméticos

Operador

Propósito

+

Suma

-

Resta

*

Multiplicación

/

División

%

Resto de la división entera

TABLA 3.1

Todos estos operadores se pueden aplicar a constantes, variables y expresiones. El resultado es el que se obtiene de aplicar la operación correspondiente entre los dos operandos. (Tomado de "Aprenda Lenguaje ANSII C, como si estuviera en primero". Pag. 25).

Los operandos sobre los que actúan los operadores aritméticos deben ser valores Numéricos, es decir datos enteros, punto flotante o de carácter (Int, float y char, respectivamente).

Una aclaración especial, merece el operador "%", que indica el resto de la división entera. Veámoslo con un ejemplo:

Si dividimos 30/3, su cociente es 10, y su residuo es 0. Si dividimos 25/3, su cociente es 8, y tiene un residuo de 1. Entonces de lo que se encarga, este operador, es de devolvernos el valor del residuo de una división. Cabe aclarar que los datos deben de ser tipo entero, y su sintaxis es la siguiente:

25%3

NOTA: Este Operador, NO puede aplicarse a los datos de tipo float.

Una Expresión, Es un conjunto de variable, constantes y otras expresiones más sencillas, relacionadas por algún tipo de operador. De las cuales hablaremos con más detalle, posteriormente.

Operadores de Relaciónales, Lógicos y Unarios

Estos Operadores, los podemos dividir, en varios tipos, entre los cuales están:

  1. OPERADORES UNARIOS: C, incluye una clase de operadores que actúan sobre un solo operador para producir un nuevo valor. Por eso el nombre de unarios, por que para poder funcionar solo necesitan de un operador.
  2. Operador

    Propósito

    -

    Menos Unario: Es el signo menos que va delante de una variable, constante o expresión.

    ++

    Operador Incremento: Hace que la variable, constante o expresión se aumente en uno.

    --

    Operador Decremento: Hace que su variable, constante o expresión disminuya en uno.

    TABLE 3.2

    Ejemplo:

    Int i=1, x=5;

    Printf("%d", ++i);

    Printf("%d", - -i);

    Estos operadores, el incremento y el decremento, pueden utilizarse de dos maneras, eso depende del orden de aparición de los mismos:

    -Si el operador precede al operando el valor del operando se modifica antes de ser utilizado.

    -Si el operador aparece después del operando, este se modifica después de ser utilizado.

    Ejemplo 3.1:

    Utilizando los operadores Unarios:

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int x=5;

    printf("\tPRIMERO OBSERVAREMOS EL RESULTADO DE ++X\n\n");

    printf("%d\n", ++x);

    printf("%d\n", ++x);

    printf("%d\n", ++x);

    printf("\tAHORA OBSERVAREMOS EL RESULTADO DE --X\n\n");

    printf("%d\n", --x);

    printf("%d\n", --x);

    printf("%d\n", --x);

    printf("\tEL RESULTADO DE X++ ES:\n\n");

    printf("%d\n", x++);

    printf("%d\n", x++);

    printf("\tY EL DE X-- ES:\n\n");

    printf("%d\n", x--);

    printf("%d\n", x--);

    getch();

    return 0;

    }

  3. OPERADORES RELACIONALES O DE COMPARACIÓN:
  4. Operador

    Significado

    <

    Menor que

    <=

    Menor o igual que

    >

    Mayor que

    >=

    Mayor o igual que

    ==

    Igual que (Para las comparaciones)

    ! =

    No igual a

    TABLA 3.3

    Estos Operadores se encuentran dentro del mismo grupo de procedencia, que es menor que la de los Operadores Unarios y aritméticos.

    La Asociatividad de éstos es de izquierda a derecha. Cabe mencionar la diferencia entre los operadores = y ==, el primero (=), se utiliza para asignaciones de valores, mientras que el otro (==), se usa para comparaciones. Ejemplo: Si x>5, entonces x==6.

    3. OPERADORES LÓGICOS: Estos son los que nos permiten unir varias comparaciones: 10>5 y 6==6. Los operadores lógicos son: AND (&&), OR (||), NOT(!).

    Operador && (AND, en castellano Y): Devuelve un 1 si se cumplen dos condiciones.

    printf( "Resultado: %i", (10==10 && 5>2 );

    Operador || (OR, en castellano O): Devuelve un 1 si se cumple una de las dos condiciones.

    Operador ! (NOT, negación): Si la condición se cumple NOT hace que no se cumpla y viceversa.

    Ver el capítulo Sentencias, sección Notas sobre las condiciones para más información. (Tomado de "Curso de C" por Gorka Urrutia).

    Operadores de Asignación

    Los Operadores de Asignación, como su nombre lo indica, se encargan de atribuirle, asignarle, confinarle, etc a una variable, el resultado de una expresión o el valor de otra variable.

    Se utilizan en forma de expresiones de asignación en los que se asigna en el valor de una expresión a un identificador. El operador de asignación más utilizado es "=" y su formato es:

    identificador = expresión;

    Donde el identificador representa por lo general una variable y una constante, una variable o una expresión más compleja.

    Si los dos operandos de la expresión de asignación son de tipo de datos diferentes el valor de la expresión de la derecha se convertirá automáticamente al tipo de identificador de la izquierda de ésta forma la expresión de asignación será del mismo tipo de datos.

    Ejemplo:

    *Un valor en coma flotante puede ser truncado, se asigna a un identificador entero.

    *Un valor de doble precisión puede ser redondeado si se asigna a un identificador de coma flotante.

    En C, están permitidas las asignaciones múltiples, así:

    Identificador1 = identificador2 = identificador3.....= identificadorn=expresión

    C, posee además los siguientes operadores de asignación:

    Operador

    Explicación

    +=

    Expresión1+=expresión2. Equivale a: expresión1=expresión1 + expresión2

    -=

    i-=1. equivale a: i=i-1

    *=

    J*=2. Equivale a: j=j*2

    /=

    K/=m, equivale a: k=k/m

    %=

    P%n. Equivale a: p=p%n

    TABLA 3.4

    Los Operadores de asignación tiene menos procedencia que el resto de los operadores y tienen asociatividad de izquierda a derecha.

    Ejemplo 3.2

    Programa que calcula el valor de la expresión X^2+X+1

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    float x, y, z;

    clrscr();

    printf("\tPROGRAMA QUE CALCULA EL VALOR DE LA ECUACION X^2+X+1\n\n");

    printf("Introduzaca el valor de x:\n");

    scanf("%f", &x);

    y=x*x;

    z=y+x+1;

    printf("**************************************\n");

    printf("**El valor de la expresi¢n es: %.2f**\n", z);

    printf("**************************************\n");

    getch();

    return 0;

    }

    Jerarquía de Operadores

    Categoría del Operador

    Operador

    1. Operadores Unarios

    -, ++, --, !

    2.Operadores Aritméticos:

    1. Multiplicación, división y Resto entero
    2. Suma y Resta

    *, /, %

    +,-

    3. Operadores Relacionales

    <, <=, >, >=

    4. Operadores de Igualdad

    ==, ! =

    5. Operadores Lógicos

    && (Y Lógico), || (NO Lógico)

    6. Operadores de Asignación

    =, +=, -=, *=, /?, %=,

    TABLA 3.5

    REGLAS DE JERARQUÍA:

    1. Se ejecuta primero el operador de más alta jerarquía
    2. Operadores que tienen igual jerarquía se evalúan de izquierda a derecha
    3. si existen expresiones encerradas entre paréntesis, estas se evalúan primero.
    4. si existen paréntesis anidados se evalúan primero los paréntesis más internos.

    EXPRESIONES

    (Tomado de "Aprenda ANSII C como si estuviera en Primero", Universidad de Navarra. 1998).

    Ya han aparecido algunos ejemplos del lenguaje C en las secciones precedentes. Una Expresión es una combinación de variables y/o constantes, y operadores. La expresión es equivalente al resultado que proporciona al aplicar sus operadores a sus operandos. Por ejemplo 1 + 5 es una expresión formada por dos operandos (1 y 5)y el operador (el +); esta expresión es equivalente al valor 6, por lo cual quiere decir que allí donde esta expresión aparece en el programa, en el momento de la ejecución es evaluada y sustituida por su resultado. Una expresión puede estar formada por otras expresiones más sencillas, y puede contener paréntesis de varios niveles agrupando distintos términos. En C, existen diferentes tipos de expresiones. El cual depende del tipo de operadores que se estén utilizando. Por ejemplo: Expresiones lógicas, aritméticas, etc

    Se debe hacer hincapié en que, si existen algunas expresiones encerradas entre paréntesis, estas se evalúan primero. Ejemplo:

    9*(8+5)

    primero sumamos 8+5, cuyo resultado es 13, y este lo multiplicamos por nueve, con lo que la expresión anterior, da cómo resultado: 117.

    Si existen expresiones en paréntesis anidadas, es decir, que uno se encuentra dentro de otros paréntesis, se evalúan los más internos. Ejemplo:

    2*((20/(12-2))+5)

    se evalúa la operación 12-2, que da como resultado 10, luego se divide 20, entre el resultado anterior, es decir 10. el resultado es 2, y a este número se le suma 5, obteniendo 7. ahora se multiplica por dos, para determinar así que la expresión anterior es igual a 14.

    Estructuras

    Estructuras Secuenciales

    Se les denomina así, por que; son estructuras en un programa, que después de ejecutar una instrucción o sentencia, continúan con la otra, hasta llegar al final del programa. Los ejemplos que hemos visto anteriormente, son ejemplos de estructuras secuenciales. Veamos otros ejemplos:

    Ejemplo 3.3

    Diseñe un programa que calcula el cuadrado y el cubo de tres números introducidos por el usuario.

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int x, x1, x2, y, y1, y2, z, z1, z2;

    clrscr();

    printf("\tPROGRAMA QUE CALCULA EL CUADRADO Y EL CUBO DE 3 NUMEROS\n\n");

    printf("Introduzaca el primer n£mero:\n");

    scanf("%d", &x);

    printf("Ahora ingrese el siguiente n£mero:\n");

    scanf("%d", &y);

    printf("Y el tercer n£mero es:\n");

    scanf("%d", &z);

    x1=x*x;

    x2=x*x*x;

    y1=y*y;

    y2=y*y*y;

    z1=z*z;

    z2=z*z*z;

    printf("*********************************\n");

    printf("**Numero****Cuadrado*****Cubo****\n");

    printf("**%d **** %d ***** %d ****\n", x, x1, x2);

    printf("**%d **** %d ***** %d ****\n", y, y1, y2);

    printf("**%d **** %d ***** %d ****\n", z, z1, z2);

    printf("*********************************\n");

    getch();

    return 0;

    }

    Ejemplo 3.4

    Una empresa necesita conocer el sueldo neto a pagar a un empleado. Teniendo como entrada el salario produzca una salida de sueldo neto. Los descuentos a aplicar son: ISSS 5%, AFP 7% y Renta 10%, estos descuentos son sobre el salario, y es sueldo neto es la diferencia entre el salario y el total de las retenciones:

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    float sueldo, afp, isss, renta, sn;

    char nombre[50];

    clrscr();

    printf("Introduzca el Nombre del empleado:\n");

    scanf("%s", nombre);

    printf("Su sueldo es:\n");

    scanf("%f", &sueldo);

    afp=sueldo*0.07;

    isss=sueldo*0.05;

    renta=sueldo*0.10;

    sn=sueldo-(afp+isss+renta);

    printf("El empleado %s\n", nombre);

    printf("Posee un sueldo neto de %.2f\n", sn);

    getch();

    return 0;

    }

    Ejemplo 3.5

    Diseñe un programa que calcule el promedio y la suma de tres números ingresados por el usuario:

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    float x, y, z, sum, prom;

    clrscr();

    printf("El Primer n£mero es:\n");

    scanf("%f", &x);

    printf("Ahora el segundo n£mero:\n");

    scanf("%f", &y);

    printf("El Ultimo numero es:\n");

    scanf("%f", &z);

    sum=x+y+z;

    prom=sum/3;

    printf("*****************************************\n");

    printf("**La suma es %.2f y el promedio es %.2f*\n", sum, prom);

    printf("*****************************************\n");

    getch();

    return 0;

    }

    Estructuras Selectivas

    Los pequeños programas que hemos diseñada hasta el momento, han sido del tipo secuencial, es decir, una sentencia se ejecuta después de otra, hasta el final del programa.

    Pero en la vida diaria muchas veces debemos elegir entre un camino y otro para llegar a nuestro destino. Lo mismo pasa en programación, al realizar alguna actividad, nuestro programa debe ser capaz de elegir uno u otro camino, a seguir dependiendo del valor de alguna condición evaluada.

    Para ello C, dispone de tres tipos de 3 tipos de estructuras selectivas, la cuales son:

    • Estructura Selectiva Simple
    • Estructura Selectiva Doble
    • Estructura Selectiva Múltiple
    • ESTRUCTURA SELECTIVA SIMPLE

    Funciona de la siguiente manera: se evalúa una condición, de ser cierta efectúa una acción, de lo contrario, continúa con la ejecución normal del programa.

    Su sintaxis es la siguiente:

    If(condición) Acción;

    O también:

    If(Condición)

    Acción;

    Donde:

    Condición: Es una expresión lógica que es evaluada por el compilador

    Acción: es la Acción o Acciones que realizará el programa de resultar cierta la condición

    NOTA: En C, no existe la sentencia "End If", como en otros lenguajes de programación para indicar que ha terminado el bloque de selección, sino que este se especifica con el punto y coma al final. Además que, después de la condición NO se escribe un punto y coma. Si son varias acciones, estas deben ir dentro de llaves {}, para indicarle al compilador que son un solo bloque de acciones que deben ejecutarse.

    Ejemplo 3.6

    En una tienda se venden artículos de primera necesidad, a los cuales se les aplica un descuento del 20%, de la compra total, si esta es igual o mayor a $50. Diseñe un programa en C, que a partir del importe total de la compra muestre lo que debe pagar el cliente.

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    float compra;

    clrscr();

    printf("Introduzca el valor de la compra:\n");

    scanf("%f", &compra);

    if(compra>=50)

    compra=compra*0.8;

    printf("El Importe de la compra es %.2f\n\n", compra);

    getch();

    return 0;

    }

    

    • ESTRUCTURA SELECTIVA DOBLE

    Esta estructura, se caracteriza por el hecho que ofrece dos caminos a seguir, dependiendo si al evaluar la condición resulta cierta o falsa. Su sintaxis es la siguiente:

    if(Condición)

    Acción 1;

    else

    Acción 2;

    Funciona, de la siguiente manera si condición, al evaluarla resulta cierta, realiza la acción 1. de lo contrario, es decir; si al evaluar la condición resulta falsa, realiza la acción 2.

    Se debe tener en cuenta la condición puede ser compuesta, es decir haciendo uso de los operadores && y || ( Y lógico y No lógico), además que cuando tenemos más de una sentencia por ejecutar ya sea del lado del cierto o del falso, estas van dentro de llaves.

    Ejemplo 3.7

    Se desea saber si un número es par o impar. Diseñe un programa en el cual el usuario, ingrese el número y el programa muestre con un mensaje, si éste es par o no.

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int num;

    printf("Ingrese el n£mero:\n");

    scanf("%d", &num);

    if(num%2==0)

    printf("ES PAR\n\n");

    else

    printf("ES IMPAR\n\n");

    getch();

    return 0;

    }

    Ejemplo 3.8

    Diseñe un programa, que dada la nota de alumno, imprima en la pantalla un comentario sobre esa nota. El criterio para los comentarios es el siguiente:

    Si nota es mayor o igual a 9 "Excelente"

    Si nota es mayor o igual a 8 "Muy Bueno"

    Si nota es mayor o igual a 7 "Bueno"

    Si nota es mayor o igual a 6 "Regular"

    Si nota es menor que 6 "Necesita Mejorar"

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    float nota;

    printf("Digite la nota, porfavor:\n");

    scanf("%f", &nota);

    if(nota >= 9.0)

    printf("EXCELENTE\n\n");

    else

    if(nota >= 8.0)

    printf("MUY BUENO\n\n");

    else

    if(nota >= 7.0)

    printf("BUENO\n\n");

    else

    if(nota >=6.0)

    printf("REGULAR\n\n");

    else

    printf("NECESITA MEJORAR\n\n");

    getch();

    return 0;

    }

    Este ejemplo, muestra que C, permite hacer anidamientos, es decir, una selección dentro de otra, ya sea del lado del cierto, o del falso o de ambos.

    El lector, puede tratar de hacer sus propias conclusiones, además de buscar otras posibles solucione para este mismo problema. Por ejemplo, ¿que pasaría si iniciamos con la condición del 6.0?. ¿Qué pasaría si el usuario digita una neta negativa? ¿Cómo podrías darle solución a este problema?. Como programadores, debemos hacernos muchas preguntas al momento de diseñar nuestros programas, ya que estos No serán usados por nosotros, sino por otras personas.

    Ejemplo 3.9

    Dada el peso, la altura y el sexo, de unos estudiantes. Determinar la cantidad de vitaminas que deben consumir estos estudiantes, en base al siguiente criterio:

    >> Si son varones, y su estatura es mayor a 1.60, y su peso es mayor o igual a 150 lb, su dosis, serán: 20% de la estatura y 80% de su peso. De lo contrario, la dosis será la siguiente: 30% de la estatura y 70% de su peso.

    >> Si son mujeres, y su estatura es mayor de a 1.50 m y su peso es mayor o igual a 130 lb, su dosis será: 25% de la estatura y 75% de su peso. De lo contrario, la dosis será: 35% de la estatura y 65% de su peso. La dosis debe ser expresada en gramos.

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    float peso, estatura, dosis;

    char sexo;

    printf("Introduzca el sexo del alumno(a)<H/M>:\n");

    scanf("%c", &sexo);

    printf("Peso:\n");

    scanf("%f", &peso);

    printf("La estatura es de:\n");

    scanf("%f", &estatura);

    if(sexo=='H' || sexo=='h')

    {

    if(estatura>1.60 && peso >=150)

    {

    dosis=(0.20*estatura)+(0.8*peso);

    printf("La dosis de este alumno ser : %.2f gramos\n\n", dosis);

    }

    else

    {

    dosis=(0.3*estatura)+(0.7*peso);

    printf("La dosis de este alumno sera %.2f gramos\n\n", dosis);

    }

    }

    else

    {

    if(estatura>1.50 && peso >=130)

    {

    dosis=(0.25*estatura)+(0.75*peso);

    printf("La dosis de esta alumna debe ser de %.2f gramos\n\n", dosis);

    }

    else

    {

    dosis=(0.35*estatura)+(0.65*peso);

    printf("La dosis de esta alumna debe ser de %.2f gramos\n\n", dosis);

    }

    }

    getch();

    return 0;

    }

    

    • SELECCIÓN MÚLTIPLE

    Como su nombre lo indica, permite seleccionar entre varios caminos para llegar al final. En este caso se pueden elegir un camino o acción a ejecutar de entre varios posibles que se debe de evaluar, llamada selector. Sintaxis:

    switch(selector)

    {

    case Etiqueta A:

    Acción A;

    break;

    case Etiqueta B:

    Acción B;

    break;

    case Etiqueta n:

    Acción n;

    break;

    default:

    Excepción;

    break;

    }

    En donde:

    Selector: Variables, expresiones simples de tipo ordinal, (enteros y caracteres –int y char-)

    Etiqueta: Tiene que ser del mismo tipo de datos de selecto. Estas deber ser constantes únicas y diferentes de otras.

    Excepción: Es opcional.

    Ejemplo 3.10

    Diseñe un programa en C, que dado un número del 1 al 3, muestre en pantalla y en letras, el mismo número:

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int n;

    clrscr();

    printf("El N£mero es:\n");

    scanf("%d", &n);

    switch(n)

    {

    case 0: puts("Cero");

    break;

    case 1: puts("Uno");

    break;

    case 2: puts("Dos");

    break;

    case 3: puts("Tres");

    break;

    default: puts("Dato No valido");

    break;

    }

    getch();

    return 0;

    }

    Cuestionario

    1. Mencione las diferencias entre las expresiones y los operadores:______________________________________________________________________________________________________________________________________
    2. Que tipo de datos son válidos para los operadores aritméticos:______________________________________________________
    3. Explique, el resultado de los operadores incremento y decremento, dependiendo de su posición:___________________________________________________________________________________________________________________________________________________________________________________________
    4. ¿Qué son y para que sirven los operadores unarios?:__________________________________________________________________________________________________________________________
    5. Explique, el funcionamiento de los operadores de asignación:________________________________________________________________________________________________________________________________________________________________________________________

    Ejercicios:

    1. Diseñe un programa que dados tres números indique cual es el mayor de ellos.
    2. Diseñe un programa que dados tres números indique cual de ellos es el menor.
    3. En un cine se exhiben, películas para mayores de edad, diseñe un programa que dada la edad, indique si la persona puede o no ver la película.
    4. En un supermercado, se realizan descuentos por las compras a partir de unas bolitas de colores. Si el cliente saca una bolita color azul, tiene un descuento del 20%, si la bolita es roja, se aplica un descuento del 30% y si saca una bolita color blanca, no se aplica ningún descuento. Diseñe un programa que a partir del importe de la compra y el color de la bolita, muestre lo que debe pagar dicho cliente.
    5. Se procesan las notas de 5, alumnos, de las cuales se desea saber cual es el promedio de esas 5 notas, y cual fue la nota mayor y menor, además de imprimir al final el nombre y la nota de cada alumno en forma de tabla.
    6. un estudiante desea saber cuál fue su promedio en matemática I, para ello dispone de la siguiente información: tiene 3 exámenes, con una ponderación del 20% cada uno y 2 laboratorios con una ponderación del 30% cada uno. Diseñe un programa que dadas las notas calcule el promedio del alumno y muestre en pantalla si el alumno esta reprobado o no (para aprobar esta materia se requiere de una nota mayor o igual a 6.00).
    7. En un estacionamiento, se cobra de la siguiente manera: los primeros 10 minutos son gratis, los siguientes 30 minutos tiene un valor de $0.30 y la hora $0.60. diseñe un programa que reciba tanto minutos como horas y muestre lo que debe cancelar el cliente. Tomando en cuenta que si es Martes y Sábado se hace un descuento del 12.56% sobre el monto total.
    8. Diseñe un programa que al introducir un dígito del 0 a 9, muestre como se lee.
    9. Diseñe un pequeña calculadora que, al digitar un código realice una operación específica: si el código es 1, la operación es la suma, si es 2, Resta. 3, multiplicación y 4 división. Si el usuario a escrito otro código inválido, mostrar un mensaje de error.
    10. Construya un programa que dado el salario de un empleado, permita aplicarle un aumento de 10% si el salario es inferior a $500, si es mayor se le aumentará un 8%. Luego debe aplicar una retención del 0.96% en concepto de Renta a ambos casos.
    11. Se desea calcular el sueldo de un trabajador, a partir de las horas trabajadas en la semana y la clase a la que pertenece: Trabajadores Clase "A", se les paga $7 por hora. Trabajadores clase "B", se paga $5 por hora. Trabajadores clase "C", se les paga $4 por hora y los de clase "D", $3.5 por hora.
    12. Un comerciante se dedica a la venta de sillas únicamente. Vende tres tipos de sillas: tipo A, tipo B y Tipo C los precios son $5.00, $7.00 y $10.00 respectivamente. Por cada cinco sillas compradas del tipo A, del tipo B o del tipo C los clientes reciben un descuento de 3%, 5% y 7%, las demás se cobran a precio normal. Diseñe un programa que imprima en forma de factura, con el nombre, precio unitario, precio total, nombre de la tienda, etc lo que debe cancelar cada cliente en concepto de la compra.

    Descubre donde está el error.

    El siguiente código, es de un programa que a partir de una nota determina si un alumno esta o no reprobado, y este puede presentar algunos errores de lógica, de sintaxis o de ejecución. ¿Puedes descubrirlos y modificarlos?

    #Include <stdio.h>

    #incluide <conio.h>

    main()

    {

    float nota;

    printf("Digite la nota:\n")

    scanf("%f", nota);

    if(nota>=6.00)

    printf("Aprobado\n\n);

    else

    printf(Reprobado\n\n);

    getch();

    return 0;

    }

    Partes: 1, 2, 3, 4, 5, 6


 Página anterior Volver al principio del trabajoPágina siguiente 
 Página anterior Volver al principio del trabajoPágina siguiente 

Comentarios


Trabajos relacionados

Ver mas trabajos de Programacion

 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.


Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.