Click here to load reader

Manual laboratorio de programación i

Embed Size (px)

Citation preview

Manual de Laboratorio de programacin I.

Universidad Centroamericana.Facultad de Ciencias, Tecnologa y Ambiente.Ingeniera en Sistemas de Informacin.

I. ndiceI.ndice1II.Tipos de datos3III.Declaracin de variables3IV.Casting4V.Arreglos.4A.Arreglos unidimensionales4B.Arreglos bidimensionales5VI.Estructuras6VII.Entrada y salida formateada7C.Scanf7D.Printf8VIII.Entrada y salida sin formato16IX.Ficheros17E.Fseek17X.Estructuras de control18F.If18G.If/else18H.Switch18XI.Estructura de control repetitiva o de iteracin condicional19I.Contadores, acumuladores, centinelas y banderas201.1.1Contadores y acumuladores201.1.2Contador201.1.3Acumulador o totalizador211.1.4Centinela211.1.5Bandera21J.Estructura de control repetitiva mientras (while)21K.Estructura de control repetitiva hacer_mientras (do while)22L.Estructura de control repetitiva desde (for)22XII.Funciones22M.Ventajas23N.Funciones sin paso de parmetros23O.Funciones con paso de parmetros23P.Variables locales.23Q.Variables globales.24R.Transferencia de variables.24

II. Tipos de datos

En c podemos declarar diferentes tipos de variables entre estos estn los nmeros enteros entre los cuales podemos encontrar: Int-cantidades enteros. Char-caracteres. Bool-(no existe en C)-valores lgicos. Enum-enumeraciones.Aunque en C no existe el tipo de datos bool, se puede implementar el nmero 0 como falso y cualquier otro nmero distinto a 0 como valor verdadero.Tambin se puede ver a los nmeros fraccionarios que se dividen en: Float-nmero en coma flotante. Doubl-nmero en coma flotante de doble precisin.Adems existe en C un tipo de dato ms que representa a variables que no poseen un valor alguno esa variable es cual es: Void-sin valor.Este tipo de dato no regresa ningn valor un ejemplo de este tipo de dato podra ser main ya que no regresa valor alguno, a menos que posea un return porque de esa forma dicha funcin regresa un valor entero.

III. Declaracin de variables

Al declarar una variable se debe usar la siguiente sintaxis: tipo_de_dato, nombre de la variable, valor que recibe la variable. Por ejemplo:

Int x=25;Char letra=A;Bool sexo=true;

IV. Casting

El casting son conversiones en las que se puede convertir un tipo de dato a otro como por ejemplo:Int a;Char L;a= (int) L;V. Arreglos.A. Arreglos unidimensionales

En trminos simples se puede definir un arreglo como una coleccin finita, homognea y ordenada de elementos.Esto porque los arreglos tiene un nmero limitado de elementos, adems que todos los elementos deben ser del mismo tipo y porque se puede definir el orden que tendrn los elementos.En un arreglo todos los ndices, es decir, la posicin que ocuparan los elementos en la memoria irn siempre dentro de corchetes ([]), como por ejemplo:Int a [5];Los arreglos se pueden realizar de distintas formas entre las que podemos encontrar las siguientes:Int A [] = {11, 3, 9}; o tambin de esta otra forma:Int A [3] = {11, 3, 9};Estas son usadas para inicializar la variable y que valor tendr cada una de las posiciones de memoria.B. Arreglos bidimensionales

Los arreglos bidimensionales, esta clase de arreglos consta de filas y de columnas por tanto tambin son conocidos como matrices y es el ms utilizado. Al igual que arreglos unidimensionales, los bidimensionales son finitos, homogneos ya que todos los valores que reciba la variable deben de ser del mismo tipo, y son ordenados. A diferencia de los arreglos unidimensionales los bidimensionales necesitaran de dos ndices el primer ndice representara la fila y el segundo ndice representara las columnas y que irn entre corchetes ([]). Por ejemplo:

Int A [2] [3];En este ejemplo podemos notar que primero debemos definir el tipo de la variable luego nombrar a la variable y finalmente indicar la posicin en fila y columnas en la que se encontrara.

VI. Estructuras

Las estructuras son colecciones de variables bajo un mismo nombre. En las estructuras hay variables de distinto tipo y eso la diferencia de los tipos de arreglos, aunque al igual que ellos es finita.La estructura se debe realizar fuera de cualquier funcin esta generalmente se hace en la parte superior an antes de declarar alguna variable.Para crear una estructura primero comenzamos por definir el tipo de estructura, para ello se procede de manera parecida a la definicin de una variable, con algunas modificaciones; en lenguaje C para definir una estructura, se utiliza la palabra reservada struct, normalmente seguida por un nombre y llave izquierda; despus se define el tipo y nombre para uno o ms campos. Se permite cualquier definicin de tipo habitual, incluso punteros y estructuras.Cada definicin de campo acabar con un punto y coma. Por ltimo se coloca una llave derecha. Si hay campos del mismo tipo, se pueden declarar en la misma lnea, separndolos por comas. Sintaxis:Struct ident_registro {tipodato_1 campo_1;tipodato_2 campo_2;tipodato_3 campo_3; };Hemos definido el tipo de dato ident_registro (nombre del registro), pero an no hay ninguna variable declarada con este nuevo tipo. Observe en lenguaje C la necesidad de incluir un carcter (;) despus de cerrar las llaves. Para definir una variable de tipo registro se declara de la misma forma que una variable:ident_registro ident_variable;Cada una de las variables que se encuentran dentro de la estructura se la denomina miembros. Aunque tambin se le pueden usar las siguientes denominaciones: Campo. Elemento. Atributo.

VII. Entrada y salida formateada

En el lenguaje C no podemos encontrar palabras reservadas para e/s del sistema. Estas operaciones se realizan por medio de funciones ya establecidas en la biblioteca de archivo de cabecera stdio.h. Las entradas y salidas de datos con formatos se realizan con las funciones printf (), y scanf ().C. Scanf

La funcin scanf () sirve para la entrada de datos, esta nos permite leer (introducir) datos desde el teclado asignarlos a una variable de C, de acuerdo al formato ya definido; esta funcin usa la siguiente sintaxis:Scanf (cadena de control, argumento1, argumento2);La cadena de control permite hacer referencia al tipo de dato al que pertenecen los argumentos que se estn leyendo, y si se desea tambin la anchura que posee el dato. Las cadenas de control siempre van dentro de comillas (), adems que estn precedidas por el signo %, seguidas por un carcter de conversin, los ms usados se presentan en la siguiente tabla:Tipo de argumento.Tipo de dato.Cadena de control.

carcterChar%c

Entero decimalInt%d

Entero decimal sin signoUnsigned int%u

Entero corto decimalShort int%hd

Entero corto decimal sin signoUnsigned short int%hu

Entero corto decimal con signoSigned short int%d

Entero largo decimalLong int%ld

Entero largo decimal sin signoUnsigned long int%lu

Entero largo decimal con signoSigned long int%l

Real (punto flotante)Float%f

Puntero%p

La lista de argumentos sern las variables; scanf necesita saber la posicin de memoria de la computadora en que se encuentra la variable para poder almacenar la informacin obtenida, para ello utilizaremos el smbolo ampersand (&), que se colocara antes del nombre de cada variable.D. Printf

La funcin printf () se usa para la salida, en l se pueden escribir textos y datos en la pantalla con determinado formato. Para esta funcin usamos la siguiente sintaxis:Printf (cadena de control, argumento1, argumento2);La cadena de control siempre se escribe dentro de comillas () y puede tener cualquiera de los siguientes elementos:1. Los caracteres que se imprimirn en pantalla (los cuales se visualizarn idnticos).2. Secuencias de escape.3. Uno o varios cdigos de formatos , los cuales se presentan en la tabla anterior.Al igual que en la sentencia scanf un especificador o cdigo de formato se inicia con un carcter % y termina con un carcter de conversin; Los argumentos pueden ser variables, constantes, o en general expresiones de salida.Como ejemplo podemos encontrar las siguientes estructuras con formato:estructura_Docente.#include#include

Struct docente{ Char nombre [25]; Char facultad [15]; Char correo [20]; Char clase [20]; Int celular; Char carnet [15]; Float salario;};

Int main (){ Struct docente datDoc [2];

Printf ("Ingrese la facultad a la que pertenece\n"); Scanf ("%s", &datDoc [0].facultad); Printf ("\nIngrese su nombre\n"); Scanf ("%s", &datDoc [0].nombre); Printf ("\nIngrese su n\243mero de carnet\n"); Scanf ("%s", &datDoc [0].carnet); Printf ("\nDigite su correo electronico\n"); Scanf ("%s", &datDoc [0].correo); Printf ("\nIngrese el nombre de la clase que imparte\n"); Scanf ("%s", &datDoc [0].clase); Printf ("\nIngrse su numero de celular\n"); Scanf ("%d", &datDoc [0].celular); Printf ("\nIngrese su salario\n"); Scanf ("%f", &datDoc [0].salario);

Return 0;}

Estructura empleado

#include#include

struct Emp{ Char nombre [25]; Char cedula [20]; Int edad; float salario; Char seguro; Char puesto;};

Int main (){ Struct Emp datE [2];

printf("Digite el nombre del empleado\n"); scanf("%s",&datE[0].nombre); printf("Digite la cedula del empleado\n"); scanf("%s",&datE[0].cedula); printf("Digite la edad del empleado\n"); scanf("%d",&datE[0].edad); printf("Digite el puesto que tiene el empleado\n"); scanf("%s",&datE[0].puesto); printf("Digite el carnet de seguro del empleado\n"); scanf("%s",&datE[0].seguro); printf("Digite el salario del empleado\n"); scanf("%f",&datE[0].salario);}

Estructura estudiante#include#include

struct Est{ char nombre[25]; int carnet; int nota; char facultad[25]; char carrera[25]; int edad; char correo[20];};

int main(){ struct Est datEs[2];

printf("Ingrese el nombre del estudiante\n"); scanf("%s",&datEs[0].nombre); printf("Ingrese su n\243mero de carnet\n"); scanf("%d",&datEs[0].carnet); printf("Ingrese su correo electronico\n"); scanf("%s",&datEs[0].correo); printf("Digite la facultad al que pertenece el estudiante\n"); scanf("%s",&datEs[0].facultad); printf("Ingrese la carrera del estudiante\n"); scanf("%s",&datEs[0].carrera); printf("Digite la edad del estudiante\n"); scanf("%d",&datEs[0].edad); printf("Ingrese la nota final obtenida por el estudiante\n"); scanf("%d",&datEs[0].nota);

return 0;}

Estructura vehculo#include#include

struct veh{ char marca[25]; char modelo[25]; char cambio[10]; float precio;

};

int main(){ struct veh datV[2]; system("color 0A"); printf("Digite la marca de vehiculo\n"); scanf("%s",&datV[0].marca); printf("Digite el modelo del vehiculo\n"); scanf("%s",&datV[0].modelo); printf("Digite el tipo de cambio del vehiculo\n"); printf("\t manual\n"); printf("\t automatico\n"); scanf("%s",&datV[0].cambio); printf("Digite el precio del vehiculo\n"); scanf("%f",&datV[0].precio);

return 0;}

VIII. Entrada y salida sin formato

Las funciones principales que realizan la entrada y salida sin formato son:Getche () Lee un carcter del teclado, no hay que esperar hasta que se pulse la tecla . Visualiza el eco del carcter.Getchar () Lee un carcter del teclado, espera hasta que se pulsa la tecla .Getch () Lee un carcter del teclado, no hay que esperar que se pulse la tecla . No visualiza el eco del carcter.Putchar () Imprime un carcter en la pantalla en la posicin actual del cursor.Gets () Lee una cadena de caracteres introducida por el teclado.Puts () Imprime una cadena en la pantalla, seguida de un carcter de salto de lnea.Adems de ellas usamos otras funciones como las siguientes:Fflush (stdin) Limpia el buffer (memoria intermedia) utilizado por la entrada estndar del sistema, generalmente el teclado. Fflush (stdout) La funcin printf no escribe directamente en la pantalla, sino en una memoria intermedia (buffer). Cuando este buffer (memoria intermedia) se llena o cuando oprimimos un carcter \n es cuando se enva el texto a la pantalla. La funcin fflush (stdout) lo que hace es enviar a la pantalla lo que hay en ese buffer.IX. Ficheros

Un archivo es un conjunto de bits almacenados en un dispositivo de memoria secundaria, el cual puede ser almacenado con un conjunto de propiedades y recuperados de la misma manera por el sistema operativo para que un programa tenga acceso a este.Un archivo es identificado por un nombre y la descripcin de la carpeta o directorio que lo contiene.Los archivos digitales se llaman as porque son los equivalentes digitales de los archivos en tarjetas, papel o microfichas del entorno de oficina tradicional. Podemos encontrar dos tipos de archivos; archivos de texto y archivos binarios.Para poder trabajar con un archivo asociamos una estructura de tipo FILE con un archivo especifico realizando una operacin de apertura.

E. FseekCuando se lee un dato de un fichero y despus el que est a continuacin a l, y as sucesivamente, se dice que est realizando una lectura secuencial del mismo. La funcin permite situarse en un determinado dato del fichero es:Fseek (fichero, posicin, origen);Si no existe ningn error la funcin devuelve un 0. Coloca el puntero del fichero a tanto Bytes del origen como indica la posicin contando a partir del origen sealado. Los posibles orgenes son:SEEK_SET o 0- principio del fichero.SEEK_CUR o 1- posicin actual.SEEK_END o 2- final del fichero.

X. Estructuras de control

F. IfEstructura de control que dirige a la computadora para ejecutar una o ms instrucciones solamente si la condicin es verdadera. Si la condicin es falsa no realiza ninguna accin. El trmino condicin lo utilizaremos a lo largo de este libro para referirnos a una o ms condiciones.Existen dos formas de representarlo, dependiendo del nmero de instrucciones que se desean realizar si la condicin se cumple.G. If/elseEstructura de control que dirige a la computadora para ejecutar una accin si la condicin es verdadera, y otra accin en caso de que sea falsa. Cabe mencionar que las instrucciones debern ser diferentes en cada caso, ya que si fueran iguales no se requerira una estructura selectiva, con la estructura secuencial se resolvera el problema.Existen dos formas de representarlo, dependiendo del nmero de instrucciones que se desean realizar si la condicin se cumple o no.

H. SwitchEsta estructura selecciona entre varias posibilidades, dependiendo del valor de la expresin. Cuando en la estructura si (if) todas las condiciones utilizan la igualdad de una variable determinada con constantes predefinidas, se puede utilizar la instruccin segun_sea (switch), en dicha instruccin existen ms de dos opciones.La estructura segun_sea (switch) evala una expresin que puede tomar n valores distintos; segn con cul de estos valores coincida, se ejecutarn ciertas acciones, es decir, el programa o algoritmo seguir un determinado camino entre los n posibles. Dicha expresin slo acepta valores enteros o caracteres para entrar a la opcin y el operador de relacin es el igual.Se compara la expresin (puede ser una sola variable) con cada una de las opciones const y en el momento de encontrar una constante idntica se ejecutan la(s) instruccin(es) correspondiente(s) a ese caso. Al terminar de realizar las instrucciones del caso, se debe usar la palabra reservada salir (break) para que vaya al final de la estructura. Si ninguno de los casos cumple con la expresin, se puede definir un caso por omisin, que tambin puede tener instrucciones; la computadora ejecutar la sentencia caso contrario (default). El default es opcional, si no est presente no se hace nada. Hay tres puntos que debemos considerar en la sentencia segun_sea (switch): 1. Se diferencia del s (if) en que el primero slo puede comprobar por igualdad, mientras que la expresin condicionada del s (if) puede ser de cualquier tipo. 2. No puede tener dos constantes en los casos con idnticos valores en el mismo segun_sea (switch). 3. La sentencia segun_sea (switch) es ms eficiente que el si anidado si-si no-si (if-else-if).XI. Estructura de control repetitiva o de iteracin condicional

La repeticin de una accin (una o varias instrucciones) se lleva a cabo mientras se cumpla cierta condicin; para que la accin termine, la accin misma debe modificar la(s) variable(s) de control que interviene(n) en la condicin. Dicha condicin puede estar predefinida como en el ciclo desde (for); o no predeterminada, como en los bucles mientras (while) y hacer-mientras (do_while).Bucles, ciclo o iteracin. Es un segmento de un algoritmo o programa, cuya(s) instruccin(es) se repite(n) un nmero conocido o indefinido de veces mientras se cumpla una determinada condicin.I. Contadores, acumuladores, centinelas y banderasContadores y acumuladoresEstas dos palabras se usan mucho en programacin para referirse a variables que van incrementando o decrementando su valor a lo largo de la ejecucin del algoritmo o programa. Normalmente sern de tipo numrico, Caractersticas de la variable contador o acumulador: 1. Se debe inicializar antes de entrar al ciclo. 2. Dentro del ciclo debe aparecer a ambos lados de la asignacin. Debemos inicializarlas de forma correcta, para: Sumar o restar en cero antes de entrar al ciclo; recordar que el cero es el elemento neutro de la suma y resta. Multiplicar 1, porque si valen cero todo lo que multipliquemos por ella seguir valiendo cero; recordar que el 1 es el elemento neutro de la multiplicacin.

ContadorUn contador es una forma de controlar a un bucle. Es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o accin en cada repeticin; dicha variable controla o determina la cantidad de veces que se repite un proceso o dato.Acumulador o totalizadorUn acumulador realiza la misma funcin que un contador con la diferencia de que el incremento o decremento es variable en lugar de constante.Es una variable que acumula sobre s misma un conjunto de valores, para de esta manera tener la acumulacin de todos ellos en una sola variable. Es una variable que almacena cantidades resultantes de operaciones sucesivas.Centinela El centinela es una variable que inicia con un valor, luego dentro de un bucle este valor cambia, haciendo falsa la condicin del ciclo y por lo tanto indicar el fin del ciclo (el usuario puede determinar cundo hacerlo). La repeticin controlada por centinela se considera como una repeticin indefinida (se desconoce el nmero de repeticiones).Bandera Una bandera (, ), es una variable que puede tomar slo dos valores opuestos, generalmente: 1 (verdadero) o 0 (falso), a lo largo de la ejecucin del algoritmo o programa. Es muy utilizado en bsquedas.J. Estructura de control repetitiva mientras (while)Al ejecutarse la instruccin mientras (while), se evaluar la expresin booleana suministrada en los parntesis (condicin), y si su valor es verdadero (distinto de cero) se realizar el ciclo o bucle (una o varias instrucciones). Despus, la condicin es reevaluada y se procede de la misma manera. Cuando la condicin se vuelve falsa (es decir, cero), en la siguiente evaluacin se dar por terminado el ciclo mientras (while).Si la condicin nunca se vuelve cero, el ciclo nunca terminar y, dependiendo de las instrucciones incluidas en el bucle, se generara un error de ejecucin que detendra el programa, o podra ser que el programa itere indefinidamente hasta ser detenido en forma manual.En esta estructura no se conoce necesariamente el nmero de veces que entrar al ciclo, ya que esto depender de la condicin definida.K. Estructura de control repetitiva hacer_mientras (do while)Esta estructura le permite al programador especificar que se repita una accin en tanto cierta condicin sea verdadera; cuando sta es falsa se sale del ciclo. La condicin la revisa despus del ciclo o bucle.Es muy semejante al ciclo mientras, con la diferencia de que la condicin se evala despus de ejecutar el cuerpo del bucle. Tanto el ciclo mientras como el hacer_mientras pueden utilizarse cuando no se conoce de antemano el nmero de veces que se repetir el ciclo.L. Estructura de control repetitiva desde (for)El desde (for) es la estructura repetitiva ms utilizada y simple de manejar, ya que repite un conjunto de instrucciones un nmero determinado de veces. Una de sus aplicaciones principales son los arreglos.XII. Funciones

La programacin modular o funciones es una tcnica que consiste en dividir un programa en tareas y dar origen a la creacin de pequeos programas llamados mdulos, subprogramas o subrutinas con la finalidad de simplificar la elaboracin y mantenimiento del mismo, donde cada mdulo se codifica y se procesa de manera independiente, sin importar los detalles de otros mdulos.Las funciones son los bloques de construccin bsicos de C. dentro de ellas se da toda la actividad del programa.Todo problema se puede resolver con funciones o sin ellas, pero su uso adecuado hace que el programa sea ms eficiente, fcil de leer y probar.M. Ventajas Facilita el diseo descendente. Los procedimientos dentro de ellas se pueden ejecutar varias veces. Facilita la divisin de tareas. Se puede probar individualmente.Las funciones pueden ser declaradas antes del main es decir fuera del programa principal. Pero son llamadas dentro de este, la sintaxis para declarar una funcin es la siguiente:Tipo nombre_funcion (lista de parmetros) {Lista de instrucciones;}

N. Funciones sin paso de parmetrosSon aquellas que no reciben parmetros o valores, ya que stos se solicitan dentro de la funcin, luego se realizan las instrucciones (clculos u operaciones) y normalmente se imprime el resultado.O. Funciones con paso de parmetrosEstas funciones son las ms utilizadas en la programacin ya que pueden recibir uno o ms valores llamados parmetros y regresan un solo valor de tipo entero, real o carcter. Si deseas regresar un arreglo de carcter es necesario hacerlo desde los parmetros. Los parmetros o valores son enviados del programa principal o de otra funcin. Dentro de la funcin se realizan solamente las instrucciones (clculos u operaciones).P. Variables locales.Se declaran dentro de la funcin y solo estn disponibles durante su ejecucin.Q. Variables globales.Se declaran fuera de las funciones. Pueden ser utilizadas por todas las funciones.R. Transferencia de variables.Por valor: copia el valor de la llamada en el parmetro formal de la funcin.Por referencia: se copia la direccin del argumento en el parmetro.Autor: Jeffrey Noel Calero Chvez.4