leng prog c

19
Realizado por: Ing. Jorge Ernesto Solórzano Villanueva Estructura general de un programa en c++ Cuando realizamos un programa podemos dividir el código en bloques como se muestra a continuación: Bibliotecas (libraries) Es lo primero que escribimos en nuestro programa (sin contar los posibles comentarios) y su sintaxis es la siguiente: #include <nombre_biblioteca.h> Entre las más comunes se encuentran: #include <stdio.h> #include <conio.h> #include <stdlib.h> Para saber qué bibliotecas agregar podemos compilar nuestro programa y el error que nos indica que hace falta declarar alguna biblioteca o librería que contenga las instrucciones que estamos utilizando es: “function should have a prototype” Lo que hacemos entonces es abrir la ayuda de c y en el índice de ésta buscar la instrucción indicada en el error, y en la información de la ayuda de la instrucción en la parte posterior veremos la biblioteca que la contiene y que deberemos agregar. Variables globales Una vez que terminamos de agregar las bibliotecas procedemos a declarar variables globales en caso de que las haya. Una variable global será aquella que será válida y reconocida por todas las funciones de nuestro programa. En caso de que no utilicemos aún ninguna función además de main, no hay diferencia si declaramos nuestras variables como globales o como locales. Para declarar una variable especificamos el tipo de dato que contendrá seguido de su nombre: int x; char letra; float res; Página 1 de 19

Upload: irvingg-kennedy-mcfly

Post on 28-Jun-2015

107 views

Category:

Technology


4 download

DESCRIPTION

Lenguaje de Programacion C y C++.Funciones

TRANSCRIPT

Page 1: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

Estructura general de un programa en c++

Cuando realizamos un programa podemos dividir el código en bloques como se muestra a continuación:

Bibliotecas (libraries)

Es lo primero que escribimos en nuestro programa (sin contar los posibles comentarios) y su sintaxis es la siguiente:

#include <nombre_biblioteca.h>

Entre las más comunes se encuentran:

#include <stdio.h>#include <conio.h>#include <stdlib.h>

Para saber qué bibliotecas agregar podemos compilar nuestro programa y el error que nos indica que hace falta declarar alguna biblioteca o librería que contenga las instrucciones que estamos utilizando es:

“function should have a prototype”

Lo que hacemos entonces es abrir la ayuda de c y en el índice de ésta buscar la instrucción indicada en el error, y en la información de la ayuda de la instrucción en la parte posterior veremos la biblioteca que la contiene y que deberemos agregar.

Variables globales

Una vez que terminamos de agregar las bibliotecas procedemos a declarar variables globales en caso de que las haya. Una variable global será aquella que será válida y reconocida por todas las funciones de nuestro programa. En caso de que no utilicemos aún ninguna función además de main, no hay diferencia si declaramos nuestras variables como globales o como locales. Para declarar una variable especificamos el tipo de dato que contendrá seguido de su nombre:

int x;char letra;float res;

Con int declaramos una variable del tipo entero (números enteros decimales con los que podemos hacer operaciones matemáticas), con char declaramos un caracter (letras, caracteres alfanuméricos) y con float declaramos números con punto flotante o punto decimal.

Podemos declarar más de una variable del mismo tipo en la misma línea separando las variables con una coma:

int x, y, z;char letra, opción, c;float res, temporal, a;

Página 1 de 14

Page 2: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

También podemos asignar un valor inicial a nuestra variable. En caso de que dicho valor se mantenga a lo largo de la ejecución de todo el programa, ésta será una constante:

int x=12, z;char letra = ‘q’;float temporal = 9.9;

Como vemos al manejar valores del tipo char, los mismos deberán encontrarse entre el caracter de comilla simple o de lo contrario el programa creerá que son variables y no valores, es decir, se creerá que q es una variable en lugar de ser la letra q.

Ya sea que definamos variables globales o no, enseguida declararemos las funciones a utilizar, si es que las utilizamos.

El formato para declarar funciones es:

Tipo_de_dato_a_regresar nombre_función (tipo_dato1, tipo_dato2, …);

Tipo_de_dato_a_regresar será el dato que regresará la función. Si al final de su ejecución la función no regresa ningún valor se indica con la palabra reservada void.

Tipo_dato1, tipo_dato2 etc. son los tipos de dato que necesitará la función para realizar su cometido. Si la función no requiere ningún dato para trabajar, entonces se utiliza nuevamente la palabra reservada void (vacío).

Podemos declarar tantas funciones como sea necesario, o bien no declarar ninguna y trabajar únicamente con una función, la función principal o main.

Cuando solo trabajamos con la función main y en programas sencillos, dicha función no regresará ningún valor ni necesita otros valores para funcionar, por lo que a continuación declaramos nuestra función principal:

Void main (void)

{

}

Todo lo que se encuentre entre llaves será el código que se ejecutará en el orden en el que esté escrito, línea a línea y siguiendo una estructura de control que podemos modificar como veremos más adelante.

A continuación veremos algunas instrucciones básicas:

clrscr

clrscr es una función de limpieza de pantalla, fácilmente reconocible por su significado en inglés clearscreen. Su sintaxis es la siguiente:

clrscr();

Página 2 de 14

Page 3: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

en el momento en el que se ejecute como es de esperarse la pantalla será borrada y el cursor regresará a la posición original, la parte superior izquierda de la pantalla, es decir, las coordenadas 0,0.

printf

La sintaxis básica de la instrucción printf se muestra a continuación:

printf (“Escriba su texto aqui”);

Como vemos printf es una función de impresión en pantalla y la utilizamos para desplegar mensajes en la misma. Cuando realizamos un programa con diferentes líneas de texto utilizaremos la siguiente estructura:

printf (“Escriba su texto aquí \n\n La segunda línea aquí \n\n Y la tercer línea aquí”);

Cada vez que utilicemos \n en nuestro texto (dentro de las comillas) haremos un salto de línea. No obstante no es necesario colocar todo el texto en un solo printf pues puede resultar confuso. Para ello podemos utilizar la siguiente alternativa:

Caso Aprintf (“Escriba su texto aquí \n\n”);printf (“La segunda línea aquí \n\n”);printf (“Y la tercer línea aquí”);

o bien:

Caso Bprintf (“Escriba su texto aquí”);printf (“\n\nLa segunda línea aquí”);printf (“\n\nY la tercer línea aquí”);

Como vemos, el lenguaje de programación interpretará lo siguiente:

Caso APrimer printf – escribe en pantalla “Escriba su texto aquí” – salto de línea, salto de línea – finSegundo printf – escribe en pantalla “La segunda línea aquí” – salto de línea, salto de línea – finTercer printf – escribe en pantalla “Y la tercer línea aquí” –fin

En pantalla se verá:

Escriba su texto aquí

La segunda línea aquí

Y la tercer línea aquí

Caso BPrimer printf – escribe en pantalla “Escriba su texto aquí” – finSegundo printf – salto de línea, salto de línea – escribe en pantalla “La segunda línea aquí” – fin

Página 3 de 14

Page 4: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

Tercer printf – salto de línea, salto de línea – escribe en pantalla “Y la tercer línea aquí” –fin

En pantalla se verá:

Escriba su texto aquí

La segunda línea aquí

Y la tercer línea aquí

El resultado es el mismo en ambos casos y donde coloquemos \n será donde realicemos el salto de línea.

El código de un programa completo utilizando clrscr y printf es:

#include <stdio.h>#include <conio.h>

//en este espacio declararíamos las variables globales, sin embargo en este caso no aplica

//en este espacio declararíamos funciones pero en este caso no usamos otras funciones

void main (void)

{clrscr();

printf (“Escriba su texto aquí \n\n”);printf (“La segunda línea aquí \n\n”);printf (“Y la tercer línea aquí”);

getch(); //esta instrucción la veremos más adelante}

Comentarios en código

Dentro del código de nuestro programa podemos realizar comentarios, es decir, agregar texto que no se considere como parte del código y por lo tanto que sea ignorado por el compilador. Para realizar un comentario en una sola línea utilizamos doble diagonal:

//todo el texto después de la doble diagonal será un comentario, pero solo es válido por una línea//por lo que si la siguiente línea tiene comentarios debemos utilizar de nuevo la doble diagonal

Eso significa que podemos tener una instrucción que SI se tome en cuenta y en la misma línea colocar un comentario, por ejemplo:

clrscr(); //aquí limpiamos pantalla

Para realizar comentarios en varias líneas utilizamos diagonal asterisco y asterisco diagonal por ejemplo:

/*Todo el texto entre estas “etiquetas” (como en html) será considerado comentarioPágina 4 de 14

Page 5: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

No importando de cuántas líneas se trateSolo hasta que cerremos con asterisco diagonal se deja de considerar comentario*/

Imprimiendo variables

Por medio de printf podemos imprimir en pantalla el valor de una variable de la siguiente forma:

printf (“El valor de la variable es %i”, x);

donde %i nos indica el tipo de dato que vamos a imprimir. Al cierre de comillas le sigue una coma y finalmente la variable que deseamos imprimir. En caso de que queramos imprimir más de una variable hacemos lo siguiente:

printf (“El valor de las variable es %i %i %i”, x, y, z);

o bien:

printf (“El valor de la variable x es %i, la variable y es: %i y la variable z es %i”, x, y, z);

Es decir, la posición del %i en este caso depende de en qué parte del texto deseamos que se despliegue el valor de la variable. Cada tipo de dato en el orden en el que se coloque debe ser especificado tras el cierre de comillas en el mismo orden deseado, es decir, el primer %i que leemos en el texto corresponderá a la primer variable que haya tras el cierre de comillas del printf, el segundo tipo de dato corresponde a la segunda variable etc.

Scanf

La instrucción scanf es una función de entrada de datos, y su sintaxis básica es la siguiente:

scanf (“%i”, &x);

Dentro de scanf, y entre comillas, deberemos colocar el tipo de dato que se va a almacenar. %i corresponde a un número entero (integer), %f a un número con punto decimal o punto flotante (float), %c corresponde a un caracter o letra (char), %d a un entero decimal, %s a una cadena de caracteres (string). Al cerrar las comillas colocamos una coma y le sigue un & con la variable donde se almacenará dicho dato.

Sentencias de control de flujo

A lo largo de la ejecución de un programa podemos requerir ejecutar código no necesariamente siempre en el mismo orden o bajo ciertas condiciones, para lo cual utilizamos las sentencias de control de flujo.

Página 5 de 14

Page 6: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

If

La sentencia if la utilizamos cuando deseamos hacer una bifurcación en nuestro código de la siguiente forma:

if (condición)ejecuta esta línea

elseejecuta esta otra línea

La sentencia if valida si se cumple una condición específica, si la condición regresa un booleano TRUE (booleano = dos valores: cierto o falso, si o no, verdadero o falso) entonces se ejecuta la línea inmediata siguiente al if “ejecuta esta línea”. En caso de que no se cumpla no ejecutamos esa línea y en su lugar ejecutamos la línea inmediata a else “ejecuta esta otra línea”. Solo se ejecuta una línea en cada caso. Si deseamos que se ejecute más de una línea al cumplirse una condición utilizamos llaves:

if (condición){ejecuta línea 1ejecuta línea 2ejecuta línea 3}

else{ejecuta línea 4ejecuta línea 5}

Importante: no debe haber ninguna instrucción entre un if y un else, de lo contrario se detectará como error. En el ejemplo anterior todo lo que se encuentra entre llaves se considera como un solo “paquete” y dicho “paquete” se toma como la línea dentro del if, por lo que realmente no hay líneas adicionales entre el if y el else como se puede ver gráficamente gracias a la identación.

Identación: Alineación de código de manera que sea identificable de manera visual las instrucciones que se encuentran dentro de ciclos, funciones, etc. mediante el uso de espacios o tabuladores.

Ejemplo:

If (x>=0)Printf (“equis es positivo o cero”);

ElsePrintf (“equis es negativo”);

Printf (“\n\nFin de programa”);

Aquí validamos si equis es mayor o igual a cero, si el resultado es TRUE (verdadero) se cumple la condición y se imprime el primer mensaje. Por definición entonces no se cumple el else y NO se imprime el segundo mensaje. Sin embargo como el tercer mnsaje se encuentra fuera tanto del if como del else, SI se imprime el tercer mensaje. Cuando equis sea menor a cero, no se cumple la

Página 6 de 14

Page 7: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

condición así que NO se imprime el primer mensaje. Al no cumplirse entro al else (si no, de lo contrario) e imprimo el segundo mensaje. Denuevo, como el tercer mensaje está fuera del if y del else, SI imprimo el tercer mensaje.

El código completo para el ejemplo es:

#include <stdio.h>#include <conio.h>

void main (void)

{Int x;

clrscr();

printf(“Escriba el número a validar:”);scanf(“%i”, &x);

if (x>=0)printf (“equis es positivo o cero”);

elseprintf (“equis es negativo”);

printf (“\n\nFin de programa”);

getch();

}

Ejemplo 2:

If (x!=0){Printf (“número válido para ser denominador”);Resultado = a/x;}

ElsePrintf (“este número no puede ser denominador”);

Printf (“\n\nFin de programa”);

En el ejemplo 2 vemos que validamos una condición con una negación (! equivale a “not”). En la condición preguntamos: “¿equis es diferente (no igual) a cero?”. Si el resultado de la pregunta es TRUE, significa que es verdad que equis NO es igual a cero, por lo tanto ejecuto dos líneas de código. Al ser más de una línea dentro del if, utilizo llaves.

Página 7 de 14

Page 8: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

Ejemplo 3:

If (x==0)Printf (“este número no puede ser denominador”);

Else{Printf (“número válido para ser denominador”);Resultado = a/x;}

Printf (“\n\nFin de programa”);

En el ejemplo 3 vemos un código equivalente al ejemplo 2, pues lo que validamos es si equis es igual a cero. Como vemos ahora donde queremos ejecutar más de una línea es en el else, y de ahí el uso de llaves. El texto “Fin de programa” se sigue ejecutando sin importar el valor de x.

Importante: Solo utilizaremos el if luego de que la variable que usemos para la condición tenga el valor a comparar. Es decir, solo cuando deseemos verificar una condición es que usaremos el if, y como una condición utiliza una variable luego entonces solo validaremos la condición en el momento en el que se pueda validar, y no es adecuado validar una condición cuando no le hemos asignado valor a nuestra variable.

Switch

La sentencia switch nos sirve para bifurcar nuestro programa. A diferencia de la sentencia if, en un switch podemos definir más de dos casos, siempre y cuando sean específicos. Su sintaxis básica es la siguiente:

Switch (variable){Case 1: línea 1

Línea 2Línea 3Break;

Case 2: línea 4Línea 5Línea 6Break;

Case 3: línea 7Línea 8Línea 9Break;

default : línea 10Línea 11Línea 12

}

Si nuestra variable es del tipo numérica, más propiamente un numero entero (%i o %d) en cada caso que definamos especificaremos los casos numéricos tal y como se ve en el ejemplo. Si utilizamos valores del tipo caracter, en cada caso colocaremos entre comilla simple el carácter de dicho caso como se muestra a continuación:

Página 8 de 14

Page 9: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

Switch (variable){Case ‘1’: línea 1

Línea 2Línea 3Break;

Case ‘2’: línea 4Línea 5Línea 6Break;

Case ‘A’: línea 7Línea 8Línea 9Break;

default : línea 10Línea 11Línea 12

}

El último caso, default, lo utilizamos para ejecutar código cuando la variable se salga de los casos que definimos. Si lo nota, al final de la línea 12 no hay un break. Cada break en cada case sirve para detener la ejecución de cada caso, sin embargo default por ser el último caso no lo necesita pues el cierre de llave indica el término del switch. Sin embargo si se desea se puede colocar el break luego de la última línea de default y no afecta al código.

Importante: Al igual que en el if, solo usaremos el switch cuando podamos verificar su valor, y no es adecuado hacerlo antes de asignarle valor a la variable sobre la que hacemos el switch.

El ejemplo en código completo es:

#include <stdio.h>#include <conio.h>

void main (void)

{char x;

clrscr();

printf(“Seleccione una opción: a, b o c”);scanf(“%c”, &x);

Switch (x){Case ‘a’: printf(“Usted seleccionó la opción a\n\n”);

printf(“Pero la opción a no hace nada :) ”);Break;

Case ‘b’: printf(“Usted seleccionó la opción b\n\n”);printf(“Pero la opción a no hace nada :( ”);Break;

Case ‘c’: printf(“Usted seleccionó la opción c\n\n”);printf(“Pero la opción c no hace nada ¬¬ ”);Break;

Página 9 de 14

Page 10: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

default : printf(“Usted no seleccionó una opción válida\n\n”);printf(“Lástima”);

}

printf (“\n\nFin de programa”);

getch();

}

For

El ciclo for lo utilizamos para realizar operaciones de manera iterativa, es decir, hacer una serie de operaciones durante n veces. Su sintaxis básica es la siguiente:

for (i=0; i<=10; i++)línea a ejecutar mientras se cumpla la condición

dentro del for tenemos tres bloques:i=0; es la condición inicial de donde partirá nuestro ciclo.I<=10; es la condición a cumplir, y mientras se cumpla se ejecutará la siguiente línea de código. Al igual que con if, el for solo considerará la primer línea que encuentre. Si se desea ejecutar más de una línea dentro del ciclo for, se deben colocar todas estas líneas dentro de llaves.I++ es la operación a realizar, el cambio para propiciar una futura salida del ciclo.

En el ejemplo anterior nuestra condición inicial es i=0. El paso siguiente es ver si se cumple la condición: que i sea menor o igual a 10. Como i es 0, se cumple la condición por lo que se ejecuta el código que se encuentre en “línea a ejecutar mientras se cumpla la condición”. Al finalizar dicho código se realiza la operación que en este caso es i++, es decir, incrementar i en uno. Ahora i vale 1 y volvemos a corroborar si se cumple la condición o no.

Para la operación a realizar podemos utilizar las siguientes opciones:

I++ incrementa i en unoi-- decrementa i en unoi+=n incementa i en n, por ejemplo i+=3 incrementará a i en tresi-=n decrementa i en ni*=n multiplica i por n y el resultado lo almacena nuevamente en ii/=n dicive i entre n y el resultado lo almacena nuevamente en i

también podemos utilizar sus operaciones correspondientes:

i = i+ni = i-ni = i*ni = i/n

Importante: Al igual que con if, la línea a ejecutar dentro del for puede sustituirse por un bloque de código de más de una línea y esto se hace empaquetando todo lo que se quiera ejecutar dentro del for entre llaves { }.

Página 10 de 14

Page 11: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

El ejemplo en código completo es:

#include <stdio.h>#include <conio.h>

void main (void)

{int i;

clrscr();

printf(“Este programa cuenta del cero al diez”);

for (i=0; i<=10; i++)printf(“Cuenta: %i \n\n”, i);

printf (“\n\nFin de programa”);

getch();

}

O una variación:

#include <stdio.h>#include <conio.h>#include <dos.h> // esta librería para usar delay, instrucción que veremos después

void main (void)

{int i;

clrscr();

printf(“Este programa cuenta del cero al diez”);

for (i=0; i<=10; i++){printf(“Cuenta: %i \n\n”, i);delay(1000);}

printf (“\n\nFin de programa”);

getch();

}

Página 11 de 14

Page 12: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

Do while

Do while es una sentencia de control que, como deducimos de su traducción del inglés, significa “hacer mientras”. Su sintaxis es la siguiente:

do línea a ejecutar mientras se cumpla la condición while (condición);

Su función es muy parecida a la del for, sin embargo en el caso del for tenemos una operación a realizar en la variable que usamos para cumplir una condición. Esto es, en for tenemos una operación que SIEMPRE se realiza al término del bloque de código y que SIEMPRE hace la misma operación en la misma magnitud. En cambio con do while podemos realizar o no una operación y no necesariamente matemática, sino que podemos realizar una modificación de caracter para salir o no del ciclo. Ejemplo:

do { printf(“¿cuál es el primer sumando?”); scanf(“%i”,&a);

printf(“¿cuál es el segundo sumando?”); scanf(“%i”,&b); c=a+b;

printf(“el resultado es %i”, c);

printf(“\n\n¿desea sumar denuevo? S= si, cualquier otra letra = no”);scanf(“%c”, &opcion); }

while (opcion == ‘S’)

En este caso no hacemos incrementos ni decrementos, solo un scanf para dar la oportunidad a la variable que debe cumplir la condición, de que cambie.

El código completo es:

#include <stdio.h>#include <conio.h>

void main (void)

{int a, b, c;char opción;

clrscr();

printf(“Este programa realiza la suma de dos números\n\n”)Página 12 de 14

Page 13: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

do { printf(“¿cuál es el primer sumando?”); scanf(“%i”,&a);

printf(“¿cuál es el segundo sumando?”); scanf(“%i”,&b); c=a+b;

printf(“el resultado es %i”, c);

printf(“\n\n¿desea sumar denuevo? S= si, cualquier otra letra = no”);scanf(“%c”, &opcion); }

while (opcion == ‘S’)

printf(“Adios”);getch();}

Otras instrucciones

Delay

Delay es una instrucción que realiza un tiempo de espera, y su sintaxis es la siguiente:

delay (tiempo);

donde tiempo está dado en milisegundos. Por ejemplo delay (5000); esperará 5 segundos antes de realizar la siguiente instrucción mientras que delay (500); esperará medio segundo.

Getch

Getch significa obtener caracter, y lo solemos utilizar al final del código o cuando deseamos hacer una pausa en la pantalla para ver los datos hasta que el usuario presione cualquier tecla. En este caso su sintaxis es simplemente:

getch();

Sin embargo también lo podemos utilizar para guardar un carácter en una variable como lo hace scanf:

x = getch();

Página 13 de 14

Page 14: Leng prog C

Realizado por: Ing. Jorge Ernesto Solórzano Villanueva

Random

Si queremos asignar un valor aleatorio a una variable utilizaremos el comando random. Sin embargo para que realmente produzca un resultado al azar en cada ejecución del programa, antes de utilizar a random debemos utilizar randomize una sola vez aunque random se utilize varias veces:

randomize();

líneas de código…

x = random (valor_numerico);

donde valor_numerico especificará el rando del random. Si usamos random(5) entonces x obtendrá un valor aleatorio de 0 a 4, random(10) asigna un valor aleatorio de 0 a 9 etc.

Gotoxy

Gotoxy es una función que posiciona el cursor en las coordenadas especificadas. Como mencionamos antes las condiciones iniciales del cursor al ejecutar un programa son 0,0 que es la parte superior izquierda de la pantalla. Conforme avanzamos hacia la derecha el valor del eje coordenado en x se incrementa, y al descender en la pantalla el eje y se incrementa. Como su nombre lo indica, gotoxy usa las coordenadas x, y. Su sintaxis es:

gotoxy(coordenada_x, coordenada_y);

Las coordenadas se asignan con valores numéricos enteros. Por ejemplo para posicionarse en la parte superior izquierda de la pantalla se usará gotoxy(0,0);

Página 14 de 14