Está en la página 1de 61

Instituto Tecnolgico Superior De La Regin Sierra

Materia: Algoritmo y lenguaje de Programacin


Ingeniera Industrial

Trabajo: Investigacin Catedrtico: Mtra. Alejandra Guadalupe Presenta: Mara Alejandra Delesma vila Semestre/ grupo:
5t0 A

Teapa Tabasco A noviembre De 2013

Algoritmo Y Lenguajes De Programacin


ndice
TEMA Introduccin.. Unidad 3. Introduccin A La Programacin De Un Lenguaje Estructurado 3.1 Introduccin a la programacin. .............................................. 3.2 Estructura bsica de un programa. .............................................. 3.3 Tipos de datos. .............................................. 3.4 Identificadores. ... 3.5 Almacenamiento, direccionamiento y representacin en memoria. ............................................. 3.6 Proposicin de asignacin. .... 3.7 Operadores, operandos y expresiones. .. 3.8 Prioridad de operadores, evaluacin de expresiones. .. 3.9 Elaboracin de programas.. Unidad 4 .Estructuras Selectivas y de Repeticin. 4.1 Selectiva simple. .. 4.2 Selectiva doble. .... 4.3 Selectiva anidada. .... 4.4 Selectiva mltiple. .... 4.5 Repetir mientras. ............................................... 4.6 Repetir hasta. .. 4.7 Repetir desde. .. 4.8 Elaboracin de programas. ............................................. Unidad 5 Arreglos y Archivos. 5.1 Arreglo unidimensionales. ............................................... 5.2 Arreglo bidimensionales... .. 5.3 Archivos. ............................................. 5.4 Elaboracin de programas. Unidad 6 Funciones. 6.1 Introduccin. ... 6.2 Funciones estndar. .............................................. 6.3 Entrada y salida de datos. .... 6.4 Funciones definidas por el usuario. .............................................. 6.5 Pase por valor. ............................................. 6.6 Pase por referencia. .. 6.7 Punteros. .... 6.8 Elaboracin de programas. .... Conclusin. Fuentes de informacin... PAG. 03 04 04 07 12 14 16 18 20 22 24 25 26 27 30 32 33 34 36 39 43 45 46 47 49 51 52 55 55 56 59 60

Algoritmo Y Lenguajes De Programacin


Introduccin

Visual Basic es uno de los tantos lenguajes de programacin que podemos encontrar hoy en da. Dicho lenguaje nace del BASIC (Beginners All-purpose Symbolic Instruction Code) que fue creado en su versin original en el Dartmouth College, con el propsito de servir a aquellas personas que estaban interesadas en iniciarse en algn lenguaje de programacin. <http://es.wikipedia.org/w/index.php?title=Programaci%C3%B3n_estructurada&oldid=3 0205148>. Colaboradores de Wikipedia. Vector (informtica) [en lnea]. Wikipedia, La enciclopedia libre, 2009 [fecha de consulta: 2 de octubre del 2009]. Disponible en <http://es.wikipedia.org/w/index.php?title=Vector_(inform%C3%A1tica)&oldid=302493 61>. La solucin de problemas mediante en uso de un computador nos lleva a desarrollar programas o aplicaciones, la construccin de estos programas debe ser realizada mediante una metodologa, los pasos para la construccin de programas son:

1. Disear el algoritmo, consiste en analizar el problema y describir los instrucciones de forma ordenada que resuelven el problema. 2. Codificar de forma sistemtica la secuencia de instrucciones en un lenguaje. 3. Ejecutar y validar el programa en un computador (verificacin)

Para codificar de forma sistemtica un algoritmo se necesita de un lenguaje programacin que la computadora comprenda. Las estructuras de repeticin, permiten la ejecucin de una lista o secuencia de instrucciones (<bloque de instrucciones>) en varias ocasiones. El nmero de veces que el bloque de instrucciones se ejecutar se puede especificar de manera explcita, o a travs de una

Algoritmo Y Lenguajes De Programacin


condicin lgica que indica cundo se ejecuta de nuevo y cundo no. A cada ejecucin del bloque de instrucciones se le conoce como una iteracin.

Algoritmo Y Lenguajes De Programacin

UNIDAD 3: Introduccin A La Programacin De Un Lenguaje Estructurado


3.1 Introduccin a la programacin. Despus que se ha diseado y pensado como resolver el problema en papel, se debe comenzar el proceso de introducir el programa en un archivo en el disco de la computadora. La introduccin y modificacin del programa en un archivo se hace utilizando un simple editor de texto o un editor especializado que hace la tarea de escribir un programa una tarea muy fcil. El programa que se introduzca en el editor estar escrito en java o C++ o cualquier otro, pero ni C++ ni java son lenguajes mquina, muy al contrario, son lenguajes de alto nivel diseado para hacer ms fcil, la programacin que utilizando el lenguaje mquina. Los lenguajes, como todo hay que a prendrselos, pero tienen una ventaja y es que hay varios puntos en comn. Identifica las caractersticas de los lenguajes de programacin Evala cada uno de los tipos de programacin.

3.2 Estructura bsica de un programa.

Las partes principales de un programa estn relacionadas con dos bloques: declaraciones e instrucciones. En las instrucciones podemos diferenciar tres partes fundamentales Entrada de Datos: La constituyen todas las instrucciones que toman los datos de entrada desde un dispositivo externo y los almacena en la memoria principal para que puedan ser procesados. Proceso o algoritmo: Est formado por las instrucciones que modifican los objetos a partir de su estado inicial (datos de entrada) hasta el estado final (resultados) dejando los objetos que lo contiene disponibles en la memoria principal. Salida de resultados: Conjunto de instrucciones que toman los datos finales (resultado) de la memoria principal y los envan a los dispositivos externos. El teorema de Bhm y Jacopini (1966) dice que un programa propio puede ser escrito utilizando slo tres tipos de estructuras de control:

Algoritmo Y Lenguajes De Programacin


1. Estructura secuencial: Una estructura de programa es secuencial si las instrucciones se ejecutan una tras otra, a modo de secuencia lineal, es decir que una instruccin no se ejecuta hasta que finaliza la anterior, ni se bifurca el flujo del programa. 2. Estructura selectiva o de seleccin: La estructura selectiva permite que la ejecucin del programa se bifurque a una instruccin (o conjunto) u otra/s, segn un criterio o condicin lgica establecida, slo uno de los caminos en la bifurcacin ser el tomado para ejecutarse.
o o o

Estructura de control selectiva simple Estructura de control selectiva doble Estructura de control selectiva mltiple

3. Estructura de control cclica o repetitiva


o o

Estructura de control desde Estructura de control mientras

Para estas estructuras son necesarios los operadores lgicos y de relacin. Operadores de relacin Mayor a > Menor a < Mayor o igual a >= Menor o igual a <= Diferente a ~= Operadores lgicos Y (and) & O (or) | No (not) ~ Exclusivo o (or) Xor Con el uso de los operadores de relacin se construyen las condiciones simples y con el uso de los operadores de relacin y lgico se construyen las condiciones compuestas. Anadamiento: el cuerpo se cualquier estructura puede ser instrucciones simples u otras estructuras, que a su vez pueden contener a otras. Estructura bsica de un programa en C La mejor forma de aprender un lenguaje es programando con l. El programa ms sencillo que se puede escribir en C es el siguiente: Main ( ) {}

Algoritmo Y Lenguajes De Programacin


Como nos podemos imaginar, este programa no hace nada, pero contiene la parte ms importante de cualquier programa C y adems, es el ms pequeo que se puede escribir y que se compile correctamente. En l se define la funcin main, que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre de una funcin C siempre va seguida de parntesis, tanto si tiene argumentos como si no. La definicin de la funcin est formada por un bloque de sentencias, que est encerrado entre llaves {}. Un programa algo ms complicado es el siguiente: #include <stdio.h> Main ( ) { Printf ("Hola amigos!\n"); } Con el visualizamos el mensaje Hola amigos! en el terminal. En la primera lnea indica que se tengan en cuenta las funciones y tipos definidos en la librera stdio (standard input/output). Estas definiciones se encuentran en el fichero header stdio.h. Ahora, en la funcin main se incluye una nica sentencia que llama a la funcin printf. Esta toma como argumento una cadena de caracteres, que se imprimen van encerradas entre dobles comillas " ". El smbolo \n indica un cambio de lnea. Hay un grupo de smbolos, que son tratados como caracteres individuales, que especifican algunos caracteres especiales del cdigo ASCII. Los ms importantes son:
\a \b \f \n \' \" Alerta Espacio atrs Salto de pgina Salto de lnea Comilla simple Comillas dobles \r \t \v \\ \OOO \xHHH Retorno de carro Tabulacin horizontal Tabulacin vertical Barra invertida Visualiza un carcter cuyo cdigo ASCII es OOO en octal Visualiza un carcter cuyo cdigo ASCII es HHH en hexadecimal

Un programa C puede estar formado por diferentes mdulos o fuentes. Es conveniente mantener las fuentes de un tamao no muy grande, para que la compilacin sea rpida. Tambin, al dividirse un programa en partes, puede facilitar la legibilidad del programa y su estructuracin. Los diferentes fuentes son compilados de forma separada, nicamente los fuentes que han sido modificados desde la ltima compilacin, y despus combinados con las libreras necesarias para formar el programa en su versin ejecutable.

Algoritmo Y Lenguajes De Programacin


3.3 Tipos de datos. Existen dos tipos de datos Simples (sin estructura) (estructurados).Los tipos de datos Simples son los siguientes: y los compuestos

a) Numricos: Permite representar valores escalares de forma numrica, esto incluye a los nmeros enteros y los reales. Estos tipos de datos permiten hacer operaciones matemticas comunes. Para usarlos se escribe de manera normal como los usamos cotidianamente. por ejem. 412, 14.3, -17,9 entero: Son nmeros completos no tienen componentes fraccionarios o decimales y pueden ser positivos o negativos. se denominan en ocasiones de punto o coma fijo. real: Son nmeros que siempre tienen un punto decimal y pueden ser positivos o negativos, se denominan en ocasiones de punto o coma flotante.

b) Alfanumricos: Permite representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, caractersticas, etc. Es decir, permite identificar mediante nombres algunos atributos de una entidad. Es posible representar nmeros como alfanumricos, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representa encerrados entre comillas, para diferenciarlos de las variables ( que veremos mas adelante ) y los valores numricos. Los caracteres que la mayora de las computadoras reconocen son los siguientes: Caracteres alfabticos (a..z y A...Z) Caracteres numricos (0,1,2,3,4,5,6,7,8,9) Caracteres especiales ( + - # $ % ^ & * ( ) / < > : ; ' " )

c) Lgicos Tambin denominado boleano, es aquel dato que solo puede tomar
uno Permite dos en de dos valores cierto o falso.

representar respuestas simples, producto de la comparacin entre datos de tipo numrico o alfanumrico. Esto nos permite realizar cierta tarea funcin del valor de algunos datos.

Cuando usamos un programa es muy importante manejar datos. En C podemos almacenar los datos en variables. El contenido de las variables se puede ver o cambiar en cualquier momento. Estas variables pueden ser de distintos tipos dependiendo del tipo de dato que

Algoritmo Y Lenguajes De Programacin


queramos meter. No es lo mismo guardar un nombre que un nmero. Hay que recordar tambin que la memoria del ordenador es limitada, as que cuando guardamos un dato, debemos usar slo la memoria necesaria. Por ejemplo si queremos almacenar el nmero 400 usaremos una variable tipo int (la estudiamos ms abajo) que ocupa slo 16 bits, y no una de tipo long que ocupa 32 bits. Si tenemos un ordenador con 32Mb de Ram parece una tontera ponernos a ahorrar bits (1Mb=1024Kb, 1Kb=1024bytes, 1byte=8bits), pero si tenemos un programa que maneja muchos datos puede no ser una cantidad despreciable. Adems ahorrar memoria es una buena costumbre. A las variables no se les puede dar cualquier nombre. No se pueden poner ms que letras de la 'a' a la 'z' (la no vale), nmeros y el smbolo '_'. No se pueden poner signos de admiracin, ni de interrogacin. El nombre de una variable puede contener nmeros, pero su primer carcter no puede serlo. Ejemplos de nombres vlidos: Camiones Numero Ejemplos de nombres no vlidos: 1abc Buffer a1 j10hola29 num_alumnos

nombre?

num/alumnos

El tipo int. En una variable de este tipo se almacenan nmeros enteros (sin decimales). El rango de valores que admite es -32767 a 32767. Cuando definimos una variable lo que estamos haciendo es decirle al compilador que nos reserve una zona de la memoria para almacenar datos de tipo int. Para guardarla necesitaremos 16 bits de la memoria del ordenador (216=32767). Para poder usar una variable primero hay que declararla (definirla). Hay que decirle al compilador que queremos crear una variable y hay que indicarle de qu tipo. Por ejemplo: int numero; Mostrar variables por pantalla Vamos a ir u poco ms all con la funcin printf. Supongamos que queremos mostrar el contenido de la variable x por pantalla: Printf (%i", x); Suponiendo que x valga 10 (x=10) en la pantalla tendramos: 10

Algoritmo Y Lenguajes De Programacin


Empieza a complicarse un poco no? Vamos poco a poco. Recuerdas el smbolo "\" que usbamos para sacar ciertos caracteres? Bueno, pues el uso del "%" es parecido. "%i" no se muestra por pantalla, se sustituye por el valor de la variable que va detrs de las comillas. ( %i, de integer=entero en ingls). Para ver el contenido de dos variables, por ejemplo x e y, podemos hacer: printf ( "%i ", x ); Printf ( "%i", y ); Resultado (suponiendo x=10, y=20): 10 20 Pero hay otra forma mejor: printf( "%i %i", x, y ); Asignar valores a variables de tipo int La asignacin de valores es tan sencilla como x = 10;

Tambin se puede dar un valor inicial a la variable cuando se define: int x = 15; Tambin se pueden inicializar varias variables en una sola lnea: int x = 15, y = 20; Hay que tener cuidado con lo siguiente: int x, y = 20; Podramos pensar que x e y son igual a 20, pero no es as. La variable x est sin valor inicial y la variable 'y' tiene el valor 20. Veamos un ejemplo para resumir todo: #include <stdio.h> void main() { int x = 10; prinft( "El valor inicial de x es %i\n", x ); x = 50; printf( "Ahora el valor es %i\n", x ); }

El tipo Char Las variables de tipo char sirven para almacenar caracteres. Los caracteres se almacenan en realidad como nmeros del 0 al 255. Los 128 primeros (0 a 127) son el ASCII estndar. El

10

Algoritmo Y Lenguajes De Programacin


resto es el ASCII extendido y depende del idioma y del ordenador. Consulta la tabla ASCII en el anexo. Para declarar una variable de tipo char hacemos: char letra; En una variable char slo podemos almacenar solo una letra, no podemos almacenar ni frases ni palabras. Eso lo veremos ms adelante (strings, cadenas). Para almacenar un dato en una variable char tenemos dos posibilidades: letra = 'A'; o letra = 65; En ambos casos se almacena la letra 'A' en la variable. Esto es as porque el cdigo ASCII de la letra 'A' es el 65. Para imprimir un char usamos el smbolo %c (c de character=caracter en ingls): letra = 'A'; printf( "La letra es: %c.", letra ); Resultado: La letra es A. Tambin podemos imprimir el valor ASCII de la variable usando %i en vez de %c: letra = 'A'; printf( "El nmero ASCII de la letra %c es: %i.", letra, letra ); Resultado: El cdigo ASCII de la letra A es 65. Como vemos la nica diferencia para obtener uno u otro es el modificador (%c %i) que usemos. Una curiosidad: letra = 'A'; printf( "La letra es: %c y su valor ASCII es: %i\n", letra, letra ); letra = letra + 1; printf( "Ahora es: %c y su valor ASCII es: %i\n", letra, letra );

EL TIPO FLOAT En este tipo de variable podemos almacenar nmeros decimales, no slo enteros como en los anteriores. El rango de posibles valores es del 3,4E-38 al 3,4E38. Declaracin de una variable de tipo float:

11

Algoritmo Y Lenguajes De Programacin


float numero; Para imprimir valores tipo float Usamos %f. float num=4060.80; printf( "El valor de num es : %f", num ); Resultado: El valor de num es: 4060.80 Si queremos escribirlo en notacin exponencial usamos %e: float num = 4060.80; printf( "El valor de num es: %e", num ); Que da como resultado: El valor de num es: 4.06080e003 Resumen de los tipos de datos en C Esto es algo orientativo, depende del sistema. Tipo char int long float double Datos almacenados Caracteres enteros enteros largos Nums. reales flotante) Nums. reales flotante doble) (coma (coma N de Valores Bits (Rango) 8 16 32 32 64 -128 a 128 -32.767 a 32.767 -2.147.483.647 2.147.483.647 3,4E-38 a 3,4E38 1,7E-307 a 1,7E308 a posibles Rango usando unsigned 0 a 255 0 a 65.535 0 a 4.294.967.295

12

Algoritmo Y Lenguajes De Programacin


3.4 Identificadores Son los nombres elegidos para las variables, constantes, funciones, clases y similares. El primer carcter debe ser una letra o un subrayado. El resto del nombre puede contener dgitos. Los identificadores que comienzan con dos subrayados estn reservados para uso interno del compilador C++. IDENTIFICADOR: Es un nombre dado a un elemento tal como una constante o variable un procedimiento o un programa, estn formados por letras o dgitos en cualquier orden excepto que el primer caracter debe ser una letra VARIABLES Y CONSTANTES VARIABLE: Espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecucin de un proceso, su contenido puede cambiar segn necesite el programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podemos identificarla dentro de un algoritmo. Este nombre debe comenzar con una letra o guin bajo ( _ ), puede contener en el resto del nombre nmeros o letra o guiones bajos y no debe tener ms de ocho caracteres Partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o durante la ejecucin del programa. Algunos nombres validos de variables son: Cost_unit, iva10 , _dominio, a1_b4

o variable numrica : Aquella que solo permite almacenar valores numricos o variable alfanumrica : Aquella que puede almacenar uno o ms caracteres ( dgitos, nmeros, y smbolos) Tipos de variables.- Los tipo ms comunes son: enteras, reales, carcter, cadena y lgicas.

CONSTANTE: Dato numrico o alfanumrico que permanece invariable durante la ejecucin de un algoritmo. Estos datos pueden pasarse a variables para poder hacer uso de ellos en el algoritmo. El proceso de [pasar valores constantes a variables se le conoce como asignacin

13

Algoritmo Y Lenguajes De Programacin


Tipos de constantes.Tipo a) Entera: b) Reales: c) Carcter: d) Cadena caracteres: e) Lgicas: de Ejemplo -1, 0, 25 0.002, 3.14159, -2.34567, 5432. 'a', 'A', '+', ',', '9' 'A1', 'Hola', 'PRIMER ALGORITMO'

falso, verdadero; 0, 1; Si, No

Uso de las variables: Como se puede observar en la definicin dada en el punto anterior, las variables son zonas de la memoria que nos permite almacenar valores temporalmente. Por ello, en estas zonas podemos poner el resultado de operaciones matemticas, para posteriormente ser usadas o modificadas. Esta cualidad da como resultado, que existan ciertas formas de uso estndar en las variables. Este uso de las variables las hace muy tiles en el desarrollo de programas y son los siguientes: o Trabajo: Es aquella que recibe el resultado de una operacin matemtica completa y que ese usa normalmente dentro de un programa. o Contador: Forma que toma una variable y que sirve para llevar la cuenta de las operaciones o procesos realizados, con incrementos constantes, generalmente de 1 en 1. o Acumulador : Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente o Indicadores: Variables que reciben un determinado valor cuando se cumple cierta condicin o sucede cierto evento dentro de u programa. Se les conoce tambin como banderas.

14

Algoritmo Y Lenguajes De Programacin


3.5 Almacenamiento, direccionamiento y representacin en memoria. La configuracin de los platos de discos, cabezales y brazos de acceso hace posible posicionar el cabezal sobre cualquier parte de cualquier superficie de cualquier plato en el dispositivo de almacenamiento. Sin embargo, esto no es suficiente; para utilizar esta capacidad de almacenamiento, debemos tener algn mtodo de dar direcciones a partes uniformes del almacenamiento disponible. Hay un aspecto final requerido de este proceso. Considere todas las pistas en los muchos cilindros presentes en un dispositivo tpico de almacenamiento masivo. Puesto que las pistas tienen dimetros variados, sus circunferencias tambin varan. Por lo tanto, si el almacenamiento fue resuelto solamente a nivel de pistas, cada pista tendr diferentes cantidades de datos - pista #0 (estando cerca del centro del plato) puede almacenar 10,827 bytes, mientras que la pista #1,258 (cerca del borde externo del plato) puede almacenar 15,382 bytes. La solucin es dividir cada pista en mltiples sectores o bloques segmentos de un tamao consistente (a menudo 512 bytes) de almacenamiento. El resultado es que cada pista contiene un nmero fijo de sectores. Un efecto secundario es que cada sector contiene espacio inutilizado - el espacio entre sectores. A pesar del nmero constante de sectores en cada pista, la cantidad de espacio inutilizado vara - relativamente poco espacio inutilizado en las pistas internas y una cantidad mucho mayor de espacio en las pistas ms externas. En cualquier caso, este espacio inutilizado se desperdicia, pues all no se puede almacenar datos. Sin embargo, la ventaja que supera este espacio desperdiciado es que ahora es posible direccionar efectivamente el almacenamiento en un dispositivo de almacenamiento masivo. De hecho, hay dos mtodos de direccionamiento - el direccionamiento basado en la geometra y el direccionamiento basado en bloques. Clasificacin de los Dispositivos de Almacenamiento. Acceso secuencial: En el acceso secuencial, el elemento de lectura del dispositivo debe pasar por el espacio ocupado por la totalidad de los datos almacenados previamente al espacio ocupado fsicamente por los datos almacenados que componen el conjunto de informacin a la que se desea acceder. Acceso aleatorio: En el modo de acceso aleatorio, el elemento de lectura accede directamente a la direccin donde se encuentra almacenada fsicamente la informacin que se desea localizar sin tener que pasar previamente por la almacenada entre el principio de la superficie de grabacin y el punto donde se almacena la informacin buscada.

15

Algoritmo Y Lenguajes De Programacin


Medidas de Almacenamiento de la Informacin o Byte: unidad de informacin que consta de 8 bits; en procesamiento informtico y almacenamiento, el equivalente a un nico carcter, como puede ser una letra, un nmero o un signo de puntuacin. o Kilobyte (Kb): Equivale a 1.024 bytes. o Megabyte (Mb): Un milln de bytes o 1.048.576 bytes. o Gigabyte (Gb): Equivale a mil millones de bytes. Direccionamiento: Tras almacenar la direccin de memoria de un dato en la posicin 000000200, es posible obtener de nuevo el nmero 00153F2AB? La respuesta es afirmativa, pero no de forma inmediata, se debe obtener de memoria primero los cuatro bytes almacenados en la posicin 000000200 y utilizarlos como una direccin de memoria de donde obtener los cuatro bytes contenidos en la posicin 000000100. El acceso a este ltimo dato se ha realizado de forma indirecta, es decir, mediante un acceso previo a memoria para obtener la direccin del dato final. Utilizando la notacin funcional de operaciones sobre memoria, el acceso al dato se logra ejecutando Lectura (Lectura (000000200)). Representacin en memoria Secure Digital (SD)

Estn basadas en el formato Multimedia Card (MMC). Las tarjetas marcadas como HC (High Capacity) funcionan a alta velocidad y tienen tasas de transferencia de datos muy altas; algunas cmaras fotogrficas digitales requieren este tipo de tarjetas para poder grabar video con fluidez o para capturar mltiples fotografas en sucesin rpida. Starmedia

Tambin conocidas como (Tarjeta de Disco Floppy en Estado Slido). Son duraderas y su apariencia fsica es similar a la de un disquete, pero con el tamao aproximado de una estampilla de correo. Su forma impide introducirlas en su ranura en sentido contrario.

16

Algoritmo Y Lenguajes De Programacin


Memory Stick

Tarjetas digitales con memoria flash diseadas con la compaa Sony. Adems de ser aptas para cmaras digitales de esta marca, las Memory Stick se pueden utilizar en una gran variedad de aparatos digitales. Estas tarjetas sirven para almacenar imgenes, msica, datos, textos y grficos Ofrecen una alta velocidad de acceso y o necesitan ningn dispositivo para la reproduccin, pues disponen de un adaptador para disquetes. Minini SD FLASH MEMORY

Por su tamao tan reducido, este formato de tarjeta se utiliza especialmente en telfonos celulares. Combina gran capacidad de almacenamiento, alta tasa de transferencia de datos, confiabilidad, seguridad y bajo consumo de energa. Tambin se utiliza en reproductores de audio, cmaras digitales (por medio de un adaptador) y asistentes digitales personales (PDA). Micro SD CARD Este formato de tarjeta solo mide 10.9mm x 14.9mm x 1mm y puede almacenar vrios GB de informacin. Al igual que el MINI SD, es my utilizado en telfonos celular

3.6 Proposicin de asignacin.

Lo mismo que en otros lenguajes de programacin, en C se tienen los operadores aritmticos ms usuales (+ suma, - resta, * multiplicacin, / divisin y % mdulo). El operador de asignacin es =, por ejemplo: i=4; ch='y'; Incremento ++ y decremento -- unario. Los cuales son ms eficientes que las respectivas asignaciones. Por ejemplo: x++ es ms rpido que x=x+1. Los operadores ++ y -- pueden ser prefijos o postfijos. Cuando son prefijos, el valor es calculado antes de que la expresin sea evaluada, y cuando es postfijo el valor es calculado despus que la expresin es evaluada.

En el siguiente ejemplo, ++z es prefijo y -- es postfijo: int x,y,z; main() {

17

Algoritmo Y Lenguajes De Programacin


x= ((++z) - (y--)) % 100; } Que es equivalente a: int x, y,z; main() { Z++; x = ( z-y ) % 100; y--; }
El operador % (mdulo o residuo) solamente trabaja con enteros, aunque existe una funcin para flotantes (15.1 fmod ()) de la biblioteca matemtica. El operador divisin / es para divisin entera y flotantes. Por lo tanto hay que tener cuidado. El resultado de x = 3 / 2; es uno, an si x es declarado como float. La regla es: si ambos argumentos en una divisin son enteros, entonces el resultado es entero. Si se desea obtener la divisin con la fraccin, entonces escribirlo como: x = 3.0 / 2; o x = 3 / 2.0 y an mejor x = 3.0 / 2.0. Por otra parte, existe una forma ms corta para expresar clculos en C. Por ejemplo, si se tienen expresiones como: i = i + 3; o x = x * (y + 2); Por lo que podemos reescribir las expresiones anteriores como: i += 3; y x *= y + 2; respectivamente. Operadores de Comparacin El operador para probar la igualdad es ==, por lo que se deber tener cuidado de no escribir accidentalmente slo =, ya que: if ( i = j ) ... Es una sentencia legal de C (sintcticamente hablando aunque el compilador avisa cuando se emplea), la cual copia el valor de ``j'' en ``i'', lo cual ser interpretado como VERDADERO, si j es diferente de cero. Diferente es!=, otros operadores son: < menor que, > mayor que, <= menor que o igual a y >= (mayor que o igual a). Operadores lgicos Los operadores lgicos son usualmente usados con sentencias condicionales o relacionales, los operadores bsicos lgicos son: && Y lgico, || O lgico y ! negacin.

18

Algoritmo Y Lenguajes De Programacin


3.7 Operadores, operandos y expresiones. Los operadores son elementos del lenguaje que sirven para reducir expresiones y obtener resultados. Dependiendo de su tipo, se aplican sobre uno, dos o tres operandos. Los operadores se agrupan en las siguientes categoras: o Unarios. Se aplican sobre un slo operando. o Binarios. Se aplican sobre dos operandos. o Ternarios. Se aplican sobre tres operandos. Aqu describiremos brevemente los operadores binarios, algunos unarios que se relacionan con las operaciones de suma y resta, y el operador ternario?: Binarios A los elementos que se relacionan (variables o constantes) se les conoce como operandos y los elementos relaciona dores se les conoce como operadores. Existen los siguientes tipos de operadores: Matemticos, relacionales y lgicos. Matemticos Las expresiones aritmticas son anlogas a las frmulas matemticas, la cte. y el valor son numricos y los operadores son los aritmticos + * / Suma Resta Multiplicacin Divisin Mod Div () Modulo de la divisin Divisin entera Parntesis

Operadores Relacionales Los operadores relacionales permiten comparar dos valores entre si y obtener una respuesta de esta comparacin. Esta respuesta es de tipo lgico, es decir, puede ser solamente cierto cuando se cumpla la comparacin y falso cuando no se cumple. Cabe mencionar que el resultado de una operacin de relacin no puede ser asignado a una variable. Esto es el resultado es directamente usado por una estructura de control de programa. Como se ver ms delante. Los operadores relacionales son: > Mayor que < Menor que >= mayor o igual que

19

Algoritmo Y Lenguajes De Programacin


<= menor o igual que = o == igual <> Diferente

Operadores Lgicos Los operadores lgicos permiten comparar dos valores lgicos, los cuales como se deducen, pueden provenir de una comparacin relacional (usando operadores relacionales). Dicho de otra manera permiten efectuar dos comparaciones hechas cada una con un operador relacional, en una sola lnea. Como ya mencionamos, una comparacin relacional arroja resultados ciento o falso. El producto de una comparacin lgica da tambin cierto o falso. Los operadores lgicos san: And Or Not y o no (negacin)

Estos operadores se rigen por las siguientes tablas Estos operadores son utilizados en las expresiones lgicas donde el resultado da siempre verdadero o falso. Expresiones (Operadores) Expresiones.- Son conjuntos de constantes, variables, operadores y parntesis. Normalmente se utilizan para definir operaciones matemticas. Consta de operandos y operadores. Expresiones Aritmticas.- Son anlogas a las frmulas matemticas. Las variables y constantes son numricas y las operaciones son las aritmticas. Los operadores ms comunes son: Smbolo () ^ DIV MOD Significado Parntesis Exponenciacin Divisin entera Mdulo * / + = Multiplicacin Divisin Suma Resta Asignacin

Es una coleccin de operandos (nmeros, constantes, variables, etc.) enlazados por ciertos operadores, para construir una formula algebraica qu representa un valor.

20

Algoritmo Y Lenguajes De Programacin


Expresiones Relacionales.- Permiten realizar comparaciones de valores de tipo numrico o carcter. Sirven para expresar las condiciones en algoritmos o programas. Formato: Operador relacional. Ver Operadores relacionales. Expresiones lgicas.- Formato: Operador lgico. Ver Operadores lgicos Toda expresin debe satisfacer las siguientes condiciones generales: 1.No estn permitidos dos operadores sucesivos. (Se pueden usar parntesis para separar dos operadores consecutivos. 2.Una expresin puede consistir en un solo identificador usado como constante o como variable. 3.Un nombre de una funcin puede ser utilizado un lugar de un identificador de constante o variable dentro de una expresin.

3.8 Prioridad de operadores, evaluacin de expresiones. Determina el orden en que habrn de realizarse las operaciones en una expresin determinada. Para obtener la prioridad se deben conocer las siguientes reglas: Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (interiores unos a otros), las expresiones ms internas se evalan primero. En caso de coincidir varios operadores de igual prioridad en una expresin o subexpresin encerrada entre parntesis, el orden de prioridad en este caso es de izquierda a derecha. Cuando se desea realizar una operacin con baja prioridad por adelantado, debe agruparse a los operandos involucrados. Los parntesis tienen prioridad sobre el resto de las operaciones. Determina el orden en que habrn de realizarse las operaciones en una expresin determinada. Para obtener la prioridad se deben conocer las siguientes reglas: Las operaciones que estn encerradas entre parntesis se evalan primero. Si

21

Algoritmo Y Lenguajes De Programacin


existen diferentes parntesis anidados (interiores unos a otros), las expresiones ms internas se evalan primero. En caso de coincidir varios operadores de igual prioridad en una expresin o subexpresin encerrada entre parntesis, el orden de prioridad en este caso es de izquierda a derecha. Cuando se desea realizar una operacin con baja prioridad por adelantado, debe agruparse a los operandos involucrados. Una expresin es una combinacin de operandos y operadores. La evaluacin de una expresin consiste en reducirla, esto es, realizar todas las operaciones contenidas en ella para obtener un valor final. Para evaluar una expresin es necesario conocer la prioridad de los operadores, con lo cual se puede determinar cul operacin se va a realizar antes que las dems. Una expresin entre parntesis se evala primero que las dems. Si hay parntesis anidados, se evala primero la expresin contenida en los parntesis ms internos. La siguiente tabla muestra los operadores y su asociatividad (empezando con los de mayor prioridad). Operadores Asociatividad ( ) [ ] . new typeof Izquierda a derecha - ~ ! ++ -- (tipo) expresin derecha a izquierda */% izquierda a derecha +izquierda a derecha << >> izquierda a derecha < <= > >= is as izquierda a derecha == != izquierda a derecha &^ izquierda a derecha && izquierda a derecha ?: derecha a izquierda = *= /= %= += -= <<= >>= >>>= &= = ^= derecha a izquierda

22

Algoritmo Y Lenguajes De Programacin


3.9 Elaboracin de programas.

Se puede crear un archivo que contenga el programa completo, como en los ejemplos que se tienen ms adelante. Se puede usar cualquier editor de textos ordinario con el que se est familiarizado. Un editor disponible en la mayora de los sistemas UNIX es vi, y en Linux se puede usar pico. Por convencin el nombre del archivo debe terminar con ``.c'' por ejemplo: miprograma.c progprueba.c. El contenido del archivo deber obedecer la sintaxis de C. Ejecucin de programa. El siguiente estado es correr el programa ejecutable. Para correr un ejecutable en UNIX, simplemente se escribe el nombre del archivo que lo contiene, en este caso programa (o a.out). Con lo anterior, se ejecuta el programa, mostrando algn resultado en la pantalla. En ste estado, podra haber errores en tiempo de ejecucin (run-time errors), tales como divisin por cero, o bien, podran hacerse evidentes al ver que el programa no produce la salida correcta. Si lo anterior sucede, entonces se debe regresar a editar el archivo del programa, recompilarlo, y ejecutarlo nuevamente. Sin embargo, se da alguna informacin bsica para algunos programas de C. El preprocesador acepta el cdigo fuente como entrada y es responsable de:

quitar los comentarios interpretar las directivas del preprocesador las cuales inician con #.

Por ejemplo:

#include -- incluye el contenido del archivo nombrado. Estos son usualmente llamados archivos de cabecera (header). Por ejemplo: #include <math.h> -- Archivo de la biblioteca estndar de matemticas. #include <stdio.h> -- Archivo de la biblioteca estndar de Entrada/Salida. #define -- define un nombre simblico o constante. Sustitucin de macros. #define TAM_MAX_ARREGLO 100 Compilador de C El compilador de C traduce el cdigo fuente en cdigo de ensamblador. El cdigo fuente es recibido del preprocesador. Ensamblador. El ensamblador crea el cdigo fuentei o los archivos objeto. En los sistemas con UNIX se podrn ver los archivos con el sufijo .o. Ligador

Si algn archivo fuente hace referencia a funciones de una biblioteca o de funciones que estn definidas en otros archivos fuentes, el ligador combina estas funciones (con main()) para crear un archivo ejecutable.

23

Algoritmo Y Lenguajes De Programacin

X=A/B-C+D*E-A*C EXPRESIN Operandos Operadores Delimitadores

5 operandos A,B,C,D,E Pueden ser cualquier variable o constante vlida del lenguaje Los valores de las variables deben ser coherentes con las operaciones que se realicen con ellas 6 operadores /,-,+,*,-,* Describen las operaciones que se realizan entre las variables Pueden ser aritmticos, lgicos, relacionales X=A/B-C+D*E-A*C Orden en el que se deben realizar las operaciones Cada lenguaje debe definir exactamente dicho orden Si A = 4, B = C = 2, D = E = 3 => X=((4/2)-2)+(3*3)-(4*2) =0+9-8 =1 X = ( 4 / (2 - 2 + 3 ) ) * ( 3 - 4 ) * 2 = ( 4 / 3 ) * ( -1 ) * 2

24

Algoritmo Y Lenguajes De Programacin

Unidad 4: Estructura Selectiva Y De Repeticin

4.1 Selectiva simple. Selectivas (Simples): Se utilizan para tomar decisiones lgicas. Se suelen denominar tambin estructuras de decisiones o alternativas. Es estas estructuras se evala una condicin y en funcin del resultado de la misma se realiza una opcin u otra. Las condiciones se especifican usando expresiones lgicas. Su representacin en seudocdigo es: Si condicin entonces accin si no otra accin o Donde Si indica el comando de comparacin o Condicin indica la condicin a evaluar o Entonces precede a las acciones a realizar cuando se cumple la condicin o Accin Accin o conjunto de acciones que se realiza cuando se cumple la condicin o Sino precede a las acciones a realizar cuando no se cumple la condicin o Otra accin Accin o conjunto de acciones que se realizan cuando no se cumple la condicin. Dependiendo si la comparacin es cierta o falsa, se puede realizar una o ms acciones. Para realizar ms de una, se puede usar el concepto de bloque (INICIO FINAL) Representacin en diagrama de No condicin si

Ejecuta una determinada condicin y si el resultado es verdadero se ejecuta solo una determinada accin. Si la condicin es falsa el programa sigue con su secuencia normal.

25

Algoritmo Y Lenguajes De Programacin


Diagrama de flujo

Pseudocdigo: Si <condicin> entonces <Accin> fin_si If <condicin> the <Accin> Hendir Simple: ejecuta una determinada condicin y si el resultado es verdadero se ejecuta solo una determinada accin. Si la condicin es falsa el programa sigue con su secuencia normal.

4.2 Selectiva doble. Se utilizan cuando se tienen dos opciones de accin, se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes. Si la condicin es verdadera, se ejecuta la accin 1, si es falsa, se ejecuta la accin 2. Diagrama de flujo

26

Algoritmo Y Lenguajes De Programacin


Pseudocdigo: Espaol Si <condicin> entonces <accin S1> sino <accin S2> Fin_Si Ingls If <condicin> then <accin S1> else <accin S2> End_if

Entonces, si una condicin C es verdadera, se ejecuta la accin S1 y si es falsa, se ejecuta la accin S2.

4.3 Selectiva anidada. La estructura selectiva anidada es una cadena de estructuras selectivas que se conectan de la parte else de la actual con la parte if de la siguiente, es decir cuando despus de una decisin se debe tomar otra, despus otra y as sucesivamente. Diagrama de flujo If <n=0> Then CERO Else If <n>0> Then ENTERO Else DECIMAL
End If

27

Algoritmo Y Lenguajes De Programacin


Pseudocdigo: If <condicion1> Then Bloque de instrucciones1 Else If <condicion2> Then Bloque de instrucciones 2 Else Bloque de instrucciones 3 End If

4.4 Selectiva Mltiple.

Mltiple Estructuras repetitivas: Consiste en repetir una o varias acciones un nmero determinado de veces. A esta accin se le llama bucle o ciclo. Las dos principales preguntas que se realizan en el diseo de un ciclo son o Que contiene el ciclo? o Cuantas veces se debe repetir? Estructura repetitiva Mientras (While... do): Es aquella en que el cuerpo del ciclo se repite mientras se cumple una determinada condicin.

28

Algoritmo Y Lenguajes De Programacin


en seudocdigo: La representacin grfica es: mientras condicin hacer accin 1 accin 2 accin n fin mientras ejemplo: Escribir un algoritmo que permita accin n escribir en la pantalla la frase " desea continuar s o no'

Estructura repetitiva repetir (Repeat....until): Es aquel en que el cuerpo del se ejecuta hasta que se cumpla una condicin determinada que se verifica al final del ciclo. La representacin grfica es en seudocdigo

repetir accin 1 accin 2 accin n hasta que condicin Ejemplo: Algoritmo que calcule la suma de 100 nmeros introducidos por el teclado

29

Algoritmo Y Lenguajes De Programacin


La diferencia de estas estructuras consiste en: o La estructura mientras termina cuando la condicin es falsa y en la estructura repetir termina cuando la condicin es verdadera o Es la estructura repetir el cuerpo del ciclo se ejecuta siempre al menos una vez por lo contrario la estructura mientras es ms general y permite la posibilidad de que el ciclo pueda no ser ejecutado. Estructura repetitiva Desde hasta (for to): Ejecuta las acciones del cuerpo del ciclo un nmero determinado de veces y de modo automtica controla el nmero de veces que se repetirn las instrucciones del cuerpo del ciclo. en seudocdigo Se representa grficamente de la siguiente forma desde variable (v) = vi hasta vf hacer accin 1 accin 2 accin n fin desde donde v = variable ndice vi = valor inicial de la variable vf = valor final de la variable

La estructura desde comienza con una valor inicial de la variable ndice y las acciones especficas se ejecutan a menos que el valor inicial sea mayor que el valor final. El incremento de la variable ndice siempre es uno si no se indica lo contrario. Dependiendo del lenguaje es posible que el incremento sea distinto de uno positivo o negativo

30

Algoritmo Y Lenguajes De Programacin


Select Case expres Case value1 Block of one or more VB statements Case value2 Block of one or more VB Statements Case value3 Case Else Block of one or more VB Statements End Select Select Case expression Case value1 Block of one or more VB statements Case value2 Block of one or more VB Statements Case value3 Case Else Block of one or more VB Statements End Select

4.5 Repetir mientras. Este ciclo consiste en un conjunto de instrucciones que se repiten mientras se cumpla una condicin. De igual manera que en los condicionales, la condicin es evaluada y retorna un valor lgico, que puede ser verdadero o falso. En el caso del ciclo mientras las instrucciones contenidas en la estructura de repeticin se ejecutarn solamente si al evaluar la condicin se genera un valor verdadero; es decir, si la condicin se cumple; en caso contrario, se ejecutar la instruccin que aparece despus de Fin mientras. A diferencia de otros ciclos, el ciclo mientras comienza evaluando la expresin condicional, si el resultado es verdadero se ejecutarn las instrucciones que estn entre el mientras y el fin mientras, al encontrarse la lnea fin mientras se volver a evaluar la condicin, si se cumple se ejecutarn nuevamente las instrucciones y as sucesivamente hasta que la condicin deje de cumplirse, en cuyo caso, el control del programa pasa a la lnea que aparece despus de fin mientras. Si en la primera pasada por el ciclo mientras la condicin no se cumple las instrucciones que estn dentro del ciclo no se ejecutarn ni una sola vez. En diagrama de Chapin (N-S), esta estructura tiene la presentacin:

31

Algoritmo Y Lenguajes De Programacin


Ejemplos: 1. Un algoritmo para mostrar los nmeros del 1 al 10. Definicin del problema Mostrar listado de nmeros de 1 a 10. Anlisis del problema Datos de entrada: ninguno Datos de salida: nmero Proceso: ninguno Diseo de la solucin

Este es un algoritmo muy trivial pero permite revisar la aplicacin de la estructura de repeticin Mientras. Lo primero a tener en cuenta es la declaracin e inicializacin de la variable: num = 1. En este caso no solo se est declarando una variable de tipo entero, sino tambin se est asignando un valor inicial, que ser el primer nmero mostrado. La condicin o expresin relacional con la cual se implementa el ciclo es num <= 10, dado que num inicia en 1, la primera vez que se encuentra la instruccin mientras, la expresin es verdadera, por tanto se ejecutan las instrucciones que aparecen al interior del ciclo. Despus de haber mostrado el contenido de la variable num, ste cambia, se incrementa en 1. 3. o o o Leer n nmeros y encontrar el valor promedio, el mayor y el menor Definicin del problema Encontrar el promedio, el mayor y el menor de varios nmeros Anlisis del problema

Para solucionar este problema, lo primero que hay que plantear es cmo se sabr cuando terminar la lectura de datos, ya que no se especifica la cantidad de nmeros que sern ingresados y en el planteamiento del problema no se da ninguna condicin que permita saber cundo terminar el ciclo. Este tipo de problemas es muy comn. Hay dos formas de abordar este ejercicio, la primera consiste en preguntar al usuario con cuantos nmeros desea trabajar y guardar dicho valor en una variable

32

Algoritmo Y Lenguajes De Programacin


que se utilizar para establecer el ciclo. La segunda consiste en preguntar despus de leer cada dato, si se desea ingresar otro. En este ejercicio se utilizar la primera estrategia. Datos de entrada: cantidad de nmeros, nmero Datos de salida: promedio, mayor y menor Procesos: Suma = suma + nmero Promedio = suma / cantidad de nmeros Diseo de la solucin 3. La serie Fibonacci comienza con los nmeros: 0, 1, 1, 2, 3, 5, 8, 13, 21, Se requiere un algoritmo para generar los primeros 10 nmeros. Definicin del problema Generar los 10 primeros nmeros de la serie fibonacci Anlisis del problema La serie fibonacci se genera a partir de dos valores iniciales que son el 0 y el 1, que al sumarse dan como resultado 1. El siguiente nmero se obtiene sumando el ltimo nmero obtenido con el anterior, en este caso 1 + 1 = 2, luego ser 2 + 1 = 3 y as sucesivamente.

4.6 Repetir hasta. Esta estructura es caracterstica de lenguajes como PASCAL, y su uso es muy sencillo, se especifica un valor de partida (lgicamente) y un valor de parada(por eso es hasta) que es el valor lmite hasta el cual se realizara cierta instruccin utilizando como base el valor de repeticin. Esta estructura es manejada por PASCAL como una estructura aparte, veamos de que forma: PROGRAM Ciclo_hasta; VAR

33

Algoritmo Y Lenguajes De Programacin


Numero: Integer; BEGIN Numero:= 1; REPEAT writeln (Numero); Numero:= Numero + 1; UNTIL Numero = 50; Esta estructura se encuentra en cualquier lenguaje de programacin, no necesariamente tal cual se muestra aqu, se utiliza un for o un while, simplemente se modifica la condicin para que no afecte al nmero de repeticiones. Por ejemplo con un for: for (a = 0; a<50; a++) printf(Rafa\n); Esta sentencia se ejecutara 50 veces, osea hasta el 50. Como conclusin decir que todo lo necesario para realizar repeticiones se encuentran con las estructuras while() y for(), solo es cuestin de saber estructurar las condiciones.

4.7 Repetir desde.

Realiza la accin o conjunto de acciones, luego evala una condicin, de resultar cierta vuelve a realizar la(s) accin(es). Cuando sea falsa se sale del ciclo. Su sintaxis es: Do { Sentencia, } While (); La diferencia fundamental, entre el ciclo while y do while es que en este ltimo, las sentencias se realizarn por lo menos una vez, en cambio, con while, solo se cumplirn mientras se cumpla la condicin, lo cual puede ser nunca.

34

Algoritmo Y Lenguajes De Programacin


Ejemplo: Programa que imprima luna lista de nmeros del 1 al 100(PARA JCREATOR) 1 class fibo { 2 public static void main(String args[]){ 3 int n1=0; 4 do{ n1++; 5 System.out.println(n1+); 6 }while(n1<100); 7} 8}

4.8 Elaboracin de programas. Estructuras repetitivas del software PSeint Dentro del programa PSeint se tienen disponibles a 3 de las estructuras repetitivas, las cuales son Mientras, Repetir-Hasta y la estructura Para, ver figura 4.7. La estructura y sintaxis de uso de cada una se explica a continuacin. * Mientras * Repetir Hasta * Para Figura 4.7: Comandos de PSeint para estructuras repetitivas Sintaxis y uso de la instruccin Mientras

35

Algoritmo Y Lenguajes De Programacin


Repite un bloque de instrucciones (Secuencia_de_acciones) limitada entre el paso Mientras y paso FinMientras.

La repeticin del bloque de pasos se controla al inicio de la estructura, gracias a evaluar a una condicin lgica CL Expresion_logica, cuyo resultado Verdadero o Falso es aprovechado para determinar si repite o no el bloque!! Al utilizar un lazo Mientras hay que tener cuidado de lo siguiente: a) Para permitir que el lazo Mientras ejecute al menos una vez su ciclo de instrucciones, usted debe de asegurarse que su Condicin Lgica se cumpla (inicialmente), sino PSeint ignora a toda el bloque a repetir dentro de la estructura y continuara con el paso justamente despus del cierre del Mientras. b) Para que el lazo Mientras pueda repetir el Bucle una o ms veces, asegrese que en el interior de los pasos del ciclo se modifique/altere el valor de (por lo menos) una de las variables utilizada en la CL, de manera que al finalizar el ciclo actual, PSeint evalu de nuevo la CL, y decida si repetir el Bucle. c) Segn la aclaracin anterior, si necesita que el lazo finalice (que ya no se repita de nuevo el ciclo), asegrese que al volver a evaluar la CL, est ya no se cumpla.

36

Algoritmo Y Lenguajes De Programacin


UNIDAD 5. Arreglos y Archivos.
5.1 Arreglo Unidimensionales. Los arreglos son una coleccin de variables del mismo tipo que se referencian utilizando un nombre comn. Un arreglo consta de posiciones de memoria contigua. La direccin ms baja corresponde al primer elemento y la ms alta al ltimo. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un ndice. El formato para declarar un arreglo unidimensional es: Tipo nombre_arr [ tamao ] Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma: Int a[10]; En C, todos los arreglos usan cero como ndice para el primer elemento. Por tanto, el ejemplo anterior declara un arreglo de enteros con diez elementos desde a[0] hasta a[9]. La forma como pueden ser accesados los elementos de un arreglo, es de la siguiente forma: a[2] = 15; /* Asigna 15 al 3er elemento del arreglo a*/ num = a[2]; /* Asigna el contenido del 3er elemento a la variable num */ El lenguaje C no realiza comprobacin de contornos en los arreglos. En el caso de que sobrepase el final durante una operacin de asignacin, entonces se asignarn valores a otra variable o a un trozo del cdigo, esto es, si se dimensiona un arreglo de tamao N, se puede referenciar el arreglo por encima de N sin provocar ningn mensaje de error en tiempo de compilacin o ejecucin, incluso aunque probablemente se provoque un error en el programa. Como programador se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondr en ellos el programa. C permite arreglos con ms de una dimensin, el formato general es: tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN]; enteros bidimensionales se escribir como: Por ejemplo un arreglo de

int b[50][50]; Observar que para declarar cada dimensin lleva sus propios parntesis cuadrados. Para acceder los elementos se procede de forma similar al ejemplo del arreglo unidimensional, esto es, b[2][3] = 15; /* Asigna 15 al elemento de la 3 fila y la 4 columna*/

37

Algoritmo Y Lenguajes De Programacin


num = b[25][16]; A continuacin se muestra un ejemplo que asigna al primer elemento de un arreglo bidimensional cero, al siguiente 1, y as sucesivamente. main() { int t,i,num[3][4]; for(i=0; i<4; ++i) num[t][i]=(t*4)+i*1; printf("num[%d][%d]=%d ",

for(t=0; t<3; ++t)

for(t=0; t<3; ++t){ for(i=0; i<4; ++i) t,i,num[t][i]); printf("\n"); }

} En C se permite la inicializacin de arreglos, debiendo seguir el siguiente formato: tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] = {lista-valores}; Por ejemplo: int c[10] = {1,2,3,4,5,6,7,8,9,10}; int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

ARREGLOS: Las estructuras de datos que hemos visto hasta ahora (listas, tuplas, diccionarios, conjuntos) permiten manipular datos de manera muy flexible. Combinndolas y anidndolas, es posible organizar informacin de manera estructurada para representar sistemas del mundo real. En muchas aplicaciones de Ingeniera, por otra parte, ms importante que la organizacin de los datos es la capacidad de hacer muchas operaciones a la vez sobre grandes conjuntos de datos numricos de manera eficiente. Algunos ejemplos de problemas que requieren manipular grandes secuencias de nmeros son: la prediccin del clima, la construccin de edificios, y el anlisis de indicadores financieros entre muchos otros. La estructura de datos que sirve para almacenar estas grandes secuencias de nmeros (generalmente de tipo float) es el arreglo. Los arreglos tienen algunas similitudes con las listas:los elementos tienen un orden y se pueden acceder mediante su posicin, los elementos se pueden recorrer usando un ciclo for. Sin embargo, tambin tienen algunas restricciones: todos los elementos del arreglo deben tener el mismo tipo, en general, el tamao del arreglo es fijo

38

Algoritmo Y Lenguajes De Programacin


(no van creciendo dinmicamente como las listas), se ocupan principalmente para almacenar datos numricos. A la vez, los arreglos tienen muchas ventajas por sobre las listas, que iremos descubriendo a medida que avancemos en la materia. Los arreglos son los equivalentes en programacin de las matrices y vectores de las matemticas. Precisamente, una gran motivacin para usar arreglos es que hay mucha teora detrs de ellos que puede ser usada en el diseo de algoritmos para resolver problemas verdaderamente interesantes. Crear arreglos El mdulo que provee las estructuras de datos y las funciones para trabajar con arreglos se llama NumPy, y no viene includo con Python, por lo que hay que instalarlo por separado. Descargue el instalador apropiado para su versin de Python desde la pgina de descargas de NumPy. Para ver qu versin de Python tiene instalada, vea la primera lnea que aparece al abrir una consola. Para usar las funciones provistas por NumPy, debemos importarlas al principio del programa: from numpy import array Como estaremos usando frecuentemente muchas funciones de este mdulo, conviene importarlas todas de una vez usando la siguiente sentencia: from numpy import * (Si no recuerda cmo usar el import, puede repasar la materia sobre mdulos). El tipo de datos de los arreglos se llama array. Para crear un arreglo nuevo, se puede usar la funcin array pasndole como parmetro la lista de valores que deseamos agregar al arreglo: >>> a = array([6, 1, 3, 9, 8]) >>> a array([6, 1, 3, 9, 8]) Todos los elementos del arreglo tienen exactamente el mismo tipo. Para crear un arreglo de nmeros reales, basta con que uno de los valores lo sea: >>> b = array([6.0, 1, 3, 9, 8]) >>> b array([ 6., 1., 3., 9., 8.]) Otra opcin es convertir el arreglo a otro tipo usando el mtodo astype: >>> a array([6, 1, 3, 9, 8]) >>> a.astype(float) array([ 6., 1., 3., 9., 8.]) >>> a.astype(complex) array([ 6.+0.j, 1.+0.j, 3.+0.j, 9.+0.j, 8.+0.j])

39

Algoritmo Y Lenguajes De Programacin


Funciones sobre arreglos NumPy provee muchas funciones matemticas que tambin operan elemento a elemento. Por ejemplo, podemos obtener el seno de 9 valores equiespaciados entre 0 y /2 con una sola llamada a la funcin sin: >>> from numpy import linspace, pi, sin >>> x = linspace(0, pi/2, 9) >>> x array([ 0. , 0.19634954, 0.39269908, 0.58904862, 0.78539816, 0.9817477 , 1.17809725, 1.37444679, 1.57079633]) >>> sin(x) array([ 0. , 0.19509032, 0.38268343, 0.55557023, 0.70710678, 0.83146961, 0.92387953, 0.98078528, 1. ]) Como puede ver, los valores obtenidos crecen desde 0 hasta 1, que es justamente como se comporta la funcin seno en el intervalo [0, /2]. Aqu tambin se hace evidente otra de las ventajas de los arreglos: al mostrarlos en la consola o al imprimirlos, los valores aparecen perfectamente alineados. Con las listas, esto no ocurre: >>> list(sin(x)) [0.0, 0.19509032201612825, 0.38268343236508978, 0.5555702330 1960218, 0.70710678118654746, 0.83146961230254524, 0.9238795 3251128674, 0.98078528040323043, 1.0]

5.2 Arreglo bidimensionales.

Los arreglos bidimensionales son tablas de valores. Cada elemento de un arreglo bidimensional est simultneamente en una fila y en una columna. En matemticas, a los arreglos bidimensionales se les llama matrices, y son muy utilizados en problemas de Ingeniera. En un arreglo bidimensional, cada elemento tiene una posicin que se identifica mediante dos ndices: el de su fila y el de su columna. Crear arreglos bidimensionales Los arreglos bidimensionales tambin son provistos por NumPy, por lo que debemos comenzar importando las funciones de este mdulo:

40

Algoritmo Y Lenguajes De Programacin


from numpy import * Al igual que los arreglos de una dimensin, los arreglos bidimensionales tambin pueden ser creados usando la funcin array, pero pasando como argumentos una lista con las filas de la matriz: a = array([[5.1, 7.4, 3.2, 9.9], [1.9, 6.8, 4.1, 2.3], [2.9, 6.4, 4.3, 1.4]]) Todas las filas deben ser del mismo largo, o si no ocurre un error de valor: >>> array([[1], [2, 3]]) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: setting an array element with a sequence. Los arreglos tienen un atributo llamado shape, que es una tupla con los tamaos de cada dimensin. En el ejemplo, a es un arreglo de dos dimensiones que tiene tres filas y cuatro columnas: >>> a.shape (3, 4) Los arreglos tambin tienen otro atributo llamado size que indica cuntos elementos tiene el arreglo: >>> a.size 12 Por supuesto, el valor de a.size siempre es el producto de los elementos de a.shape. Hay que tener cuidado con la funcin len, ya que no retorna el tamao del arreglo, sino su cantidad de filas: >>> len(a) 3 Las funciones zeros y ones tambin sirven para crear arreglos bidimensionales. En vez de pasarles como argumento un entero, hay que entregarles una tupla con las cantidades de filas y columnas que tendr la matriz: >>> zeros((3, 2)) array([[ 0., 0.], [ 0., 0.], [ 0., 0.]]) >>> ones((2, 5)) array([[ 1., 1., 1., 1., 1.], [ 1., 1., 1., 1., 1.]]) Lo mismo se cumple para muchas otras funciones que crean arreglos; por ejemplo la funcin random: >>> from numpy.random import random >>> random((5, 2)) array([[ 0.80177393, 0.46951148], [ 0.37728842, 0.72704627], [ 0.56237317, 0.3491332 ],

41

Algoritmo Y Lenguajes De Programacin


[ 0.35710483, 0.44033758], [ 0.04107107, 0.47408363]]) Operaciones con arreglos bidimensionales Al igual que los arreglos de una dimensin, las operaciones sobre las matrices se aplican trmino a trmino: >>> a = array([[5, 1, 4], ... [0, 3, 2]]) >>> b = array([[2, 3, -1], ... [1, 0, 1]]) >>> a + 2 array([[7, 3, 6], [2, 5, 4]]) >>> a ** b array([[25, 1, 0], [ 0, 1, 2]]) Cuando dos matrices aparecen en una operacin, ambas deben tener exactamente la misma forma: >>> a = array([[5, 1, 4], ... [0, 3, 2]]) >>> b = array([[ 2, 3], ... [-1, 1], ... [ 0, 1]]) >>> a + b Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: shape mismatch: objects cannot be broadcast to a single shape Obtener elementos de un arreglo bidimensional Para obtener un elemento de un arreglo, debe indicarse los ndices de su fila i y su columna j mediante la sintaxis a[i, j]: >>> a = array([[ 3.21, 5.33, 4.67, 6.41], [ 9.54, 0.30, 2.14, 6.57], [ 5.62, 0.54, 0.71, 2.56], [ 8.19, 2.12, 6.28, 8.76], [ 8.72, 1.47, 0.77, 8.78]]) >>> a[1, 2] 2.14 >>> a[4, 3] 8.78 >>> a[-1, -1]

42

Algoritmo Y Lenguajes De Programacin


8.78 >>> a[0, -1] 6.41 Tambin se puede obtener secciones rectangulares del arreglo usando el operador de rebanado con los ndices: >>> a[2:3, 1:4] array([[ 0.54, 0.71, 2.56]]) >>> a[1:4, 0:4] array([[ 9.54, 0.3 , 2.14, 6.57], [ 5.62, 0.54, 0.71, 2.56], [ 8.19, 2.12, 6.28, 8.76]]) >>> a[1:3, 2] array([ 2.14, 0.71]) >>> a[0:4:2, 3:0:-1] array([[ 6.41, 4.67, 5.33], [ 2.56, 0.71, 0.54]]) >>> a[::4, ::3] array([[ 3.21, 6.41], [ 8.72, 8.78]]) Para obtener una fila completa, hay que indicar el ndice de la fila, y poner : en el de las columnas (significa desde el principio hasta el final). Lo mismo para las columnas: >>> a[2, :] array([ 5.62, 0.54, 0.71, 2.56]) >>> a[:, 3] array([ 6.41, 6.57, 2.56, 8.76, 8.78]) Note que el nmero de dimensiones es igual a la cantidad de rebanados que hay en los ndices: >>> a[2, 3] # valor escalar (arreglo de cero dimensiones) 2.56 >>> a[2:3, 3] array([ 2.56]) # arreglo de una dimensin de 1 elemento

>>> a[2:3, 3:4] # arreglo de dos dimensiones de 1 x 1 array([[ 2.56]])

43

Algoritmo Y Lenguajes De Programacin

5.3 Archivos. Los archivos son un mecanismo de abstraccin: proporcionan una forma de almacenar informacin en el disco y leerla despus. Cuando un proceso crea un archivo, le asigna un nombre. Cuando el proceso termina, el archivo sigue existiendo y otros procesos pueden acceder a l utilizando su nombre. Las reglas exactas para nombrar archivos varan tanto de un sistema a otro, pero todos los sistemas operativos permiten cadenas de 1 a 8 caracteres como nombres de archivos vlidos. En muchos casos se permite tambin dgitos y caracteres especiales.

Estructura de Archivos Los archivos pueden estructurarse de varias maneras. Tres posibles comunes son: Secuencia de bytes Secuencia de registros rbol

Tipos de Archivos o Archivos Regulares: Son los que contienen informacin del usuario. o Directorios: Son archivos de sistema que sirven para mantener la estructura del sistema de archivos. o Archivos Especiales por Caracteres: Estn relacionados con E/S y

44

Algoritmo Y Lenguajes De Programacin


sirven para modelar dispositivos deE/S en serie. o Archivos Especiales por Bloques: Sirven para modelar discos. Acceso a Archivos Los primeros sistemas operativos solo ofrecan un tipo de acceso a los archivos: Acceso Secuencial. En estos sistemas, un proceso poda leer todos los bytes o registros de un archivo en orden, comenzado por el principio, pero no poda saltar de un lado a otro y leerlos en desorden. Los archivos cuyos bytes o registros se pueden leer en cualquier orden se denominan Archivos de Acceso Aleatorio. Los Archivos de Acceso Directo son esenciales para muchas aplicaciones. Atributos de Archivos Todo archivo tiene un nombre y ciertos datos. Adems, todos los sistemas operativos asocian informacin adicional a cada archivo. Llamamos a estos datos adicionales Atributos del Archivo. La lista de atributos varia considerablemente de un sistema a otro. Operaciones con Archivos Los diferentes archivos ofrecen distintas operaciones de almacenamiento y recuperacin. Create Delete Open Close Read Write Append Seek Get attributes Set attributes Rename

45

Algoritmo Y Lenguajes De Programacin


5.4 Elaboracin de programas. Ejm: char c1,c2,c3; c1 = a; c2 = ); c3 = 9; Caractersticas de caracteres: o Secuencialidad de los caracteres o comparar caracters c1>c2 o maysculas < minsculas.. Ejemplo: int i; for (i=65; i<91; i++) Ejemplo: char c; for (c='a'; c<='z'; c++) ver car1.c y car2.c Problemas: o car1, car3, o tabla ascii o Conversin maysculas a minsculas Arreglo de caracteres char a[N]={'r','u','t','h'}; Problema: detectar un palndrome String: Cadena de caracteres. char linea[] = "buenos dias" b u e n o s d i a s \0 0 1 2 3 4 5 6 7 8 9 10 11 Ejemplos: o como asignar datos a un string [string1.c] o ingresa nombre y saluda [string2.c] o despliega las letras del nombre separadas con un blanco [string3.c]

46

Algoritmo Y Lenguajes De Programacin

UNIDAD 6: Funciones
6.1 Introduccin. Subalgoritmo. Se le llama as a cada una de las partes de un algoritmo ms general que resuelve cada una de las tareas particulares necesarias para que dicho algoritmo general alcance el objetivo para el que fue diseado, es decir resolver un problema. Las variables locales: se declaran dentro de un mdulo o Subalgoritmo y slo tienen utilidad dentro de ese mdulo, no se podr acceder a ellas desde otros mdulos. Pueden existir variables locales con el mismo nombre siempre que estn en mdulos diferentes. Las variables globales: son declaradas de forma que puedan ser utilizadas (consultada y/o modificada) desde cualquiera de los mdulos que forman el programa. En este caso, no puede haber dos variables globales con el mismo nombre, ya que esto producira una ambigedad que el compilador no podra resolver. Funcin. Tambin conocido como una subrutina o subprograma, como idea general, se presenta como un Subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea especfica. Algunos lenguajes de programacin, como Visual Basic .NET o Fortran, utilizan el nombre funcin para referirse a subrutinas que devuelven un valor. Una subrutina al ser llamada dentro de un programa hace que el cdigo principal se detenga y se dirija a ejecutar el cdigo de la subrutina, en cambio cuando se llama a una macro, el compilador toma el cdigo de la macro y lo implanta donde fue llamado, aumentando as el cdigo fuente y por consiguiente el objeto. Elementos de la declaracin de una subrutina. Las declaraciones de subrutinas generalmente son especificadas por:

47

Algoritmo Y Lenguajes De Programacin


Un nombre nico en el mbito: nombre de la funcin con el que se identifica y se distingue de otras. Un tipo de dato de retorno: tipo de dato del valor que la subrutina devolver al terminar su ejecucin. Una lista de parmetros: especificacin del conjunto de argumentos (pueden ser cero, uno o ms) que la funcin debe recibir para realizar su tarea. El cdigo u rdenes de procesamiento: conjunto de rdenes y sentencias que debe ejecutar la subrutina. Por ejemplo un seudocdigo puede ser Private Sub cmdregre_Click() (programa principal) Unload Me End Sub Sub Sumar(ByRef Valor As Long) Valor = Valor + 100 End Sub Private Sub cmdByRef_Click() Dim Un_Valor As Long Un_Valor = 100 Call Sumar(Un_Valor) MsgBox Un_Valor, vbInformation, "Modifica la variable" End Sub ( fin del programa) Donde se puede ver claramente donde inicia la funcin del programa y donde termina.

6.2 Funciones estndar. 1-Cadenas de caracteres. Len: Indica la cantidad de caracteres que tiene una determinada cadena. Lcase y Ucase: Convierte cadenas de texto a minscula y mayscula.

48

Algoritmo Y Lenguajes De Programacin


2-Con nmeros. Round: se utiliza para redondear un nmero decimal, devolviendo un nmero entero. Dim Mimumero As Long Minumero = Round (245.8) '(La funcin devuelve 246) 3-Fechas FormatCurrency: Formato en dinero. Ejemplo: FormatCurrency(txt1) esto quiere decir que los datos numricos puestos en el text box 1se dar en forma de dinero

FormatPercent: Porcentajes. Ejemplo: FormatPercent(txt2) los datos introducidos en text box 2 se dara en formato de porcentaje

. 4-Presentar mensajes en pantalla Funcin InputBox: Presenta un mensaje al usuario, permitindole ingresar un valor en una caja de texto.

49

Algoritmo Y Lenguajes De Programacin

6.3 Entrada y salida de datos.

La entrada de datos consiste en colocar en la memoria principal datos provenientes desde algn dispositivo de entrada (teclado, disco, etc.) para que la computadora, de acuerdo a un programa, realice una tarea. La salida de datos consiste en enviar datos (que, generalmente, son el resultado de un procesamiento) desde la memoria principal hacia un dispositivo de salida (pantalla, impresora, disco, etc.). La siguiente figura muestra un esquema conceptual del equipo de cmputo. o Esquema conceptual del equipo de cmputo La consola o En los albores de la computacin, el teclado y la pantalla formaban la consola. o En la actualidad, a la combinacin de teclado y pantalla se les sigue considerando como a la antigua consola. o En C#, la entrada y la salida de datos se pueden manejar a travs de los mtodos de la clase Console. o Entrada de datos desde el teclado Para la entrada de datos por medio del teclado se pueden utilizar los mtodos Read( ) y ReadLine( ) de la clase Console. Ejemplos: o System.Console.Read( ) ; // Lee el siguiente carcter desde el flujo de la entrada estndar. o System.Console.ReadLine( ) ; // Lee la siguiente lnea de caracteres desde el flujo de la entrada estndar. Salida de datos hacia la pantalla o La salida de datos hacia la pantalla se puede realizar utilizando los mtodos Write y WriteLine( ) de la clase Console.

50

Algoritmo Y Lenguajes De Programacin


Ejemplos: o System.Console.Write( ) ; // Escribe el siguiente carcter en el flujo de la salida estndar (la pantalla). o System.Console.WriteLine( ) ; // Escribe la siguiente lnea de caracteres en el flujo de la salida estndar. Cuadro de Mensaje Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn. Si se emplea como funcin, devuelve un tipo Integer correspondiente al botn elegido por el usuario. La sintaxis es: MsgBox (mensaje [, botones] [, ttulo] [, archivo Ayuda, contexto]) Cuando MsgBox se emplea como funcin, devuelve un tipo Integer correspondiente al botn elegido por el usuario. Visual-Basic tiene una serie de constantes memo-tcnicas que permiten fcilmente recordar las opciones posibles. Funcin InputBox El InputBox o cuadro de entrada es otro de los cuadros de dilogos utilizados para la interaccin del usuario con la aplicacin. El InputBox permite mostrar un cuadro de dilogo donde el usuario pasar un parmetro, valor o dato para que el programa lo trate y lo ejecute. El mensaje que quiere que aparezca se realiza de forma casi idntica al MsgBox. La sintaxis es: InputBox (mensaje [,ttulo][, estndar] [, posx][,posy][, archivo Ayuda , contexto]) Salida de datos Segn hemos visto, el mtodo Print visualiza datos en un formulario (objeto Form). As mismo, permite visualizar datos en la ventana inmediato (a travs del objeto Debug), en una caja de imagen (Control PictureBox) o en una impresora (utilizando el objeto Printer).

51

Algoritmo Y Lenguajes De Programacin


6.4 Funciones definidas por el usuario. Son funciones que el usuario crea para cubrir necesidades que estn fuera del alcance de las funciones estndar. Cada funcin tiene una misin muy concreta, de modo que nunca tiene un nmero de lneas excesivo y siempre se mantiene dentro de un tamao manejable. Es muy frecuente que al hacer una modificacin para aadir una funcionalidad o corregir un error, se introduzcan nuevos errores en partes del programa que antes funcionaban correctamente. Adems, una misma puede ser llamada muchas veces en un mismo programa, e incluso puede ser reutilizada por otros programas. Una funcin es capaz de mantener una gran independencia con el resto del programa. Las funciones siempre devuelven un valor al programa que las invoc. Para llamar a un procedimiento se escribe su nombre en el cuerpo del programa, y si los necesita, se incluyen los parmetros entre parntesis. Para invocar una funcin es necesario hacerlo en una expresin. Existen cuatro formas de pasar un argumento a una funcin (subrutina) o procedimiento: por valor, por referencia, por valor-resultado y por nombre. Ventajas de las funciones definidas por el usuario Las ventajas de utilizar las funciones definidas por el usuario en SQL Server son: Permiten una programacin modular. Puede crear la funcin una vez, almacenarla en la base de datos y llamarla desde el programa tantas veces como desee. Las funciones definidas por el usuario se pueden modificar, independientemente del cdigo de origen del programa. Permiten una ejecucin ms rpida. Al igual que los procedimientos almacenados, las funciones definidas por el usuario Transact-SQL reducen el costo de compilacin del cdigo Transact-SQL almacenando los planes en la cach y reutilizndolos para ejecuciones repetidas. Esto significa que no es necesario volver a analizar y optimizar la funcin definida por el usuario con cada uso, lo que permite obtener tiempos de ejecucin mucho ms rpidos. Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las funciones Transact-SQL para tareas de clculo, manipulacin de cadenas y lgica empresarial. Transact-SQL se adecuan mejor a la lgica intensiva del acceso a datos. Pueden reducir el trfico de red. Una operacin que filtra datos basndose en restricciones complejas que no se puede expresar en una sola expresin escalar se puede expresar como una

52

Algoritmo Y Lenguajes De Programacin


funcin. La funcin se puede invocar en la clusula WHERE para reducir el nmero de filas que se envan al cliente. Tipos de funciones o Funcin escalar: Las funciones escalares definidas por el usuario devuelven un nico valor de datos del tipo definido en la clusula RETURNS. En una funcin escalar insertada no hay cuerpo de la funcin; el valor escalar es el resultado de una sola instruccin. Para una funcin escalar de varias instrucciones, el cuerpo de la funcin, definido en un bloque BEGIN...END, contiene una serie de instrucciones de Transact-SQL que devuelven el nico valor. El tipo devuelto puede ser de cualquier tipo de datos excepto text, ntext, image, cursor y timestamp. Funciones con valores de tabla Las funciones con valores de tabla definidas por el usuario devuelven un tipo de datos table. Las funciones insertada con valores de tabla no tienen cuerpo; la tabla es el conjunto de resultados de una sola instruccin SELECT. o Funciones del sistema SQL Server proporciona numerosas funciones del sistema que se pueden usar para realizar diversas operaciones. No se pueden modificar. Para obtener ms informacin, vea Funciones integradas (Transact-SQL), Funciones almacenadas del sistema (Transact-SQL) y Funciones y vistas de administracin dinmica (Transact-SQL). [Top]

6.5 Pase por valor. Pasar por valor implica crear una nueva variable dentro de la funcin y pasarle una copia del valor de la variable externa. Si se modifica el valor de la variable copia, la variable original queda inalterada. Los tipos de valor incluyen lo siguiente: Todos los tipos de datos numricos Boolean, Char y Date Todas las estructuras, incluso si sus miembros son tipos de referencia Las enumeraciones, ya que su tipo subyacente es siempre SByte, Short, Integer, Long, Byte, UShort, UInteger o ULong

53

Algoritmo Y Lenguajes De Programacin

Pasando datos de tipo bsico Sea la funcin void funcion (int x){ x=5; System.out.println("dentro de la funcin: a="+x); } Sea la variable a que toma inicialmente el valor de 3. Cul ser el valor de a despus de la llamada a la funcin funcion? int a=3; funcion(a); System.out.println("despus de la llamada: a="+a); En primer lugar, recordaremos que la funcin denominada funcion tiene un nico parmetro x, cuyo alcance es desde la llave de apretura hasta la llave de cierre de la funcin. La variable x deja de existir una vez que la funcin retorna. Vamos a ver en este ejemplo el significado de "paso por valor". La variable a toma el valor inicial de 3. Cuando se llama a la funcin se pasa el valor de a en su nico argumento, el valor de a se copia en el parmetro x, la variable x toma el valor de 3. En el curso de la llamada a la funcin, el valor de x cambia a 5, pero cuando la funcin retorna, la variable x ha dejado de existir. La variable a no se ha modificado en el curso de la llamada a la funcin, y sigue valiendo 3. Durante el curso de la llamada a la funcin funcin, existe la variable a y su copia x, pero son dos variables distintas, aunque inicialmente guarden el mismo valor. Pasando objetos Creamos una clase Entero muy sencilla que tiene como miembro dato un nmero entero valor, y un constructor que inicializa dicho miembro pblico al crearse un objeto de la clase Entero. public class Entero { public int valor; public Entero(int valor){ this.valor=valor; } }

54

Algoritmo Y Lenguajes De Programacin


El valor devuelto por new al cear un objeto es una referencia a un objeto en memoria, que hemos denominado objeto. Creamos un objeto aInt de la clase Entero para guardar el nmero tres. Entero aInt=new Entero(3); funcion(aInt); El valor devuelto por new lo guardamos en aInt, y se lo pasamos a la funcin denominada funcion. void funcin(Entero xInt){ xInt.valor=5; } Dentro de la funcin denominada funcin disponemos en xInt de la referencia al objeto aInt. Como el argumento aInt y el parmetro xInt guardan la referencia al mismo objeto, es posible modificar dicho objeto en el curso de la llamada a la funcin, accediendo a sus miembros pblicos. Desde xInt accedemos al miembro pblico valor para modificarlo. Cuando la funcin retorna, el objeto aInthabr modificado su estado. public class ValorApp2 { public static void main(String[] args) { Entero aInt=new Entero(3); System.out.println("Antes de llamar a la funcin"); System.out.println("objeto.miembro "+aInt.valor); funcion(aInt); System.out.println("Despus de llamar a la funcin"); System.out.println("objeto.miembro "+aInt.valor); } public static void function(Enter xInt){ xInt.valor=5; } } Estos dos ejemplos, nos ponen de manifiesto el significado de la frase "pasar por valor un dato a una funcin", y el distinto comportamiento de los tipos bsicos de datos, que no se pueden modificar en el curso de la llamada a la funcin, de los objetos que si se pueden modificar. La referencia a un objeto se pasa por valor a la funcin. Dentro de la funcin, desde esta referencia podemos acceder a los miembros pblicos de dicho objeto para modificar su estado. Cuando la funcin retorna el objeto estar modificado.

55

Algoritmo Y Lenguajes De Programacin


6.6 Pase por referencia.

Pasar un argumento por referencia implica que en realidad se pasa a la funcin la variable original, de modo que la funcin puede modificar su valor. Los tipos de referencia incluyen lo siguiente: String Todas las matrices, incluso si sus elementos son tipos de valores Los tipos de clase, como Form Delegados

6.7 Punteros. Un puntero es un tipo simple que siempre est asociado a otro tipo (punteros a enteros, a reales, a registros, etc.) Se pueden ver los punteros como variables que almacenan direcciones de memoria; de aqu se deduce: Un puntero es un medio para acceder al contenido real apuntado por la variable. La declaracin de un puntero no implica que exista contenido apuntado por el misma. Es necesario crear y destruir explcitamente el contenido apuntado por punteros. Se puede establecer una analoga entre los punteros y las direcciones postales: Una direccin postal permite acceder al lugar fsico indicado. El hecho de disponer de una direccin postal no garantiza que el lugar exista. Para declarar variables de tipo puntero en la notacin algortmica se utiliza la sintaxis siguiente: variable puntero a tipo Por ejemplo: puntero a real

Una vez se declara un puntero pueden llevarse a cabo dos acciones bsicas sobre el mismo: Asignarle memoria para almacenar un dato del tipo al que apunta:

56

Algoritmo Y Lenguajes De Programacin


Crear Eliminar la memoria que tiene asignada y con ella el dato apuntado: Destruir Crear (variable puntero) Destruir (variable puntero) Es posible asignar a un puntero el contenido de otro; para hacer Esto es necesario que la variable a la que vamos a asignar un Valor no apunte a ningn dato pues en ese caso el dato original Quedara inaccesible. As pues, slo deberamos asignar un puntero a otro si el Puntero asignado no tiene memoria reservada

6.8 Elaboracin de programas.

Cdigo: Private Sub cmdconv_Click() If opt1.Value = True Then txt1 = UCase(txt1) opt1.Value = False End If If opt2.Value = True Then txt1 = LCase(txt1) opt2.Value = False End If End Sub Private Sub cmdend_Click() End End Sub Private Function suma(num1 As Integer, num2 As Integer) As Integer Dim resultado As Integer suma = num1 + num2

57

Algoritmo Y Lenguajes De Programacin


End Function Private Sub cmdsuma_Click() resultado = suma(175, 25) MsgBox "La suma de 175 + 25 = " & resultado, vbInformation, "Resultado de funcion" End Sub Private Sub Form_Load() End Sub Private Sub iblsuma_Click() resultado = suma(175, 25) lblsuma.Caption = resultado End Sub Pase por valor y pase por referencia El programa es un enunciado, lgicamente ordenado y clasificado, de los procedimientos de auditora que han de emplearse, la extensin que se les ha de dar y la oportunidad en que se han de aplicar. Dado que los programas de auditora se preparan anticipadamente en la etapa de planeacin, estos pueden ser modificados en la medida en que se ejecute el trabajo, teniendo en cuenta los hechos concretos que se vayan observando. Se acostumbra a elaborar un programa por cada seccin a examinar, el cual debe incluir por lo menos el programa de trabajo en un sentido estricto y el programa adscrito al personal del trabajo a realizar. Cada programa permite el desarrollo del plan de trabajo general, pero a un nivel ms analtico, aplicado a un rea en particular. El programa contiene prcticamente la misma informacin que el plan de trabajo, pero difiere de este en que se le han adicionado columnas para el tiempo estimado, el tiempo real, la referencia al papel de trabajo donde qued plasmada la ejecucin del programa, la rbrica de quien realiz cada paso y la fecha del mismo. Por medio de cada programa, el auditor adquiere control sobre el desarrollo del examen, pues estos adems de ser una gua para los asistentes sirven para efectuar una adecuada supervisin sobre los mismos, permitiendo tambin determinar el tiempo real de ejecucin de cada procedimiento para compararlo con el estimado y as servir de pauta para la planeacin de las prximas, as mismo, permite conocer en cualquier momento el estado de adelanto del trabajo, ayudando a la toma de decisiones sobre la labor pendiente por realizar. Generalmente el programa de auditora comprender una seccin por cada rea de los estados financieros que se examinan. Cada seccin del programa de auditora debe comprender:

58

Algoritmo Y Lenguajes De Programacin


o Una introduccin que describa la naturaleza de las cuentas examinadas y resuma los procedimientos de contabilidad de la compaa. o Una descripcin de los objetivos de auditora que se persiguen en la revisin de la seccin. o Una relacin de los pasos de auditora que se consideran necesarios para alcanzar los objetivos sealados anteriormente. Esta seccin debe tener columnas para indicar la persona que efecta el trabajo, el tiempo empleado y referencias cruzadas a las planillas o cdulas donde se realiza el trabajo. Funcin estndar Len

59

Algoritmo Y Lenguajes De Programacin

Conclusin

60

Algoritmo Y Lenguajes De Programacin


Fuentes de informacin www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html Mdulo 3. Constructores bsicos parte B teora
https://www.google.com.mx/?gws_rd=cr&ei=gvKUuq4I4bg2QWM8YDYAw#q=conclusion+de+Estructuras+Selectivas+y+de+Repetici%C3%B3n.

61