Está en la página 1de 133

CURSO DE INFORMATICA BASICA INTRODUCCION La tecnologa de la informacin y las comunicaciones ha logrado tan alto grado de desarrollo que hoy

est en todas partes y, si no en todas, en la mayora de las actividades del ser humano: en la educacin, la industria, el comercio, las finanzas, la investigacin, etc. Hoy en da, conocer la tecnologa y utilizarla ya no constituye ningn privilegio, por el contrario, es una necesidad. El uso de la tecnologa es un factor determinante en los niveles de eficiencia y competitividad tanto a nivel empresarial como personal. En este documento el lector encontrar la primera parte de un Curso de Informtica Bsica, correspondiente a los conceptos bsicos sobre el computador y sus componentes, y al manejo de las funciones primordiales del Sistema OperativoWindows 98. INFORMTICA: Es el tratamiento racional, automtico y adecuado de la informacin, por medio del computador, para lo cual se disean y desarrollan estructuras y aplicaciones especiales buscando seguridad e integridad. En el contexto de la informtica la informacin constituye un recurso de gran valor y se busca mantenerla y utilizarla de la mejor manera. BREVE HISTORIA DEL DESARROLLO DEL COMPUTADOR Se dice que el antecesor del computador fue el baco, del cual se cree que pudo haber tenido su origen hace cinco mil aos y por su funcionalidad fue utilizado hasta mediados del siglo pasado en Oriente Medio y Asia como instrumento de clculo. En nuestro medio, el baco, an se utiliza en las salas de billar. Despus del baco se hicieron mltiples intentos hasta lograr el computador como hoy lo conocemos. John Napier (1550-1617) un matemtico invent un dispositivo consistente en unos palillos con nmeros impresos que mediante un ingenioso y complicado mecanismo le permita realizar operaciones de multiplicacin y divisin. Blaise Pascal (1.623-1.662), filsofo francs, en 1642 present una mquina que sumaba y restaba, sta funcionaba con 8 ruedas giratorias, dos para los decimales y seis para los enteros y que poda manejar nmeros entre 000.000 01 y 999.999 99. Leibnitz (1646-1716) en 1672 present una mquina que poda, adems de sumar y restar, multiplicar, dividir y calcular la raz cuadrada. Joseph Jacquard (1.752-1.834) utiliz un mecanismo de tarjetas perforadas para controlar el dibujo formado por los hilos de las telas confeccionadas por una mquina de tejer. Charles Babbage, matemtico e inventor ingls, en 1822 dise su mquina diferencial para el clculo de polinomios, que fue utilizada con xito para el clculo de tablas de navegacin y artillera. Posteriormente trabaj en el diseo de una maquina de propsito general, que funcionaba con base en mecanismos de

entrada y salida, memoria, unidad de control y unidad aritmtico-lgica, como los computadores modernos. La mquina no se pudo construir mientras Babbage vivi. Herman Hollerith, invent un sistema de computo automtico para manipular los datos del censo de Estados Unidos en 1880, su mquina funcionaba con tarjetas perforadas en las que mediante agujeros se representaba el sexo, la edad, la raza etc. Ante las posibilidades comerciales de su mquina Hollerith dej las oficinas del censo en 1896 para fundar su propia Compaa la Tabulating Machine Company. En 1900 haba desarrollado una mquina que poda clasificar 300 tarjetas por minuto, una perforadora de tarjetas y una mquina de cmputo semiautomtica. En 1924, fusion su compaa con otras dos para formar la Internacional Bussines Machines hoy mundialmente conocida como IBM. En los aos siguientes, se trabaj intensamente tratando de crear una mquina que permitiera la realizacin de clculos automticos y a gran velocidad. Para no prolongar este texto ms all de lo necesario, se omiten algunos datos. El 9 de Abril de 1943, John Mauchly y Lieutenant Herman Goidstine recibieron aprobacin para adelantar un proyecto de construccin de la primera computadora, llamada ENIAC (Electronic Numerical integrator and Computer), aunque el presupuesto inicial fue de 150.000 dlares cuando la mquina estuvo terminada el costo total haba sido de 486.804 dlares. En un test de prueba en febrero de 1946 ENIAC resolvi en 2 horas un problema de fsica nuclear que previamente habra requerido 100 aos de trabajo de un hombre. Lo que caracterizaba al ENIAC como a los ordenadores modernos no era simplemente su velocidad de clculo sino el hecho de que combinando operaciones permita realizar tareas que antes eran imposibles. Entre 1939 y 1944 Howard Aiken de la universidad de Harvard en colaboracin con IBM desarroll el Mark 1 tambin conocido como calculador Automtico de Secuencia Controlada. Este poda multiplicar tres nmeros de 8 dgitos en 1 segundo y operaba con nmeros de hasta 23 dgitos. En 1946 el matemtico hngaro John Von Neumann propuso una versin modificada del Eniac a la que le llam Edvac (Electronic Discrete Variable Automatic Computer) que se construy en 1952. A diferencia con el ENIAC, esta maquina empleaba aritmtica binaria, lo que simplificaba los circuitos electrnicos de clculo, y trabajaba con programas almacenados En 1953 IBM fabric su primer computador para aplicaciones cientficas el 701 y seguidamente 702 y el 705, este ltimo fue un sistema revolucionario, el primero en emplear memorias de ncleos de ferrita. Con esta produccin y mediante una adecuada estrategia comercial IBM tomo la delantera en las ventas de tecnologa en todo el mundo. A partir de esta poca se siguieron fabricando y comercializando computadores cada vez ms sofisticados, evolucionando a tal grado la tecnologa de la informacin, hasta convertirse en lo que es hoy en da. EL COMPUTADOR Es una maquina electrnica diseada para la manipulacin y procesamiento de datos de datos, capaz de desarrollar complejas operaciones a gran velocidad. Tareas que manualmente requieren das de trabajo, el computador puede hacerlas en solo fracciones de segundo.

El computador es una mquina de propsito general, lo que significa que se utiliza en diversos campos de la actividad humana, solo por mencionar algunas, las finanzas, la investigacin, edicin de imgenes, edicin de texto, clculos matemticos, administracin de pequeas y grandes bases de datos, entre muchos otros. Para lograr cumplir con sus funciones el computador requiere de dos partes principales, una que es fsica, tangible, la maquinaria, a la que tcnicamente se le llama hardware y otra que es intangible, pero que est all y hace que el computador funcione, est formada por los programas y toda la informacin, esta se llama software. Tanto el Hardware como el Software se clasifican segn la funcin que desempean, como se puede apreciar en la grfica siguiente: ORGANIZACIN FISICA DEL COMPUTADOR (HARDWARE) El computador, habiendo sido diseado para el procesamiento de datos, su organizacin es similar a la de cualquier otro proceso. Indiferente de lo que se desee procesar, siempre se tendrn tres elementos importantes, la materia prima, la transformacin que es el proceso en s, y el producto final, es decir la materia prima transformada en un nuevo producto. As, el computador est conformado por dispositivos de entrada, unidad central de procesamiento, dispositivos de salida y adicionalmente memoria externa o dispositivos de almacenamiento. Dispositivos de entrada Estos son, teclado, ratn, escner, micrfono, entre muchos otros, todos ellos permiten entrar datos al sistema. Los datos son transformados en seales elctricas y almacenados en la memoria central, donde permanecern disponibles para ser procesados o almacenados en medios de almacenamiento permanente. Unidad central de procesamiento Comnmente se la conoce como CPU, que significa Central Processing unit, sta es quiz la parte ms importante del computador, ya que en ella se encuentra la unidad de control y la unidad aritmtico-lgica, las cuales en constante interaccin con la memoria principal (tambin conocida como memoria interna) permiten manipular y procesar la informacin, y controlar los dems dispositivos de la unidad computacional.

Memoria externa Tambin se la conoce como memoria auxiliar, sta es la encargada de brindar seguridad a la informacin almacenada, por cuanto guarda los datos de manera permanente e independiente de que el computador est en funcionamiento, a diferencia de la memoria interna que solo mantiene la informacin mientras el equipo est encendido. Los dispositivos de almacenamiento son discos y cintas principalmente, los discos pueden ser flexibles, duros u pticos. Disco Magntico: es una superficie plana circular, puede ser plstica o metlica, recubierta con oxido de hierro. La superficie recubierta es magnetizada formando puntos microscpicos, cada uno de los cuales acta como un pequeo imn permanente. Segn la polarizacin de los puntos la seal puede indicar falso o verdadero, 0 o 1. Los puntos se disponen en forma de lneas concntricas que reciben el nombre de pistas y se numeran desde 0 comenzando desde el exterior. Para poder establecer las direcciones en que se almacena la informacin, es necesario trazar lneas en sentido perpendicular a las pistas, estas se denominan sectores y dividen el disco en forma similar a como se cortan las rebanadas de un pastel. Cada sector tiene una direccin nica en el disco. El proceso de trazado de pistas y sectores en un disco se denomina formatear que equivale a preparar el disco para que pueda almacenar informacin de manera confiable. Discos flexibles: comnmente estn fabricados en material plstico y tienen la particularidad de que pueden ser introducidos y retirados de la unidad de disco o drive. Estos son muy tiles por cuando son pequeos y fciles de portar sin embargo su capacidad de almacenamiento es pequea y su velocidad de acceso es baja. Los discos flexibles ms utilizados en el momento son los de 3.5 pulgadas que almacenan 1.44 megabytes. Los discos flexibles tienen la desventaja que pueden daarse con facilidad, por ello es importante tener en cuenta algunos cuidados, como son: No doblarlos, ni arquearlos No presionarlos No acercarlos a campos magnticos Discos duros: a diferencia de los discos flexibles, estos estn hechos generalmente de aluminio, giran a una velocidad 10 veces mayor y su capacidad de almacenamiento es muy grande (40 gigabytes). Un disco duro es un paquete hermticamente cerrado, conformado por varios discos o placas, sus respectivas cabezas de lectura/escritura y la unidad de disco. El disco duro constituye el medio de almacenamiento ms importante de un computador, ya que en la actualidad, por los volmenes de informacin que se maneja, es muy difcil trabajar sin ste. CD-ROM: disco compacto de solo lectura. Estos discos forman parte de la nueva tecnologa para el almacenamiento de informacin. Esta tecnologa consiste en almacenar la informacin en forma de pozos y planos microscpicos que se forman en la superficie del disco. Un haz de un pequeo lser en el reproductor de CD-ROM ilumina la superficie y refleja la informacin almacenada. Un disco compacto de datos, en la actualidad, almacena 650 y 700 megabytes de informacin.

Dispositivos de salida Permiten presentar los resultados del procesamiento de datos, son el medio por el cual el computador presenta informacin a los usuarios. Los ms comunes son la pantalla y la impresora. Pantalla o monitor: exhibe las imgenes que elabora de acuerdo con el programa o proceso que se est ejecutando, puede ser videos, grficos, fotografas o texto. Es la salida por defecto donde se presentan los mensajes generados por el computador, como errores, solicitud de datos, etc. Hay dos grandes clasificaciones de los monitores: los monocromticos que presentan la informacin en gama de grises y lo policromticos o monitores a color que pueden utilizar desde 16 colores hasta colores reales. Los monocromticos son cada vez menos usados, sin embargo aun quedan muchos de este tipo en el mercado. En los monitores de color existen dos tipos, los VGA y los SVGA (superVGA). Estas caractersticas determinan la cantidad de colores que pueden reproducir y la resolucin o nitidez. Toda pantalla est formada por puntos de luz llamados pixeles que se iluminan para dar forma a las imgenes y a los caracteres. Cuantos ms pixeles tenga una pantalla mejor es su resolucin, por eso se habla de pantallas de 640 x 480, de 600x800 y de 1280 x 1024, siendo las ltimas las de mayor nitidez. La distancia existente entre los puntos se conoce como dot pitch y es inversamente proporcional a la resolucin de la pantalla, entre menor sea la distancia entre puntos, mejor es la imagen. En el mercado se escucha ofertas de equipos con pantalla superVGA punto 28, esto significa que la pantalla es de tipo SPVGA y que la distancia entre puntos es de 0.28 mm. Impresora: fija sobre el papel la informacin que se tiene en pantalla, en archivo o el resultado de un proceso. La impresin puede ser en negro o en colores segn el tipo de impresora que se tenga. Hay tres grupos de impresoras: las de matriz de puntos, las de burbuja y las laser. Las primeras son las ms antiguas, son ruidosas y lentas, pero muy resistentes y econmicas. Se llaman de matriz de puntos porque forman los caracteres mediante puntos marcados por los pines del cabezote. Hasta hace poco eran muy econmicas, pero en la actualidad, algunas series, son mucho ms costosas que las impresoras de otros tipos. Las impresoras de burbuja, tambin se llaman de inyeccin de tinta, estas son silenciosas e imprimen hasta cinco pginas por minuto, la calidad de impresin es muy buena, el costo de la impresora es moderado, sin embargo el costo de la impresin es alto. No son recomendables para trabajo pesado. Las impresoras lser trabajan como una fotocopiadora y producen imgenes de optima calidad, tienen un bajo nivel de ruido y son las ms rpidas, las impresoras son costosas pero la impresin es econmica. Son recomendables para trabajos grficos profesionales. Hasta el momento se ha centrado la atencin en la parte fsica del computador, ahora se presenta la parte intangible, que al igual que la anterior, tambin est clasificada segn la funcin que realiza.

EL SOFTWARE Como se anot anteriormente, est conformado por toda la informacin, ya sean instrucciones o datos, que hacen que el computador funcione, sin el concurso de ste el hardware no realizar ninguna funcin. El software est clasificado en cuatro grupos, segn la tarea que realiza. SISTEMA OPERATIVO Es un conjunto de programas indispensable para que el computador funcione. Estos se encargan de administrar todos los recursos de la unidad computacional y facilitan la comunicacin con el usuario. El sistema operativo cuenta con programas especializados para diversas tareas, como son la puesta en marcha del equipo, la interpretacin de comandos, el manejo de entrada y salida de informacin a travs de los perifricos, acceso a discos, procesamiento de interrupciones, administracin de memoria y procesador, entre otros. Algunos sistemas operativos conocidos son Windows, con versiones 95, 98, 2000, Mileniun y NT; DOS; Netware; Unix, Linux, entre otros. SOFTWARE DE APLICACIN Es un conjunto de programas diferente al software del sistema, stos se encargan de manipular la informacin que el usuario necesita procesar, son programas que desarrollan una tarea especfica y cuya finalidad es permitirle al usuario realizar su trabajo con facilidad, rapidez, agilidad y precisin. Entre el software de aplicacin se tiene varios grupos, como son: procesadores de texto, hoja electrnica, graficadores, bases de datos, agendas, programas de contabilidad, aplicaciones matemticas, entre otros, algunos ejemplos son: Word, Excel, Acces, Corel.Draw, Foxpro, Trident, etc LENGUAJES DE PROGRAMACION En trminos coloquiales, son programas que sirven para crear otros programas. Al igual que el lenguaje natural constan de sintaxis, semntica y vocabulario que el computador puede entender y procesar. Los lenguajes de programacin se clasifican en tres categoras: lenguaje de mquina, lenguaje de bajo nivel y lenguaje de alto nivel. En la actualidad se utilizan los ltimos, cuyo vocabulario est formado por trminos en ingls, como son: C++, Foxpro, Visual Basic, Java, HTML. DATOS Esta categora est conformada por toda la informacin que el usuario introduce y procesa en el sistema, por ejemplo la informacin almacenada en las bases de datos, los textos y grficos. AUTOEVALUACION A qu se debe el acelerado desarrollo de los computadores y el uso generalizado? De los inventores y cientficos que hicieron sus aportes al desarrollo del computador actual cul considera de mayor importancia?

Cul considera es la caracterstica ms importante del computador? De qu manera el computador puede ayudarle en sus actividades diarias? Si en este momento tuviera que adquirir una impresora, de qu tipo la comprara. Por qu? De las categoras del software estudiadas cul le parece ms importante? Que sistemas operativos conoce? Cul le parece mejor? Que programas de aplicacin conoce? Para qu sirven? SISTEMA OPERATIVO DE WINDOWS 98 Es un sistema operativo con una interfaz grfica desarrollado por la empresa Microsoft para computadores compatibles con la familia IBM. Decir que windows tiene una interfaz grfica significa que cuenta con una presentacin agradable para el usuario donde cada elemento de informacin es representado con un smbolo grfico (icono) que facilita el manejo. Inicialmente windows era una aplicacin para computadoras personales que se ejecutaba sobre el sistema operativo DOS, hasta que se desarroll la versin Windows 95, luego se han ofrecido las versiones Windows 98, Windows 2000 y Windows Mileniun. CONCEPTOS BASICOS Algunos conceptos importantes para el trabajo en ambiente windows son: Ventanas: rea rectangulas en la pantalla donde se muestra o se accede a informacin. Cada aplicacin en windows se abre sobre una ventana diferente. Icono: smbolo o pequeo grfico que representa un programa, un archivo o cualquier otro elemento de informacin. Barra de tareas: Franja ubicada en alguna de las orilla de la pantalla donde se encuentra el botn inicio y algunos iconos de aplicaciones instaladas. En esta barra se muestran las ventanas abiertas. Puntero del mouse: es la figura que representa el mause. Entre las representaciones grficas ms comunes de punteros se encuentran una punta de flecha, una pequea mano (para accesar una liga), una barra vertical (para insertar texto) o un reloj de arena (simbolizando que hay que esperar pues el sistema est realizando alguna operacin). El puntero permite seleccionar objetos en la pantalla. Men: consiste en un listado de opciones que indican operaciones a realizar o alternativas de seleccin, por ejemplo, un listado de archivos. Los mens pueden tener dos formas: barra de men, cuando las opciones estn dispuestas en forma orizontal y men emergente, cuando el men aparece en cuando se escoge una opcin en una barra de men. Clic: es el evento de presionar alguno de los botones del mouse. Doble clic: significa que el botn del mause se presiona dos veces rpidamente. Archivo: es un conjunto de datos almacenado en disco de manera estructurada de manera que el computador los puede accesar, ya sea mediante funciones del sistema operativo o mediante programas de aplicacin. Hay

diversas clases de archivos, las instrucciones que conforman los programas tambin reposan en un archivo, otros tipos de archivos pueden ser las cartas, bases de datos, graficos, etc. Todo archivo consta de un nombre y una extensin, el nombre puede ser de hasta 80 caracteres, la extensin de solamente tres, sta ltima indica el tipo de archivo que es y el programa con el que puede ser abierto. Por ejemplo, las aplicaciones tienen extensin .exe, los trabajos realizados en word .doc y los realizados en Excel .xls. Carpeta: es un archivo especial que tiene la particularidad contener otros archivos. Las carpetas fueron pensadas para organizar la informacin en el computador, dentro de ellas se puede almacena archivos y otras carpetas. Comenzar con Windows

Dado que windows es un sistema operativo, para poder ejecutarlo es necesario que est instalado como tal. El sistema operativo se ejecuta automticamente al encender el equipo. Al encender un equipo que tenga el sistema operativo Windows, despus de hacer el reconocimiento de recursos y configuracin, se cargar el entorno grfico y aparecer en pantalla el Escritorio. Se le llama escritorio al rea en la que se ubican los iconos de uso ms frecuente y donde se despliegan las aplicaciones en el momento en que se ejecutan. En el escritorio se encuentra la Barra de Tareas y en ella el Botn Inicio, estos dos elementos desempean una funcin muy importante en el ambiente Windows. El botn Inicio da acceso al men principal de Windows, donde se encuentra entre otras, la opcin Programas, sta permite ejecutar cualquiera de las aplicaciones instaladas en el computador. La Barra de Tareas, en primer lugar, contiene iconos de acceso a diversas aplicaciones como el Internet Explorer, el Escritorio, entre otros, adems en ella se ver el nombre de las aplicaciones que se tengan abiertas y nos permitir navegar a travs de ellas. Cerrar Windows:

Cuando se trabaja con Windows es conveniente tener presente que antes de apagar el computador es necesario cerrar el Sistema Operativo, para que toda la informacin se que est en memoria sea depositada sobre los discos correspondientes. Igualmente es recomendable que antes de cerrar Windows guarde los documentos y cierre todas las aplicaciones que est utilizando, aunque al cerrar Windows ste le presentar mensajes de advertencia y le pedir que guarde los documentos que estn abiertos, se corre menos riesgo de perder informacin cuande se procede de forma ordenada.

Para cerrar Windows haga clic sobre el botn Inicio, luego seleccione Apagar el Sistema. Tendr el cuadro de dipalogo que se muestra a continuacin. Asegrese que est sealada la opcin Apagar el sistema y haga clic en Aceptar. Antes de apagar el computador espere que aparezca un mensaje en pantalla indicndole que ya puede apagar el equipo. Si no aparece ningn mensaje, es posible que el computador cuente con fuente electrnica y se apague automticamente. AUTOEVALUACION De lo que ha observado y conoce de Windows qu es lo que ms de gusta? Qu importancia tiene el modo grfico para el usuario? Qu diferencia existe entre Carpeta y Archivo? Qu pasara si no existiera el concepto de carpeta? Qu pasara si al terminar su trabajo en el computador, simplemente lo desconecta de la energa electrica? MANEJO DE VENTANAS Todas las ventanas de windows tienen una estructura semejante y se pueden realizar con ellas las mismas operaciones. En el grfico siguiente se presenta la estructura bsica de una ventana.

Las operaciones que se pueden realizar sobre ventanas son: abrir, maximizar, minimizar, restaurar, cerrar, mover, cambiar tamao. Abrir: una ventana se abre automticamente cuando se ejecuta una aplicacin, cuando se accede a un archivo o documento o cuando se invoca una determinada funcin en un programa, por ejemplo Guardar o Corregir ortografa. Para ejecutar una aplicacin o para abrir un documento se hace doble clic en el icono que lo representa o clic en la opcin de men correspondiente, segn el caso. Haga clic en el icono que llamado Mi Pc, que aparece en el escritorio, luego presione Enter. Observe que se ha abierto la ventana de Mi Pc, tambin se puede abrir haciendo doble clic sobre el icono, o haciendo clic con el botn derecho y luego seleccionado la opcin Abrir. Maximizar: algunas veces cuando se abre una ventana, esta solo ocupa una parte de la pantalla, por comodidad puede preferirse que la ventana ocupe la totalidad de la pantalla, a este proceso se le llama maximizar y se logra haciendo clic sobre el botn que se encuentara en la parte superior derecha de la ventana. Al abrir la ventana de Mi Pc, esta se abri en su tamao normal, se desea que ocupe toda la pantalla, solo hay que hacer clic en el botn maximizar. Intntelo. Minimizar: consiste en ocultar la ventana, generalmente se lo hace cuando se requiere despejar la pantalla o cuando se dejar de utilizar la ventana temporalmente. Igualmente, se hace clic sobre el botn correspondiente. Al minimizar la ventana deja de estar visible, pero se conserva con toda su informacin, y el nombre de la ventana o del documento que contiene aparece en la Barra de Tareas. Minimice la ventana que est abierta y observe.

Restaurar: consiste en volver la ventana a su tamao normal y se ejecuta despus que la ventana ha sido minimizada o maximizada. Cuando ha sido minimizada, el nombre de la ventana aparece en la barra de tareas, para restaurarla se hace clic sobre l. Cuando ha sido maximizada, el botn maximizar cambia de forma, ya no ser un cuadro, sino dos cuadros, como se muestra en la figura. Si ha seguido el ejercicio segn se ha propuesto, en este momento la ventana Mi Pc debe estar minimizada, y su nombre aparecer en la Barra de Tareas, haga clic sobre el para que la ventana vuelva a estar visible. Si la ventana est maximizada, puede observar el cambio en el botn de control, para volver la ventana a su tamao normal, haga clic en el botn restaurar. Mover: para mover una ventana es necesario que sta no est en su mxima amplitud, porque de ser asi no habra para donde moverla. Para mover una ventana en la pantalla es suficiente con hacer clic en la barra de ttulo, mantener presionado el botn del mouse y arrastrar en el sentido que se quiere efectuar el movimiento. Cambiar tamao: para cambiar el tamao de una ventana, sin que se llegue a maximizarla o a minimizarla, se lleva el puntero de mouse hacia el borde de la ventana y este cambiar de forma convirtindose en una flecha bidireccional, luego se hace clic y se arrastra manteniendo presionado el botn. Para su prctica de mover y cambiar tamao de ventanas, abra la Papelera de Reciclaje, este icono tambin lo encontrar en el escritorio. Ahora que tiene dos ventanas abiertas, cambie el tamao y muvalas para colocarlas la una junto a la otra, sin que se sobrepongan y utilizando todo el espacio de la pantalla. Si ya hizo el ejercicio anterior, es hora de probar con tres ventanas, abra otra ventana cualquiera y acomdelas de manera que las tres ventanas estn visibles y tengan el mismo tamao. Ordenar ventanas en pantalla: el trabajo que realiz anteriormente, ajustar el tamao y ordenar las ventanas en la pantalla suele ser necesario con frecuencia, por ello windows cuenta con tres opciones para hacerlo de manera fcil y rpida. Para tener acceso a las opciones de ordenamiento de ventanas, haga clic con el botn derecho en un lugar despejado de la Barra de Tareas, Obtendr el men contextual que se muestra en la grfica. Asegurece de tener tres o mas ventanas abiertas y no minimizadas, luego pruebe las opciones Cascada, Mosaico Horizontal y Mosaico Vertical, las opciones del siguiente grupo, aparecen segn el estado en que se encuentren las ventanas, observe como cambian segn las opciones que est ejecutando. Cerrar: una ventana se cierra cuando se termina la ejecucin de la aplicacin. Antes de cerrar una ventana es necesario grabar la informacin, puesto que al cerrarla se liberar el espacio en memoria y los datos que no hayan sido grabados se perdern. Para terminar la el trabajo con una aplicacin se hace clic en el botn cerrar. Es hora de cerrar las ventas todas las ventanas. MANEJO DE DISCOS,CARPETAS Y ARCHIVOS Windows permite gestionar discos, carpetas y archivos desde diferentes utilidades, sin embargo, las ms utilizadas son Mi PC y el Explorador de Windows. En este documento se presentar el manejo estos recursos

utilizando el Explorador, una vez que est familiarizado con el manejo de esta aplicacin podr utilizar Mi Pc sin ninguna dificultad, ya que permiten realizar las mismas tareas. Cmo abrir el explorador: Para cargar el explorador haga clic en el botn Inicio, luego seleccione la opcin Programas, obtendr una lista con todos los programas instalados en disco, busque Explorador de Windows y haga clic. Tambin puede abrir el explorador haciendo clic con el botn derecho sobre el botn Inicio, se desplegar un pequeo men contextual, luego seleccione la opcin Explorar.

Al ejecutarse el explorador, ste abrir automticamente la carpeta del Men Inicio de Windows. Tenga presente que antes de ejecutar cualquier accin deber ubicarse en el disco y en la carpeta con la que desea trabajar. En la ventana del explorador se puede apreciar las caractersticas de la ventana tal como se describieron anteriormente. Esta ventana, en particular, est dividida en dos secciones o listas, la lista de la izquierda muestra los recursos de la unidad computacional, comenzando por el escritorio, discos, carpetas, impresora, conexin a red, mientras que la lista de la derecha muestra el contenido del recurso seleccionado en la izquierda, por ejemplo, si en la izquierda se selecciona la unidad de disco duro C:, en la derecha se mostrar las carpetas y archivo que estn almacenadas en este disco. Si en la izquierda se selecciona la carpeta Mis documentos, en la derecha aparecern el contenido de dicha carpeta, que pueden ser archivos y carpetas. Abrir discos y carpetas: Lo primero que se debe tener en cuenta al trabajar con el Explorador es el disco con el que se est trabajando. En la lista de la izquierda se encontrar un icono con la etiqueta Disco de 3 [A:], este icono se refiere al disco flexible. Antes de hacer clic en este icono para ver el contenido, es necesario verificar que la unidad contiene un disco, en caso contrario, se presentar un error.

Los discos duros se reconocen por el icono y porque entre los parentesis aparecer la letra C y/o D, la etiqueta no siempre es la misma, ya que se muestra la etiqueta que se le ha asignado al disco duro. Las unidades de multimedia se designan con las letras que siguen a las de los discos duros y cuentan con su propio icono. Para selecciona cualquier elemento de la lista y ver su contenido en el lado derecho de la ventana, es suficiente con hacer clic sobre el icono o sobre el nombre del mismo, por ejemplo, hacer clic en la carpeta llamada Windows. O si cuenta con un disco de 3 puede hacer clic sobre el icono o la etiqueta de esta unidad para examinar su contenido. Desplegar una estructura de carpetas Una carpeta puede contener varias carpetas y cada una de estas a su vez pueden contener otras, de esta manera se crea una estructura de carpetas. Esto se hace para organizar de mejor manera la informacin. Puede suceder que al momento de explorar su disco no mire todas las carpetas porque la estructura no est desplegada. Observe, en la grfica anterior, que a la izquierda de las unidades de disco hay un signo +, este signo indica que dicha carpeta contiene subcarpetas y a la vez permite que se muestren. Para ver que carpetas estn dentro de un disco, o de una carpeta, solo necesita hacer clic sobre el signo + que est a la izquierda de la misma. Esto no significa que se abrir la carpeta, solo que se mostraran las subcarpetas. Si hay un + a la izquierda del disco duro C:, haga clic sobre el, luego sobre el signo a la izquierda de la carpeta Archivos de programa, y asi sucesivamente hasta que toda la estructura est desplegada. Al desplegar la estructura el signo + se cambiar por el signo -, esto indica que la estructura o tambin llamada rbol est expandida y que puede ser recogida. Realice el ejercicio contrario, ahora haga clic sobre los sinos menos hasta que no se mire ningn icono de de carpeta en el lado izquierdo de la ventana. Formas de ver la informacin: Hay varias maneras de ver la informacin de los discos y carpetas, entre ellas las ms importantes son Ver como Pgina Web, Lista y Detalles. Para establecer un tipo de visualizacin haga clic en la opcin Ver en la Barra de men. Establezca cada una de estas opciones y observe como cambia el contenido de la ventana y describa la diferencia entre cada una de estas formas. Orden de los archivos: El orden en que se muestran los archivos puede facilitar su localizacin. Para cambiar el orden en que se muestran los archivos en la lista de la izquierda, haga uso del men Ver y seleccione la opcin Organizar iconos. Encontrar que puede ordenar teniendo en cuenta el nombre, el tipo, el tamao o la fecha.

Practique cada una de estas posibilidades. Formatear un disco: Formatear un disco es un proceso previo a guardar informacin en l, se puede aplicar a discos flexibles y a discos duros. Es preciso tener presente que cuando se formatea un disco se pierde toda informacin que se hubiera almacenado anteriormente en l, es especial hay que ser muy cuidadoso antes de formatear un disco duro. Los discos flexibles que se compran ya estn formateados, sin embargo es recomendable formatearlos antes de usarlos por razones de seguridad de la informacin.

Para formatear un disco flexible, haga clic con el botn derecho del mouse, luego seleccione la opcin Dar Formato, tendr el siguiente cuadro de dilogo. Windows ofrece dos alternativas para formatear un disco, formato rpido, consiste en eliminar la informacin, pero no se revisar la superficie del disco. El formato Completo, revisa toda la superfice del disco, elimina la informacin y marca los sectores defectuosos. La tercera opcin, Copias solo archivos del sistema, es una opcin que permite copiar los archivos del sistema para crear un disco de arranque. Un disco de arranque es aquel que contiene los archivos que hacen que el computador encienda. En el cuadro de texto etiqueta, puede escribir un nombre para el disco. ntroduzca su disco de tres un medio en la unidad de disco, siga los pasos para formatear un disco, primeramente aplique formato Completo, tenga en cuenta el tiempo que tarda el proceso, luego vuelva a formatear seleccionando la opcin Formato Rpido, observe el tiempo requerido y saque sus conclusiones. Copiar un disco:

Copiar un Disco significa hacer una copia exacta de disco origen, por tanto es necesario tener en cuenta que el disco en que se hace la copia est vaco, en caso contrario la informacin se perder. Si solo se desea copiar algunos archivos de un disco a otro, el procedimiento es diferente y ser presentado ms adelante. Para copiar toda la informacin de un disco a otro, se sigue la siguiente secuencia de pasos: Verifique que la capacidad de los discos sea igual Introduzca el disco que contiene la informacin en la unidad (disco origen) Haga clic con el botn derecho sobre Disco de 3 Seleccione la opcin Copiar Disco En el cuadro de dilogo que aparecer en pantalla verifique que la unidad de disco origen y destino sean correctas, luego haga clic en el botn Iniciar Cuando el computador termine de leer la informacin del disco origen, le solicitar que introduzca el disco destino. Creacin de carpetas Para crear una nueva carpeta es necesario tener en cuenta que sta se crear dentro de la carpeta y unidad de disco que tenga abierta en el momento de crearla. Por ejemplo, si tiene abierta la unidad de disco C:, pero ninguna carpeta de las contenidas en ella, la nueva carpeta se crear en C:, de igual forma, si tiene abierta la carpeta Mis documentos, la nueva carpeta se almacenar dentro de Mis documentos. Para crear una carpeta siga los siguientes pasos: Abra la carpeta en la cual pretende almacenar la nueva carpeta Haga clic en Archivo, en la Barra de Men Seleccione la opcin Nuevo Seleccione la opcin Carpeta Escriba el nombre de la carpeta que acaba de crear Ejemplo: Como ejemplo se crear una carpeta en la unidad Disco de 3: a la que se llamar EJEMPLO, para ello lo primero que hay que hacer es hacer clic en disco de 3: en la ventana de la izquierda de manera que la nueva carpeta se cree en esta unidad de disco. Esto constituye el paso uno de la lista anterior Luego siga los pasos del 2 a 5, recuerde que el nombre de la carpeta ser EJEMPLO, esto para poder referirnos a ella en lo que sigue del curso.

Si se quiere crear dentro de la carpeta EJEMPLO otra carpeta llamada COMPUTADOR, ser necesario abrir la carpeta EJEMPLO, para ello solo hay que buscarla en la lista de la izquierda del explorador y hacer clic sobre ella. Luego se sigue los mismos pasos que para la primera. Ejercicios: 1. Cree dentro de la carpeta computador dos carpetas con los nombres: Hardware y Software Dentro de la carpeta Hardware cree las carpetas: Entradas, Procesos, Salidas, Almacenamiento. Dentro de cada una de las capetas que acaba de crear (Entradas, Proceso,...) cree nuevas carpetas con ejemplos de cada una de estas partes, es decir que dentro de la carpeta Entradas debern aparecer carpetas con nombres como Teclado, Raton, etc. Haga lo mismo para la parte del software, segn su clsificacin. Tambin dentro de la carpeta EJEMPLO cree una carpeta llamada ARCHIVOS y dentro de esta cree las siguientes: DOCUMENTOS, HOJA DE CALCULO, PRESENTACIONES, IMGENES. Creacin de archivos En general los archivos se crean al trabajar con software de aplicacin y guardar los trabajos realizados, por ejemplo, si escribe una carta utilizando Word, al guardar la carta se crear un archivo en la carpeta que seleccione para almacenar dicha carta. Pero tambin pueden crearse archivos desde el Explorador de Windows, los cuales pueden ser abiertos y editados por las aplicaciones correspondientes segn el tipo de archivo que se cree.

Para crear un archivo, tambin es necesario saber que se crear en la carpeta que est abierta en el momento de crearlo.

Para crear un archivo siga los siguientes pasos: Haga clic en Archivo en la Barra de men Haga clic en Nuevo Seleccione el tipo de archivo que desea crear Escriba el nombre del archivo En el paso 3, tendr una lista de posibilidades de archivos segn las aplicaciones que se tengan instaladas en el computador, posiblemente tenga algunas de las opciones que se muestra en la grfica. Ejemplo: Abra la carpeta IMGENES. Haga clic en Archivo, Nuevo y seleccione en la lista la opcin Imagen de mapa de bits. De un nombre al archivo, por ejemplo: Imagen01. Haga doble clic en el nombre del archivo creado para abrir la aplicacin y poder editarlo. Ejercicio: En cada una de las carpetas creadas dentro de ARCHIVOS cree tres archivos teniendo en cuenta su tipo, los Documentos se pueden crear como archivos de word o archivos de texto, la hola de clculo se crea con Excel y las presentaciones con Power point. Seleccionar archivos: Los archivos o carpetas se seleccionan cuando se desea realizar alguna tarea sobre ellos, por ejemplo, copiar, mover o borrar. Para seleccionar un archivo o carpeta, basta con hacer clic sobre el (ella). Para seleccionar todos los archivos de una carpeta puede presionar Ctrl+E, o tambin hacer clic en Edicin y luego en Seleccionar todo. Para seleccionar varios archivos, puede ir marcando uno a uno haciendo clic sobre ellos mientas mantiene presionada la tecla Ctrl. Para efectos de seleccionar, copiar, mover, Eliminar y Cambiar nombre, los archivos y las carpetas tienen el mismo manejo. Copiar y mover archivos: Antes de comenzar a practicar es conveniente que haya claridad sobre lo que es copiar y lo que es mover. Se dice que se copia un archivo o una carpeta, cuando teniendo un archivo X en una carpeta C1 se hace un duplicado exactamente igual del archivo X en la carpeta C2, es decir, despus de efectuar el proceso de copia se tendr dos archivos iguales, naturalmente en diferente ubicacin, ya que no es posible mantener dos archivos con el mismo nombre en la misma carpeta. Cuando se mueve un archivo, no hay ninguna reproduccin de informacin, simplemente el archivo pasa de la carpeta C1 a C2. Solo se puede mover archivos entre carpetas que estn en el mismo disco. Cuando el archivo

pasa de un disco a otro, no se mueve sino que se copia, es decir se mantiene el archivo original y se hace una copia en el otro disco. Para copiar uno o varios archivos, siga los siguientes pasos: Seleccione el o los archivos a copiar Haga clic en Edicin Haga clic en Copiar Abra la carpeta en la cual desea hacer la copia (destino) Haga clic en Edicin Haga clic en Pegar Puede hacer lo mismo con la siguiente secuencia: Seleccione el o los archivos a copiar Haga clic con el botn derecho del ratn sobre la seleccin Del men contextual seleccione Copiar Haga clic con el botn derecho sobre la carpeta destino Del men contextual seleccione Pegar Para mover uno o varios archivos, siga los siguientes pasos: Seleccione el o los archivos a copiar Haga clic en Edicin Haga clic en Mover Abra la carpeta a la cual desea enviar la informacin (destino) Haga clic en Edicin Haga clic en Pegar Puede hacer lo mismo con la siguiente secuencia: Seleccione el o los archivos a copiar Haga clic con el botn derecho del ratn sobre la seleccin Del men contextual seleccione Mover Haga clic con el botn derecho sobre la carpeta destino

Del men contextual seleccione Pegar Cambair el nombre a un archivo: Para cambiar el nombre a un archivo, todo lo que tiene que hacer es hacer clic sobre el archivo con el botn derecho de ratn, del men contextual seleccionar la opcin Cambair nombre y luego digitar el nuevo nombre del archivo. Cuando cambiar el nombre del archivo es necesario que tenga en cuenta que los archivos tienen nombre y extencin, sta ltima consta de tres caracteres y no debe ser cambiada, a menos que se tenga perfecto conocimiento de las implicaciones de cambarla, ya que si se cambia la extensin de un archivo, ste no ser reconocido por el programa que lo puede editar. El procedimiento para cambiar nombre a una carpeta es igual, sin embargo las carpetas no tienen extensin, por tanto no hay ningn problema con ellas. Borar archivos y carpetas: En cuanto a borrar archivo o carpetas, la remendacin es que se asegure de que ya no necesita la informacin que piensa eliminar. Para borrar un archivo o carpeta es suficiente con seleccionar el archivo o carpeta y luego presionar la tecla Delete o Supr. Tambin puede hacer clic con el botn derecho sobre el archivo y luego seleccionar Eliminar. Si mantiene activa la papelera de reciclaje, cuando borrar un archivo tendr una solicitud de confirmacn sobre si desea eliminar el archivo o no. Simplemente seleccione el botn Si. Ejercicio: Cree en disco de 3 una carpeta llamada Temporal Mueva los archivos creados en el ejercicio anterior, en las carpetas:documentos, presentaciones, hoja de calculo, imgenes, a la carpeta temporal. CREDITOS Para la preparacin y redaccin de este documento no se sigui ningn documento o libro en particular, sin embargo el autor reconoce que todo cuanto conoce sobre el tema lo aprendi, no solo por su experiencia en el campo de la computacin, sino tambin por la revisin de libros, revistas y documentos publicados en INTERNET. Aunque no es posible hacer un listado de los textos consultados y de sus respectivos autores se hace un reconocimiento pblico a todos ellos. Algunas de las imgenes que figuran en el documento, son tomadas directamente de la pantalla, algunas editadas, otras pegadas sin ninguna modificacin. Algunas otras han sido tomadas desde archivos distribuidos con algunas aplicaciones y tambin de documentos publicados en INTERNET. Se expresa el reconocimiento a sus respectivos desarrolladores.

Algoritmo

Los diagramas de flujo sirven para representar algoritmos de manera grfica. En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego y latn, dixit algorithmus y este a su vez del matemtico persa Al-Juarismi1 ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.2 Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los algoritmos son el objeto de estudio de la algoritmia.1 En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema lineal de ecuaciones. Contenido [ocultar]

1 Definicin formal 2 Medios de expresin de un algoritmo


o o

2.1 Diagrama de flujo 2.2 Pseudocdigo

o o o o

2.3 Sistemas formales 2.4 Implementacin 2.5 Variables 2.6 Estructuras secuenciales

3 Algoritmos como funciones 4 Anlisis de algoritmos 5 Ejemplo de algoritmo


o o o

5.1 Descripcin de alto nivel 5.2 Descripcin formal 5.3 Implementacin

6 Vase tambin
o o o o

6.1 Tipos de algoritmos segn su funcin 6.2 Tcnicas de diseo de algoritmos 6.3 Temas relacionados 6.4 Disciplinas relacionadas

7 Referencias 8 Bibliografa 9 Enlaces externos

Definicin formal En general, no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo. Muchos autores los sealan como listas de instrucciones para resolver un problema abstracto, es decir, que un nmero finito de pasos convierten los datos de un problema (entrada) en una solucin (salida).1 2 3 4 5 6 Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versin modificada de la criba de Eratstenes que nunca termine de calcular nmeros primos no deja de ser un algoritmo.7 A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemticos como mquinas de Turing entre otros.8 9 Sin embargo, estos modelos estn sujetos a un tipo particular de datos como son nmeros, smbolos o grficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos.3 1 En general, la parte comn en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:7

Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso, definiendo as una secuencia de estados "computacionales" por cada entrada vlida (la entrada son los datos que se le suministran al algoritmo antes de comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementacin (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploracin acotada. La transicin de un estado al siguiente queda completamente determinada por una descripcin fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de trminos del estado actual. En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigedad y sin hacer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definicin abarca tanto a algoritmos prcticos como aquellos que solo funcionan en teora, por ejemplo el mtodo de Newton y la eliminacin de Gauss-Jordan funcionan, al menos en principio, con nmeros de precisin infinita; sin embargo no es posible programar la precisin infinita en una computadora, y no por ello dejan de ser algoritmos.10 En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de ChurchTuring de que toda funcin calculable se puede programar en una mquina de Turing (o equivalentemente, en un lenguaje de programacin suficientemente general):10 Aritmetizabilidad. Solamente operaciones innegablemente calculables estn disponibles en el paso inicial. Medios de expresin de un algoritmo Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son formas ms estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin especfico. La descripcin de un algoritmo usualmente se hace en tres niveles: 1. Descripcin de alto nivel. Se establece el problema, se selecciona un modelo matemtico y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2. Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que encuentran la solucin. 3. Implementacin. Se muestra el algoritmo expresado en un lenguaje de programacin especfico o algn objeto capaz de llevar a cabo instrucciones. Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto, un anlisis de complejidad o ambos. Diagrama de flujo

Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de un nmero Artculo principal: Diagrama de flujo. Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con flechas para indicar la secuencia de instrucciones y estn regidos por ISO. Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho espacio y su construccin es laboriosa. Por su facilidad de lectura son usados como introduccin a los algoritmos, descripcin de un lenguaje y descripcin de procesos a personas ajenas a la computacin. Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son formas ms estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin especfico. Pseudocdigo Artculo principal: Pseudocdigo. El pseudocdigo (falso lenguaje, el prefijo pseudo significa falso) es una descripcin de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintcticas propias de lenguajes de programacin, como asignaciones, ciclos y condicionales, aunque no est regido por ningn estndar. Es utilizado para describir algoritmos en libros y publicaciones cientficas, y como producto intermedio durante el desarrollo de un algoritmo, como los |diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocdigo requieren menos espacio para representar instrucciones complejas.

El pseudocdigo est pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementacin. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programacin concretos. Sin embargo, el pseudocdigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programacin especfico, y es a la vez suficientemente estructurado para que su implementacin se pueda hacer directamente a partir de l. As el pseudodocdigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programacin. Busque fuentes ms precisas para tener mayor comprensin del tema. Sistemas formales La teora de autmatas y la teora de funciones recursivas proveen modelos matemticos que formalizan el concepto de algoritmo. Los modelos ms comunes son la mquina de Turing, mquina de registro y funciones -recursivas. Estos modelos son tan precisos como un lenguaje mquina, careciendo de expresiones coloquiales o ambigedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementacin. Implementacin Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito elctrico o un aparato mecnico y elctrico. Algunos algoritmos inclusive se disean especialmente para implementarse usando lpiz y papel. El algoritmo de multiplicacin tradicional, el algoritmo de Euclides, la criba de Eratstenes y muchas formas de resolver la raz cuadrada son slo algunos ejemplos. Variables Son elementos que toman valores especficos de un tipo de datos concreto. La declaracin de una variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores iniciales a variables: 1. Mediante una sentencia de asignacin. 2. Mediante un procedimiento de entrada de datos (por ejemplo: 'read').

Ejemplo: ... i:=1; read(n); while i < n do begin (* cuerpo del bucle *)

i := i + 1 end; ... Estructuras secuenciales La estructura secuencial es aquella en la que una accin sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. La asignacin de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la siguiente forma: 1. Simples: Consiste en pasar un valor constante a una variable (a 15) 2. Contador: Consiste en usarla como un verificador del nmero de veces que se realiza un proceso (a a + 1) 3. Acumulador: Consiste en usarla como un sumador en un proceso (a a + b) 4. De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre muchas variables (a c + b*2/4). Un ejemplo de estructura secuencial, como obtener la rea de un tringulo: Inicio ... float b, h, a; printf("Diga la base"); scanf("%f", &b); printf("Diga la altura"); scanf("%f", &h); a = (b*h)/2; printf("El rea del tringulo es %f", a) ... Fin Algoritmos como funciones Artculo principal: Teora de la computabilidad.

Esquemtica de un algoritmo solucionando un problema de ciclo hamiltoniano. Un algoritmo se puede concebir como una funcin que transforma los datos de un problema (entrada) en los datos de una solucin (salida). Ms aun, los datos se pueden representar a su vez como secuencias de bits, y en general, de smbolos cualesquiera.1 9 11 Como cada secuencia de bits representa a un nmero natural (vase Sistema binario), entonces los algoritmos son en esencia funciones de los nmeros naturales en los nmeros naturales que s se pueden calcular. Es decir que todo algoritmo calcula una funcin nmero natural es la codificacin de un problema o de una solucin. donde cada

En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningn valor de salida, y podemos decir que la funcin queda indefinida para ese valor de entrada. Por esta razn se considera que los algoritmos son funciones parciales, es decir, no necesariamente definidas en todo su dominio de definicin. Cuando una funcin puede ser calculada por medios algortmicos, sin importar la cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha funcin es computable. No todas las funciones entre secuencias datos son computables. El problema de la parada es un ejemplo. Anlisis de algoritmos Artculo principal: Anlisis de algoritmos. Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El anlisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolucin del gasto de tiempo y memoria en funcin del tamao de los valores de entrada. El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin y, en la mayora de los casos, su estudio es completamente abstracto sin usar ningn tipo de lenguaje de programacin ni cualquier otra implementacin; por eso, en ese sentido, comparte las caractersticas de las disciplinas matemticas. As, el anlisis de los algoritmos se centra en los principios bsicos del algoritmo, no en los de la implementacin particular. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocdigo o utilizar un lenguaje muy simple tal como Lexico, cuyos cdigos pueden estar en el idioma del programador. Algunos escritores restringen la definicin de algoritmo a procedimientos que deben acabar en algn momento, mientras que otros consideran procedimientos que podran ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algn dispositivo fsico que fuera capaz de funcionar eternamente. En este ltimo caso, la finalizacin con xito del algoritmo no se podra definir como la terminacin de este con una salida satisfactoria, sino que el xito estara definido en funcin de las secuencias de salidas dadas durante un periodo de vida de la ejecucin del algoritmo. Por ejemplo, un algoritmo que verifica que hay ms ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor til. Si se

implementa correctamente, el valor devuelto por el algoritmo ser vlido, hasta que evale el siguiente dgito binario. De esta forma, mientras evala la siguiente secuencia podrn leerse dos tipos de seales: una seal positiva (en el caso de que el nmero de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolucin de valores exclusivamente positivos si hay ms ceros que unos en la secuencia y, en cualquier otro caso, devolver una mezcla de seales positivas y negativas. Ejemplo de algoritmo El problema consiste en encontrar el mximo de un conjunto de nmeros. Para un ejemplo ms complejo vase Algoritmo de Euclides. Descripcin de alto nivel Dado un conjunto finito de nmeros, se tiene el problema de encontrar el nmero ms grande. Sin prdida de generalidad se puede asumir que dicho conjunto no es vaco y que sus elementos estn numerados como . Es decir, dado un conjunto elemento que pertenece al conjunto se pide encontrar . tal que para todo

Para encontrar el elemento mximo, se asume que el primer elemento ( ) es el mximo; luego, se recorre el conjunto y se compara cada valor con el valor del mximo nmero encontrado hasta ese momento. En el caso que un elemento sea mayor que el mximo, se asigna su valor al mximo. Cuando se termina de recorrer la lista, el mximo nmero que se ha encontrado es el mximo de todo el conjunto. Descripcin formal El algoritmo puede ser escrito de una manera ms formal en el siguiente pseudocdigo: Algoritmo Encontrar el mximo de un conjunto funcin max( ) // para hasta si devolver Sobre la notacin: hacer es un conjunto no vaco de nmeros// // es el nmero de elementos de //

entonces

"" representa una asignacin:

significa que la variable

toma el valor de ; ).

"devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el mximo de

Implementacin En lenguaje C++: int max(int c[], int n) { int i, m = c[0]; for (i = 1; i < n; i++) if (c[i] > m) m = c[i]; return m; } Vase tambin Tipos de algoritmos segn su funcin

Algoritmo de ordenamiento Algoritmo de bsqueda

Tcnicas de diseo de algoritmos

Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto de candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es ptima. Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que se puedan ejecutar de forma simultnea en varios procesadores. Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de valores pseudoaleatorios. Algoritmos determinsticos: el comportamiento del algoritmo es lineal: cada paso del algoritmo tiene nicamente un paso sucesor y otro antecesor. Algoritmos no determinsticos: el comportamiento del algoritmo tiene forma de rbol y a cada paso del algoritmo puede bifurcarse a cualquier nmero de pasos inmediatamente posteriores, adems todas las ramas se ejecutan simultneamente. Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de cada uno de ellos para despus unirlas, logrando as la solucin al problema completo.

Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en un conocimiento anterior (a veces llamado experiencia) de los mismos. Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial. Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante un rbol implcito que se recorre de forma controlada encontrando las mejores soluciones. Vuelta atrs (backtracking): se construye el espacio de soluciones del problema en un rbol que se examina completamente, almacenando las soluciones menos costosas.

Temas relacionados

Cota superior asinttica Cota inferior asinttica Cota ajustada asinttica Complejidad computacional Diagramas de flujo Diagrama Nassi-Shneiderman Mquina de Turing

Disciplinas relacionadas

Ciencias de la Computacin Anlisis de algoritmos Complejidad computacional Informtica Inteligencia artificial Investigacin operativa Matemticas Programacin

Referencias 1. a b c d e Brassard, Gilles; Bratley, Paul (1997). Fundamentos de Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X.

2. a b Real Academia Espaola. Diccionario de la lengua espaola "Conjunto ordenado y finito de operaciones que permite hallar la solucin de un problema." 3. a b Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford (2009). Introduction to algorithms. Cambridge, Massachusetts: The MIT Press. ISBN 978-0-262-53305-8. 4. Ralph P. Grimaldi (1998). Propiedades de los nmeros enteros: Induccin matemtica. Matemticas Discreta y Combinatoria. Mxico: Addison Wesley Longman de Mxico. ISBN 968444-324-2. 5. Johnsonbaugh, Richard (2005). Introduccin a la teora de nmeros. Matemticas Discretas. Mxico: PEARSON EDUCACIN. ISBN 970-26-0637-3. 6. Carl Reynolds & Paul Tymann (2008). Schaum's Outline of Principles of Computer Science. McGraw-Hill. ISBN 978-0-07-146051-4. 7. a b Gurevich, Yuri (2000). Sequential Abstract State Machines capture Sequential Algorithms. ACM Transactions on Computational Logic 1 (1). ISSN 1529-3785, 77-111. http://research.microsoft.com/en-us/um/people/gurevich/Opera/141.pdf. 8. John E. Savage (1987). The Complexity of Computing. Krieger Publishing Co.. ISBN 089874833X. 9. a b [|Sipser, Michael] (2005). Introduction to the Theory of Computation (2 edicin). Course Technology. ISBN 978-0534950972. 10. a b Nachum Dershowitz & Yuri Gurevich (2008). A natural axiomatization of computability and proof of Church's Thesis. Bulletin of Symbolic Logic 14 (3). ISSN 10798986, 299-350. http://research.microsoft.com/en-us/um/people/gurevich/Opera/188.pdf. 11. [|Kelley, Dean] (1995). Teora de Autmatas y Lenguajes Formales. Prentice Hall. ISBN 0-13497777-7. Bibliografa

Fundamentos de Algoritmia, G. Brassard y P. Bratley. (ISBN 848966000) The Art of Computer Programming, Knuth, D. E. [quien fue tambin, el creador del TeX] Introduction to Algorithms (2nd ed), Cormen, T. H., Leiserson, C. E., Rivest, R. L. y Stein, C. Introduction to Algorithms. A Creative Approach, Mamber, U. Algorithms in C (3r ed), Sedgewick, R. (tambin existen versiones en C++ y Java) The Design and Analysis of Computer Algorithms, Aho, A.

Enlaces externos

Wikilibros alberga un libro o manual sobre Algoritmia. Wikcionario tiene definiciones para algoritmo. Portal de algoritmia Tcnicas de Diseo de Algoritmos manual que explica y ejemplifica los distintos paradigmas de diseo de algoritmos. Rosa Guerequeta y Antonio Vallecillo (profesores de la Universidad de Mlaga). Transparencias de la asignatura "Esquemas Algortmicos", Campos, J. Apuntes y problemas de Algortmica por Domingo Gimnez Cnovas Curso de Diseo de Algoritmos de Carlos Pes Algoritmos y Diagramas de Flujo

Algoritmos
Enviado por cibercrazy5000 Anuncios Google Curso programacin C El modo ms fcil de aprender a programar. Infrmate! www.seas.es Programadores Oline Expertos en Programacin responden. Pregunte y obtenga su respuesta ya! JustAnswer.es/Programacion Desarrollo Web y Facebook Desarrollamos la identidad virtual de tu empresa o negocio twiiti.com

1. 2. 3. 4. 5. 6. 7.

Pasos Tipos Anlisis del problema Diseo del algoritmo. Mandatos e instrucciones Variables vectores y matrices

El programador disea un programa, para resolver un problema particular. Disear es un proceso creativo. El proceso de diseo de un programa consta de los siguientes pasos o etapas:

Pasos:
Pasos 1 Etapa Anlisis del problema Descripcin Conducen al diseo detallado por medio un cdigo escrito en forma de

2 3

Diseo de algoritmo Codificacin

un algoritmo

Se implementa el algoritmo en un cdigo escrito en un lenguaje de programacin. Refleja las ideas desarrolladas en las etapas de anlisis y diseo Traduce el programa fuente a programa en cdigo de maquina y lo ejecuta. Busca errores en las etapas anteriores y los elimina.

Compilacin y ejecucin

5 6 7

Verificacin Depuracin Documentacin

Son comentarios, etiquetas de texto, que facilitan la comprensin del programa

Concepto Algoritmo: es un mtodo para resolver un problema mediante una serie de pasos definidos, precisos y finitos. Preciso: implica el orden de realizacin de cada uno de los pasos Definido: si se sigue dos veces, se obtiene el mismo resultado. Finito: Tiene un numero determinado de pasos, implica que tiene un fin,

Tipos :
Mtodo Algortmico Descripcin Utiliza un algoritmo y puede ser implementado en una computadora Ejemplos

Instrucciones para manejar un vehculo Instrucciones para secar grano a granel Instrucciones para resolver ecuacin de segundo grado

Heurstica:

Se apoya en el resultado obtenido en un anlisis de alternativas de experiencias anteriores similares. De las mismas, a se deducen una serie de reglas empricas o heursticas que de ser seguidas, conducen a la seleccin de la mejor alternativa en todas o la mayora de las veces.

Ejemplos

Los algoritmos se pueden Formulas expresar por:

Diagramas de flujo Norte-Sur,Top-Down Pseudo cdigo inicio leer a,b,c calcular escribir permetro fin

Quick Basic es un lenguaje de programacin estructurado y el algoritmo se representara en seudo cdigo y/o diagrama de flujo.

1. Anlisis del problema: Requiere la clara definicin del problema donde se indique que va hacer el programa y cual ve a ser el resultado. Debe detallarse las especificaciones de entrada y salida, Los requisitos que definen el anlisis son : Para ver el grfico seleccione la opcin "Descargar" La ecuacin de segundo grado se define algebraicamente como :

La solucin general viene dada por la expresin algebraica : (Algoritmo)

perifrico 1 2 3 4 Anlisis del problema Def. del problema Especif. de entrada Especif. de salida Hallar races ecua. 2do grdo coeficientes a, b, c X1, X2 Teclado Pantalla Impresora

Entrada: por teclado

coef a b c

Descripcin team. cuadrtico term. lineal term. independiente

Codificacin en QBasic INPUT "Coef a =";A INPUT "Coef b =";B INPUT "Coef c =";C

Calculo

Expresin algebraica

Codificacin en QBasic X1=((-B+SQR(B^2-4*A*C))

X2=((-B-SQR(B^2-4*A*C))

Proceso:

Salida: Visualizacin de :Datos de entrada: A,B,C Datos procesados: Raices: X1, X2


Variable A,B,C X1 X2 Significado Codificacin en QBasic Coef PRINT"A=";A; "B=";"C=";C

primera raz PRINT"X1=";x1 primera raz PRINT"X2=";X2

2.Diseo del algoritmo.


Anlisis de proceso implica que hace el programa. Diseo implica como se hace o realiza la tarea (problema) solicitado

En el diseo:

El todo es la sumatoria de las partes. Divide el todo en varias partes.

En la resolucin de un problema complejo, se divide en varios sub problemas y seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que puedan implementarse en el computador.

Esta caracterstica define lo que se entiende como diseo descendente( Top-Down / Norte-Sur ) o diseo modular. El proceso de ruptura del problema en cada etapa se llama refinamiento sucesivo.

Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo punto de entrada y un solo punto de salida. Un programa bien diseado consta de un programa principal (modulo de nivel mas alto) que llama a subprogramas (mdulos de nivel mas bajo), que a su vez pueden llamar otros sub programas.

Los programas que se estructuran de esta forma, se dicen que tienen diseo modular y el mtodo de romper el programa en modos pequeos se llama programacin modular. Los mdulos pueden ser planificados, codificados, compilados y depurados independientemente pueden ser intercambiados entre si. Este proceso implica la ejecucin de los siguientes pasos:
1 2 3 4 programar un modulo comprobar un modulo depurar el modulo combinar el modulo con mdulos anteriores

este proceso convierte el resultado del anlisis del problema en un diseo modular con refinamientos sucesivos que permiten una traduccin a un lenguaje que se denomina diseo del algoritmo. El algoritmo se puede representar por medio de dos formas : Pseudo cdigo Diagrama de flujo: Pseudo cdigo: es el lenguaje de especificacin de algoritmos y tiene una estructura: Las instrucciones se escriben en ingles o en palabras similares al ingles o espaol que facilitan la escritura de programacin Para la resolucin de una ecuacin de segundo grado se escribira inicio Introducir coeficientes a, b y c Imprimir ttulos primera raz, segunda raz, no tiene solucin, Calcular raz 1 y raz 2 Imprimir raz 1 y raz 2 Fin Diagramas de flujo (flows charts): Es la representacin grafica del algoritmo; segn la ANSI consta de una simbologia , que tiene los siguientes significados: Para ver el grfico seleccione la opcin "Descargar" del men superior Smbolos del Diagrama de flujo

Codificacin : Programacin: Windows/Dos/ Quick Basic = Editor de texto. Programa: definicin: conjunto de datos y sentencias: Un programa tiene la forma Para ver el grfico seleccione la opcin "Descargar" En el editor de Quick Basic se escribira codificado el seudo cdigo que tendra la forma: REM Programa para calcular las soluciones REM de una ecuacion de segundo grado PRINT "Escriba los valores de A, B y C" C$="Calculos" INPUT " A,B,C", A, B, C R = (B ^ 2 - 4 * A * C) ^ .5 LET X1 = (-B + R) / (2 * A) LET X2 = (-B + R) / (2 * A) PRINT PRINT " A="; A, " B="; B, "C="; C PRINT "X1="; X1, "X2="; X2 PRINT END En el Men
Ejecutar

En la pantalla veramos: Mandatos e instrucciones: Mandato (command): es una orden aislada de efecto inmediato. Ejemplo:
Mandato RUN Descripcin Ordena la ejecucin de un programa.

LIST SAVE.

Escribe En la pantalla el listado del programa Guarda, graba el programa como un archivo de extensin BAS en el disco

Instruccin: es una orden contenida en un programa. Ejemplo:


Instruccin PRINT INPUT Descripcin Escribe en pantalla. Introduce (entra datos)

Edicin de un programa: un programa esta formado por lneas secuenciales que se ejecutan en forma descendente (Up Down) Para dar por terminada una lnea se pulsa la tecla Enter (Return) en cualquier parte de la misma. Para cambiar una lnea basta volver a teclearla.

Se puede corregir una lnea (borrar, rescribir ) en pantalla o bien con el mandato EDIT. Se pueden incluir varias instrucciones en una misma lnea, separndolos por dos puntos. Una lnea de pantalla (cuarenta u ochenta posiciones) es diferente de una lnea de programa (doscientos cincuenta y seis posiciones).

Modo Directo: Modo Programa Run Ventana activa Ventana inmediata


mandato CLS Descripcin borra la pantalla

Recomendaciones:

Todo programa debe estar documentado con comentarios; la primera lnea debe contener el titulo del programa. Los comentarios deben de ir precedidos de la palabra clave REM o de un apostrofo ( ) Si una lnea ya tiene otras instrucciones, el comentario debe ir al final de la lnea. Los comentarios solo aparecen en el listado del programa y no aparecen escritos en la pantalla durante la ejecucin.

Constantes: QBasic, trabaja con dos tipos de datos:

Datos numricos: Enteros (INT) Enteros largos (LNG)

Tipos

de simple precisin (SGL) de doble precisin (DBL) alfanumricos hileras o cadenas (STR) fila de caracteres en ASCII ( en parte del teclado )

Las constantes alfanumricas pueden ser enteras o fraccionarias, se representan en forma decimal; se puede emitir el cero a la izquierda del punto decimal. Ejemplo

3452

-12.67

.23 +12345

Estos son ejemplos de valores numricos de punto fijo; se puede emplear una notacin de punto flotante.
Mantisa letra exponente

1,23456E+15 123456.0000000000 1.234567890789456D10 0.000000000123456789012456

El numero mximo de cifras significativas con que se trabaja es:

6 para la precisin simple (SNG) 16 para la precisin doble (DLB)


En las constantes de punto fijo hay que aadir el carcter # Las constantes alfanumricas son hileras de caracteres; se escriben entre comillas, Ej. "Hola " ; " A47EC

Variables vectores y matrices:

Una variable es una zona de memoria que almacena un dato

X DIA $ Peso -23.5

R A M

lunes 80

Una variable se identifica mediante un nombre. El nombre de una variable numrica debe empezar por una letra y puede ir sucedido de otras letras y / o otros dgitos (X, A, B1, peso, T341)

Una variable alfanumrica debe terminar con el carcter $ (x$, a23$, dias$,) Estn terminantemente prohibidas los nombres de variables que contengan palabras claves de Basic (PRUN, LIST, NIF$,) Las variables de precisin doble y enteros se identifican aadiendo el carcter # o el carcter % , tambin se pueden declarar como

DEFDBL A 7.Documentacin: Los comentarios que se incluyan deben ser significativos Documentacin interna:

Va incluida dentro del cdigo del programa fuente, por medio de comentarios que ayudan a la comprensin del cdigo. Todas las sentencias comienzan con la sentencia REM o su equivalente el carcter apostrofe ( ).

El programa en si no los necesita y los ignora. Hace que los programas sean comprensibles.

Programacin estructurada De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda La programacin estructurada es una tcnica para escribir programas (programacin de computadora) de manera clara. Para ello se utilizan nicamente tres estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la instruccin o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN). Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existentes en los aos 1960, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones. Contenido [ocultar]

1 Orgenes de la programacin estructurada


o o o o

1.1 Estructura secuencial 1.2 Estructura selectiva o de seleccin 1.3 Estructura iterativa 1.4 Anidamiento

2 Ventajas de la programacin estructurada 3 Inconvenientes de la programacin estructurada 4 Bibliografa 5 Vase tambin 6 Enlaces externos

[editar] Orgenes de la programacin estructurada A finales de los aos 1970 surgi una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que facilitaba su comprensin posterior. El teorema del programa estructurado, propuesto por Bhm-Jacopini, demuestra que todo programa puede escribirse utilizando nicamente las tres instrucciones de control siguientes:

Secuencia Instruccin condicional. Iteracin (bucle de instrucciones) con condicin al principio.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programacin tienen un mayor repertorio de estructuras de control, stas pueden ser construidas mediante las tres bsicas citadas. [editar] 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. Ejemplo: INPUT x INPUT y auxiliar= x

x= y y= auxiliar PRINT x PRINT y Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia.

1 Se guarda una copia del valor de x en auxiliar. 2 Se guarda el valor de y en x, perdiendo su valor anterior, pero se mantiene una copia del contenido en auxiliar. 3 Se copia a y el valor de auxiliar, que es el valor inicial de x. El resultado es el intercambio de los valores entre x e y, en tres operaciones secuenciales.

[editar] 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. Ejemplo: IF a > b THEN PRINT a ; " es mayor que " ; b ELSE PRINT a ; " no es mayor que " ; b END IF La instruccin selectiva anterior puede presentar uno de dos mensajes: a es mayor que b o a no es mayor que b, segn el resultado de la comparacin entre a y b; si el resultado de a > b es verdadero, se presenta el primer mensaje, si es falso se exterioriza el segundo. Las palabras clave IF, THEN, ELSE, y END IF; constituyen la propia estructura de la instruccin condicional (palabra reservadas), proporcionada por el lenguaje, el usuario no debe utilizar sus nombres salvo para este fin. El caso ejemplo se ha codificado en BASIC.

IF seala el comienzo de la instruccin condicional, y se espera que despus siga la condicin lgica de control de la instruccin. THEN seala el fin de la condicin, y despus estar la instruccin a ejecutar si la condicin es verdadera. ELSE es opcional, le sigue la instruccin que se ejecutar si la condicin es falsa.

END IF indica el final de la estructura, luego de sta el programa seguir su curso.

Ampliando un poco el ejemplo anterior, con estructuras anidadas: IF a > b THEN PRINT a ; " es mayor que " ; b ELSEIF a < b THEN PRINT a ; " es menor que " ; b ELSE PRINT a ; " es igual que " ; b END IF Este ejemplo permite considerar situaciones en las que se tiene ms de dos alternativas. En este caso se ha considerado tres, pero hay situaciones en las que deben considerarse ms casos y para ellos se puede repetir las veces que sea necesario la opcional ELSEIF. [editar] Estructura iterativa Un bucle iterativo o iteracin de una secuencia de instrucciones, hace que se repita su ejecucin mientras se cumpla una condicin, el nmero de iteraciones normalmente est determinado por el cambio en la condicin dentro del mismo bucle, aunque puede ser forzado o explcito por otra condicin. Ejemplo: a= 0 b= 7 DO WHILE b > a PRINT a a= a + 1 LOOP Esta instruccin tiene tres palabras reservadas WHILE, DO y LOOP.

DO WHILE: seala el comienzo del bucle ("haga mientras") y despus de estas palabras se espera la condicin lgica de repeticin, si la condicin es verdadera pasa el control al cuerpo del bucle, en caso contrario el flujo salta directamente al final de la estructura, saliendo de la misma. LOOP: seala el final del cuerpo de la estructura de bucle.

El bucle mientras, se repite mientras la condicin sea verdadera, esta condicin se comprueba o chequea antes de ingresar al cuerpo del bucle, por lo que el mismo puede que no se ejecute nunca (cuando la condicin es falsa desde un principio) o bien que se repita tantas veces como resulte y mientras la condicin sea cierta. En el ejemplo se tienen definidas dos variables a y b, que al iniciarse el bucle contienen los valores a=0 y b=7. La condicin del bucle es b > a. Si a=0 y b=7. la condicin es verdadera, en el cuerpo del bucle se escribe el valor de a en pantalla y luego se incrementa esa variable en una unidad. Entonces pasa a ser a=1 y b=7. ... (se repite la secuencia) ... Cuando a=6 y b=7. la condicin sigue siendo verdadera, se escribe el valor de a en pantalla y se incrementa en una unidad. Cuando se llega a que a=7 y b=7. Entonces la condicin ya resulta falsa y la instruccin WHILE finaliza, saliendo por LOOP. La salida por pantalla de este ejemplo es 0 1 2 3 4 5 6, y se iter 7 veces. El lenguaje utilizado en el ejemplo (BASIC), adems de tener otras del tipo iterativas, permite utilizar la misma estructura indicada, pero de la siguiente forma: a= 0 b= 7 WHILE b > a PRINT a a= a + 1 WEND Que es absolutamente anloga, en ste formato la palabra reservada WEND marca el fin del bucle y no se utiliza ni DO ni LOOP. [editar] Anidamiento El cuerpo de cualquier estructura puede ser instrucciones simples u otras estructuras, que a su vez pueden contener a otras. Ejemplo: CLS INPUT "Valor entero para a:"; a

INPUT "Valor entero para b:"; b IF a > b THEN REM hacer intercambio de variables auxiliar = a a=b b = auxiliar REM imprimir diferencia en escala de uno en uno DO WHILE auxiliar > a auxiliar = auxiliar - 1 PRINT auxiliar LOOP ELSE REM no hacer nada END IF PRINT PRINT a; b En el ejemplo la sentencia o instruccin CLS slo tiene el efecto de "limpiar" la pantalla al inicio de la ejecucin del programa. Las instrucciones INPUT permiten que el operador ingrese, desde teclado y con un mensaje previo acorde, los valores deseados para las variables a y b. La instruccin no ejecutable REM permite la insercin de comentarios en cualquier parte del programa, donde el programador lo considere necesario; constituye una buena prctica de programacin comentariar adecuadamente todos los programas, de este modo se clarifica notablemente su lectura, durante su desarrollo y posterior para modificacin o mantenimiento. En la anterior estructura IF bien se puede omitir la porcin ELSE, ya que no hay cuerpo all, de modo que lo siguiente es completamente equivalente: CLS INPUT "Valor entero para a:"; a INPUT "Valor entero para b:"; b IF a > b THEN

REM hacer intercambio de variables auxiliar = a a=b b = auxiliar REM imprimir diferencia en escala de uno en uno DO WHILE auxiliar > a auxiliar = auxiliar - 1 PRINT auxiliar LOOP END IF PRINT PRINT a; b [editar] Ventajas de la programacin estructurada 1. Los programas son ms fciles de entender, pueden ser ledos de forma secuencial, no hay necesidad de hacer engorrosos seguimientos en saltos de lnea (GOTO) dentro de los bloques de cdigo para intentar entender la lgica. 2. La estructura de los programas es clara, puesto que las instrucciones estn ms ligadas o relacionadas entre s. 3. Reduccin del esfuerzo en las pruebas y depuracin. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a su estructura ms sencilla y comprensible, por lo que los errores se pueden detectar y corregir ms fcilmente. 4. Reduccin de los costos de mantenimiento. Anlogamente a la depuracin, durante la fase de mantenimiento, modificar o extender los programas resulta ms fcil. 5. Programas son ms sencillos y ms rpidos de confeccionar (y se facilita su optimizacin). 6. Los bloques de cdigo son casi auto-explicativos, lo que reduce y facilita la documentacin. 7. Las instrucciones de salto, GOTO, quedan reservadas para construir las instrucciones bsicas, si fuera realmente imprescindible. Aunque no se usan de forma directa, por estar prohibida su utilizacin, estn incluidas implcitamente en las instrucciones de seleccin e iteracin. 8. Un programa escrito de acuerdo a los principios de programacin estructurada no solamente tendr una mejor estructura sino tambin una excelente presentacin.

9. Se incrementa el rendimiento de los programadores, comparada con la forma tradicional que utiliza GOTO. La programacin estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, esencialmente, una tarea de dedicacin, esfuerzo y creatividad; programar es casi un arte. [editar] Inconvenientes de la programacin estructurada El principal inconveniente de este mtodo de programacin es que se obtiene un nico bloque de programa, que cuando se hace demasiado grande puede resultar problemtico el manejo de su cdigo fuente; esto se resuelve empleando conjuntamente la programacin modular, es decir, si es necesario, se definen mdulos independientes, programados y compilados por separado (en realidad esto no es necesario, pero s es recomendable para su mejor mantenimiento y depuracin). En realidad, cuando se programa hoy en da (inicios del siglo XXI) se utilizan normalmente, tanto las tcnicas de programacin estructurada como las de programacin modular, de forma conjunta y por lo tanto es muy comn que cuando se hace referencia a la programacin estructurada muchos entiendan que ella incluye tambin las tcnicas modulares, estrictamente no es as. Un mtodo un poco ms sofisticado es la programacin por capas, en la que los mdulos tienen una estructura jerrquica en la que se pueden definir funciones dentro de funciones o de procedimientos. Si bien las metodologas en cuestin ya son de antigua data ("en plazos informticos"), aun en la actualidad la conjuncin "Programacin estructurada" y "programacin modular" es una de la ms utilizadas, juntamente con un ms moderno paradigma, en pleno auge, completamente distinto, llamado programacin orientada a objetos. [editar] Bibliografa 1. Garca-Bermejo Giner, Jos Rafael (2 de 2008) (en espaol). Programacin estructurada en C (1 edicin). Pearson Prentice Hall. ISBN 978-84-8322-423-6. 2. Valls Ferrn, Jos Mara; Camacho Fernndez, David (9 de 2004) (en espaol). Programacin estructurada y algoritmos en Pascal (1 edicin). Pearson Alhambra. ISBN 978-84-205-4246-1. 3. (en espaol) Programacin estructurada II (1 ed. 4 imp. edicin). Enseanza Tcnica y Sistemas, S.A.. 6 de 2000. ISBN 978-84-85838-90-5. 4. (en espaol) Pseudocdigos y programacin estructurada (1 edicin). Centro Tcnico Europeo de Enseanzas Profesionales. 2 de 1997. ISBN 978-84-8199-065-2. 5. Snchez Andrs, Mara ngeles (5 de 1996) (en espaol). Programacin estructurada y fundamentos de programacin (1 edicin). McGraw-Hill / Interamericana de Espaa, S.A.. ISBN 978-84-481-0557-0. Programacin Estructurada Enviado por Henry Sandino Cabrera Alvarado Anuncios Google

Curso programacin C El modo ms fcil de aprender a programar. Infrmate! www.seas.es Programadores Oline Expertos en Programacin responden. Pregunte y obtenga su respuesta ya! JustAnswer.es/Programacion Desarrollo Web y Facebook Desarrollamos la identidad virtual de tu empresa o negocio twiiti.com

INTRODUCCION La computadora automtica debe su derecho a existir, su utilidad, precisamente a su capacidad de efectuar vastos clculos que no pueden realizar los seres humanos. Deseamos que la computadora efecte lo que nunca podramos hacer nosotros, y la potencia de las maquinas actuales es tal, que inclusive los clculos pequeos, por su tamao, escapan al poder de nuestra imaginacin limitada. Sin embargo debemos organizar el calculo de manera tal que nuestros limitados poderes sean suficientes para asegurar que se establecer el efecto deseado. Esta organizacin incluye la composicin de los programas. Los avances en la tecnologa siempre van parejos con progresos en los lenguajes de programacin y con nuevas ayudas para simplificar el uso del computador, con lo cual un numero mayor de usuarios se beneficia del. Pero la necesidad de hacer programas para resolver problemas especficos quizs nunca desaparecer. CONCEPTO DE PROGRAMACION ESTRUCTURADA EL creciente empleo de los computadores ha conducido a buscar un abaratamiento del desarrollo des software, paralelo a la reduccin del costo del hardware obtenido gracias a los avances tecnolgicos. Los altos costos del mantenimiento de las aplicaciones en produccin normal tambin han urgido la necesidad de mejorar la productividad del personal de programacin. En la dcada del sesenta salieron a la luz publica los principios de lo que ms tarde se llamo Programacin Estructurada, posteriormente se libero el conjunto de las llamadas "Tcnicas para mejoramiento de la productividad en programacin" (en ingles Improved Programming Technologies, abreviado IPTs), siendo la Programacin Estructurada una de ellas. Los programas computarizados pueden ser escritos con un alto grado de estructuracin, lo cual les permite ser mas fcilmente comprensibles en actividades tales como pruebas, mantenimiento y modificacin de los mismos. Mediante la programacin Estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leer la codificacin del mismo desde su inicio hasta su terminacin en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lgica establecida por el programador, como es la situacin habitual con codificaciones desarrolladas bajo otras tcnicas. EN programacin Estructurada los programadores deben profundizar mas que lo usual al proceder realizar el diseo original del programa, pero el resultado final es ms fcil de leer y comprender, el objetivo de u

programador profesional al escribir programas de una manera estructurada, es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados. EL resultado de aplicar la sistemtica y disciplinada manera de elaboracin de programas establecida por la Programacin Estructurada es una programacin de alta precisin como nunca antes haba sido lograda. Las pruebas de los programas, desarrollados utilizando este mtodo, se acoplan mas rpidamente y el resultado final con programas que pueden ser ledos, mantenidos y modificados por otros programadores con mucho mayor facilidad. DEFINICIONES Programacin Estructurada es una tcnica en la cual la estructura de un programa, esto es, la interpelacin de sus partes realiza tan claramente como es posible mediante el uso de tres estructuras lgicas de control: a. Secuencia: Sucesin simple de dos o mas operaciones. b. Seleccin: bifurcacin condicional de una o mas operaciones. c. Interaccin: Repeticin de una operacin mientras se cumple una condicin. Estos tres tipos de estructuras lgicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de informacin. Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una pagina o ms de codificacin. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamas se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan utilizando las tres estructuras bsicas de control mencionadas anteriormente, el resultado es tambin un programa propio. La programacin Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lgicas mencionadas anteriormente. Una caracterstica importante en un programa estructurado es que puede ser ledo en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programacin. Esto es importante debido a que, es mucho ms fcil comprender completamente el trabajo que realiza una funcin determinada, si todas las instrucciones que influyen en su accin estn fsicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instruccin de desvo de flujo de control, excepto en circunstancias muy especiales tales como la simulacin de una estructura lgica de control en un lenguaje de programacin que no la posea. VENTAJAS POTENCIALES Un programa escrito de acuerdo a estos principios no solamente tendr una estructura, sino tambin una excelente presentacin.

Un programa escrito de esta forma tiende a ser mucho ms fcil de comprender que programas escritos en otros estilos. La facilidad de comprensin del contenido de un programa puede facilitar el chequeo de la codificacin y reducir el tiempo de prueba y depuracin de programas. Esto ultimo es cierto parcialmente, debido a que la programacin estructurada concentra los errores en uno de los factores ms generador de fallas en programacin: la lgica. Un programa que es fcil para leer y el cual esta compuesto de segmentos bien definidos tiende a ser simple, rpido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del hecho que, aunque el programa tenga una extensin significativa, en documentacin tiende siempre a estar al da, esto no suele suceder con los mtodos convencionales de programacin. La programacin estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicacin, esfuerzo y creatividad. TEOREMA DE LA ESTRUCTURA El teorema de la estructura establece que un programa propio puede ser escrito utilizando solamente las siguientes estructuras lgicas de control: secuencia, seleccin e iteracin. Un programa de define como propio si cumple con los dos requerimientos siguientes: a. Tiene exactamente una entrada y una salida para control del programa. b. Existen caminos seguibles desde la entrada hasta la salida que conducen por cada parte del programa, es decir, no existen lazos infinitos ni instrucciones que no se ejecutan. Las tres estructuras lgicas de control bsicas, se definen de la siguiente forma: Secuencia: es simplemente la formalizacin de la idea de que las instrucciones de un programa son ejecutadas en el mismo orden en que ellas aparecen en el programa. En trminos de diagrama de flujo la secuencia es representada por una funcin despus de la otra, como se muestra a continuacin. A y B pueden ser instrucciones sencillas hasta mdulos completos, lo importante es que sean programas propios, independientemente de su tamao o complejidad interna. Ay B deben ser programas propios en el sentido en que estos fueron definidos, es decir, que posean solamente una entrada y una salida; la combinacin de A seguida por B es tambin un programa propio, ya que esta unin tiene una entrada y una salida exclusivamente, esto se muestra grficamente en la figura siguiente: Donde la caja externa sugiere que la combinacin de A seguida de puede ser tratada como una unidad para propsitos de control. Seleccin: Es la escogencia entre dos acciones tomando la decisin en base al resultado de evaluar un predicado. Esta estructura de control es denominada usualmente IFTHENELSE. La representacin en forma de diagrama de flujo de esta estructura lgica de control se muestra a continuacin: F

Donde P es predicado y A y B son las dos funciones. Iteracin: Esta estructura lgica es utilizada para que se repita la ejecucin de un conjunto de instrucciones mientras se cumpla una condicin o predicado. Generalmente a esta estructura se le conoce como DOWHILE (hacer mientras) y su representacin se muestra a continuacin: V F donde P es predicado y A es el modulo controlado. Se debe comprender claramente que un rectngulo, que representa un modulo en un diagrama, siempre puede ser sustituido por cualquiera de las tres estructuras de control descritas anteriormente; por ejemplo, veamos el diagrama siguiente: En l, la lnea punteada limita un rectngulo que contiene una estructura, que a su vez controla dos mdulos X y Y. La estructura limitada por la lnea punteada es sustituida por una funcin quedando de la siguiente forma: V F es decir, una funcin sustituye a una estructura lgica de control o viceversa. OTRAS ESTRUCTURAS LOGICAS DE CONTROL Aunque todos los programas pueden ser escritos utilizando solamente las tres estructuras de control descritas anteriormente, es algunas veces, conveniente utilizar algunas estructuras adicionales; a continuacin se har una descripcin de esas formas lgicas de control diferentes a las ya definidas: El Dountil: La estructuras de iteracin bsica es el DOWHILE, pero existe una estructura que es muy parecida a ella y que aveces es usada, dependiendo del proceso que se este tratando de representar y de las caractersticas apropiadas en el lenguaje con el cual se esta trabajando, esta forma de control es la que se llama DOUNTIL, cuya representacin grfica en forma de diagrama de flujo se muestra a continuacin: V Donde A es el modulo controlado y P el predicado. La diferencia entre el DOWHILE y el DOUNTIL es que en el primero el predicado es probado antes de ejecutar la funcin, si el predicado es falso la funcin no es ejecutada; mientras que en el segundo, el predicado es probado despus de ejecutar la funcin, o sea, que la funcin siempre ser ejecutada al menos una vez, independientemente si el predicado es cierto o falso. La estructura CASE: Algunas veces resulta de gran ayuda, desde el punto de vista de eficiencias y facilidad de lectura de un programa, tener alguna forma de expresar una desviacin del flujo de control hacia mltiples procesos en funcin del resultado de la evaluacin de un predicado; usualmente, a la estructura de control que satisface el requerimiento anterior, se le denomina la estructura CASE. Por ejemplo, si es necesario ejecutar

una de cien rutinas diferentes en funcin del valor de un cdigo de 2 dgitos, podemos representar este proceso mediante 100 estructuras IF, sin embargo el sentido comn nos induce a pensar que no hay razn para adherirnos rgidamente a las tres estructuras bsicas de control y en lugar de 100 IF usaramos la estructura CASE. Esta estructura utiliza el valor de una variable para determinar cual, de varias rutinas, ser ejecutada. La representacin grfica de esta estructura de control se muestra a continuacin: En cada lenguaje ser necesario establecer cuales son las instrucciones que, en forma conveniente y eficiente, realizan funciones establecidas por las diferentes estructuras lgicas de control. ETIQUETAS E INSTRUCCIN GOTO: Ocasionalmente se habla de la programacin estructurada como una tcnica de programacin que no utiliza GOTO(instruccin de desvo del flujo de control en forma incondicional); si bien es cierto que un programa bien estructurado tiene, o bien ninguna o muy pocas instrucciones GOTO, asumiendo que estamos empleando un lenguaje de programacin adecuado, la ausencia de instrucciones GOTO puede ser mal interpretada. Es conveniente que aclaremos este aspecto en este momento. Un programa bien estructurado gana una parte importante de su fcil comprensin del hecho que puede ser ledo en forma secuencial sin desvos en el flujo de control desde una parte del programa a otra. Esta caracterstica es consecuencia de usar exclusivamente las estructuras lgicas de control estndar (el GOTO no es una de ellas), esta secuencialidad o lectura TOPDOWN es beneficiosa debido a que hay un limite definido para muchos detalles que la mente humana puede abarcar de una vez. Se hace relativamente fcil y rpida la comprensin de la tarea que realiza una instruccin si su funcin puede ser entendida en trminos de unas pocas instrucciones mas, fsicamente contiguas y delimitadas. El problema con la instruccin GOTO es que generalmente aleja al programa realizado de los propsitos descritos y en casos extremos puede hacer que un programa sea esencialmente incomprensible. No se requieren esfuerzos especiales para eliminar de un programa los GOTO, los cuales han sido, algunas veces, malentendidos como enemigos de la programacin estructurada, existen buenas y fundadas razones para no querer usarlos pero no se necesita que se realice un trabajo arduo para eliminarlo; ellos no aparecern, en general, cuando se utilicen las estructuras lgicas de control, descritas anteriormente. Naturalmente, si escogemos para programar un lenguaje de computacin que no posea las estructuras lgicas de control fundamentales, entonces, tendremos que simularlas y seguramente ello implicara el uso de la instruccin GOTO; pero este uso puede hacerse en forma cuidadosamente controlada. Existen situaciones poco comunes en las cuales el uso de GOTO puede tener ventajas comparado con otras maneras de expresar un proceso; estos casos son excepcionales y usualmente no ocurren en la programacin realizada diariamente. Se deben analizar cuidadosamente las consecuencias de emplear el GOTO, antes de su uso. SEGMENTACION

Para la comprensin de un programa se haga en forma fcil y rpida es necesario que, al revisarlo, uno no tenga que hojear una gran cantidad de paginas para entender cuales el trabajo que realiza. Una regla practica para lograr estos fines es establecer que cada segmento del programa no exceda, en longitud, a una pagina de codificacin, o sea, alrededor de 50 lneas (el significado que se asigna al termino segmento, en este trabajo, no tiene ninguna relacin con su significado en relacin a las funciones de sistemas operativos o sistemas maneadores de Bases de Datos). La segmentacin no es solamente particionar un programa en trozos cuya longitud sea de unas 50 lneas; esta tcnica debe cumplir con ciertas caractersticas fundamentales: a. La segmentacin reflejara la divisin del programa en partes que se relacionen entre s en forma jerrquica, formando una estructura de rbol. Esta organizacin puede ser representada grficamente por un diagrama de procesos, lo que hace ms sencillo comprender la relacin existente entre un segmento y el resto del programa. Adicionalmente, podemos indicar que, el segmento en la cumbre de la estructura jerrquica contendr las funciones de control de mas alto nivel, mientras que los segmentos inferiores en esta organizacin contendrn funciones detalladas. b. Una segmentacin bien diseada deber mostrar, claramente, las relaciones existentes entre las distintas funciones de manera que sea fcil comprender lo que debe hacer el programa y asegurar que efectivamente lo realice. Este hecho, garantizara que los cambios que se efecten a una parte del programa, durante la programacin original o su mantenimiento, no afecten al resto del programa que no ha sufrido cambios. c. En una segmentacin bien realizada la comunicacin entre segmentos se lleva a cabo de una manera cuidadosamente controlada. Algunos autores recomiendan que los segmentos consistan en procedimientos y la nica comunicacin existente entre ellos sea a travs de una lista de parmetros, esto reduce la oportunidad de que interactuen entre ellos de una manera indeseada e inentendible. IDENTACION El uso de la identacion es importante debido a que, cuando se es consistente en su utilizacin, facilita la lectura del programa al mostrar en una forma grfica las relaciones existentes entre las distintas instrucciones. La identacion puede ser de gran beneficio, tal como se muestra continuacin, donde ambos programas realizan la misma funcin, pero el de la derecha es ms fcil de comprender, verificar y corregir. DIRECTRICES PAR IDENTAR Debe comprenderse claramente que las lneas siguientes solo pretenden presentar unas directrices de identacion, sin pretender que estas sean las nicas reglas a seguir en este proceso, cada centro de procesamiento deber establecer sus propias convenciones, sin que sea motivo de preocupacin la diferencia respecto a las sugerencias dadas aqu, lo importante es que se establezcan unas normas y se cumplan de manera consistente. Las siguientes son sugerencias para el desarrollo de una poltica de identacion en un centro de procesamiento, la idea fundamental es ayudar a que el lector de un programa le sea fcil comprender las relaciones y las funciones existentes en l:

a. En los lenguajes donde se permite el uso de etiquetas, estas deben colocarse lo ms externas posibles, por ejemplo comenzando en la columna 2, y deben estar separadas por una lnea (siempre que lo permita el lenguaje en uso). b. Se obtiene consistencia si todas las instrucciones se comienzan en una misma columna, por ejemplo en la columna 4 o cualquier otra ubicada a su derecha. c. En los lenguajes en que se hagan declaraciones sobre las variables a utilizar, la informacin quedara mas claramente representada si los atributos declarados se alinean en forma vertical. d. El uso de lineas en blanco ayuda a mostrar con mas claridad las relaciones existentes entre distintos tems agrupados en las declaraciones e. Las instrucciones son mucho mas fciles de localizar y de cambiar si no se escribe mas de una instruccin por lnea. f. La vision de control de las estructuras lgicas o de los bloques se clarifica si las instrucciones controladas son idnticas por alguna cantidad constante. Se sugiere una identacion de tres espacios.

VENTAJAS DE LA PROGRAMACION ESTRUCTURADA Con la programacin estructurada elaborar programas de computador sigue siendo un albor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las siguientes ventajas: 1. - Los programas son ms fciles de entender. Un programa estructurado puede ser ledo en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lgica, lo cual es tpico de otros estilos de programacin. La estructura del programa es mas clara puesto que las instrucciones estn mas ligadas o relacionadas entre s, por lo que es ms fcil comprender lo que hace cada funcin. 2. Reduccin del esfuerzo en las pruebas. El programa se puede tener listo para produccin normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas("debugging") se facilita debido a la lgica ms visible, de tal forma que los errores se pueden detectar y corregir mas fcilmente. 3. Reduccin de los costos de mantenimiento. 4. Programas ms sencillos y ms rpidos 5. Aumento de la productividad del programador 6. Se facilita la utilizacin de las otras tcnicas para el mejoramiento de la productividad en programacin 7. Los programas quedan mejor documentados internamente. CONCLUSIN El presente glosario fue desarrollado con el propsito de que sirviera de apoyo a los estudiantes del rea de la computacin y de otras reas que utilicen la computacin e informtica como herramienta. BIBLIOGRAFIA

SANDERS, Donal H.,&uml; Informtica presente y futuro Editorial McGraw Hill, Mxico. LOZANO, Letvin R., Diagramacin y programacin Editorial McGraw Hill, Mxico. NORTON, Peter., Introduccin a la computacin Editorial McGraw Hill, Mxico. FREEDMAN, Alan., Diccionario de computacin Editorial McGraw Hill, Quinta edicin, Mxico.

Programacin modular
De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda

Diagrama del funcionamiento de un subprograma.

La programacin modular es un paradigma de programacin que consiste en dividir un programa en mdulos o subprogramas con el fin de hacerlo ms legible y manejable. Se presenta histricamente como una evolucin de la programacin estructurada para solucionar problemas de programacin ms grandes y complejos de lo que sta puede resolver. Al aplicar la programacin modular, un problema complejo debe ser dividido en varios subproblemas ms simples, y estos a su vez en otros subproblemas ms simples. Esto debe hacerse hasta obtener

subproblemas lo suficientemente simples como para poder ser resueltos fcilmente con algn lenguaje de programacin. sta tcnica se llama refinamiento sucesivo, divide y vencers anlisis descendente (Top-Down). Un mdulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos mdulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un mdulo necesite de otro, puede comunicarse con ste mediante una interfaz de comunicacin que tambin debe estar bien definida. Si bien un mdulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la prctica se los suele tomar como sinnimos de procedimientos y funciones. Pero no necesaria ni estrictamente un mdulo es una funcin o un procedimiento, ya que el mismo puede contener muchos de ellos, no debe confundirse el trmino "modulo" (en el sentido de programacin modular) con trminos como "funcin" o "procedimiento", propios del lenguaje que lo soporte.

Vector (informtica)
De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda Para otros usos de este trmino, vase Matriz.

Matriz unidimensional con 10 elementos. En programacin, una matriz o vector (llamados en ingls arrays) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lgico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se puede considerar que todas las matrices son de una dimensin, la dimensin principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las ms fciles de imaginar son los de una, dos y tres dimensiones. Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sera ms adecuado utilizar una lista, ya que esta estructura puede cambiar de tamao fcilmente durante la ejecucin de un programa.

Contenido
[ocultar]

1 ndices

2 Notacin 3 Forma de acceso 4 Vectores dinmicos y estticos o 4.1 Ejemplos en C 5 Vectores multidimensionales 6 Vase tambin

[editar] ndices
Todo vector se compone de un determinado nmero de elementos. Cada elemento es referenciado por la posicin que ocupa dentro del vector. Dichas posiciones son llamadas ndice y siempre son correlativos. Existen tres formas de indexar los elementos de una matriz:

Indexacin base-cero (0): En este modo el primer elemento del vector ser la componente cero ('0') del mismo, es decir, tendr el ndice '0'. En consecuencia, si el vector tiene 'n' componentes la ltima tendr como ndice el valor 'n-1'. El lenguaje C es un ejemplo tpico que utiliza este modo de indexacin. Indexacin base-uno (1): En esta forma de indexacin, el primer elemento de la matriz tiene el ndice '1' y el ltimo tiene el ndice 'n' (para una matriz de 'n' componentes). Indexacin base-n (n): Este es un modo verstil de indexacin en la que el ndice del primer elemento puede ser elegido libremente, en algunos lenguajes de programacin se permite que los ndices puedan ser negativos e incluso de cualquier tipo escalar (tambin cadenas de caracteres).

[editar] Notacin
La representacin de un elemento en un vector se suele hacer mediante el identificador del vector seguido del ndice entre corchetes, parntesis o llaves: Notacin Ejemplos vector[ndice_1,ndice_2...,ndice_N] (Java, Lexico, Perl, etc.) vector[ndice_0][ndice_1]...[ndice_N] (C, C++, PHP, etc.) vector(ndice_1,ndice_2...,ndice_N) (Basic) Aunque muchas veces en pseudocdigo y en libros de matemtica se representan como letras acompaadas de un subndice numrico que indica la posicin a la que se quiere acceder. Por ejemplo, para un vector "A": (vector unidimensional)

[editar] Forma de acceso

La forma de acceder a los elementos de la matriz es directa; esto significa que el elemento deseado es obtenido a partir de su ndice y no hay que ir buscndolo elemento por elemento (en contraposicin, en el caso de una lista, para llegar, por ejemplo, al tercer elemento hay que acceder a los dos anteriores o almacenar un apuntador o puntero que permita acceder de manera rpida a ese elemento). Para trabajar con vectores muchas veces es preciso recorrerlos. Esto se realiza por medio de bucles. El siguiente pseudocdigo muestra un algoritmo tpico para recorrer un vector y aplicar una funcin ' ' a cada una de las componentes del vector:
i = 0 mientras (i < longitud) #Se realiza alguna operacin con el vector en la i-sima posicin f(v[i]) i=i+1 fin_mientras

[editar] Vectores dinmicos y estticos


Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque dependiendo del tipo de vector y del lenguaje de programacin un vector podra tener una cantidad variable de datos. En este caso, se les denomina vectores dinmicos, en oposicin, a los vectores con una cantidad fija de memoria asignada se los denomina vectores estticos. El uso de vectores dinmicos requiere realizar una apropiada gestin de memoria dinmica. Un uso incorrecto de los vectores dinmicos, o mejor dicho, una mala gestin de la memoria dinmica, puede conducir a una fuga de memoria. Al utilizar vectores dinmicos siempre habr que liberar la memoria utilizada cuando sta ya no se vaya a seguir utilizando. Lenguajes ms modernos y de ms alto nivel, cuentan con un mecanismo denominado recolector de basura (como es el caso de Java) que permiten que el programa decida si debe liberar el espacio basndose en si se va a utilizar en el futuro o no un determinado objeto.

[editar] Ejemplos en C

Declaracin en C/C++ de un vector esttico.

#include <iostream> // <iostream> cabecera de entrada y salida de base de datos "cout<<" y "cin>>" '''using namespace''' std; main() { int i, v[5];

// v[5] es un vector de 5 componentes

for(i=0; i<5 ;i++) { v[i] = 2*i; cout<<v[i]<<endl; cout<<endl; // Deja un espacio en blaco } }

Declaracin en C++ de un vector de STL:

#include <vector> vector<int> v; // Si no se especifica el tamao inicial es 0 for(int i=0 ;i<5 ;i++) { v.push_back(2*i); // inserta un elemento al final del vector }

El ejemplo anterior est hecho para el lenguaje C++. En C, para crear vectores dinmicos se tendran que utilizar las instrucciones malloc y realloc para reservar memoria de forma dinmica (ver biblioteca stdlib.h), y la funcin por free para liberar la memoria utilizada.

Resultado: 0 1 2 3 4 0 2 4 6 8 El resultado de los dos ejemplos es el mismo vector

[editar] Vectores multidimensionales


En Basic, Java y otros lenguajes es posible declarar matrices multidimensionales, entendindolas como un vector de vectores. En dichos casos en nmero de elementos del vector es el producto resultante de cada dimensin. Por ejemplo el vector v(4,1) tiene 10 elementos se calcula del siguiente modo: (0-4) * (0-1). Los elementos de la primera dimensin del vector contiene 5 elementos que van del '0' al '4' y la 2 dimensin tiene 2 elementos que van desde '0' a '1'. Los elementos seran accedidos del siguiente modo: elemento 1: (0,0) elemento 2: (0,1) elemento 3: (1,0) ... elemento 8: (3,1) elemento 9: (4,0) elemento 10: (4,1)

Laboratorios

Programacin en C Ejemplos
De Wikilibros, la coleccin de libros de texto de contenido libre. Programacin en C/Ejemplos Saltar a: navegacin, buscar

Contenido
[ocultar]

1 El "Hola Mundo" 2 El "Hola Mundo" comentado 3 El "Hola Mundo" estructurado en funciones 4 Ejemplo de clculo con enteros 5 Control de acceso

[editar] El "Hola Mundo"


#include <stdio.h> int main (int argc,char **argv) { printf("Hola mundo\n"); return 0; }

Nota: este programa est tomado del Dominio Pblico


$ ./holamundo Hola Mundo $

[editar] El "Hola Mundo" comentado


[Contexto]
/* Inclusin de archivos */ #include <stdio.h> /* Funcin principal */ int main (int argc,char **argv) { /* Impresin por pantalla y salida del programa*/ printf("Hola mundo\n"); return 0; } $ ./holamundoc Hola Mundo

[editar] El "Hola Mundo" estructurado en funciones


[Contexto]
/* holamundo.c (c) Envite, 2004 para el wikilibro "Programacin en C (fundamentos)" bajo licencia FDL, adaptado del Dominio Pblico */ #include <stdio.h> /*Necesario para la funcin printf()*/ void holamundo(void) /*Funcin donde se ejecuta la lgica del programa*/ { printf("Hola Mundo\n"); /*imprime la cadena*/ return; /*sale de la funcin*/ } int main(void) /*Funcin principal del programa*/ { holamundo(); /*llamada a la funcin que lleva el peso*/ return(0); /*sale del programa: correcto*/ } $ ./holamundof Hola mundo $

[editar] Ejemplo de clculo con enteros


[Contexto]
/* ejemplo.c (c) Envite, 2004 para el wikilibro "Programacin en C (fundamentos)" bajo licencia FDL */ #include <stdio.h> /*Necesario para la funcin printf()*/ int main(void) /*Funcin principal del programa*/ { char resultado; /*Variable de tipo carcter donde se almacenar el resultado de las operaciones.*/ resultado=5+2; /*Realizamos una suma.*/ printf("Resultado de la suma: %i\n",resultado); resultado=5-2; /*Realizamos una resta.*/

printf("Resultado de la resta:%i\n",resultado); resultado=5*2; /*Realizamos una multiplicacin.*/ printf("Resultado de la multiplicacin: %i\n",resultado); resultado=5/2; /*Realizamos una divisin entera.*/ printf("Resultado de la divisin:%i\n",resultado); return(0); /*Salimos del programa con el cdigo 0 porque no ha habido errores.*/ } $ ./ejemploc Resultado de Resultado de Resultado de Resultado de $

la la la la

suma: 7 resta: 3 multiplicacin: 10 divisin: 2

[editar] Control de acceso


[Volver al ndice general] [Arriba] [Contexto]
#include <stdio.h> void acceso(unsigned char edad) { if (edad < 18) printf("No puedes acceder.\n"); else printf("Bienvenido.\n"); return; } int main(void) { acceso(18); acceso(17); return(0); } $ ./acceso Bienvenido. No puedes acceder. $

Diferencias entre C y C++


Guardado en: Artculos el 21 de septiembre del 2011

Me han estado llegando comentarios y correos con dudas, correcciones y todo tipo de insultos ( no, eso ltimo no) y decid responder todos ellos con este post en el que aclarar lo que es C y lo que es C++ y sus diferencias.

C fue creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolucin del anterior lenguaje B, a su vez basado en BCPL. C++, por su parte, fue creado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. As que C es el lenguaje original, mientras que C++ es una ampliacin de C, por eso el ++. A mi cuando me ensearon a programar me dijeron que iba a aprender a programar en C++, pero en verdad me ensearon nicamente C, as que muchos profesores en realidad no saben lo que es programar en C++. Veamos un hola mundo en los dos programas: En C
1 #include<stdio.h> 2 3 int main() 4{ 5 printf ("Hola Mundo"); 6 return 0; 7}

En C++
1 #include<iostream> 2 3 using namespace std; 4 5 int main() 6{ 7 cout << "Hola mundo"; 8 return 0; 9}

Para el tipo de programas que se estarn mostrando en este blog la diferencia ms importante es la entrada y salida de datos. As que veamos un ejemplo de entrada y salida de datos de cada programa: En C
1 #include<stdio.h> 2 3 int main() 4 { 5 int radio; 6 float area, perimetro; 7 8 // SALIDA: mensaje un pantalla 9 printf("Introduce el radio del circulo: "); 10 11 //ENTRADA: recibir dato desde teclado 12 scanf("%d", &radio); 13 14 // calculos 15 area = 3.1416 * radio * radio; 16 perimetro = 3.1416 * radio * 2; 17 18 //SALIDA: resultado en pantalla 19 printf("El area es %.2f y el perimetro %.2f", area, perimetro); 20 getch();

21 22 23 }

return 0;

En C++
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int radio; 7 float area, perimetro; 8 9 // SALIDA: mensaje un pantalla 10 cout << "Introduce el radio del circulo: "; 11 12 //ENTRADA: recibir dato desde teclado 13 cin >> radio; 14 15 // calculos 16 area = 3.1416 * radio * radio; 17 perimetro = 3.1416 * radio * 2; 18 19 //SALIDA: resultado en pantalla 20 cout << "El area es " << area << " y el perimetro " << perimetro; 21 cin.get();cin.get(); 22 23 return 0; 24 }

Lo que not al hacer estos dos programitas es que pedir un dato en C++ es mucho mucho ms simple que en C. Sin embargo, el asunto de los << y >> puede llegar a asustar a los recin iniciados en la programacin. Pedir un dato en C
scanf("modificador", &nombre de la variable);

Pedir un dato en C++


cin >> nombre de la variable;

Mostrar un dato en C
printf("Dato: modificador", nombre de la variable);

Mostrar un dato en C++


cout << "Dato: " << nombre de la variable;

Los modificadores son los siguientes: %d para int, %f para float, %s para string, %c para char.

Libreras en C++
Por simple convencin las libreras en C terminan en .h (punto hache). Todas las libreras de C sirven para C++, sin embargo, tambin por convencin, se elimina la terminacin .h y mejor se agrega c al principio. Libreria en C Librera en C++

math.h cmath string.h cstring time.h ctime etcetera.

El namespace
C como lenguaje tiene un conjunto de palabras reservadas, como por ejemplo: if, for, while, int, float, C++ es una ampliacin, por lo tanto tiene que agregar nuevas palabras reservadas. stas palabras reservadas estn en un namespace (espacio de nombres). En especfico cout y cin estn el namespace std (standard). Si no declararamos que vamos a usar el namespace std (using namespace std;), cada vez que quisieramos usar cout, tendramos que escribir std::cout. Espero que a partir de ahora pueden identificar si un programa est en C o en C++. Tambin espero estar publicando mis programas en ambos lenguajes a partir de ahora.
6 Comentarios

#define en C++, cmo s y cmo no


Guardado en: Curso el 28 de agosto del 2011Etiquetas: bsico, define

El mayor objetivo de este post es darles a conocer una de las cosas que C++ permite hacer pero que nadie en su sano juicio debera de hacer. Y para que se los enseo entonces? Pues para que si algn da lo ven en un cdigo ajeno sepan qu pinch_ est pasando. Bueno, antes que nada, #define sirve para dos cosas: definir una constante o crear un macro. Los macros pueden llegar a ser algo difcil de entender, ahora slo veremos el asunto de las constantes. El asunto aqu es que si yo pongo (fuera del main) una lnea as:
#define PI 3.14159265

significa que cada vez que escribamos PI en nuestro programa, C++ lo interpretar como 3.14159265. Es una simple sustitucin.
#define <aqu va el nombre> <despus de un espacio va el valor>

Pero el asunto es que se puedes hacer algunas cosas bastantes feas con esta propiedad. Vean este programa:
1 #include<iostream> 2 using namespace std; 3 4 #define PI 3.14159265 5 #define NOF_CHAR 50 6 #define pause cin.get();cin.get(); 7 #define ct cout 8 #define cn cin 9 #define false true 10 11 int main() 12 { 13 char name[NOF_CHAR] = {0};

14 15 16 17 18 19 20 }

ct << "Enter your name: "; cn >> name; ct << "Bye " << name << "." << endl; if(false) ct << "P.S. Pi = " << PI; pause

Tenemos 6 definiciones, ordenadas en su nivel de aceptabilidad:


#define PI 3.14159265 y #define NOF_CHAR 50, stos ejemplifican el uso primario de #define: guardan un valor que es constante durante toda la ejecucin del programa. #define pause cin.get();cin.get();, sta ya empieza a ser no aceptable pero podemos darla por buena porque nos ayuda a leer mejor nuestro cdigo. Ya sabemos que al escribir cin.get();cin.get(); nuestro programa se pausa al igual que con un getch(), pero al usar este #define escribiremos en lugar de eso simplemente pause. #define ct cout y #define cn cin, totalmente inaceptables. Algunas personas usan este tipo de #defines para escribir menos, pero de verdad que (en la gran mayora de los casos) no vale la pena el ahorro de caracteres, slo estamos haciendo nuestro cdigo menos entendible para otras personas. #define false true, este es mas bien como una broma (y es increble que funcione en verdad), pero si se usa en serio es como una rayada de madre. Si ejecutan el cdigo vern que s se muestra la lnea donde se imprime PI an que est dentro de un if al que nunca se debera de entrar y porqu s entra? porque false es true. As que ya saben cmo s y cmo no usar un #define en C++, y ya no estn indefensos ante programadores con malos hbitos.
5 Comentarios

Nuevo: Curso de C++


Guardado en: Blog el 18 de agosto del 2011

Segn Google Analytics estn regresando las visitas, que raro que coincida con el inicio de clases verdad? :D pero bueno, afortunadamente yo s me preocupe por este blog en vacaciones. Como ya repet dos veces, esto es un blog, lo que significa que los posts mas recientes son los que aparecen al principio. Adems, cuando inici este blog mi propsito era ir avanzando en dificultad conforme al tiempo, no lo he cumplido mucho pero an as los posts sobre los temas ms bsicos estn enterrados debajo de los ms recientes. As que me tom un tiempo para echarme un clavado de panza en el Codex de WordPress y crear una forma diferente de navegar en el blog.

Entonces as es como inauguro (siendo las 19:30 del dia ah no verdad?) el Curso de C++. Todo lo que tienen que hacer es ir a este ndice y comenzar a leer: Curso de C++, ndice. Luego pueden simplemente dar clic en el link Siguiente que aparecer en la barra lateral (->). As que espero que les sea de utilidad, si les gusta presmanlo, si tienen un amigo que siempre les anda preguntando pues mndenlo aqu y lbrense de l.
5 Comentarios

Code::Blocks, un IDE moderno para C++


Guardado en: Blog el 12 de julio del 2011Etiquetas: ide

Yo hace un buen rato que no uso Dev-C++ para programar, y sin embargo vi que aqu en la barra lateral an est el link hacia el post donde se los recomiendo. As que ahora les voy a recomendar el IDE que uso actualmente Code::Blocks.

Code::Blocks tiene bastante ventajas respecto a otros IDES:


Aspecto moderno. A quin le gusta programar a pantalla completa en consola con fuente amarilla sobre fondo azul hoy en da? Multiplataforma. Windows XP/Vista/7, Mac OS X, Linux. Rpido. Est escrito en C++. Open Source. Eso significa muchas cosas, pero lo importante es que es gratis. Pestaas. Puedes tener muchos archivos abiertos. Lo pueden descargar aqu: Download Code::Blocks. Asegrense de descargar la versin que trae el compilador incluido, el que dice mingw. Si de plano nunca han manejado este tipo de software, tal vez les sean tiles estos consejos:

Para hacer un programa pequeo (lo que sea que no necesite mas de dos archivos) no se compliquen creando proyectos. Simplemente vayan a: File/New/Empy File. Luego guarden el archivo con extensin .cpp, preferentemente antes de empezar a programar (si no lo guardan no tendrn diferentes colores en su cdigo (Sintax Highlighting)). Hay tres botones relacionados con correr el programa: Build, Run y Build and Run. El primero solo construye el programa pero no lo corre, el segundo solo lo corre y el tercero los construye y los corre. As que cuando queramos probar nuestro programa el botn indicado es Build and Run, pero si no hemos hecho ningn cambio y queremos volver a probarlo es ms rpido Run.
10 Comentarios

Aprender ingls, en C++!?


Guardado en: Programas el 20 de mayo del 2011Etiquetas: matrices, rand

Me cont SetRoot a travs de un comentario que se le ocurri hacer un programa en C++ que nos ayudar a aprender palabras en ingls, en sus propias palabras:
Se me ocurrio hacer un programa para aprender ingles y creo que los tiros tambien van por ahi corrgeme: 1 llenar 1000 palabras 2 agruparlas por alguna relacion como emociones articulos y otros(para esto quisiera usar una matriz para acceder a ella mas facil aunque 2 matrices tambien creo q me van :s con punteros y eso ,s) 3 ejecucion: con un par de cases hacer un menu que me permita lanzar 20 palabras al azar(con sran o ran creo + time) con su significado y despues que me permita hacer un tipo de examen o test con esas mismas palabras desordenadas que cada acierto valga algo para ganar puntos y asi involucrar a los amigos y familiares

Me gust la idea de hacer un pequeo bosquejo de su idea porque precisamente se necesita usar el cdigo de mi ltimo post: Nmeros aleatorios sin repetir en C++. As que mi algoritmo es algo as: 1. Crear una matriz tipo string de N filas y 2 columnas, la primera columna son las palabras en ingls; la segunda, en espaol. 2. Pedir el nmero de palabras que el usuario quiera memorizar. 3. Obtener ese nmero de palabras aleatoriamente y mostrarlas. 4. Borrar las palabras y empezar a preguntar el significado de cada una. 5. Comparar la respuesta del usuario con la respuesta correcta. 6. Calcular su calificacin y mostrarla. El cdigo es este:
1 #include<cstdlib> 2 #include<ctime> 3 #include<iostream> 4 using namespace std; 5 6 int nofw; 7 #define N 8 // numero de pares de palabras en la matriz 8 9 bool checkrep(int n, int num[]) 10 { 11 for(int i=0; i<nofw; i++) 12 if(n == num[i]) 13 return true; 14 return false; 15 } 16 17 int main() 18 { 19 srand(time(NULL)); 20 string ans, words[N][2] = {{"hi", "hola"}, {"house", "casa"}, {"water", 21 "agua"}, 22 {"roof", "techo"}, {"chair", "silla"}, {"loudspeaker", "bocina"}, 23 {"screen", "pantalla"}, {"money", "dinero"}}; 24 int n, correct=0, wrong=0; 25 cout << "Numero de palabras?: "; cin >> nofw; 26 // obtener 'nofw' palabras aleatoriamente de nuestra matriz 27 int num[nofw];

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 }

for(int i=0; i<nofw; i++) { do n = rand() % N; while(checkrep(n, num)); num[i] = n; cout << words[n][0] << " -> " << words[n][1] << endl; } cin.get(); cin.get(); system("cls"); // preguntar el significado de cada palabra for(int i=0; i<nofw; i++) { cout << words[num[i]][0] << " = "; cin >> ans; if(ans == words[num[i]][1]) { correct++; cout << ">> Bien :)\n\n"; } else { wrong++; cout << ">> Mal :(\n\n"; } } cout << "Tuviste un " << (float)correct / (float)nofw * 100 << "% de respuestas correctas."; cin.get(); cin.get();

Como dije antes, es slo un bosquejo, pero tal vez sea el punto de partida para un buen proyecto. Para optimizarlo creo que se deberan agregar algunas cosas:

Obtener los pares de palabras desde una base de datos Ordenarlas por categoras Que no importe si la respuesta est en maysculas o minsculas Mejorar la interaccin con el usuario
12 Comentarios

Nmeros aleatorios sin repetir en C++


Guardado en: Programas el 1 de abril del 2011Etiquetas: bool, rand, while

Ya hemos visto cmo obtener nmero aleatorios en c++, pero tarde o temprano surge la necesidad de generar nmeros aleatorios pero sin que se repitan. Podra ser til para varias cosas como por ejemplo, ordenar de manera aleatoria elementos de una lista, formas grupos aleatorios, barajear cartas, etc. As que en algoritmo quedara algo as: 1. Crear una matriz y dejarla vaca. 2. Obtener un nmero aleatorio. 3. Checar si ese nmero existe en la matriz. Si si, regresar al paso 2. Si no, guardar el numero en la matriz. As que el programa es este:

1 #include<cstdlib> 2 #include<ctime> 3 #include<iostream> 4 using namespace std; 5 6 bool checkrep(int n, int num[]) 7 { 8 for(int i=0; i<10; i++) 9 if(n == num[i]) 10 return true; 11 return false; 12 } 13 14 int main() 15 { 16 srand(time(NULL)); 17 int n, num[10]; 18 for(int i=0; i<10; i++) 19 { 20 do 21 n = 1 + rand() % 10; 22 while(checkrep(n, num)); 23 num[i] = n; 24 cout << num[i] << " "; 25 } 26 }

Primero que nada, <cstdlib> es la forma correcta de incluir la librera <stdlib.h> en c++, igual con <ctime>. Como ven, usamos una funcin bool (que retorna falso o verdadero) para checar si el nmero aleatorio ya existe en nuestra matriz. Si cualquiera de los nmeros es igual a nuestro nmero aleatorio n, la funcin retorna true, por lo que el ciclo do-while desde el cual llamamos la funcin tendr que repetirse una vez ms y hasta que la funcin retorne false. Cuando se logra salir del ciclo do-while, guardamos nuestra n en el lugar de la matriz que corresponda, lo mostramos en pantalla y continumos con la siguiente posicin de la matriz. Otra cosa. Para decirnos si un nmero est repetido en la matriz, la funcin checkrep() necesita obviamente dos cosas, el nmero aleatorio y la matriz. As que le envimos como parmetros nuestra matriz y nuestro nmero aleatorio.
5 Comentarios

Devolver cambio en C++


Guardado en: Programas el 10 de febrero del 2011Etiquetas: if else, while

Han pagado algn recibo en una mquina automtica y se han preguntado cmo ser el programa que les devuelve el cambio? Lo ms seguro es que no, pero pues resulta que el profesor de Miguel ngel le encarg un programa que simulara eso, en sus propias palabras: Supn que una maquina de monedas de 10,5,2,1 y 50 centavos. Debes escribir un programa que decida cuantas monedas dar de cambio, dando prioridad las de mayor denominacin. Debe recibir como entrada la cantidad de dar a cambio. Ejemplo: para $40.50 ser 4 de 10, 0 de 5, 0 de 2, 0 de 1 y 1 de 50 centavos.

As que el primer problema se presenta con la entrada cmo hacer que el usuario introduzca slo cantidades como $50 o $43.50 y no cantidades como $23.45 o $9.70? Lo que se me ocurri es pedir la cantidad en una variable float (cambio), en otra variable convertir esa cantidad a tipo int (cambioint). En ese proceso se perder la parte decimal del nmero, as que si la resta cambio cambioint es igual a 0 o igual a 0.50, la cantidad que introdujo el usuario es correcta. La otra parte es sencilla, slo se necesita ver si la variable cambio es mayor que 10. Si si, se le restan 10 a la variable y se aumenta un contador. Luego se hace lo mismo con las dems monedas. Pero bueno, el programa es este:
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 float cambio; int cambioint, m10=0, m5=0, m2=0, m1=0, m50c=0; 7 do 8 { 9 cout << "Cambio?: "; cin >> cambio; 10 cambioint = (int)cambio; 11 }while((cambio - cambioint) != 0 && (cambio - cambioint) != 0.50); 12 while(cambio != 0) 13 { 14 if(cambio>=10) 15 { 16 m10++; 17 cambio-=10; 18 } 19 else if(cambio>=5) 20 { 21 m5++; 22 cambio-=5; 23 } 24 else if(cambio>=2) 25 { 26 m2++; 27 cambio-=2; 28 } 29 else if(cambio>=1) 30 { 31 m1++; 32 cambio-=1; 33 }

34 35 36 37 38 39 40 41 }

else if(cambio>=0.5) { m50c++; cambio-=0.5; } } cout << m10 << ", " << m5 << ", " << m2 << ", " << m1 << ", " << m50c;

Solo le faltara darle un poco de formato a la salida, pero pues ya es cuestin de gustos y ya saben, cualquier duda aqu estn los comentarios abajo.
12 Comentarios

Cuando inicializar las variables en cero y cuando no


Guardado en: Curso el 14 de enero del 2011Etiquetas: variables

Cuando empec a aprender a programar en c++ (creo que uno nunca acaba) me ensearon que siempre hay que inicializar en cero o en algn otro valor las variables, porque si no, pueden tomar valores raros que podran arruinar nuestro programa. Vamos a ver si la leyenda es cierta:
1 #include<iostream> 2 using namespace std; 3 4 int main() 5{ 6 int var1; 7 cout << var1; 8}

Pues con mi compilador s lo es, una variable sin inicializar toma valores raros. Pero si se han fijado en mis programas, yo no siempre inicializo mis variables, por qu? Pues porque no siempre es necesario. La regla es bastante simple: Si la primera instruccin en la que usamos nuestra variable es de asignacin, no es necesario inicializarla. Por ejemplo:
cin >> var1; // no es necesario inicializarla var2 = 14; // no es necesario inicializarla cout << var3; // es necesario inicializarla var4 = cos(45); // no es necesario inicializarla var5++; // es necesario inicializarla if(var6 != 7) // es necesario inicializarla cin.getline(var7); // no es necesario inicializarla

Podemos seguir inicializando todas las variables que usemos, pero si nicamente inicializamos las necesarias vamos a dar la impresin de que sabemos lo que estamos haciendo XD

>> ARITMETICA <<


Mostrar los multiplos de 3 comprendidos entre los numeros 1 y 20 Cdigo: #include <stdio.h> #include <conio.h> #include <iostream.h> int main () { clrscr(); for (int i=1;i<=20;i++) { cout<<i; if (i%3==0) cout<<" Es multiplo de 3" <<endl; else cout<<" No es multiplo de 3"<<endl; } getch(); return 0; }

Hallar A+B-C+100 Cdigo: #include <stdio.h> #include <conio.h.> int main () { int A, B, C; printf("Inserte valor para A: "); scanf("%d",&A); printf("Inserte valor para B: "); scanf("%d",&B); printf("Inserte valor para C: "); scanf("%d",&C); printf("\n%d + %d - %d + 100 = %d",A, B, C, (A+B+C-100)); getch(); }

Obtener (a-b)(a+b) Cdigo: #include <stdio.h> #include <conio.h> int main () { int a, b; printf("Inserte valor a: "); scanf("%d",&a); printf("Inserte valor b: "); scanf("%d",&b); printf("(%d-%d) (%d+%d) = %d",a, b, a, b,((a-b)*(a+b))); getch(); }

Leer un numero de 3 digitos y sumarlos Cdigo: #include <stdio.h> #include <conio.h> int main () { int numero, sum_dig=0; printf("Inserte un numero de 3 digitos: "); scanf("%d",&numero); if (numero>=100) { int num=numero; //salvamos en num, la variable numero while (numero!=0) { sum_dig=sum_dig+(numero%10); //para sacar el ultimo digito de numero numero=numero/10; //elimina el ultimo digito de numero } printf("La suma de los digitos de %d es : %d",num, sum_dig); } else printf("\a ERROR: El digito no tiene 3 digitos"); getch(); }

Dado un numero verificar: - Que tenga dos digitos - Verificar si sus digitos son pares - Promediar sus digitos Cdigo: #include <stdio.h> #include <conio.h> int main () { int numero; printf("Inserte num. de dos digitos pares: "); scanf("%d",&numero); int aux=numero; if(numero<100 && numero>9) { int d1=numero%10; numero=numero/10; int d2=numero%10; if(d1%2==0 & d2%2==0) printf("El promedio d los digitos de %d es: %d",aux,(d1+d2)/2); } else printf("\aERROR: el numero no tiene dos digitos"); getch(); }

Dado un numero verificar si es positivo, negativo o nulo Cdigo: #include <stdio.h> #include <conio.h> int main () { int numero; printf("Inserte un numero: "); scanf("%d",&numero); if(numero==0) printf("El numero %d es NULO",numero); else { if(numero<0) printf("El numero %d es NEGATIVO",numero); else printf("El numero %d es POSITIVO",numero); } getch(); }

Dados seis numeros enteros determinar, el menor de ellos Cdigo: #include<stdio.h> #include<conio.h> int main() { int a, b, c, d, e, f; printf("Inserte num.1: "); scanf("%d",&a); printf("Inserte num.2: "); scanf("%d",&b); printf("Inserte num.3: "); scanf("%d",&c); printf("Inserte num.4: "); scanf("%d",&d); printf("Inserte num.5: "); scanf("%d",&e); printf("Inserte num.6: "); scanf("%d",&f); int menor=a; if(b<menor) menor=b; if(c<menor) menor=c; if(d<menor) menor=d; if(e<menor) menor=e; if(f<menor) menor=f; printf("El menor de %d,%d,%d,%d,%d,%d ",a,b,c,d,e,f); printf("\nEs %d",menor); getch(); }

En lnea

[www.darvein.org]

Darvein

Re: Ejercicios resueltos C++ [programacion estructurada] Respuesta #1 en: 26 Febrero 2008, 18:41

Desconectado Mensajes: 181

>> SERIES <<


hallar la sumatoria de: 2! + 4! + 6! + 8! + ... Cdigo: #include <stdio.h> #include <conio.h> int facto (int x) { int f=1; for (int i=1;i<=x;i++) {f=f*i;} return (f); } int main () { int n, serie=2, suma=0; printf ("Inserte cantidad de terminos a generar: "); scanf ("%d",&n); for (int i=1;i<=n;i++) { printf ("%d! + ",serie); suma=suma+(facto(serie)); serie=serie+2; } printf (" = %d",suma); getch(); }

=)

Generar la serie: 1, 5, 3, 7, 5, 9, 7, ..., 23 Cdigo: #include <stdio.h> #include <conio.h>

int main () { int serie=1; bool sw=true; do { printf("%d, ",serie); if (sw) serie+=4; else serie-=2; sw=!sw; } while (serie<=23); getch(); }

Generar 5,10,15,20,25,30,35....n Cdigo: #include<stdio.h> #include<conio.h> int main () { int n, c=1, serie=5; printf("Cantidad de terminos: "); scanf("%d",&n); while(c<=n) { printf("%d,",serie); serie+=5; c++; } getch(); }

Si n=7 generar 7,6,5,4,3,2,1 Cdigo: #include<stdio.h> #include<conio.h> int main () { int n, c=1; printf("Cantidad de terminos: "); scanf("%d",&n); int serie=n; while(c<=n) { printf("%d,",serie); serie--; c++; } getch(); }

En lnea

[www.darvein.org]

Darvein

Re: Ejercicios resueltos C++ [programacion estructurada] Respuesta #2 en: 26 Febrero 2008, 18:42

Desconectado Mensajes: 181

>> VECTORES <<


/*Dado el vector T de tamao n. Si el tamao es par invertir los elementos de la mitad de los elementos Ejemplo: v=[1][2][3][4][5][6] v(invertido)=[3][2][1][6][5][4] */ Cdigo: #include<stdio.h> #include<conio.h> void llenar (int V [], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V[i]); } } void mostrar (int V [], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V[i]); } } void invierte (int V [], int d) { int aux1; int fin1 = d / 2; for (int i = 1 ; i <= (d / 2) / 2 ; i++) { aux1 = V [i]; V [i] = V [fin1]; V [fin1] = aux1;

=)

fin1--; } fin1 = d; for (int j = (d / 2) + 1 ; j <= (d / 2) + 1 ; j++) { aux1 = V [j]; V [j] = V [fin1]; V [fin1] = aux1; fin1--; } } int main () { int V[20]; int d; printf ("Inserte dimen. del vector: "); scanf("%d",&d); llenar (V, d); printf ("\nVECTOR ORIGINAL: \n"); mostrar (V, d); printf ("\n\nVECTOR LUEGO DE LA INVERSION: \n"); invierte (V, d); mostrar (V, d); getch(); }

/*Dado un polinomio evualuarlo en el punto x (todo en un vector)*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V[i]); } } void mostrar (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V[i]); } } int potencia (int b, int e) { int p = 1; for (int i = 1 ; i <= e ; i++) {

p = p * b; } return (p); } void evalua (int { int s = 0; for (int i = 1 ; { s = s + (V [i] * } printf("\n\nX es } V [], int d, int x)

i <= d ; i += 2) potencia (x, V [i + 1])); igual a: %d",s);

int main () { int V[20]; int d, x; printf("Inserte dimen. del vector: "); scanf("%d",&d); printf ("Inserte valor de (x): "); scanf("%d",&x); llenar (V, d); printf("\nVECTOR: "); mostrar (V, d); evalua (V, d, x); getch(); }

En lnea

[www.darvein.org]

Darvein

Re: Ejercicios resueltos C++ [programacion estructurada] Respuesta #3 en: 26 Febrero 2008, 18:44

Desconectado Mensajes: 181

>> MATRICES <<


Generar la matriz: [01][02][03][04] [08][07][06][05] [09][10][11][12] Cdigo: #include<stdio.h> #include<conio.h>

=)

void llenar (int M[20][20], int f, int c) { int k=1; for (int i=1;i<=f;i++) { if (i%2!=0) { for (int j=1;j<=c;j++) { M[i][j]=k; k++; } } else { for (int j=c;j>=1;j--) { M[i][j]=k; k++; } } } } void mostrar (int M[20][20], int f, int c) { for (int i=1;i<=f;i++) { printf("\n"); for (int j=1;j<=c;j++) { printf("[%d] ",M[i][j]); } } } int main () { int f, c; int M[20][20]; printf("Inserte filas de M: "); scanf("%d",&f); printf("Inserte cols. de M: "); scanf("%d",&c); llenar(M, f, c); mostrar(M, f, c); getch(); }

Generar la matriz: [01][02][03][04] [05][06][07][00] [08][09][00][00] [10][00][00][00] Cdigo: #include <stdio.h>

#include <conio.h> void llenar (int M[20][20], int d) { int cont=1; for (int i=1;i<=d;i++) { for (int j=1;j<=d;j++) { if ((i+j)<=(d+1)) {M[i][j]=cont; cont++;} else M[i][j]=0; } } } void mostrar (int M[20][20], int d) { for (int i=1;i<=d;i++) { printf("\n"); for (int j=1;j<=d;j++) { printf ("[%d] ",M[i][j]); } } } int main () { int d; int M[20][20]; printf("Insert dimen: "); scanf("%d",&d); llenar(M, d); mostrar(M, d); getch(); }

Dadas dos matrices A y B intercambiar los minimos de A con los maximos de B Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M[i][j]); }

} } void mostrar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M[i][j]); } } } int menor (int M[20][20], int f, int c) { int men = M [1] [1]; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] < men) men = M [i] [j]; } } return (men); } int maximo (int M[20][20], int f, int c) { int max = M [1] [1]; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] > max) max = M [i] [j]; } } return (max); } void intercambiar (int A[20][20], int fa, int ca, int B[20][20], int fb, int cb) { int min_a = menor (A, fa, ca); int max_b = maximo (B, fb, cb); //para cambiar los minimos de A con los maximos de B for (int i = 1 ; i <= fa ; i++) { for (int j = 1 ; j <= ca ; j++) { if (A[i][j] == min_a) A[i][j]=max_b; }

} //para intercambiar los maximos de con los minimos de A for (int i = 1 ; i <= fb ; i++) { for (int j = 1 ; j <= cb ; j++) { if (B[i][j] == max_b) B[i][j]=min_a; } } } int main () { int A [20] [20]; int B [20] [20]; int fa, ca, fb, cb; printf ("Insert filas de printf ("Insert columnas printf ("Insert filas de printf ("Insert columnas

A: de B: de

"); scanf("%d",&fa); A: "); scanf("%d",&ca); "); scanf("%d",&fb); B: "); scanf("%d",&cb);

//lectura de matrices printf ("\nINSERTANDO DATOS EN MATRIS A: \n"); llenar (A, fa, ca); printf ("\nINSERTANDO DATOS EN MATRIS B: \n"); llenar (B, fb, cb); printf ("\nMATRICES ORIGINALMENTE INSERTADAS: "); mostrar (A, fa, ca); printf ("\n"); mostrar (B, fb, cb); printf ("\n"); //intercambiando elementos intercambiar (A, fa, ca, B, fb, cb); printf ("\nMATRICES DESPUES DEL INTERCAMBIO:"); mostrar (A, fa, ca); printf ("\n"); mostrar (B, fb, cb); getch(); }

/*Dada una matris cuadrada invertir su diagonal principal*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { for (int j = 1 ; j <= d ; j++) {

printf ("Inserte pos[%d][%d]: ",i, j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { printf("\n"); for (int j = 1 ; j <= d ; j++) { printf ("[%d]",M [i] [j]); } } } void invierte (int M[20][20], int d) { int fin = d; for (int i = 1 ; i <= d / 2 ; i++) { int aux = M [i] [i]; M [i] [i] = M [d] [d]; M [d] [d] = aux; fin--; } } int main() { int M [20] [20]; int d; printf ("Inserte dimen. de la matris cuadrada: "); scanf("%d",&d); llenar (M, d); printf ("\nMATRIS ORIGINAL: "); mostrar (M, d); printf ("\n\nMATRIS CON LA DIAGONAL PRINCIPAL INVERTIDA: "); invierte (M, d); mostrar (M, d); getch(); }

/*Dada una matris cuadrada invertir su diagonal secundaria*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { for (int j = 1 ; j <= d ; j++)

{ printf ("Inserte pos[%d][%d]: ",i, j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { printf("\n"); for (int j = 1 ; j <= d ; j++) { printf ("[%d]",M [i] [j]); } } } void invierte (int M[20][20], int d) { int fin = d; for (int i = 1 ; i <= d / 2 ; i++) { int aux = M [i] [d]; M [i] [d] = M [d] [i]; M [d] [i] = aux; fin--; } } int main() { int M [20] [20]; int d; printf ("Inserte dimen. de la matris cuadrada: "); scanf("%d",&d); llenar (M, d); printf ("\nMATRIS ORIGINAL: "); mostrar (M, d); printf ("\n\nMATRIS CON LA DIAGONAL SECUNDARIA INVERTIDA: "); invierte (M, d); mostrar (M, d); getch(); }

/*Dada dos matrices de diferentes tamanios R y S mostrar los elementos comunes de R en S*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c)

{ for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void comunes (int R[20][20], int fr, int cr, int S[20][20], int fs, int cs) { printf("\n\nLos elementos comunes de R en S son: "); for (int i = 1 ; i <= fr ; i++) { for (int j = 1 ; j <= cr ; j++) { for (int k = 1 ; k <= fs ; k++) { for (int l = 1 ; l <= cs ; l++) { if (R [i] [j] == S [k] [l]) printf ("[%d]",R [i] [j]); } } } } } int main() { int R [20] [20]; int S [20] [20]; int fr, cr, fs, cs; printf("Inserte filas de scanf("%d",&fr); printf("Inserte columnas scanf("%d",&cr); printf("Inserte filas de scanf("%d",&fs); printf("Inserte columnas scanf("%d",&cs);

R: "); de R: "); S: "); de S: ");

printf("\nLLENANDO MATRIS R: \n"); llenar (R, fr, cr); printf("\nLLENANDO MATRIS S: \n"); llenar (S, fs, cs); printf("\nLA MATRIS R : "); mostrar (R, fr, cr); printf("\n\nLA MATRIS S : "); mostrar (S, fs, cs); comunes (R, fr, cr, S, fs, cs); getch(); }

/*Intercambiar los datos de la columna 1 con la ultima columna*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos:[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void intercambiar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { int aux = M [i] [1]; M [i] [1] = M [i] [c]; M [i] [c] = aux; } }

int main () { int M [20] [20]; int f, c; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS : \n"); llenar (M, f, c); printf ("\nLA MATRIS ORIGINAL : "); mostrar (M, f, c); printf ("\n\nLA MATRICES INTERCAMBIADA : "); intercambiar (M, f, c); mostrar (M, f, c); getch(); }

/* Contar el numero de digitos de cada elemento de una matris */ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M [20] [20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M [20] [20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void cuenta (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) {

for (int j = 1 ; j <= c ; j++) { int contador = 0; int n=M[i][j]; while (n != 0) { n = n / 10; contador++; } printf("\n[%d] tiene: %d digito(s)",M[i][j],contador); } } } int main () { int M [20] [20]; int f, c; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS M: \n"); llenar (M, f, c); printf ("\nLA MATRIS: "); mostrar (M, f, c); printf ("\n\nCONTEO DE DIGITOS: "); cuenta (M, f, c); getch(); }

/*Hallar la fila y la columna del primer elemento "e" */ Cdigo: #include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++)

{ printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ); } } } void busqueda (int M[20][20], int f, int c, int e) { int bn = 0; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] == e) { printf("\nEl numero: %d se encuentra en la posicion: [%d][%d] de la matris",e, i, j); bn = 1; } } } if (bn == 0) printf("\nNo se encontro el numero %d en la matris :(",e); } int main () { int M [20] [20]; int f, c, numero; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, c); printf ("\nLA MATRIZ Z: "); mostrarMatris (M, f, c); printf ("\n\nInserte un numero: "); scanf("%d",&numero); busqueda (M, f, c, numero); getch(); }

En lnea

[www.darvein.org]

Darvein

Re: Ejercicios resueltos C++ [programacion estructurada] Respuesta #4 en: 26 Febrero 2008, 18:45

Desconectado Mensajes: 181

>> MATRICES y VECTORES<<


/* Dada una matris y un vector, contar la cantidad de numeros primos de ambos */ Cdigo: #include <stdio.h> #include <conio.h> =) void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ) } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); } } void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V [i]); }

} int primosMatris (int M[20][20], int f, int c) { int cant = 0; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { int cc = 0; for (int k = 1 ; k <= M [i] [j] ; k++) { if (M [i] [j] % k == 0) cc++; } if (cc == 2) cant++; } } return (cant); }

int primosVector { int cant = 0; for (int i = 1 ; { int c = 0; for (int j = 1 ; { if (V [i] % j == c++; } if (c == 2) cant++; } return (cant); }

(int V[20], int d)

i <= d ; i++)

j <= V [i] ; j++) 0)

int main() { int M [20] [20]; int V [20]; int f, c, d; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("Inserte dimension del vector: "); scanf("%d",&d); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, c);

printf ("\nLLENANDO EL VECTOR: \n"); llenarVector (V, d); printf ("\nLA MATRIS: "); mostrarMatris (M, f, c); printf ("\n\nEL VECTOR: \n"); mostrarVector (V, d); int primos = primosMatris (M, f, c) + primosVector (V, d); printf ("\n\nLA CANTIDAD DE NUMEROS PRIMOS QUE HAY EN LOS ARREGLOS ES: %d",primos); getch(); }

/*Dada la matrix de m*n y el vector de tamanio n, determinar que columna de la matris es igual al vector*/ Cdigo: #include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ); } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); }

} void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V [i]); } }

void procedure (int M[20][20], int f, int c, int V[20], int d) { for (int i = 1 ; i <= f ; i++) { int sw = 1; for (int j = 1 ; j <= c ; j++) { for (int k = 1 ; k <= d ; k++) { if (M [j] [i] != V [k]) sw = 0; } } if (sw == 1) printf ("\n\nLa columna %d es igual al vector",i); } }

int main () { int M [20] [20]; int V [20]; int f, d; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte dimension del vector: "); scanf("%d",&d); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, d); printf ("\nLLENANDO EL VECTOR: \n"); llenarVector (V, d);

printf ("\nLA MATRIS: "); mostrarMatris (M, f, d); printf ("\n\nEL VECTOR: \n"); mostrarVector (V, d); procedure (M, f, d, V, d); getch();

/*Dada una matris Z almacenar en un vector A la suma por sus columnas y en un vector B la suma por sus filas */ Cdigo: #include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ); } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); } } void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V [i]); } }

void vectorA (int M[20][20], int f, int c, int A[20], int d) { for (int i = 1 ; i <= f ; i++)

{ int suma = 0; for (int j = 1 ; j <= c ; j++) { suma = suma + M [j] [i]; } A [i] = suma; } } void vectorB (int M[20][20], int f, int c, int B[20], int d) { for (int i = 1 ; i <= f ; i++) { int suma = 0; for (int j = 1 ; j <= c ; j++) { suma = suma + M [i] [j]; } B [i] = suma; } } int main () { int Z [20] [20]; int A [20]; int B [20]; int f, c; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (Z, f, c); printf ("\nLA MATRIZ Z: "); mostrarMatris (Z, f, c); printf ("\n\nSUMA vectorA (Z, f, c, mostrarVector (A, printf ("\n\nSUMA vectorB (Z, f, c, mostrarVector (B, getch(); } POR COLUMNAS DE LA MATRIS (vector A): \n"); A, c); c); POR FILAS DE LA MATRIS (vector B): \n"); B, f); f);

>> ARITMETICA <<

Mostrar los multiplos de 3 comprendidos entre los numeros 1 y 20 Cdigo: #include <stdio.h> #include <conio.h> #include <iostream.h> int main () { clrscr(); for (int i=1;i<=20;i++) { cout<<i; if (i%3==0) cout<<" Es multiplo de 3" <<endl; else cout<<" No es multiplo de 3"<<endl; } getch(); return 0; }

Hallar A+B-C+100 Cdigo: #include <stdio.h> #include <conio.h.> int main () { int A, B, C; printf("Inserte valor para A: "); scanf("%d",&A); printf("Inserte valor para B: "); scanf("%d",&B); printf("Inserte valor para C: "); scanf("%d",&C); printf("\n%d + %d - %d + 100 = %d",A, B, C, (A+B+C-100)); getch(); }

Obtener (a-b)(a+b) Cdigo: #include <stdio.h> #include <conio.h> int main () { int a, b; printf("Inserte valor a: "); scanf("%d",&a); printf("Inserte valor b: "); scanf("%d",&b); printf("(%d-%d) (%d+%d) = %d",a, b, a, b,((a-b)*(a+b))); getch(); }

Leer un numero de 3 digitos y sumarlos

Cdigo: #include <stdio.h> #include <conio.h> int main () { int numero, sum_dig=0; printf("Inserte un numero de 3 digitos: "); scanf("%d",&numero); if (numero>=100) { int num=numero; //salvamos en num, la variable numero while (numero!=0) { sum_dig=sum_dig+(numero%10); //para sacar el ultimo digito de numero numero=numero/10; //elimina el ultimo digito de numero } printf("La suma de los digitos de %d es : %d",num, sum_dig); } else printf("\a ERROR: El digito no tiene 3 digitos"); getch(); }

Dado un numero verificar: - Que tenga dos digitos - Verificar si sus digitos son pares - Promediar sus digitos Cdigo: #include <stdio.h> #include <conio.h> int main () { int numero; printf("Inserte num. de dos digitos pares: "); scanf("%d",&numero); int aux=numero; if(numero<100 && numero>9) { int d1=numero%10; numero=numero/10; int d2=numero%10; if(d1%2==0 & d2%2==0) printf("El promedio d los digitos de %d es: %d",aux,(d1+d2)/2); } else printf("\aERROR: el numero no tiene dos digitos"); getch(); }

Dado un numero verificar si es positivo, negativo o nulo Cdigo:

#include <stdio.h> #include <conio.h> int main () { int numero; printf("Inserte un numero: "); scanf("%d",&numero); if(numero==0) printf("El numero %d es NULO",numero); else { if(numero<0) printf("El numero %d es NEGATIVO",numero); else printf("El numero %d es POSITIVO",numero); } getch(); }

Dados seis numeros enteros determinar, el menor de ellos Cdigo: #include<stdio.h> #include<conio.h> int main() { int a, b, c, d, e, f; printf("Inserte num.1: "); scanf("%d",&a); printf("Inserte num.2: "); scanf("%d",&b); printf("Inserte num.3: "); scanf("%d",&c); printf("Inserte num.4: "); scanf("%d",&d); printf("Inserte num.5: "); scanf("%d",&e); printf("Inserte num.6: "); scanf("%d",&f); int menor=a; if(b<menor) menor=b; if(c<menor) menor=c; if(d<menor) menor=d; if(e<menor) menor=e; if(f<menor) menor=f; printf("El menor de %d,%d,%d,%d,%d,%d ",a,b,c,d,e,f); printf("\nEs %d",menor); getch(); }

En lnea

[www.darvein.org]

Darvein

Re: Ejercicios resueltos C++ [programacion estructurada] Respuesta #1 en: 26 Febrero 2008, 18:41

Desconectado Mensajes: 181

>> SERIES <<


hallar la sumatoria de: 2! + 4! + 6! + 8! + ... Cdigo: #include <stdio.h> #include <conio.h> int facto (int x) { int f=1; for (int i=1;i<=x;i++) {f=f*i;} return (f); } int main () { int n, serie=2, suma=0; printf ("Inserte cantidad de terminos a generar: "); scanf ("%d",&n); for (int i=1;i<=n;i++) { printf ("%d! + ",serie); suma=suma+(facto(serie)); serie=serie+2; } printf (" = %d",suma); getch(); }

=)

Generar la serie: 1, 5, 3, 7, 5, 9, 7, ..., 23 Cdigo: #include <stdio.h> #include <conio.h> int main () { int serie=1;

bool sw=true; do { printf("%d, ",serie); if (sw) serie+=4; else serie-=2; sw=!sw; } while (serie<=23); getch(); }

Generar 5,10,15,20,25,30,35....n Cdigo: #include<stdio.h> #include<conio.h> int main () { int n, c=1, serie=5; printf("Cantidad de terminos: "); scanf("%d",&n); while(c<=n) { printf("%d,",serie); serie+=5; c++; } getch(); }

Si n=7 generar 7,6,5,4,3,2,1 Cdigo: #include<stdio.h> #include<conio.h> int main () { int n, c=1; printf("Cantidad de terminos: "); scanf("%d",&n); int serie=n; while(c<=n) { printf("%d,",serie); serie--; c++; } getch(); }

En lnea

[www.darvein.org]

Darvein

Re: Ejercicios resueltos C++ [programacion estructurada] Respuesta #2 en: 26 Febrero 2008, 18:42

Desconectado Mensajes: 181

>> VECTORES <<


/*Dado el vector T de tamao n. Si el tamao es par invertir los elementos de la mitad de los elementos Ejemplo: v=[1][2][3][4][5][6] v(invertido)=[3][2][1][6][5][4] */ Cdigo: #include<stdio.h> #include<conio.h> void llenar (int V [], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V[i]); } } void mostrar (int V [], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V[i]); } } void invierte (int V [], int d) { int aux1; int fin1 = d / 2; for (int i = 1 ; i <= (d / 2) / 2 ; i++) { aux1 = V [i]; V [i] = V [fin1]; V [fin1] = aux1; fin1--; } fin1 = d;

=)

for (int j = (d / 2) + 1 ; j <= (d / 2) + 1 ; j++) { aux1 = V [j]; V [j] = V [fin1]; V [fin1] = aux1; fin1--; } } int main () { int V[20]; int d; printf ("Inserte dimen. del vector: "); scanf("%d",&d); llenar (V, d); printf ("\nVECTOR ORIGINAL: \n"); mostrar (V, d); printf ("\n\nVECTOR LUEGO DE LA INVERSION: \n"); invierte (V, d); mostrar (V, d); getch(); }

/*Dado un polinomio evualuarlo en el punto x (todo en un vector)*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V[i]); } } void mostrar (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V[i]); } } int potencia (int b, int e) { int p = 1; for (int i = 1 ; i <= e ; i++) { p = p * b; } return (p); }

void evalua (int { int s = 0; for (int i = 1 ; { s = s + (V [i] * } printf("\n\nX es }

V [], int d, int x)

i <= d ; i += 2) potencia (x, V [i + 1])); igual a: %d",s);

int main () { int V[20]; int d, x; printf("Inserte dimen. del vector: "); scanf("%d",&d); printf ("Inserte valor de (x): "); scanf("%d",&x); llenar (V, d); printf("\nVECTOR: "); mostrar (V, d); evalua (V, d, x); getch(); }

En lnea

[www.darvein.org]

Darvein

Re: Ejercicios resueltos C++ [programacion estructurada] Respuesta #3 en: 26 Febrero 2008, 18:44

Desconectado Mensajes: 181

>> MATRICES <<


Generar la matriz: [01][02][03][04] [08][07][06][05] [09][10][11][12] Cdigo: #include<stdio.h> #include<conio.h> void llenar (int M[20][20], int f, int c) { int k=1; for (int i=1;i<=f;i++)

=)

{ if (i%2!=0) { for (int j=1;j<=c;j++) { M[i][j]=k; k++; } } else { for (int j=c;j>=1;j--) { M[i][j]=k; k++; } } } } void mostrar (int M[20][20], int f, int c) { for (int i=1;i<=f;i++) { printf("\n"); for (int j=1;j<=c;j++) { printf("[%d] ",M[i][j]); } } } int main () { int f, c; int M[20][20]; printf("Inserte filas de M: "); scanf("%d",&f); printf("Inserte cols. de M: "); scanf("%d",&c); llenar(M, f, c); mostrar(M, f, c); getch(); }

Generar la matriz: [01][02][03][04] [05][06][07][00] [08][09][00][00] [10][00][00][00] Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int d) { int cont=1;

for (int i=1;i<=d;i++) { for (int j=1;j<=d;j++) { if ((i+j)<=(d+1)) {M[i][j]=cont; cont++;} else M[i][j]=0; } } } void mostrar (int M[20][20], int d) { for (int i=1;i<=d;i++) { printf("\n"); for (int j=1;j<=d;j++) { printf ("[%d] ",M[i][j]); } } } int main () { int d; int M[20][20]; printf("Insert dimen: "); scanf("%d",&d); llenar(M, d); mostrar(M, d); getch(); }

Dadas dos matrices A y B intercambiar los minimos de A con los maximos de B Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M[i][j]); } } } void mostrar (int M[20][20], int f, int c)

{ for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M[i][j]); } } } int menor (int M[20][20], int f, int c) { int men = M [1] [1]; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] < men) men = M [i] [j]; } } return (men); } int maximo (int M[20][20], int f, int c) { int max = M [1] [1]; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] > max) max = M [i] [j]; } } return (max); } void intercambiar (int A[20][20], int fa, int ca, int B[20][20], int fb, int cb) { int min_a = menor (A, fa, ca); int max_b = maximo (B, fb, cb); //para cambiar los minimos de A con los maximos de B for (int i = 1 ; i <= fa ; i++) { for (int j = 1 ; j <= ca ; j++) { if (A[i][j] == min_a) A[i][j]=max_b; } } //para intercambiar los maximos de con los minimos de A for (int i = 1 ; i <= fb ; i++) {

for (int j = 1 ; j <= cb ; j++) { if (B[i][j] == max_b) B[i][j]=min_a; } } } int main () { int A [20] [20]; int B [20] [20]; int fa, ca, fb, cb; printf ("Insert filas de printf ("Insert columnas printf ("Insert filas de printf ("Insert columnas

A: de B: de

"); scanf("%d",&fa); A: "); scanf("%d",&ca); "); scanf("%d",&fb); B: "); scanf("%d",&cb);

//lectura de matrices printf ("\nINSERTANDO DATOS EN MATRIS A: \n"); llenar (A, fa, ca); printf ("\nINSERTANDO DATOS EN MATRIS B: \n"); llenar (B, fb, cb); printf ("\nMATRICES ORIGINALMENTE INSERTADAS: "); mostrar (A, fa, ca); printf ("\n"); mostrar (B, fb, cb); printf ("\n"); //intercambiando elementos intercambiar (A, fa, ca, B, fb, cb); printf ("\nMATRICES DESPUES DEL INTERCAMBIO:"); mostrar (A, fa, ca); printf ("\n"); mostrar (B, fb, cb); getch(); }

/*Dada una matris cuadrada invertir su diagonal principal*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { for (int j = 1 ; j <= d ; j++) { printf ("Inserte pos[%d][%d]: ",i, j); scanf("%d",&M [i] [j]); } }

} void mostrar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { printf("\n"); for (int j = 1 ; j <= d ; j++) { printf ("[%d]",M [i] [j]); } } } void invierte (int M[20][20], int d) { int fin = d; for (int i = 1 ; i <= d / 2 ; i++) { int aux = M [i] [i]; M [i] [i] = M [d] [d]; M [d] [d] = aux; fin--; } } int main() { int M [20] [20]; int d; printf ("Inserte dimen. de la matris cuadrada: "); scanf("%d",&d); llenar (M, d); printf ("\nMATRIS ORIGINAL: "); mostrar (M, d); printf ("\n\nMATRIS CON LA DIAGONAL PRINCIPAL INVERTIDA: "); invierte (M, d); mostrar (M, d); getch(); }

/*Dada una matris cuadrada invertir su diagonal secundaria*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { for (int j = 1 ; j <= d ; j++) { printf ("Inserte pos[%d][%d]: ",i, j); scanf("%d",&M [i] [j]); }

} } void mostrar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { printf("\n"); for (int j = 1 ; j <= d ; j++) { printf ("[%d]",M [i] [j]); } } } void invierte (int M[20][20], int d) { int fin = d; for (int i = 1 ; i <= d / 2 ; i++) { int aux = M [i] [d]; M [i] [d] = M [d] [i]; M [d] [i] = aux; fin--; } } int main() { int M [20] [20]; int d; printf ("Inserte dimen. de la matris cuadrada: "); scanf("%d",&d); llenar (M, d); printf ("\nMATRIS ORIGINAL: "); mostrar (M, d); printf ("\n\nMATRIS CON LA DIAGONAL SECUNDARIA INVERTIDA: "); invierte (M, d); mostrar (M, d); getch(); }

/*Dada dos matrices de diferentes tamanios R y S mostrar los elementos comunes de R en S*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++)

{ printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void comunes (int R[20][20], int fr, int cr, int S[20][20], int fs, int cs) { printf("\n\nLos elementos comunes de R en S son: "); for (int i = 1 ; i <= fr ; i++) { for (int j = 1 ; j <= cr ; j++) { for (int k = 1 ; k <= fs ; k++) { for (int l = 1 ; l <= cs ; l++) { if (R [i] [j] == S [k] [l]) printf ("[%d]",R [i] [j]); } } } } } int main() { int R [20] [20]; int S [20] [20]; int fr, cr, fs, cs; printf("Inserte filas de scanf("%d",&fr); printf("Inserte columnas scanf("%d",&cr); printf("Inserte filas de scanf("%d",&fs); printf("Inserte columnas scanf("%d",&cs);

R: "); de R: "); S: "); de S: ");

printf("\nLLENANDO MATRIS R: \n"); llenar (R, fr, cr); printf("\nLLENANDO MATRIS S: \n");

llenar (S, fs, cs); printf("\nLA MATRIS R : "); mostrar (R, fr, cr); printf("\n\nLA MATRIS S : "); mostrar (S, fs, cs); comunes (R, fr, cr, S, fs, cs); getch(); }

/*Intercambiar los datos de la columna 1 con la ultima columna*/ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos:[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void intercambiar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { int aux = M [i] [1]; M [i] [1] = M [i] [c]; M [i] [c] = aux; } } int main () { int M [20] [20]; int f, c;

printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS : \n"); llenar (M, f, c); printf ("\nLA MATRIS ORIGINAL : "); mostrar (M, f, c); printf ("\n\nLA MATRICES INTERCAMBIADA : "); intercambiar (M, f, c); mostrar (M, f, c); getch(); }

/* Contar el numero de digitos de cada elemento de una matris */ Cdigo: #include <stdio.h> #include <conio.h> void llenar (int M [20] [20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M [20] [20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void cuenta (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { int contador = 0; int n=M[i][j];

while (n != 0) { n = n / 10; contador++; } printf("\n[%d] tiene: %d digito(s)",M[i][j],contador); } } } int main () { int M [20] [20]; int f, c; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS M: \n"); llenar (M, f, c); printf ("\nLA MATRIS: "); mostrar (M, f, c); printf ("\n\nCONTEO DE DIGITOS: "); cuenta (M, f, c); getch(); }

/*Hallar la fila y la columna del primer elemento "e" */ Cdigo: #include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) {

printf ("[%d]",M [i] [j] ); } } } void busqueda (int M[20][20], int f, int c, int e) { int bn = 0; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] == e) { printf("\nEl numero: %d se encuentra en la posicion: [%d][%d] de la matris",e, i, j); bn = 1; } } } if (bn == 0) printf("\nNo se encontro el numero %d en la matris :(",e); } int main () { int M [20] [20]; int f, c, numero; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, c); printf ("\nLA MATRIZ Z: "); mostrarMatris (M, f, c); printf ("\n\nInserte un numero: "); scanf("%d",&numero); busqueda (M, f, c, numero); getch(); }

En lnea

[www.darvein.org]

Darvein

Re: Ejercicios resueltos C++ [programacion estructurada] Respuesta #4 en: 26 Febrero 2008, 18:45

Desconectado

Mensajes: 181

>> MATRICES y VECTORES<<


/* Dada una matris y un vector, contar la cantidad de numeros primos de ambos */ Cdigo: #include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ) } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); } } void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V [i]); } } int primosMatris (int M[20][20], int f, int c) { int cant = 0;

=)

for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { int cc = 0; for (int k = 1 ; k <= M [i] [j] ; k++) { if (M [i] [j] % k == 0) cc++; } if (cc == 2) cant++; } } return (cant); }

int primosVector { int cant = 0; for (int i = 1 ; { int c = 0; for (int j = 1 ; { if (V [i] % j == c++; } if (c == 2) cant++; } return (cant); }

(int V[20], int d)

i <= d ; i++)

j <= V [i] ; j++) 0)

int main() { int M [20] [20]; int V [20]; int f, c, d; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("Inserte dimension del vector: "); scanf("%d",&d); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, c); printf ("\nLLENANDO EL VECTOR: \n"); llenarVector (V, d); printf ("\nLA MATRIS: "); mostrarMatris (M, f, c);

printf ("\n\nEL VECTOR: \n"); mostrarVector (V, d); int primos = primosMatris (M, f, c) + primosVector (V, d); printf ("\n\nLA CANTIDAD DE NUMEROS PRIMOS QUE HAY EN LOS ARREGLOS ES: %d",primos); getch(); }

/*Dada la matrix de m*n y el vector de tamanio n, determinar que columna de la matris es igual al vector*/ Cdigo: #include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ); } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); } } void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++)

{ printf ("[%d]",V [i]); } }

void procedure (int M[20][20], int f, int c, int V[20], int d) { for (int i = 1 ; i <= f ; i++) { int sw = 1; for (int j = 1 ; j <= c ; j++) { for (int k = 1 ; k <= d ; k++) { if (M [j] [i] != V [k]) sw = 0; } } if (sw == 1) printf ("\n\nLa columna %d es igual al vector",i); } }

int main () { int M [20] [20]; int V [20]; int f, d; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte dimension del vector: "); scanf("%d",&d); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, d); printf ("\nLLENANDO EL VECTOR: \n"); llenarVector (V, d);

printf ("\nLA MATRIS: "); mostrarMatris (M, f, d); printf ("\n\nEL VECTOR: \n"); mostrarVector (V, d); procedure (M, f, d, V, d); getch(); }

/*Dada una matris Z almacenar en un vector A la suma por sus columnas y en un vector B la suma por sus filas */

Cdigo: #include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ); } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); } } void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V [i]); } }

void vectorA (int M[20][20], int f, int c, int A[20], int d) { for (int i = 1 ; i <= f ; i++) { int suma = 0; for (int j = 1 ; j <= c ; j++) { suma = suma + M [j] [i]; }

A [i] = suma; } } void vectorB (int M[20][20], int f, int c, int B[20], int d) { for (int i = 1 ; i <= f ; i++) { int suma = 0; for (int j = 1 ; j <= c ; j++) { suma = suma + M [i] [j]; } B [i] = suma; } } int main () { int Z [20] [20]; int A [20]; int B [20]; int f, c; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (Z, f, c); printf ("\nLA MATRIZ Z: "); mostrarMatris (Z, f, c); printf ("\n\nSUMA vectorA (Z, f, c, mostrarVector (A, printf ("\n\nSUMA vectorB (Z, f, c, mostrarVector (B, getch(); } POR COLUMNAS DE LA MATRIS (vector A): \n"); A, c); c); POR FILAS DE LA MATRIS (vector B): \n"); B, f); f);

Mostrar la tabla de caracteres ASCII a partir del Cdigo 32 hasta el Cdigo 164 Calificacin del usuario: / 49 Malo
81

Bueno
/index.php?option

Calificar

vote

com_content

32

/* Mostrar la tabla de caracteres ASCII a partir del Cdigo 32 (el espacio en blanco) hasta el Cdigo 164 (o sea la ) sin incluir las minsculas (rango del 97 al 122) */ # include<stdio.h>

main() { int i; printf("Los Caracteres ASCII son: \n"); for(i=32;i<=164;i++) { if(i<97 || i>122) printf("%c %d \t",i,i); } return 0; }

Calcular la edad de una persona a partir de la fecha de nacimiento Calificacin del usuario: / 205 Malo
70

Bueno
/index.php?option

Calificar

vote

com_content

39

#include <stdio.h> main() { int fnac,fact,edad; printf ("Introduce tu ao de nacimiento:"); scanf ("%d",& fnac); printf ("\nIntroduce el ao actual:"); scanf ("%d",& fact); edad=fact-fnac; printf ("\nTu edad es:%d",edad); }

Directorio telefnico con manejo de archivos Calificacin del usuario: / 73 Malo


85

Bueno
/index.php?option

Calificar

vote

com_content

30

#include stdio.h #include conio.h #include ctype.h #include string.h

#include stdlib.h struct DIREC{ char nombre[35]; char tele[20]; }; FILE *pack(FILE *a); void ordena(FILE *a); void consulta2(FILE *a); long busca_Clave2(FILE *a,char buscado[]); void lee(FILE *a); void imprime(FILE *a); void main(){ char opcion; FILE *archivo; archivo=fopen ("TELE.DAT","rb+"); /* usar opcin "wb+" para crear el archivo .DAT y despus cambiar a "rb+" */ while(1){ clrscr(); textattr(6+5*5); clrscr(); textcolor(YELLOW); cprintf(" DIRECTORIO TELEFONICO"); printf("\n\n"); cprintf(" N"); printf("uevo"); textcolor(YELLOW); cprintf(" L"); printf("ista"); textcolor(YELLOW); cprintf(" B"); printf("aja"); textcolor(YELLOW); cprintf(" C"); printf("onsulta"); textcolor(YELLOW); cprintf(" O"); printf("rdena"); textcolor(YELLOW); cprintf(" S"); printf("alir"); gotoxy(1,25); printf(" *** PRESIONE LA LETRA RESALTADA PARA ESCOGER LA OPCION ***");

gotoxy(1,4); opcion=toupper(getch()); if(opcion=='S') break; switch(opcion){ case 'N':{ lee(archivo); break; } case 'L':{ imprime(archivo); break; } case 'B':{ pack(archivo); break; } case 'C':{ consulta2(archivo); break; } case 'O':{ ordena(archivo); break; } } } clrscr(); fclose (archivo); normvideo(); clrscr(); } /*********************************************************************/ void imprime(FILE *a){ int r,y=0,c=1; struct DIREC reactivo; clrscr(); textcolor(YELLOW); cprintf("NOMBRE TELEFONO"); normvideo(); rewind(a); while(1){ r=fread(&reactivo,sizeof(struct DIREC),1,a); if(r==0)

break; if((c%2)!=0){ textattr(6+5*5); /* textcolor(LIGHTGRAY);*/ printf("\n"); cprintf("%d.- %-30s %16s",c,reactivo.nombre,reactivo.tele); normvideo(); } else{ textattr(6+5*4); /* textcolor(WHITE);*/ printf("\n"); cprintf("%d.- %-30s %16s",c,reactivo.nombre,reactivo.tele); normvideo(); } if(y==23){ getch(); y=0; } y++; c++; } getch(); }

/*********************************************************************/ void lee(FILE *a){ struct DIREC reactivo; printf("\n\n"); fflush(stdin); printf("Nombre : ");strupr(gets(reactivo.nombre)); if(strlen(reactivo.nombre)<30){ if(busca_Clave2(a,reactivo.nombre)==0){ printf("Telfono : ");gets(reactivo.tele); fseek(a,0,SEEK_END); fwrite (&reactivo,sizeof(struct DIREC),1,a); } else{ printf("\n\nYa existen esos datos!!!"); getch(); } }

else{ printf("\n\nM ximo 25 letras por nombre..."); printf("\n\nEl programa puede daarse si repite este error!!!"); getch(); } } /*********************************************************************/ long busca_Clave2(FILE *a,char buscado[]){ long p; struct DIREC r; rewind(a); while(1){ if(fread(&r,sizeof(struct DIREC),1,a)==0) break; if(strcmp(r.nombre,buscado)==0){ p=ftell(a)/sizeof(struct DIREC); return(p); } } return 0; } /*********************************************************************/ void consulta2(FILE *a){ char nombre[30]; long p; struct DIREC r; printf("\n\nDame el nombre a buscar: "); strupr(gets(nombre)); p=busca_Clave2(a,nombre); if(p!=0){ fseek(a,(p-1)*sizeof(struct DIREC),SEEK_SET); fread(&r,sizeof(struct DIREC),1,a); printf("\n\n\n"); textcolor(LIGHTGRAY); cprintf("NOMBRE TELEFONO"); normvideo(); printf("\n%-20s %30s",r.nombre,r.tele); getch(); } else{

printf("\n\nLa informacin solicitada no existe ..."); getch(); } } /*********************************************************************/ void ordena(FILE *a){ int i=0,j=0,s,t; struct DIREC r; struct DIREC temp[100]; struct DIREC temporal; while(1){ fseek(a,i*sizeof(struct DIREC),SEEK_SET); if(fread(&r,sizeof(struct DIREC),1,a)==0) break; temp[j]=r; i++; j++; } for(s=0;s0){ temporal=temp[s]; temp[s]=temp[t]; temp[t]=temporal; } s=0; i=0; while(1){ if(s>=j) break; r=temp[s]; fseek(a,i*sizeof(struct DIREC),SEEK_SET); fwrite (&r,sizeof(struct DIREC),1,a); s++; i++; } printf("\n\nSus archivos han sido ordenados alfabticamente..."); getch(); }

/*********************************************************************/ FILE *pack(FILE *a){ int i=0; long p;

char clave[30]; struct DIREC r; FILE *t; t=fopen ("TMP.DAT","wb"); printf("\n\nDame el nombre a dar de baja: "); strupr(gets(clave)); p=busca_Clave2(a,clave); if(p!=0){ while(1){ fseek(a,i*sizeof(struct DIREC),SEEK_SET); if(fread(&r,sizeof(struct DIREC),1,a)==0) break; if(strcmp(r.nombre,clave)!=0){ fseek(a,i*sizeof(struct DIREC),SEEK_SET); fwrite (&r,sizeof(struct DIREC),1,t); } i++; } fclose (t); fclose (a); remove("TELE.DAT"); rename("TMP.DAT","TELE.DAT"); t=fopen ("TELE.DAT","rb+"); printf("\n\nLa informacin solicitada ha sido dada de baja..."); getch(); return(t); } else{ printf("\n\nNo existe el nombre..."); getch(); } return 0; } Estructura bsica que pide, nombre, apellido, telfono y edad y lo muestra por pantalla Calificacin del usuario: / 83 Malo
50

Bueno
/index.php?option

Calificar

vote

com_content

31

#include <stdio.h> struct estructura_amigo { /* Definimos la estructura estructura_amigo */ char nombre[30]; char apellido[40]; char telefono[10];

char edad; };

struct estructura_amigo amigo; void main() { printf( "Escribe el nombre del amigo: " ); fflush( stdout ); scanf( "%s", &amigo.nombre ); printf( "Escribe el apellido del amigo: " ); fflush( stdout ); scanf( "%s", &amigo.apellido ); printf( "Escribe el nmero de telfono del amigo: " ); fflush( stdout ); scanf( "%s", &amigo.telefono ); printf( "El amigo %s %s tiene el nmero: %s.\n", amigo.nombre, amigo.apellido, amigo.telefono ); } /*Este ejemplo estara mejor usando gets que scanf, ya que puede haber nombres compuestos que scanf no cogera por los espacios.*/ Calcular el area de la circunferencia o el volumen de la esfera Calificacin del usuario: / 96 Malo
43

Bueno
/index.php?option

Calificar

vote

com_content

69

#include<stdio.h> void fmenu(void); void fpedir_datos(void); void farea(void); void fvolumen(void); void fsacar_datos(void); /*declaracion de variables globales*/ int op; long int radio; float area,volumen; /*programa principal*/ void main() { fmenu(); if (op==1) { fpedir_datos();

farea(); } else { if (op==2) { fpedir_datos(); fvolumen(); } } fsacar_datos(); } /*funciones*/ void fmenu(void) /*envia el menu y toma opcion del proceso a realizar*/ { puts(" MENU DE OPCIONES\n"); puts(" ------------------\n"); puts("1. CALCULAR AREA DE LA CIRCUNFERENCIA\n"); puts("2. CALCULAR VOLUMEN DE LA ESFERA\n"); puts("3. SALIR\n"); puts(""); puts("ELIJA LA OPCION DESEADA..."); scanf("%d",&op); while (op!=1 && op!=2 && op!=3) {puts("\nOpcion erronea, teclee una entre 1,2 o 3..."); /*validacion*/ scanf("%d",&op); } } void fpedir_datos(void) /*pide y toma de consola el dato del radio*/ { puts("\nDame el radio de la circunferencia en cm.:"); scanf("%ld",&radio); } void farea(void) /*calcula el area de la circunferencia*/ { area=(float)3.1416*(float)radio*(float)radio; } void fvolumen(void) /*calcula el volumen de la esfera*/ { volumen=(float)3.1416*(float)radio*(float)radio*(float)radio*4/3; } void fsacar_datos(void) /*salida de resultados*/

{ if (op==1) printf("\nEl area de la circunferencia es %.2f cm2",area); else { if (op==2) printf("\nEl volumen de la circunferencia es %.2f cm3",volumen); } } Funcin para inicializar una matriz desde teclado sea cual sea su nmero de filas y columnas Calificacin del usuario: / 60 Malo
77

Bueno
/index.php?option

Calificar

vote

com_content

69

void ini_matriz(int *, int , int); void main(void) { int tb[5][3]={0}; int f=0, c=0; clrscr(); ini_matriz(tb[0],5,3); // Tambin ini_matriz(&tb[0][0],5,3); printf("\n"); for(f=0;f<5;f++){ for(c=0;c<3;c++){ printf("\t%d\t",tb[f][c]); } printf("\n"); } } Determinar cual es la persona mayor de un grupo de 5 personas Calificacin del usuario: / 72 Malo
78

Bueno
/index.php?option

Calificar

vote

com_content

39

/* Determinar cual es la persona mayor de un grupo de 5 personas, por cada persona se ingresa dd Dia mm mes aa ao de nacimiento suponga que todos los meses son de 30 dias y el ao es de 360 dias */ #include<stdio.h> main() { int dd,mm,aa; int hdd,hmm,haa;

int i,mayor; float maxedad; float t1,t2,edad; maxedad = 0; printf("Ingrese la fecha de hoy [dd mm aaaa]\n:"); scanf("%d %d %d",&hdd,&hmm,&haa); // tiempo transcurrido hasta hoy t1= (haa-1)*360 +(hmm-1)*30 + hdd; printf("Ahora ingresar EDADES:\n"); printf("----------------------\n"); for(i=1;i<=5;i++) { printf(" %d.- Ingrese [dd mm aaaa]\n:",i); scanf("%d %d %d",&dd,&mm,&aa); //tiempo transcurrido hasta la fecha de nacimiento t2= (aa-1)*360 +(mm-1)*30 + dd; // edad edad=(t1-t2)/360.0; if (edad > maxedad) { maxedad = edad; mayor=i; } } printf("la persona ingresada en la posicion %d es la mayor\n",mayor); printf("Su edad es: %f \n",maxedad); return 0; }

Programa para cargar una matriz de 4 x3 Calificacin del usuario: / 77 Malo


76

Bueno
/index.php?option

Calificar

vote

com_content

32

#include<stdio.h> void main(void) { int mat[4][3], i, j; printf("\nVisualizacin de la matriz:"); printf("\n===========================\n"); for(i=0;i<4;i++){ for(j=0;j<3;j++){ mat[i][j]=i+j; printf("\t%d",mat[i][j]); ) printf("\n"); } printf("\nFin del programa...\n"); } Estructura bsica que pide, nombre, apellido, telfono y edad y lo muestra por pantalla Calificacin del usuario: / 83

Malo
50

Bueno
/index.php?option

Calificar

vote

com_content

31

#include <stdio.h> struct estructura_amigo { /* Definimos la estructura estructura_amigo */ char nombre[30]; char apellido[40]; char telefono[10]; char edad; };

struct estructura_amigo amigo; void main() { printf( "Escribe el nombre del amigo: " ); fflush( stdout ); scanf( "%s", &amigo.nombre ); printf( "Escribe el apellido del amigo: " ); fflush( stdout ); scanf( "%s", &amigo.apellido ); printf( "Escribe el nmero de telfono del amigo: " ); fflush( stdout ); scanf( "%s", &amigo.telefono ); printf( "El amigo %s %s tiene el nmero: %s.\n", amigo.nombre, amigo.apellido, amigo.telefono ); } /*Este ejemplo estara mejor usando gets que scanf, ya que puede haber nombres compuestos que scanf no cogera por los espacios.*/