Wikilibros eswikibooks https://es.wikibooks.org/wiki/Portada MediaWiki 1.47.0-wmf.11 first-letter Medio Especial Discusión Usuario Usuario discusión Wikilibros Wikilibros discusión Archivo Archivo discusión MediaWiki MediaWiki discusión Plantilla Plantilla discusión Ayuda Ayuda discusión Categoría Categoría discusión TimedText TimedText talk Módulo Módulo discusión Evento Evento discusión OpenOffice.org 0 31 428406 425735 2026-07-20T00:55:11Z Mazbel 57931 actualización 428406 wikitext text/x-wiki {{Portada libro}} {{Desactualizado}} == Tutorial de OpenOffice.org (Versión 2.0.3) == * [[OpenOffice.org/Introducción|Introducción]] * [[OpenOffice.org/Writer: el procesador de textos (I)|Writer: el procesador de textos(I)]] * [[OpenOffice.org/Writer: el procesador de textos (II)|Writer: el procesador de textos(II)]] * [[OpenOffice.org/Math: el editor de fórmulas|Math: el editor de formulas]] * [[OpenOffice.org/Calc: la hoja de cálculo|Calc: la hoja de cálculo]] * [[OpenOffice.org/Trabajando en Bases de Datos|Base: el programa de gestión de bases de datos]] * [[OpenOffice.org/Draw: el editor gráfico|Draw: el editor gráfico]] * [[OpenOffice.org/Impress: el editor de presentaciones|Impress: el editor de presentaciones]] * [[OpenOffice.org/Base: el administrador de base de datos]] * [[OpenOffice.org/Web: el editor de páginas web|Web: el editor de páginas web]] * [[OpenOffice.org/Basic: el lenguaje de macros|Basic: el lenguaje de macros]] * [[OpenOffice.org/CloudComputingExtension|Almacenamiento en Internet]] === Enlaces externos === {{Wikipedia}} * [http://mnm.uib.es/gallir/CursPL2005/material/tutorial-OOo/ Tutorial de OpenOffice.org] del que deriva este libro siguiendo la licencia GFDL. * [http://www.openoffice.org Sitio oficial de OpenOffice.org] * [http://es.openoffice.org Sitio oficial de OpenOffice.org en Español] * [http://www.cbittachira.com.ve Curso de Writer en el Aula Virtual de esta Pagina] * [http://wiki.open-office.es Manuales de OpenOffice.org en Español] (Web no oficial) * [http://blog.open-office.es Trucos, plantillas, macros para OpenOffice.org en Español] (Web no oficial) [[Categoría:Software libre]] {{AutoCat}} dyzdlgbgj9i9kk13ukgoqat7fts03p2 428407 428406 2026-07-20T00:55:55Z Mazbel 57931 428407 wikitext text/x-wiki {{Portada libro}} {{Desactualizado}} == Tutorial de OpenOffice.org (Versión 2.0.3) == * [[OpenOffice.org/Introducción|Introducción]] * [[OpenOffice.org/Writer: el procesador de textos (I)|Writer: el procesador de textos(I)]] * [[OpenOffice.org/Writer: el procesador de textos (II)|Writer: el procesador de textos(II)]] * [[OpenOffice.org/Math: el editor de fórmulas|Math: el editor de formulas]] * [[OpenOffice.org/Calc: la hoja de cálculo|Calc: la hoja de cálculo]] * [[OpenOffice.org/Trabajando en Bases de Datos|Base: el programa de gestión de bases de datos]] * [[OpenOffice.org/Draw: el editor gráfico|Draw: el editor gráfico]] * [[OpenOffice.org/Impress: el editor de presentaciones|Impress: el editor de presentaciones]] * [[OpenOffice.org/Base: el administrador de base de datos]] * [[OpenOffice.org/Web: el editor de páginas web|Web: el editor de páginas web]] * [[OpenOffice.org/Basic: el lenguaje de macros|Basic: el lenguaje de macros]] * [[OpenOffice.org/CloudComputingExtension|Almacenamiento en Internet]] === Enlaces externos === {{Wikipedia}} * [http://mnm.uib.es/gallir/CursPL2005/material/tutorial-OOo/ Tutorial de OpenOffice.org] del que deriva este libro siguiendo la licencia GFDL. * [http://www.openoffice.org Sitio oficial de OpenOffice.org] * [http://es.openoffice.org Sitio oficial de OpenOffice.org en Español] * [http://www.cbittachira.com.ve Curso de Writer en el Aula Virtual de esta Pagina] * [http://wiki.open-office.es Manuales de OpenOffice.org en Español] (Web no oficial) * [http://blog.open-office.es Trucos, plantillas, macros para OpenOffice.org en Español] (Web no oficial) [[Categoría:Software libre]] {{Estantes|Ofimática}} 3eu2ukm60dnuumsj4uw8vr5bsfec05h C sharp NET 0 3054 428431 416300 2026-07-20T10:56:10Z Antimundo 74354 Decir que C# es «nuevo» en 2026 es un anacronismo 428431 wikitext text/x-wiki ==El lenguaje C#== Los primeros rumores de que Microsoft estaba desarrollando un lenguaje de programación surgieron en 1998, haciendo referencia a un lenguaje que entonces llamaban COOL y que decían era muy similar a Java. En junio de 2000, Microsoft despejó todas las dudas liberando la especificación de un lenguaje llamado C#. A esto le siguió rápidamente la primera versión de prueba del entorno de desarrollo estándar (SDK) .NET, que incluía un compilador de C#. El lenguaje fue diseñado por Anders Hejlsberg ( creador de Turbo Pascal y arquitecto de Delphi ), Scott Wiltamuth y Peter Golde. Entonces describieron el lenguaje como "...simple, moderno, orientado a objetos, de tipado seguro y con una fuerte herencia de C/C++". Una muestra de esta tecnología es el lenguaje de programación C#. Este lenguaje orientado a objetos con énfasis en Internet se basa en las lecciones aprendidas de los lenguajes C, C++, Java y Visual Basic. Por ello se trata de un lenguaje que combina todas las cualidades que se pueden esperar de un lenguaje moderno (orientación a objetos, gestión automática de memoria, etc.) a la vez que proporciona un gran rendimiento. En este curso intentaremos examinar las cualidades de este lenguaje desde lo más básico a lo más avanzado incluyendo la versión 2.0. Examinaremos paso a paso cómo crear poderosas aplicaciones de escritorio o basadas en web. == Tabla de Contenidos == # [[C sharp NET/Capítulo 0|Capítulo 0: Breve introducción a los lenguajes de programación]] # [[C sharp NET/Capítulo 1|Capítulo 1: Introducción]] # [[C sharp NET/Capítulo 2|Capítulo 2: Primer programa]] # [[C sharp NET/Capítulo 3|Capítulo 3: Fundamentos del lenguaje]] # [[C sharp NET/Capítulo 4|Capítulo 4: Estructuras de control]] # [[C sharp NET/Capítulo 5|Capítulo 5: Introducción a las clases y objetos]] # [[C sharp NET/Capítulo 6|Capítulo 6: Herencia y Polimorfismo]] # [[C sharp NET/Capítulo 7|Capítulo 7: Sobrecargando operadores]] # [[C sharp NET/Capítulo 8|Capítulo 8: Estructuras]] # [[C sharp NET/Capítulo 9|Capítulo 9: Interfaces]] # [[C sharp NET/Capítulo 10|Capítulo 10: Estructuras de datos]] # [[C sharp NET/Capítulo 11|Capítulo 11: Cadenas y Expresiones regulares]] # [[C sharp NET/Capítulo 12|Capítulo 12: Manejo de excepciones]] # [[C sharp NET/Capítulo 13|Capítulo 13: Delegación y Eventos]] # [[C sharp NET/Capítulo 14|Capítulo 14: Creando Aplicaciones gráficas usando Windows.Forms]] # [[C sharp NET/Capítulo 15|Capítulo 15: Creando Aplicaciones gráficas usando Gtk# y Qyoto(Qt4)]] # [[C sharp NET/Capítulo 16|Capítulo 16: Accediendo a la información usando ADO.NET]] # [[C sharp NET/Capítulo 17|Capítulo 17: Programando Aplicaciones WEB con ASP.NET 2.0]] ##[[C sharp NET / Capítulo 17 / Lo básico de una página|Lo básico de una página]] # [[C sharp NET/Capítulo 18|Capítulo 18: Programando Servicios del Web]] # [[C sharp NET/Capítulo 19|Capítulo 19: XML]] # [[C sharp NET/Capítulo 20|Capítulo 20: Ensamblados y Versiones]] # [[C sharp NET/Capítulo 21|Capítulo 21: Atributos y Reflexión]] # [[C sharp NET/Capítulo 22|Capítulo 22: Programando en Redes]] # [[C sharp NET/Capítulo 23|Capítulo 23: .NET y COM]] # [[C sharp NET/Capítulo 24|Capítulo 24: Creando aplicaciones multimedia SDK y DirectX]] # [[C sharp NET/Capítulo 25|Capítulo 25: OpenGL y Direct3D]] # [[C sharp NET/Capítulo 26|Capítulo 26: Utilizando Bases de Datos]] # [[C sharp NET/Capítulo 27|Capítulo 27: Solución a los problemas propuestos]] # [[C sharp NET/Capítulo 28|Capítulo 28: Manejo de puertos]] # [[C sharp NET/Capítulo 29|Capítulo 29: Sockets]] * [[C sharp NET/Texto Completo|Texto Completo]]<br /><small>Versión para imprimir de este libro</small> == Pre-requisitos necesarios para este curso == Lo único que necesitáis para este curso es tener un compilador de C# y un entorno de ejecución de código gestionado. Los más utilizados son el [http://mono-project.com mono], [http://www.gnu.org/software/dotgnu/ dotgnu] y [http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express Visual C# 2010 Express Edition de Microsoft]. == Autores == Editores principales (si has colaborado añade tu nombre a esta lista): * [[:m:b:es:Usuario:Fseoane|Fabian Seoane]]. Tutorial de MonoHispano, migración y editor. * [mailto:david@cougarpc.net David Cañar ] - Creación del libro, Capítulo 2 y varias porciones del capítulo 1, 3 y 4 * [mailto:zenko.project@gmail.com Javier Hernández Sánchez] - Creación del capítulo 9 Interfaces * [[:m:b:es:Usuario:Sebastianix|Sebastian Sasías]] - Revisión, ampliación y formalización de conceptos. * [[:m:b:es:Usuario:Gnovaro|Gustavo Novaro]] - Varios, para más detalles ver historial. * Perla Lizet Cruz Martinez - Diseñadora de la pagina. == Licencia == == Referencias == Este Wikilibro tiene extenso material tomado del tutorial de C# del proyecto MonoHispano (http://mono-hispano.org/tutoriales/csharp/). * http://www.mono-project.com * http://www.w3schools.com/ * http://www.mono-hispano.org * http://www.mono-hispano.org/wiki/Tutoriales * http://cougarpc.net/csharp (copia original) [[Categoría:C sharp NET]] 2kfguwiag1k472t72b3422dv51remxv 428432 428431 2026-07-20T10:57:52Z Antimundo 74354 Usar «Índice» como es común en Wikilibros, y retirar sección vacía de «Licencia» 428432 wikitext text/x-wiki ==El lenguaje C#== Los primeros rumores de que Microsoft estaba desarrollando un lenguaje de programación surgieron en 1998, haciendo referencia a un lenguaje que entonces llamaban COOL y que decían era muy similar a Java. En junio de 2000, Microsoft despejó todas las dudas liberando la especificación de un lenguaje llamado C#. A esto le siguió rápidamente la primera versión de prueba del entorno de desarrollo estándar (SDK) .NET, que incluía un compilador de C#. El lenguaje fue diseñado por Anders Hejlsberg ( creador de Turbo Pascal y arquitecto de Delphi ), Scott Wiltamuth y Peter Golde. Entonces describieron el lenguaje como "...simple, moderno, orientado a objetos, de tipado seguro y con una fuerte herencia de C/C++". Una muestra de esta tecnología es el lenguaje de programación C#. Este lenguaje orientado a objetos con énfasis en Internet se basa en las lecciones aprendidas de los lenguajes C, C++, Java y Visual Basic. Por ello se trata de un lenguaje que combina todas las cualidades que se pueden esperar de un lenguaje moderno (orientación a objetos, gestión automática de memoria, etc.) a la vez que proporciona un gran rendimiento. En este curso intentaremos examinar las cualidades de este lenguaje desde lo más básico a lo más avanzado incluyendo la versión 2.0. Examinaremos paso a paso cómo crear poderosas aplicaciones de escritorio o basadas en web. == Índice == # [[C sharp NET/Capítulo 0|Capítulo 0: Breve introducción a los lenguajes de programación]] # [[C sharp NET/Capítulo 1|Capítulo 1: Introducción]] # [[C sharp NET/Capítulo 2|Capítulo 2: Primer programa]] # [[C sharp NET/Capítulo 3|Capítulo 3: Fundamentos del lenguaje]] # [[C sharp NET/Capítulo 4|Capítulo 4: Estructuras de control]] # [[C sharp NET/Capítulo 5|Capítulo 5: Introducción a las clases y objetos]] # [[C sharp NET/Capítulo 6|Capítulo 6: Herencia y Polimorfismo]] # [[C sharp NET/Capítulo 7|Capítulo 7: Sobrecargando operadores]] # [[C sharp NET/Capítulo 8|Capítulo 8: Estructuras]] # [[C sharp NET/Capítulo 9|Capítulo 9: Interfaces]] # [[C sharp NET/Capítulo 10|Capítulo 10: Estructuras de datos]] # [[C sharp NET/Capítulo 11|Capítulo 11: Cadenas y Expresiones regulares]] # [[C sharp NET/Capítulo 12|Capítulo 12: Manejo de excepciones]] # [[C sharp NET/Capítulo 13|Capítulo 13: Delegación y Eventos]] # [[C sharp NET/Capítulo 14|Capítulo 14: Creando Aplicaciones gráficas usando Windows.Forms]] # [[C sharp NET/Capítulo 15|Capítulo 15: Creando Aplicaciones gráficas usando Gtk# y Qyoto(Qt4)]] # [[C sharp NET/Capítulo 16|Capítulo 16: Accediendo a la información usando ADO.NET]] # [[C sharp NET/Capítulo 17|Capítulo 17: Programando Aplicaciones WEB con ASP.NET 2.0]] ##[[C sharp NET / Capítulo 17 / Lo básico de una página|Lo básico de una página]] # [[C sharp NET/Capítulo 18|Capítulo 18: Programando Servicios del Web]] # [[C sharp NET/Capítulo 19|Capítulo 19: XML]] # [[C sharp NET/Capítulo 20|Capítulo 20: Ensamblados y Versiones]] # [[C sharp NET/Capítulo 21|Capítulo 21: Atributos y Reflexión]] # [[C sharp NET/Capítulo 22|Capítulo 22: Programando en Redes]] # [[C sharp NET/Capítulo 23|Capítulo 23: .NET y COM]] # [[C sharp NET/Capítulo 24|Capítulo 24: Creando aplicaciones multimedia SDK y DirectX]] # [[C sharp NET/Capítulo 25|Capítulo 25: OpenGL y Direct3D]] # [[C sharp NET/Capítulo 26|Capítulo 26: Utilizando Bases de Datos]] # [[C sharp NET/Capítulo 27|Capítulo 27: Solución a los problemas propuestos]] # [[C sharp NET/Capítulo 28|Capítulo 28: Manejo de puertos]] # [[C sharp NET/Capítulo 29|Capítulo 29: Sockets]] * [[C sharp NET/Texto Completo|Texto Completo]]<br /><small>Versión para imprimir de este libro</small> == Pre-requisitos necesarios para este curso == Lo único que necesitáis para este curso es tener un compilador de C# y un entorno de ejecución de código gestionado. Los más utilizados son el [http://mono-project.com mono], [http://www.gnu.org/software/dotgnu/ dotgnu] y [http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express Visual C# 2010 Express Edition de Microsoft]. == Autores == Editores principales (si has colaborado añade tu nombre a esta lista): * [[:m:b:es:Usuario:Fseoane|Fabian Seoane]]. Tutorial de MonoHispano, migración y editor. * [mailto:david@cougarpc.net David Cañar ] - Creación del libro, Capítulo 2 y varias porciones del capítulo 1, 3 y 4 * [mailto:zenko.project@gmail.com Javier Hernández Sánchez] - Creación del capítulo 9 Interfaces * [[:m:b:es:Usuario:Sebastianix|Sebastian Sasías]] - Revisión, ampliación y formalización de conceptos. * [[:m:b:es:Usuario:Gnovaro|Gustavo Novaro]] - Varios, para más detalles ver historial. * Perla Lizet Cruz Martinez - Diseñadora de la pagina. == Referencias == Este Wikilibro tiene extenso material tomado del tutorial de C# del proyecto MonoHispano (http://mono-hispano.org/tutoriales/csharp/). * http://www.mono-project.com * http://www.w3schools.com/ * http://www.mono-hispano.org * http://www.mono-hispano.org/wiki/Tutoriales * http://cougarpc.net/csharp (copia original) [[Categoría:C sharp NET]] blzl0xggqe7jwg7sef9uy8fraa5htrn 428433 428432 2026-07-20T11:00:11Z Antimundo 74354 Categorizar usando estantes 428433 wikitext text/x-wiki == El lenguaje C# == Los primeros rumores de que Microsoft estaba desarrollando un lenguaje de programación surgieron en 1998, haciendo referencia a un lenguaje que entonces llamaban COOL y que decían era muy similar a Java. En junio de 2000, Microsoft despejó todas las dudas liberando la especificación de un lenguaje llamado C#. A esto le siguió rápidamente la primera versión de prueba del entorno de desarrollo estándar (SDK) .NET, que incluía un compilador de C#. El lenguaje fue diseñado por Anders Hejlsberg ( creador de Turbo Pascal y arquitecto de Delphi ), Scott Wiltamuth y Peter Golde. Entonces describieron el lenguaje como "...simple, moderno, orientado a objetos, de tipado seguro y con una fuerte herencia de C/C++". Una muestra de esta tecnología es el lenguaje de programación C#. Este lenguaje orientado a objetos con énfasis en Internet se basa en las lecciones aprendidas de los lenguajes C, C++, Java y Visual Basic. Por ello se trata de un lenguaje que combina todas las cualidades que se pueden esperar de un lenguaje moderno (orientación a objetos, gestión automática de memoria, etc.) a la vez que proporciona un gran rendimiento. En este curso intentaremos examinar las cualidades de este lenguaje desde lo más básico a lo más avanzado incluyendo la versión 2.0. Examinaremos paso a paso cómo crear poderosas aplicaciones de escritorio o basadas en web. == Índice == # [[C sharp NET/Capítulo 0|Capítulo 0: Breve introducción a los lenguajes de programación]] # [[C sharp NET/Capítulo 1|Capítulo 1: Introducción]] # [[C sharp NET/Capítulo 2|Capítulo 2: Primer programa]] # [[C sharp NET/Capítulo 3|Capítulo 3: Fundamentos del lenguaje]] # [[C sharp NET/Capítulo 4|Capítulo 4: Estructuras de control]] # [[C sharp NET/Capítulo 5|Capítulo 5: Introducción a las clases y objetos]] # [[C sharp NET/Capítulo 6|Capítulo 6: Herencia y Polimorfismo]] # [[C sharp NET/Capítulo 7|Capítulo 7: Sobrecargando operadores]] # [[C sharp NET/Capítulo 8|Capítulo 8: Estructuras]] # [[C sharp NET/Capítulo 9|Capítulo 9: Interfaces]] # [[C sharp NET/Capítulo 10|Capítulo 10: Estructuras de datos]] # [[C sharp NET/Capítulo 11|Capítulo 11: Cadenas y Expresiones regulares]] # [[C sharp NET/Capítulo 12|Capítulo 12: Manejo de excepciones]] # [[C sharp NET/Capítulo 13|Capítulo 13: Delegación y Eventos]] # [[C sharp NET/Capítulo 14|Capítulo 14: Creando Aplicaciones gráficas usando Windows.Forms]] # [[C sharp NET/Capítulo 15|Capítulo 15: Creando Aplicaciones gráficas usando Gtk# y Qyoto(Qt4)]] # [[C sharp NET/Capítulo 16|Capítulo 16: Accediendo a la información usando ADO.NET]] # [[C sharp NET/Capítulo 17|Capítulo 17: Programando Aplicaciones WEB con ASP.NET 2.0]] ##[[C sharp NET / Capítulo 17 / Lo básico de una página|Lo básico de una página]] # [[C sharp NET/Capítulo 18|Capítulo 18: Programando Servicios del Web]] # [[C sharp NET/Capítulo 19|Capítulo 19: XML]] # [[C sharp NET/Capítulo 20|Capítulo 20: Ensamblados y Versiones]] # [[C sharp NET/Capítulo 21|Capítulo 21: Atributos y Reflexión]] # [[C sharp NET/Capítulo 22|Capítulo 22: Programando en Redes]] # [[C sharp NET/Capítulo 23|Capítulo 23: .NET y COM]] # [[C sharp NET/Capítulo 24|Capítulo 24: Creando aplicaciones multimedia SDK y DirectX]] # [[C sharp NET/Capítulo 25|Capítulo 25: OpenGL y Direct3D]] # [[C sharp NET/Capítulo 26|Capítulo 26: Utilizando Bases de Datos]] # [[C sharp NET/Capítulo 27|Capítulo 27: Solución a los problemas propuestos]] # [[C sharp NET/Capítulo 28|Capítulo 28: Manejo de puertos]] # [[C sharp NET/Capítulo 29|Capítulo 29: Sockets]] * [[C sharp NET/Texto Completo|Texto Completo]]<br /><small>Versión para imprimir de este libro</small> == Pre-requisitos necesarios para este curso == Lo único que necesitáis para este curso es tener un compilador de C# y un entorno de ejecución de código gestionado. Los más utilizados son el [http://mono-project.com mono], [http://www.gnu.org/software/dotgnu/ dotgnu] y [http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express Visual C# 2010 Express Edition de Microsoft]. == Autores == Editores principales (si has colaborado añade tu nombre a esta lista): * [[:m:b:es:Usuario:Fseoane|Fabian Seoane]]. Tutorial de MonoHispano, migración y editor. * [mailto:david@cougarpc.net David Cañar ] - Creación del libro, Capítulo 2 y varias porciones del capítulo 1, 3 y 4 * [mailto:zenko.project@gmail.com Javier Hernández Sánchez] - Creación del capítulo 9 Interfaces * [[:m:b:es:Usuario:Sebastianix|Sebastian Sasías]] - Revisión, ampliación y formalización de conceptos. * [[:m:b:es:Usuario:Gnovaro|Gustavo Novaro]] - Varios, para más detalles ver historial. * Perla Lizet Cruz Martinez - Diseñadora de la pagina. == Referencias == Este Wikilibro tiene extenso material tomado del tutorial de C# del proyecto MonoHispano (http://mono-hispano.org/tutoriales/csharp/). * http://www.mono-project.com * http://www.w3schools.com/ * http://www.mono-hispano.org * http://www.mono-hispano.org/wiki/Tutoriales * http://cougarpc.net/csharp (copia original) {{Estantes|Lenguajes de programación}} on4iahxj3x7ucxuevfqh407mykduyyl C sharp NET/Capítulo 1 0 3143 428435 382912 2026-07-20T11:01:00Z Antimundo 74354 Categorizar usando AutoCat 428435 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 0|Capítulo 0|C sharp NET/Capítulo 2|Capítulo 2}} = '''Introducción''' = <br /><br /> Como hemos dicho C# (C Sharp) es parte de la plataforma .NET. C# es un lenguaje orientado a objetos simple, seguro, moderno, de alto rendimiento y con especial énfasis en internet y sus estándares (como XML). Es también la principal herramienta para programar en la plataforma .NET. Tal vez os habréis preguntado ¿Qué es la plataforma .NET? ¿Porqué Microsoft está invirtiendo tanto en esta nueva tecnología? ¿Qué es lo que es tan novedoso? ¿Como es que con .NET se pueden producir aplicaciones multi-plataforma? A continuación hablaremos un poco de la plataforma .NET == La plataforma .NET == [[Archivo:Diagrama NET.jpg|350px|thumb|Marco de trabajo .NET]] La plataforma .NET es una plataforma de desarrollo de software con especial énfasis en el desarrollo rápido de aplicaciones, la independencia de lenguaje y la transparencia a través de redes. La plataforma consta de las siguientes partes: * Un conjunto de lenguajes de programación (C#, J#, JScript, C++ gestionado, Visual Basic.NET, y otros proyectos independientes). * Un conjunto de herramientas de desarrollo (entre ellos Monodevelop o Visual Studio.NET de Microsoft ) * Una libreria de clases amplia y común para todos los lenguajes. * Un sistema de ejecucion de Lenguaje Común. (CLR). * Un conjunto de servidores .NET * Un conjunto de servicios .NET * Dispositivos electrónicos con soporte .NET (PDA,Celulares, etc). Los puntos fuertes de la plataforma son: === Independencia de lenguaje === Todos los lenguajes que conformen con los estándares .NET, sin importar cual, podrán interoperar entre sí de forma totalmente transparente, las clases podrán ser heredadas entre unos lenguajes y otros, y se podrá disfrutar de polimorfismo entre lenguajes. Por ejemplo, si yo tengo una clase en C#, esta clase podrá ser heredada y utilizada en Visual Basic o JScript o cualquier lenguaje .NET. Todo esto es posible por medio de una de las características de .NET llamado Common Type System (CTS). También tiene la cualidad de que se pueden incluir más lenguajes a la plataforma. En la actualidad existen proyectos independientes de incluir PHP, Python, Ada y otros lenguajes en la plataforma. === Librería de clases común === Más de 4000 clases, objetos y métodos incluidos en la plataforma .NET están disponibles para todos los lenguajes. === Multiplataforma === Cuando un programa es compilado, no es compilado en un archivo ejecutable sino en un lenguaje intermedio llamado “Lenguaje Intermedio” (IL) el cual podrá ser ejecutado por el CLR (Common Language Runtime) en la plataforma en que el CLR esté disponible (hasta el día de hoy Microsoft solamente tiene un CLR para los sistemas operativos Windows, pero el proyecto Mono ([http://www.mono-project.com www.mono-project.com]) y dotGNU ([http://www.dotgnu.org www.dotGNU.org]) han puesto a disposición un CLR para GNU/Linux, MacOS y muchas otras plataformas). Los sistemas operativos Windows XP o superiores incluyen el CLR nativamente y SuSE Linux 9.3 o superior planea incorporar el CLR (Mono) en su distribución lo que quiere decir que un programa .NET podrá ser compilado y ejecutado en cualquiera de estas plataformas, o en cualquier plataforma que incluya un CLR. El CLR compilará estos archivos IL nuevamente en código de máquina en un proceso que se conoce como JIT (justo a tiempo) el cual se ejecutará cuando se requiera. Este proceso producirá código de máquina bien eficiente que se reutilizará si es que hubiera código que se repitiera, haciendo que los programas sean ejecutados muy eficientemente. El CRL === Windows Forms, Web Forms, Web Services === La plataforma .NET incluye un conjunto de clases especial para datos y XML que son la base de 3 tecnologías claves: Servicios Web (Web Services), Web Forms, y Windows Forms los cuales son poderosas herramientas para la creación de aplicaciones tanto para la plataforma como para el Web. === Estandarización === Además de los méritos técnicos, una de las razones del éxito de la plataforma .NET ha sido por el proceso de estandarización que Microsoft ha seguido (y que ha sorprendido a más de uno). Microsoft, en lugar de reservarse todos los derechos sobre el lenguaje y la plataforma, ha publicado las especificaciones del lenguaje y de la plataforma, que han sido posteriormente revisadas y ratificadas por la Asociación Europea de Fabricantes de Computadoras (ECMA). Esta especificación (que se puede descargar libremente de Internet) permite la implementación del lenguaje C# y de la plataforma .NET por terceros, incluso en entornos distintos de Windows. [http://monohispano.org Mono Hispano] mantiene una traducción del estándar que describe el lenguaje C# en http://monohispano.org/ecma/ (Enlace roto) == Un resúmen introductorio sobre el lenguaje C# == El lenguaje es muy sencillo, sigue el mismo patrón de los lenguajes de programación modernos. Incluye un amplio soporte de estructuras, componentes, programación orientada a objetos, manipulación de errores, recolección de basura, etc, que es construido sobre los principios de C++ y Java. Como sabréis, las clases son la base de los lenguajes de programación orientados a objetos, lo cual permite extender el lenguaje a un mejor modelo para solucionar problemas. C# contiene las herramientas para definir nuevas clases, sus métodos y propiedades, al igual que la sencilla habilidad para implementar encapsulamiento, herencia y polimorfismo, que son los tres pilares de la programación orientada a objetos. C# tiene un nuevo estilo de documentación XML que se incorpora a lo largo de la aplicación, lo que simplifica la documentación en línea de clases y métodos. C# soporta también interfaces, una forma de estipular los servicios requeridos de una clase. Las clases en C# pueden heredar de un padre pero puede implementar varias interfaces. C# también provee soporte para estructuras, un concepto el cual ha cambiado significativamente desde C++. Una estructura es un tipo restringido que no exige tanto del sistema operativo como una clase. Una estructura no puede heredar ni dar herencias de clases pero puede implementar una interfaz. C# provee características de componentes orientados, como propiedades, eventos y construcciones declaradas (también llamados atributos). La programación orientada a componentes es soportada por el CLR. C# provee soporte para acceder directamente a la memoria usando el estilo de punteros de C++ y mucho más. === C# frente a Java === C# y Java son lenguajes similares, de sintaxis basada en C/C++, orientados a objetos, y ambos incluyen las características más importantes de los lenguajes modernos, como son la gestión automática de memoria y la compilación a código intermedio. Pero por supuesto, también hay diferencias. Una de las diferencias más importantes es que C# es mucho más cercano a C++ en cuanto a diseño se refiere. C# toma casi todos sus operadores, palabras reservadas y expresiones directamente de C++. También se han mantenido algunas características que en Java se han desestimado. Por ejemplo, la posibilidad de trabajar directamente con direcciones de memoria. Si bien tanto Java como .NET proporcionan gestión automática de memoria, en C# es posible usar lo que se denomina "código no seguro". Cuando se usa código no seguro en C# es posible operar con punteros de forma muy similar a como se haría en C/C++, pero el código que utiliza punteros se queda marcado como no seguro y no se ejecuta en entornos en los que no tiene permisos. === C# frente a C++ === Puesto que C# se ejecuta en una máquina virtual, ésta se hace cargo de la gestión de memoria y por lo tanto el uso de punteros es mucho menos importante en C# que en C++. C# también es mucho más orientado a objetos, hasta el punto de que todos los tipos usados derivan en última instancia el tipo 'object'. Además, muchos tipos se usan de forma distinta. Por ejemplo, en C# se comprueban los límites de los arrays antes de usarlos, evitando así que se pueda escribir pasado el final del vector. Al igual que Java, C# renuncia a la idea de herencia múltiple de clases presente en C++. Sin embargo, referido a clases, C# implementa 'propiedades' del tipo de las que existen en Visual Basic, y los métodos de las clases son accedidos mediante '.' en lugar de '::'. === ¿Por qué C#? === La plataforma .NET acepta varios lenguajes. Por ahora, C#, Visual Basic, C++ gestionado, Nemerle, FORTRAN, Java, Python, etc. , y con capacidad para aceptar prácticamente cualquier lenguaje. Entonces la pregunta es, ¿porqué se eligió C# en lugar de cualquier otro lenguaje?. La razón fundamental es que C# se diseñó para la plataforma .NET y es capaz de utilizar todo su potencial. También es cierto que es un lenguaje "limpio" en el sentido de que al no tener que proporcionar compatibilidad hacia atrás se ha tenido más libertad en el diseño y se ha puesto especial hincapié en la simplicidad. Por ejemplo, en C# hay un tipo de clase y siempre se le aplica el recolector de basura mientras que en C++ gestionado hay dos tipos de clases, una a la que se aplica el recolector y otra a la que no. == Instalando lo necesario para empezar == Para poder empezar con nuestro curso debéis tener instalado en vuestro ordenador los archivos básicos para poder compilar y ejecutar vuestros programas. El conjunto de utilidades "Microsoft .NET Framework" y el ".NET Framework SDK" para Windows y el proyecto MONO o dotGNU para Linux, MacOS, BeOS proporcionan estas herramientas. Podréis encontrarlas en las siguientes direcciónes: '''Para Windows:''' http://msdn.microsoft.com/netframework/downloads/updates/default.aspx (no se encuentra la pagina '''Para Linux u otras plataformas:''' '''Proyecto Mono''' http://mono-project.com/Downloads ([http://www.mono-hispano.org/tutoriales/mono-linux/x34.html manual] que describe distintos métodos de instalación) Proyecto dotGNU '''http://dotgnu.org/pnet-packages.html''' {{nav|C sharp NET/Capítulo 0|Capítulo 0|C sharp NET/Capítulo 2|Capítulo 2}} {{AutoCat}} am1geobg81qbr9yyxzzksgrzzs2jf02 C sharp NET/Capítulo 2 0 3145 428441 305127 2026-07-20T11:03:19Z Antimundo 74354 Categorizar usando AutoCat 428441 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 1|Capítulo 1|C sharp NET/Capítulo 3|Capítulo 3}} = '''Primer programa''' = <br /><br /> == Primer programa ¡Hola Mundo! == En un alarde de originalidad, empezaremos con un simple programa que desplegará la frase “¡Hola Mundo!”. Con este programa introduciremos las bases de nuestro estudio. Debido a que la plataforma .NET es independiente del sistema operativo en este libro procuraremos mantenernos imparciales en cuanto este asunto, eso sí, cuando llegue el tiempo de compilar y ejecutar daremos ejemplos de como hacerlo tanto en Windows como en Linux (en otras plataformas como MacOS será lo mismo que en Linux). Si estáis utilizando un entorno de desarrollo integrado debéis abrir un nuevo proyecto de consola en C#, escribir o copiar lo que se muestra en el ejemplo 2.1 y compilad el proyecto para ver su resultado. Si preferís programar con un editor de textos, abrid vuestro editor de texto favorito y grabad en un directorio conocido lo que se encuentra en el ejemplo 2.1 como Programa.cs, abrid una ventana de terminal (en linux) o una ventana de comandos (Ejecutar(Run) -> cmd) en Windows y compilad vuestro proyecto con el siguiente comando: en linux con MONO(en el directorio donde habéis grabado vuestro programa): mcs Programa.cs en linux con dotGNU(en el directorio donde habéis grabado vuestro programa): cscc -o Programa.exe Programa.cs en Windows (en el directorio donde habéis grabado vuestro programa): csc Programa.cs de esta forma obtendréis vuestro primer programa. Para ejecutarlo simplemente escribid: con MONO: mono Programa.exe con dotGNU: ilsrun Programa.exe o en Windows: Programa '''Ejemplo 2.1 Programa Hola Mundo''' <source lang="csharp"> //Ejemplo 2.1 - Programa Hola Mundo class HolaMundo { static void Main() { string var="Mundo"; System.Console.WriteLine ("Hola {0}!", var); } } </source> Analicemos paso a paso nuestro programa de ejemplo: == Comentarios == En la primera línea de nuestro programa encontramos lo siguiente: <code>//Ejemplo 2.1 ...</code>. Esta línea es un ejemplo de comentarios. Un comentario es una parte en vuestro programa '''que será ignorado''' por el compilador. Existen tres tipos de comentarios en C#. El primer tipo es comentario de un sola línea. El segundo es comentario de varias líneas. El tercer tipo es para crear documentación. Este último tipo de comentario lo estudiaremos en el capítulo 13 de este libro. Los comentarios de una sola línea pueden ser incluidos en líneas independientes, en líneas que ya incluyen código para comentar sobre lo que hace esa línea o para comentar una línea de código que no necesitamos. Los comentarios de varias líneas sirven para incluir muchas líneas de texto o código como un comentario. Tienen una marca de inicio que dice cuando empieza el comentario y una marca que indica el final de dicho comentario. La marca de inicio es <code>/*</code> y la marca para finalizar es <code>*/</code> Así por ejemplo tenemos: <source lang="csharp"> //Este es un ejemplo de comentarios de una línea /* este comentario abarca varias lineas */ class HolaMundo { static void Main() { string var="Mundo"; System.Console.WriteLine ("Hola {0}!", var); //Este comentario puede describir lo que esta función hace //System.Console.WriteLine ("y esta linea no la vamos a desplegar"); } } </source> == Clases, Objetos y tipos == La esencia de la programación orientada a objetos es la creación de nuevos ''tipos''. Un ''tipo'' es la representación de un '''componente''' (Pensado en un ordenador (un computador) que está compuesto de varios componentes). En programación un componente es algo que cumple una función. Por ejemplo, un componente puede ser un botón en un programa. En una aplicación podemos tener varios botones del mismo ''tipo'' como por ejemplo botones de Aceptar, Cancelar, etc. Porque son del mismo ''tipo'' estos botones tienen propiedades y comportamientos similares. Pueden tener propiedades como cambiar de "tamaño", "posición", etc. Las propiedades son las mismas pero los valores almacenados en sus atributos pueden ser diferentes. Por ejemplo, un botón puede tener tamaño 10 y otro tamaño 6. Podemos decir entonces que tenemos varias '''''instancias''''' del mismo componente (o varios botones del mismo tipo) con diferentes valores en sus atributos. La programación orientada a objetos es esto. Crear componentes que puedan ser reusados. Así no tenemos que programar varios componentes que cumplan funciones similares sino solo uno que podrá llevar diferentes atributos y que podrá ser reproducido (o instanciado) tantas veces como lo necesitemos. Como en varios lenguajes de programación orientado a objetos, en C# los tipos o componentes son definidos por una ''clase'' ('''class''' en inglés). Las diferentes reproducciones o ''instancias'' de un componente del mismo tipo se conoce como ''objetos''. Posteriormente en nuestro estudio veremos que en C# hay más ''tipos'' además de las ''clases''. Aprenderemos sobre ''enums'', ''structs'' y ''delegates''. Pero por el momento nos dedicaremos a las ''clases''. Como hemos visto en nuestro primer programa ('''Ejemplo 2.1'''), empezamos nuestro programa declarando el tipo de componente que vamos a utilizar (un componente de tipo ''class'') y su nombre ''HolaMundo''. Para declarar nuestro componente como una clase, primero introducimos la palabra clave ''class'', y después el nombre de nuestro componente, después de lo cual declaramos las funciones que va a cumplir su comportamiento y sus propiedades. Todas las funciones, comportamiento y propiedades de nuestro componente (en este caso nuestra clase) deberán estar encerrados entre llaves { }. Las llaves delimitan el inicio y el final de dicho componente. == Métodos o Funciones == Los métodos o funciones son trozos de código que realizan una acción, esto es, toman unos argumentos y devuelven un valor. En C#, las funciones deben ser declaradas dentro de un objeto, normalmente dentro de una clase. Las funciones normalmente llevan nombre que definen su función. Por ejemplo, la función WriteLine() de la clase Console como debéis suponer "Escribe una Línea en la consola". De forma similar se pueden declarar clases a las que se le añaden un número ilimitado de métodos. En nuestro ejemplo 2.1 la única función que hemos definido lleva el nombre de Main() la cual es una función especial que indica la entrada principal de ejecución de un programa. Cada programa en C# debe tener una función Main(). === Crear nuevos métodos o funciones === Para declarar un método o función utilizamos el siguiente formato: <nowiki>[entorno]</nowiki> ''tipo_a_retornar'' '''Nombre_de_la_Función''' (<nowiki>[tipo Argumento1, tipo Argumento2,...]</nowiki>) { //líneas de código } ''las palabras dentro de corchetes [] son partes opcionales'' de acuerdo con nuestro ejemplo 2.1, la función Main() cumple con el formato establecido: static ''void'' Main() { //líneas de código } * '''entorno:''' static * '''tipo_a_retornar:''' void * '''Nombre_de_la_Función:''' Main * '''Argumentos:''' ninguno En nuestro ejemplo la función Main() tiene como entorno la palabra clave '''static''' y como tipo_a_retornar la palabra clave '''void'''. Cuando la función no retorna ningún tipo, utilizamos la palabra '''void'''. Más adelante veremos más tipos además de void. La palabra static también la veremos más adelante en nuestro estudio, por el momento debéis confiar en el ejemplo y utilizarla aún sin saber lo que hace. Podemos añadir a nuestro componente o clase un ilimitado número de funciones. Por ejemplo, para añadir más funciones a nuestro primer ejemplo procederemos a crear una función que suma dos valores. Como ya habéis aprendido en esta sección, crearemos nuestra función de la forma establecida. Después del final de la función '''Main''' crearemos una función con entorno '''static''' que retorne el tipo '''int''', que se llame '''Suma''' y que acepte '''dos argumentos de tipo int'''. Para hacerla funcionar vamos a llamarla desde nuestra función principal: '''Ejemplo 2.2 - Añadiendo funciones a nuestro programa''' <source lang="csharp"> //Ejemplo 2.2 - Programa Hola Mundo con C# más adición namespace Programa1 { class HolaMundo { static void Main() { string var="Mundo"; System.Console.WriteLine ("Hola {0}!", var); int num1 = 1; int num2 = 3; int resultado = Suma (num1, num2); System.Console.WriteLine ("{0}+{1} = {2}", num1, num2, resultado); } static int Suma(int valor1, int valor2) { return (valor1+valor2); } } } </source> probad vuestro programa, compiladlo y ejecutadlo. El resultado será el siguiente: Hola Mundo! 1 + 3 = 4 Ésta es una pequeña introducción a funciones, más adelante estudiaremos más detalladamente como crear y utilizar funciones. == Aplicaciones de consola == Las aplicaciones de consola no poseen una interfaz gráfica, no tienen botones o ventanas, poseen una interfaz basada simplemente en texto. El ejemplo que hemos realizado hasta ahora es una aplicación de consola que despliega texto en la pantalla, para ello hemos utilizado la función <code>WriteLine</code>. Como habíamos visto en la introducción, la plataforma .NET posee más de 4000 componentes cada cual con diferentes funciones internas. En el caso de nuestro programa hemos usado la función <code>WriteLine</code> que se encuentra dentro del componente <code>Console</code>. Para poder hacer uso de funciones '''estáticas''' que se encuentran en otros componentes, en C# como en la mayoría de lenguajes de programación orientados a objetos, debemos especificar el nombre del componente en primer lugar seguido por un punto y a continuación en el nombre de la función. Es por esto que utilizamos la frase <code>Console.WriteLine</code>. Dentro del componente <code>Console</code> la plataforma .NET tiene disponibles muchísimas otras funciones que nos ayudan a diseñar programas de consola. El lenguaje C# esta orientado con el paradigma de objetos y hereda muchos elementos de C++. == Namespaces == Quizá algunos de vosotros os habréis preguntado ¿qué significa la palabra System que está al inicio de cada programa?. Pues bien, <code>System</code> en este caso representa un '''Espacio de nombres''' (namespace en inglés). Los espacios de nombres (namespaces) se crearon principalmente para dar más organización a los componentes. La plataforma .NET tiene incorporados muchísimos componentes y sería una tarea imposible tratar de memorizar todos los nombres de ellos para no repetirlos. Tarde o temprano querréis crear un componente y no sabréis si el nombre que queréis darle ya existe o no. Para evitarnos este problema y para poder distinguir a dónde pertenecen ciertos componentes se han creado los espacios de nombres. Pongamos un ejemplo para comprender este concepto. Supongamos que deseamos crear varios componentes para una institución educativa que se compone de educación primaria y educación secundaria. ¿Cómo podríamos crear un componente que se llame <code>Presidente</code> si existen 2 presidentes que tienen funciones distintas uno para la sección primaria y otro para la sección secundaria? En este caso podríamos aplicar un espacio de nombres para poder crear los componentes <code>Presidente</code> que cumplen distintas funciones. Podríamos crear el espacio de nombres <code>Primaria</code> y dentro de éste el componente <code>Presidente</code>. De igual forma el espacio de nombres <code>Secundaria</code> y dentro de éste el componente <code>Presidente</code> cada uno componentes podrá tener definiciones distintas. Para acceder a las funciones de los componentes <code>Presidente</code> podríamos usar: Primaria.Presidente.nombre_de_la_función(); y Secundaria.Presidente.otra_función(); Cada una de las dos definiciones de <code>Presidente</code> son independientes, no tienen relación entre sí ya que pertenecen a dos espacios de nombre distintos. De ésta forma podremos crear componentes y funciones con el nombre que deseemos siempre y cuando especifiquemos a qué espacio de nombres pertenecen. De acuerdo con la línea de código estudiada: <code>System.Console.WriteLine ("Hola {0}!", var);</code> existe una función llamada '''WriteLine''' dentro del componente '''Console''' dentro del nombre de espacio '''System'''. Cualquier otro componente llamado '''Console''' dentro de otro espacio de nombres, es un componente diferente con funciones diferentes que quizás no posea la función WriteLine. Algo importante que debemos notar es que los espacios de nombres pueden tener sub-espacios de nombres y estos a su vez sub-espacios de nombres. El objetivo de esto, como lo hemos dicho, es mantener una organización de los componentes. Los espacios de nombres, componentes y métodos se accederán de la misma forma como lo hemos visto a través de un punto. == La palabra clave ''using'' == En ciertos proyectos tendremos que usar cierto espacio de nombres muchas veces. Supongamos que estamos implementando un programa de consola y tenemos que usar el componente <code>Console</code> repetidamente. Una forma de ahorrarnos escribir <code>System</code> varias veces es especificar el espacio de nombres que vamos a usar al inicio de nuestro programa con la palabra clave <code>using</code>. Por ejemplo en nuestro ejemplo 2.2 si añadimos la línea de código <code>using System;</code> al inicio de nuestro programa, podemos llamar al componente Console sin escribir System al inicio: '''Ejemplo 2.2 Modificado - La palabra clave ''using''''' <source lang="csharp"> //Ejemplo 2.2 Modificado - La palabra clave ''using'' using System; namespace Programa1 { class HolaMundo { static void Main() { string var="Mundo"; Console.WriteLine ("Hola {0}!", var); int num1 = 1; int num2 = 3; int resultado = Suma (num1, num2); Console.WriteLine ("{0}+{1} = {2}", num1, num2, resultado); } static int Suma(int valor1, int valor2) { return valor1+valor2; } } } </source> Comparando con nuestro ejemplo 2.2 original se ve en el ejemplo que ya no es necesario poner la palabra system.Console.WriteLine, quedando Console.WriteLine Algo importante para tener en cuenta es que la palabra clave <code>using</code> no puede ser utilizada para ahorrarse el escribir el nombre de la clase. Por ejemplo la línea de código <code>using System.Console</code> es inválida y producirá errores de compilación. == Caracteres sensibles == C# como todos los lenguajes de programación derivados de C hace diferencia entre caracteres en mayúscula y caracteres en minúscula. Esto quiere decir que las palabras <code>Using</code> y <code>using</code> son distintas y por lo tanto no cumplen la misma función. Debido a esto debemos tener mucho cuidado cuando escribimos nuestros programas. <code>system.console.writeLine</code> es diferente a <code>system.Console.WriteLine</code> y es diferente a <code>System.Console.WriteLine</code> que es el nombre de espacio, componente y método que C# incorpora para desplegar texto en la consola. Finalizada esta pequeña introducción a nuestro primer programa en C#, pasamos al capítulo 3 en donde examinaremos mas profundamente los fundamentos de C#. {{nav|C sharp NET/Capítulo 1|Capítulo 1|C sharp NET/Capítulo 3|Capítulo 3}} {{AutoCat}} b0ncvfbvxce2hk5rd40v1zywzroyrbz C sharp NET/Capítulo 4 0 3174 428447 305129 2026-07-20T11:04:37Z Antimundo 74354 Categorizar usando AutoCat 428447 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 3|Capítulo 3|C sharp NET/Capítulo 5|Capítulo 5}} = '''Estructuras de control''' = <br /> <br /> Hay dos maneras de cambiar el rumbo de ejecución de un programa, estos pueden ser saltos incondicionales y saltos condicionales. En este capítulo se describen algunas de estas sentencias. Algunas son muy similares a las existentes en otros lenguajes, como las sentencias if, for, while, etc. y otras, como foreach, throw o continue, son algo más específicas. == Saltos incondicionales == Las instrucciones de un programa se ejecutan sentencia por sentencia empezando desde el método o función principal llamado Main() hasta terminar con el programa. El programa sin embargo, tomará otros rumbos incondicionalmente en dos oportunidades: 1. Cuando encuentre la llamada a otros métodos (Ejemplo 4.1) y 2. Con el uso de las palabras claves como goto, break, continue, return y throw las cuales se discutirán más adelante. '''Ejemplo 4.1 - Salto incondicional a otra función''' <pre> using System; namespace Ejemplos{ class Ejemplo4_1{ static void Main(){ Console.WriteLine ("Esta parte se ejecuta primero"); LlamadaOtraFuncion(); Console.WriteLine ("Esta parte se ejecuta al final"); } static void LlamadaOtraFuncion(){ Console.WriteLine ("Ha salido del método Main()"); } } } </pre> En el ejemplo anterior el programa ejecuta sentencia por sentencia el método principal Main() hasta que encuentra la llamada a otro método. Después de que el método llamado haya terminado el método Main continuará con la ejecución de las sentencias restantes. === La sentencia ''goto'' === En los inicios de los lenguajes de programación la sentencia <code>goto</code> fue la más popular para ir de un lugar a otro dentro del programa. Sin embargo esto creaba una tremenda confusión al momento de diseñar la aplicación. Si el programador quería hacer un esquema de como funcionaba dicha aplicación, se veía con un laberinto tipo espagueti de líneas y símbolos conectados entre sí. Es por esto que esta sentencia es un poco "problemática" y fuera de "moda" entre los lenguajes de programación modernos. C# sin embargo soporta esta sentencia. Os recomendamos no utilizarla a menos que sea necesario o si os sentís cómodos haciéndolo, pero cuando os cree un laberinto difícil de depurar, no digáis que no os advertimos de no utilizarla. Hay muchas otras mejores maneras de cumplir con el mismo propósito (la sentencia while por ejemplo es una de ellas), las cuales son más elegantes y más sencillas de depurar. La sentencia <code> goto </code> funciona de la siguiente manera: Primero se crea una etiqueta al inicio de cierto bloque de código y después en otro lugar podemos saltar hacia esa etiqueta usando la palabra clave <code>goto</code>. El siguiente ejemplo ilustra la sentencia goto: <pre> using System; namespace Ejemplos { class Ejemplo4_0 { static void Main() { int contador=0; REPETIR: Console.WriteLine ("Esta línea se repetirá 100 veces, esta es la linea numero: {0}", contador); if (contador++ < 100) goto REPETIR; Console.WriteLine ("Despues de que el contador sea igual o mayor que 100 se imprimirá esta línea"); } } } </pre> Esta sentencia es un ejemplo de salto incondicional ya que por si solo saltará a la etiqueta seleccionada incondicionalmente. == Saltos condicionales == Los saltos condicionales sirven para ejecutar cierto código solamente si se cumple con alguna condición. Entre otros tenemos: === Instrucción if === Esta sentencia sirve para ejecutar unas instrucciones en caso de que se cumpla determinada condición. La forma completa de la instrucción if es <pre> if( condición ) { instrucciones; ... } else { instrucciones; ... } </pre> donde la cláusula else es opcional. Si la condición es verdadera, se ejecutarán las instrucciones dentro del bloque if, mientras que si es falsa, se ejecutará el bloque else. El valor que controla la sentencia if debe ser de tipo bool. El siguiente ejemplo <pre> //programa que determina si un valor es positivo o negativo using System; class InstruccionIf{ public static void Main() { double d; Console.WriteLine("Introduce un numero"); d = Double.Parse( Console.ReadLine() ); if( d>0 ) { Console.WriteLine("El numero {0} es positivo", d); } else { Console.WriteLine("El numero {0} es negativo", d); } } } </pre> te pide que introduzcas un número y dependiendo de si se cumple que dicho número es mayor que cero (condición), se ejecuta un bloque u otro. La sentencia d = Double.Parse( Console.ReadLine() ); tal vez requiera algo de explicación adicional. En realidad, con Console.ReadLine() estamos leyendo lo que el usuario introduce por pantalla, que es una cadena de caracteres, y con Double.Parse lo que hacemos es interpretar esa cadena de caracteres y convertirla en un tipo numérico double, de forma que tendrá el valor del número que introduzcamos por la consola. Las intrucciones if se pueden anidar, y existe también una extensión de la sentencia if, la sentencia if-else-if. Su formato es el siguiente: <pre> if( condicion1 ) { instrucciones; } else if( condicion2 ) { instrucciones; } ... else { instrucciones; } </pre> Las instrucciones condicionales se evalúan de arriba a abajo. Tan pronto como se encuentra una condición true, se ejecuta la instrucción asociada con ella, y el resto de la escalera se omite. Si ninguna de las condiciones es true, se ejecutará la última instrucción else. La última instrucción else actúa como condición predeterminada, es decir, si no funciona ninguna de las otras pruebas condicionales, se realiza esta última instrucción. Si no existe esta instrucción else final y el resto de de las condiciones son falsas, entonces no se realizará ninguna acción. El siguiente ejemplo <pre> using System; class IfElseIf{ public static void Main() { string opcion; Console.WriteLine("Elija una opción (si/no)"); opcion = Console.ReadLine(); if( opcion=="si" ) { Console.WriteLine( "Muy bien, ha elegido si" ); } else if( opcion=="no" ) { Console.WriteLine( "Ha elegido no" ); } else{ Console.WriteLine("No entiendo lo que ha escrito"); } } } </pre> le pide al usuario que elija una opción si/no y la procesa usando una estructura if-else-if. Si la opción no es ni "si" ni "no", entonces se ejecuta la sentencia else por defecto, que imprime por pantalla el mensaje "No entiendo lo que ha escrito" '''Nota:''' Hay que tener mucho cuidado que el símbolo = no es igual a ==, el primero sirve para asignar un valor a una variable <br /> y el segundo sirve para comparar si dos términos son iguales. === Instrucción switch === La instrucción switch es muy parecida a la estructura if-else-if, sólo que permite seleccionar entre varias alternativas de una manera más cómoda. Funciona de la siguiente manera: el valor de una expresión se prueba sucesivamente con una lista de constantes. Cuando se encuentra una coincidencia, se ejecuta la secuencia de instrucciones asociada con esa coincidencia. La forma general de la instrucción switch es la siguiente: <pre> switch( expresión ){ case constante1: instrucciones; break; case constante2: instrucciones; break; ... default: instrucciones; break; } </pre> La sentencia default se ejecutará sólo si ninguna constante de las que siguen a case coincide con expresión. Es algo similar al else final de la instrucción if-else-if. Sin más, vamos a por un ejemplo <pre> using System; class InstruccionSwitch{ public static void Main() { string s; Console.WriteLine( "Elige hacer algo con los números 2 y 3"); Console.WriteLine( " + para sumarlos" ); Console.WriteLine( " - para restarlos" ); Console.WriteLine( " * para multiplicarlos" ); Console.WriteLine( " / para dividirlos (division entera)" ); s = Console.ReadLine(); switch(s){ case "+": Console.WriteLine("El resultado es {0}", 2+3); break; case "-": Console.WriteLine("El resultado es {0}", 2-3); break; case "*": Console.WriteLine("El resultado es {0}", 2*3); break; case "/": Console.WriteLine("El resultado es {0}", 2/3); break; default: Console.WriteLine("No te entiendo"); break; } } } </pre> El cual solicita al usuario que inserte uno de los símbolos +-*/ , y con un switch compara los resultados para hacer diferentes acciones dependiendo del valor de s, que es la cadena de caracteres que almacena la elección del usuario. El resultado debería ser algo parecido a esto: <pre> Elige hacer algo con los números 2 y 3 + para sumarlos - para restarlos * para multiplicarlos / para dividirlos (division entera) * El resultado es 6 </pre> Como habrá notado, al final de todo case siempre hay una sentencia break. Esto no es obligatorio, puede haber en su lugar otra sentencia de salto como un '''goto''' inclusive en el caso default. Siempre se deberá tener un break o un goto en cada caso a menos que la sentencia esté vacía. En esta situación se ejecutará el siguiente caso que viene en la lista. Si no se toma en cuenta ésto se obtiene un error en tiempo de compilación. Otros lenguajes, como C/C++ o Java no tienen esta restricción. La razón de adoptarla en C# es doble: por un lado, elimina muchos errores comunes y en segundo lugar permite al compilador reorganizar las sentencias de los case, y así permitir su optimización. '''Ejemplo:''' <pre> using System; class InstruccionSwitch{ public static void Main() { int voto; Console.WriteLine( "Qué tipo de musica te gusta más"); Console.WriteLine( "1 - Rock" ); Console.WriteLine( "2 - Clásica (clasica cuenta como instrumental)" ); Console.WriteLine( "3 - Instrumental" ); Console.WriteLine( "4 - Alternativa (alternativo cuenta como Rock)" ); voto = Int32.Parse(Console.ReadLine()); switch(voto){ case 1: Console.WriteLine("Has votado por Rock o Alternativo"); break; case 2: //Debido a que no tiene ni un goto ni break y está vacía va al siguiente caso case 3: Console.WriteLine("Has votado por Clásica o Instrumental"); break; case 4: goto case 1; default: Console.WriteLine("No te entiendo"); break; } } } </pre> Como bien se puede notar en el ejemplo, en el '''case 4''', se utiliza la instrucción '''goto''', indicando que se vaya al '''case 1''', ya que según la lógica del ejemplo, es igual elegir 1 o 4. Nótese que no es necesario usar '''break;''' en el '''case 4''' ya que se utilizó goto. === Bucle for === El bucle for de C# es idéntico al encontrado en los lenguajes C/C++ y Java. El formato general es <pre> for( inicialización; condición; iteración ) { instrucciones; } </pre> Las sentencias de inicialización se ejecutan una vez al principio y sirven principalmente para asignar valores a las variables que servirán de contador. Las sentencias de condición, por su parte, se ejecutan cada vez que el bucle vuelve al principio y sirven para controlar el bucle: éste seguirá realizándose siempre y cuando estas condiciones sean true. Las sentencias de iteración se ejecutan también cada vez que se realiza una nuevo ciclo en el bucle, y sirven para cambiar el estado de las variables que gobiernan las sentencias de condición. Pero todo esto se entiende mejor con un ejemplo <pre> using System; class BucleFor{ public static void Main() { int i; //el contador for( i = 0; i < 10; i++) { Console.WriteLine( i ); } } } </pre> Este ejemplo imprime por pantalla los 10 primero enteros positivos. Es un caso muy simple del bucle for. Por cierto, el operador ++ lo que hace es que añade una unidad a la variable a la que acompaña, de forma que, por ejemplo, 9++ es 10. De esta forma, la variable i se incrementa a cada vuelta. En el ejemplo anterior, las sentencias de inicialización y de iteración eran únicas, pero esto no tiene por qué ser así, de hecho se pueden utilizar varias sentencias separadas por comas. Por ejemplo, se pueden usar dos variables para controlar el bucle </pre> using System; class BucleFor2{ public static void Main() { int i; int j; for( i=0, j=10; i<j; i++, j--) { Console.WriteLine("( {0} , {1} )", i, j); } } } </pre> Por su parte, la expresión condicional del bucle for puede ser cualquier expresión que genere un valor booleano. En este caso se ha usado "i<j", pero también hubiera sido válida "i==5", "true" (el bucle se realizará indefinidamente) o "false" (el bucle no se realizará). === Bucle while === El bucle while es un bucle que se realiza mientras se cumpla determinada condición. Tiene la forma <pre> while( condición ) { instrucciones; } </pre> Donde la condición tiene que ser un valor booleano. Tiene una estructura muy sencilla, así que vamos a ver directamente un ejemplo. <pre> using System; class BucleWhile{ public static void Main() { int i = 0; while( i<10) { Console.WriteLine( i ); i = i+1; } } } </pre> En el que se realiza lo mismo que en el ejemplo anterior, sólo que ahora con un bucle while. === Bucle do-while === Se trata de una ligera variante del bucle anterior, con la diferencia de que ahora primero se ejecutan las instrucciones y luego se evalúa la condición, de forma que tiene tiene una estructura: <pre> do{ instrucciones; } while( condición ); </pre> El siguiente ejemplo <pre> using System; class BucleDoWhile{ public static void Main() { string s = ""; do { Console.WriteLine( "Introduce si para salir del bucle" ); s = Console.ReadLine(); } while( s != "si" ); } } </pre> muestra un programa que ejecuta un bucle hasta que el usuario introduce "si". Por cierto, != es lo contrario de ==, es decir, != devuelve true cuando los valores comparados son distintos. === Bucle foreach === El bucle foreach se utiliza para hacer iteraciones sobre elementos de una colección, como pueden ser los enteros dentro de un arreglo de enteros. La sintaxis sigue la siguiente estructura: <pre> foreach( tipo in coleccion ) { instrucciones; } </pre> Como hemos comentado, el uso más inmediato es iterar sobre un arreglo de números: <pre> using System; class BucleForeach{ public static void Main() { int[,] arr = {{1,2},{2,3}}; foreach( int elem in arr ) { Console.WriteLine( elem ); } } } </pre> Este ejemplo sólo imprime los valores de una matriz, pero como se puede comprobar mejora mucho la claridad del código comparándolo con una implementación con bucles for como esta <pre> using System; class BucleForeach{ public static void Main() { int i, j; //seran los indexadores de la matriz int[,] arr = {{1,2},{2,3}}; for(i = 0; i<2; i++ ) { for( j = 0; j<2; j++ ) { Console.WriteLine( arr[i,j] ); } } } } </pre> Además, es posible utilizar el bucle foreach con cualquier tipo que sea una colección, no solo con arreglos, como veremos más adelante. === Usando ''continue'' y ''break'' === ''continue'' y ''break'' son dos palabras clave que nos permiten saltar incondicionalmente al inicio de un bucle (continue) o fuera de un bucle (break) cuando se necesite. Por ejemplo: <pre> using System; class continueBreak { public static void Main() { for(int i = 0; i<10; i++ ) { if (i==5) continue; if (i==9) break; Console.Write("{0},",i); } } } </pre> Este pequeño programa entrará en un bucle ''for'' que hará que la variable ''i'' tome los valores del 1 al 10, pero al llegar al número 5 el bucle saltará incondicionalmente al inicio del bucle sin ejecutar las líneas que siguen más adelante por lo que no ejecutará la línea que imprime en la pantalla el número 5. Cosa similar sucede cuando llega al número 9: el bucle será detenido por el salto incondicional break que romperá el bucle cuando encuentre esta palabra. El resultado será el siguiente: 0,1,2,3,4,6,7,8, El bucle saltó la línea que imprime 5 y terminó cuando llegó a 9 gracias a las palabras clave <code>continue</code> y <code>break</code>. {{nav|C sharp NET/Capítulo 3|Capítulo 3|C sharp NET/Capítulo 5|Capítulo 5}} {{AutoCat}} by15lubhy1d2x9o7hctw1jkzbpkddl4 C sharp NET/Capítulo 3 0 3290 428446 305078 2026-07-20T11:04:18Z Antimundo 74354 Categorizar usando AutoCat 428446 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 2|Capítulo 2|C sharp NET/Capítulo 4|Capítulo 4}} = '''Fundamentos del lenguaje''' = <br /> <br /> En el capítulo 2 hemos introducido nuestro primer programa en C#, un programa sencillo el cual incorpora muchos temas que hemos cubierto básicamente y solamente en parte. En esta sección del libro procuraremos ver más a fondo las partes básicas de C#. Nos internaremos más a fondo en la sintaxis y la estructura de C#. En este capítulo cubriremos lo que son los ''tipos''. Hablaremos de tipos básicos o internos y de cómo crear nuevos tipos. También hablaremos en general de la manipulación de datos. Hablaremos sobre condicionales, operadores matemáticos y varios otros temas relacionados. Empecemos entonces nuestro estudio con lo que son tipos. == Tipos == ==== Importancia de los tipos de datos ==== Los tipos son la base de cualquier programa. Un tipo no es más que un espacio en el que se almacena una información, ya sean números, palabras o tu fecha de nacimiento. ==== Tipos en C# ==== C# es un lenguaje de tipeado seguro (o fuertemente tipado) lo cual quiere decir que el programador debe definir a que '''tipo''' pertenece cada pedazo de información o cada '''objeto''' que se crea. De esta forma podemos crear objetos de tipo número entero, de tipo cadenas de texto, de tipo ventana, de tipo botones, entre otros. Haciendo esto, C# nos ayudará a mantener nuestro código seguro en donde cada tipo cumple con su función. En todas las operaciones el compilador comprueba los tipos para ver su compatibilidad. Las operaciones no válidas no se compilan. De esta forma se evitan muchos errores y se consigue una mayor fiabilidad. Esto también permite a C# anticipar de antemano la cantidad de recursos del sistema que nuestro programa utilizará haciendo nuestro código seguro y eficiente. ''''''Los tipos en C# al igual que C++ y Java se clasifican en dos secciones: Tipos básicos o internos y tipos creados por el usuario.''' Los tipos básicos no son más que alias para tipos predefinidos en la librería base de la plataforma .NET. Así, el tipo '''número entero''' (que se representa con la palabra clave '''int'''), no es más que una forma rápida de escribir <code>System.Int32</code>. Dentro de estas dos secciones los tipos del lenguaje C# también son divididos en dos grandes categorías: tipos por valor y tipos por referencia. Existe una tercera categoría de tipos, disponible solo cuando se usa código no seguro: los punteros, que se discutirán más adelante cuando hablemos de los objetos COM. Los tipos por valor difieren de los tipos por referencia en que las variables de los tipos por valor contienen directamente su valor, mientras que las variables de los tipos por referencia almacenan la dirección donde se encuentran los objetos, es por eso que se las llaman referencias. Más adelante describiremos como funcionan cada una de estas categorías. ==== Tipos básicos o internos ==== Los tipos básicos como hemos dicho son espacios predefinidos y categorizados donde se almacena información. En C# tenemos los siguientes tipos internos: '''Tabla 3.1 - Tipos básicos''' <TABLE BORDER="1"><TR ><TH >Tipo C#</TH ><TH >Nombre para la plataforma .NET</TH ><TH >Con signo?</TH ><TH >Bytes utilizados</TH ><TH >Valores que soporta</TH ></TR ><TR ><TD >bool</TD ><TD >System.Boolean</TD ><TD >No</TD ><TD >1</TD ><TD >true o false (verdadero o falso en inglés)</TD ></TR ><TR ><TD >byte</TD ><TD >System.Byte</TD ><TD >No</TD ><TD >1</TD ><TD >0 hasta 255</TD ></TR ><TR ><TD >sbyte</TD ><TD >System.SByte</TD ><TD >Si</TD ><TD >1</TD ><TD >-128 hasta 127</TD ></TR ><TR ><TD >short</TD ><TD >System.Int16</TD ><TD >Si</TD ><TD >2</TD ><TD >-32.768 hasta 32.767</TD ></TR ><TR ><TD >ushort</TD ><TD >System.Uint16</TD ><TD >No</TD ><TD >2</TD ><TD >0 hasta 65535</TD ></TR ><TR ><TD >int</TD ><TD >System.Int32</TD ><TD >Si</TD ><TD >4</TD ><TD >-2.147.483.648 hasta 2.147.483.647 </TD ></TR ><TR ><TD >uint</TD ><TD >System.Uint32</TD ><TD >No</TD ><TD >4</TD ><TD >0 hasta 4.394.967.395</TD ></TR ><TR ><TD >long</TD ><TD >System.Int64</TD ><TD >Si</TD ><TD >8</TD ><TD >-9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807 </TD ></TR ><TR ><TD >ulong</TD ><TD >System.Uint64</TD ><TD >No</TD ><TD >8</TD ><TD >0 hasta 18446744073709551615</TD ></TR ><TR ><TD >float</TD ><TD >System.Single</TD ><TD >Si</TD ><TD >4</TD ><TD >Approximadamente ±1.5E-45 hasta ±3.4E38 con 7 cifras significativas</TD ></TR ><TR ><TD >double</TD ><TD >System.Double</TD ><TD >Si</TD ><TD >8</TD ><TD >Approximadamente ±5.0E-324 hasta ±1.7E308 con 7 cifras significativas</TD ></TR ><TR ><TD >decimal</TD ><TD >System.Decimal</TD ><TD >Si</TD ><TD >12</TD ><TD >Approximadamente ±1.0E-28 hasta ±7.9E28 con 28 ó 29 cifras significativas</TD ></TR ><TR ><TD >char</TD ><TD >System.Char</TD ><TD >&nbsp;</TD ><TD >2</TD ><TD >Cualquier carácter Unicode (16 bits)</TD ></TR ></TABLE ></DIV > C# tiene una ventaja y característica especial sobre los demás lenguajes de programación modernos y es que cada vez que se crea un objeto de un tipo básico, éstos son mapeados internamente a un tipo primitivo de la plataforma .NET el cual es parte del CLS (Especificación común del lenguaje) lo cual nos permite acceder y hacer uso de estos desde cualquier lenguaje de la plataforma .NET. Es decir si es que creamos un objeto de tipo int (entero) en C#, ese objeto podrá ser usado como tal dentro de J#, JScript, Visual Basic .NET y cualquier otro lenguaje que conforme los requisitos de .NET. ==== Escogiendo qué tipo usar ==== A la hora de programar deberéis decidir qué tipo de variables querréis usar. Generalmente esta decisión se basa en el tipo de información que vayáis a usar y en el tamaño de la información. Por ejemplo en nuestro ejemplo 2.2 del capítulo anterior necesitábamos hacer la suma de dos valores numéricos por lo que usamos dos tipos básicos de número entero (usando la palabra clave '''int''') los cuales de acuerdo con nuestra tabla 3.1 son números enteros (no pueden llevar valores decimales) y podrán aceptar valores entre -2,147,483,648 y 2,147,483,647 lo cual es más que suficiente para nuestro ejemplo de añadir dos números. En el caso de que necesitáramos hacer uso de números reales (los cuales poseen una parte entera y una parte decimal como el número 10.22) podremos hacer uso del tipo '''float''', '''double''' y '''decimal''' de acuerdo con el tamaño del número que necesitemos y así cada uno de los tipos tiene su uso y capacidad de acuerdo con la tabla 3.1. A continuación explicaremos brevemente los tipos más usados en C#: ==== Enteros ==== Los tipos que sirven para almacenar números enteros son: byte, sbyte. short, ushort, int, uint, long y ulong. Como se aprecia en la tabla, C# define versiones con y sin signo para tipos con los mismos bytes utilizados. Cada tipo se distingue por la capacidad de almacenaje. Probablemente el tipo más utilizado es el '''int''', pues se utiliza para controlar matrices, indexar arreglos (arrays) además de las operaciones normales con enteros. Además, se trata de un entero de tamaño medio: más pequeño que long y ulong, pero más grande que byte, sbyte, short y ushort. El siguiente ejemplo muestra la declaración y uso de algunos tipos enteros calculando el número de segundos en una hora, día y en un año. '''Ejemplo 3.1 - utilizando tipos enteros (int)''' // Ejemplo 3.1 - utilizando tipos enteros (int) using System; class Enteros{ public static void Main() { int minuto = 60; //segundos por minuto int hora = minuto*60; int día = hora*24; long anio = día*365; Console.WriteLine("Segundos en un día: {0}", día); Console.WriteLine("Segundos en un año: {0}", anio); } } De nuevo hemos usado el método Console.WriteLine para imprimir los resultados por la consola. El identificador {0} dentro de la cadena de texto indica que se sustituye {0} por el primer argumento. si hubiera más de un argumento, se seguiría con {1}, y así sucesivamente. Por ejemplo, las dos líneas que utilizan Console.WriteLine se pueden simplificar así: Console.WriteLine("En un día: {0}; en un año: {1}", día, anio ); ==== Tipos de coma flotante ==== Los tipos de coma flotante sirven para representar a números con parte fraccionaria. La representación por supuesto puede no ser exacta, bien por errores de la máquina, bien porque el número de decimales que se puede alojar es finito. Existen tres clases de tipos de punto flotante : float, double y decimal. De los dos, el más usado es double, pues es el valor que devuelven la mayoría de las funciones matemáticas de la librería base. El siguiente ejemplo calcula la raíz cuadrada y el logaritmo de dos: '''Ejemplo 3.2 - utilizando tipos flotantes''' <pre> // Ejemplo 3.2 - utilizando tipos flotantes using System; class Flotante{ public static void Main() { int a = 2; double log2 = Math.Log(a); double raiz2 = Math.Sqrt(a); Console.WriteLine("El logaritmo de dos es {0}", log2 ); Console.WriteLine("La raiz de dos es {0}", raiz2 ); } } </pre> y la salida será la siguiente: El logaritmo de dos es 0.693147180559945 La raíz de dos es 1.4142135623731 si intentamos cambiar el tipo de log2 a otro de menos precisión, como float o int, el compilador protestará. Esto se debe, como hemos dicho a que el valor devuelto por Math.Log() es de tipo double y si se quiere convertir a float, pues se perderán datos. Lo mismo ocurre con la mayoría de los miembros de la clase Math, como Math.Sin(), Math.Tan(), etc. ==== El tipo decimal ==== El tipo decimal es un tipo "nuevo" en el sentido de que no tiene equivalente en C/C++. Es muy parecido a los tipo de coma flotante float y double. En la aritmética de los tipos de coma flotante ordinarios, se pueden producir leves errores de redondeo. El tipo decimal elimina estos errores y puede representar correctamente hasta 28 lugares decimales. Esta capacidad para representar valores decimales sin errores de redondeo lo hace especialmente eficaz para cálculos monetarios. ==== El tipo bool ==== El tipo bool sirve para expresar los valores verdadero/falso, que en C# se muestran con las palabras reservadas true y false. En C#, por ejemplo, una instrucción de condición solo puede estar gobernada por un valor bool, no como en C/C++, que lo puede estar también por un entero. De esta forma se ayuda a eliminar el error tan frecuente en programadores de C/C++ cuando usa "=" en lugar de "==". En definitiva, la inclusión del tipo bool en el lenguaje ayuda a la claridad del código y evita algunos errores muy comunes. El siguiente ejemplo, muestra algunos usos del tipo bool: '''Ejemplo 3.3 - utilizando tipos de decisión bool''' // Ejemplo 3.1 - utilizando tipos de decisión bool using System; class Booleano{ public static void Main() { bool b; b = true; Console.WriteLine("b es {0}", b); if(b) { Console.WriteLine("esto saldrá"); } b = false; if(b) { Console.WriteLine("esto no saldrá"); } Console.WriteLine("2==2 es {0}", 2==2); } } En la última línea se muestra que el operador "==" también devuelve un valor booleano. El resultado debería ser el siguiente: b es True esto saldrá 2==2 es True ==== El tipo char ==== El tipo char permite almacenar un carácter en formato simple, unicode de 16 bits o caracteres de escape. Usando el formato unicode nos garantiza que los acentos se ven de forma adecuada y además permite la representación de otros alfabetos, como el japonés, griego, cirílico, etc. Para introducir un carácter se utilizan comillas simples, de forma que declarar un carácter sigue la estructura char letra1 = 'a'; //formato simple char letra2 = '\u0041'; //formato Unicode que representa la letra A char letra3 = '\n'; //formato carácter de escape Para una lista completa de caracteres unicode podréis visitar la siguiente página: http://unicode.coeurlumiere.com/ La siguiente lista contiene los caracteres de escape comunes y su significado: \' apostrofe \" Comillas \\ Backslash \0 Null (nulo) \a Alerta \b Retroceso \f Form feed \n Línea nueva \r Retorno del carro \t Tabulación Horizontal \v Tabulación Vertical ==== Tipo Cadenas ==== Los tipos cadena (palabra clave '''string''') son tipos que almacenan un grupo de caracteres. En C# los tipos cadena se crean con la palabra clave '''string''' seguido por el nombre de la variable que deseamos instanciar. Para asignar un valor a este tipo debemos hacerlo entre comillas de la siguiente forma: string miCadena = "Esta es una cadena de caracteres"; Debido a que el tipo cadena (string) es uno de los tipos más usados en C#, lo estudiaremos detalladamente más adelante. ==== Convirtiendo tipos ==== En nuestros programas muchas veces necesitaremos cambiar de tipo a los objetos que hayamos creado. Esto lo podremos hacer implícitamente o explícitamente. Una conversión de tipos implícita sucede automáticamente, es decir el compilador se hará cargo de esto. Una conversión explicita en cambio se llevará a cabo únicamente cuando nosotros lo especifiquemos. Hay que tomar en cuenta que no siempre podremos hacer una conversión de un tipo hacia otro. Como regla general las conversiones implícitas se llevan a cabo cuando se desea cambiar '''un tipo de menor capacidad hacia un tipo de mayor capacidad de la misma especie'''. Por ejemplo si deseamos crear 2 tipos enteros (misma clase) el uno que lleve el tipo short (menor capacidad) y el otro que lleve el tipo int (mayor capacidad) una conversión implícita de short a int se lleva a cabo en el siguiente ejemplo: short corto = 3; int entero = corto; //compilará sin ningún problema aquí sucede una conversión implícita, el valor de la variable corto (en este caso 3) que es de tipo '''short''' es asignado a la variable de tipo '''int''' sin que el compilador nos de ningún problema ya que hará una conversión de '''short''' a '''int''' implícitamente por nosotros debido a la regla anteriormente citada. En el caso que queramos hacer de forma inversa, es decir asignar un valor int a una variable short, estaríamos violando la regla de asignar un tipo de menor capacidad a una variable de tipo de mayor capacidad aunque sean de la misma clase (enteros). Así el siguiente ejemplo no compilará dándonos un error: int entero = 300; short corto = entero; //nos dará un error de compilación En estos casos es cuando podremos hacer una conversión explícita. Debido a que la información almacenada en la variable entero de tipo int está también en el rango de capacidad del tipo short y los dos tipos son de la misma clase (enteros) podremos hacer una conversión explicita designando entre paréntesis a que tipo queremos convertir de la siguiente manera: int entero = 300; short corto = (short) entero; //convertirá la variable <code>entero</code> para que sea del tipo <code>short</code> En el ejemplo anterior, el compilador no nos dará ningún problema. Cada uno de los tipos básicos citados a continuación soportará una conversión implícita o explícita como se lo expresa en la siguiente tabla: {| border=1 |+'''Conversión Implícita (I) Conversión Explícita (E)''' !Desde/hacia!!byte!!sbyte!!short!!ushort!!int!!uint!!long!!ulong!!float!!double!!decimal |----------------- |byte||I|| E|| I|| I|| I|| I|| I|| I|| I|| I|| I |----------------- |sbyte|| E|| I|| I|| E|| I|| E|| I|| E|| I|| I|| I |----------------- |short|| E|| E|| I|| E|| I|| E|| I|| E|| I|| I|| I |----------------- |ushort|| E|| E|| E|| I|| I|| I|| I|| I|| I|| I|| I |----------------- |int|| E|| E|| E|| E|| I|| E|| I|| E|| I|| I|| I |----------------- |uint|| E|| E|| E|| E|| E|| I|| I|| I|| I|| I|| I |----------------- |long|| E|| E|| E|| E|| E|| E|| I|| E|| I|| I|| I |----------------- |ulong|| E|| E|| E|| E|| E|| E|| E|| I|| I|| I|| I |----------------- |float|| E|| E|| E|| E|| E|| E|| E|| E|| I|| I|| E |----------------- |double|| E|| E|| E|| E|| E|| E|| E|| E|| E|| I|| E |----------------- |decimal|| E|| E|| E|| E|| E|| E|| E|| E|| E|| E|| I |} == Arreglos == En C# se pueden construir arreglos de prácticamente cualquier tipo de dato. Los arreglos, también llamados vectores o arrays, no son más que una sucesión de datos del mismo tipo. Por ejemplo, el concepto matemático de vector es una sucesión de números y por lo tanto es un arreglo unidimensional. Así, podemos construir arreglos de objetos, de cadenas de texto, y, por supuesto, arreglos de enteros: using System; class Arreglo{ public static void Main() { int[] arr = new int[3]; arr[0] = 1; arr[1] = 2; arr[2] = 3; Console.WriteLine( arr[1] ); } } Para crear un arreglo debemos especificar de qué '''tipo''' deseamos crear el arreglo seguido por corchetes '''[ ]''' que es el distintivo del arreglo (en nuestro ejemplo usamos int[]), seguido por la palabra clave new y el tipo y la cantidad de parámetros que tendrá nuestro arreglo. En el ejemplo anterior, por ejemplo, se creó un arreglo '''arr''' unidimensional con capacidad para 3 enteros (especificado por new int[3]), y luego se le asignó a cada parámetro un entero distinto (nótese que se comienza a contar a partir de 0 y el número del parámetro se encuentran entre corchetes). Existe una forma más corta para declarar el arreglo y asignarle los valores: int[] arr = {1,2,3}; //es exactamente lo mismo que el ejemplo anterior También se pueden crear arreglos bidimensionales (y de la misma forma para más dimensiones). En ese caso la sintaxis para declarar un arreglo bidimensional de enteros será int[,] arr; //declaración de arreglos bidimensionales en C# en contraposición a C/C++, en el que se declararía como int[][] arr; //declaración de arreglos bidimensionales en C/C++ De esta forma, un arreglo bidimensional se declararía y utilizaría de la siguiente forma: using System; class Arreglo2{ public static void Main() { int[,] arr = new int[2,2]; arr[0,0] = 1; arr[1,0] = 2; arr[0,1] = 3; arr[1,1] = 4; Console.WriteLine("El valor que posee la variable arr[1,1] es {0}", arr[1,1] ); } } el resultado será: El valor que posee la variable arr[1,1] es 4 igual que el ejemplo anterior, podemos declarar todo el arreglo de la siguiente forma: int[,] arr = {{1,2},{3,4}}; Hablaremos más sobre arreglos más adelante == Identificadores, Variables, Constantes y Enumeraciones == ==== Identificadores ==== En una aplicación siempre se deben crear variables, constantes, métodos, objetos, etc. Para poder crearlos debemos asignar nombres o identificadores. Estos identificadores deben seguir ciertas reglas: # Un identificador DEBE empezar con una letra o un signo _ # Un identificador NO puede tener espacios en blanco # Un identificador NO puede llevar el mismo nombre que una palabra clave Después de que el identificador empiece con una letra o un símbolo _, el identificador puede tener cualquier cantidad de letras, líneas o números. Ejemplo: EsteIdentificadorEsValido _este_también esteEsOtro1 esteEsOtro2 como ejemplos inválidos tenemos: Esto es invalido 123_Otro_inválido int en los ejemplos que no son válidos, el primero contiene espacios, el segundo empieza con números y el tercero es una palabra clave lo cual no es permitido. ---- '''Nota:''' Es recomendado que las variables siempre empiecen con minúsculas y que sigan el patrón llamado ''Camello'' es decir que el nombre de la variable que tenga varias palabras debe ser formado de la siguiente manera: la primera palabra empezará con minúsculas pero la segunda, tercera, etc palabras estarán unidas a la primera y tendrán su primera letra en mayúsculas ejemplo: '''miVariable'''. También se ha recomendado que el nombre de Métodos, Clases y demás nombres que necesitamos especificar deberán llevar el mismo formato anterior con la excepción de que la Primera letra deberá ser mayúscula. ---- ==== Variables ==== Una variable es el nombre que se le da al espacio donde se almacena la información de los tipos. Las variables pueden llevar cualquier nombre que deseemos, eso sí no se podrá hacer uso de palabras claves de C#. En los ejemplos anteriores hemos usado varias variables con diferentes tipos y diferentes valores. Para crear una variable debemos especificar a qué tipo pertenece antes del nombre que le vamos a dar. Por ejemplo si deseamos crear una variable que se llame '''var''' y que sea del tipo entero ('''int''') procederemos de la siguiente manera: int var; Una vez creada la variable podemos almacenar la información que deseamos. Para hacerlo utilizamos el símbolo = después del nombre de la variable. var = 10; Hay que tener presente que la variable como su nombre lo indica podrá tomar otros valores. Por ejemplo si deseamos que nuestra variable cambie de valor a 5 hacemos lo que habíamos hecho en el ejemplo anterior pero con el nuevo valor: var = 5; De ahora en adelante la variable var pasa a tener el valor de 5. Para simplificar el proceso de creación y asignación de valor de una variable podemos especificar estos dos procesos en una misma línea. int var = 10; La primera vez que una variable recibe un valor se llama inicialización de la variable. En C# todas las variables que van a ser utilizadas deben ser inicializadas para que vuestro programa pueda funcionar. En caso anterior hemos creado la variable '''var''' e inicializado la variable con el valor 10. Hay que tener cuidado que la creación de una variable se la hace 1 sola vez y la asignación de diferentes valores se puede hacer cuantas veces queramos. ==== Constantes ==== Las constantes como su nombre lo indica son variables cuyo valor no puede ser alterado. Éstas se utilizan para definir valores que no cambian con el tiempo. Por ejemplo podemos definir una constante para especificar cuantos segundos hay en una hora de la siguiente forma: const int segPorHora = 3600; Esta constante no podrá ser cambiada a lo largo de nuestro programa. En el caso de que queramos asignarle otro valor, el compilador nos dará un error. Las constantes deben ser inicializadas en el momento de su creación. ==== Enumeraciones ==== Supongamos que estamos diseñando un juego y necesitamos crear una variable para saber cuál es el estado del tanque de combustible de nuestro automóvil. Suponiendo que tenemos 4 niveles en el tanque: lleno, medio, bajo y crítico. ¿Qué tipo de variable podríamos usar para especificar estos estados? Una forma de hacerlo podría ser si especificamos una variable de tipo int (entero) que tome los valores de 1 para lleno, 2 para medio, 3 para bajo y 4 para crítico. Esta alternativa funcionaría pero a la larga nos olvidaremos qué número representaba qué. Una forma muy elegante de solucionar este problema es utilizando el tipo '''enum''' o enumeraciones. Veamos el siguiente ejemplo para comprender este concepto: '''Ejemplo 3.1 - Control del estado de combustible''' <pre> using System; namespace Autos { class Control { enum tanque { lleno, medio, bajo, critico, } static void Main() { tanque auto1 = tanque.lleno; RevisarEstadoTanque(auto1); auto1 = tanque.critico; RevisarEstadoTanque(auto1); } static void RevisarEstadoTanque(tanque auto) { if (auto==tanque.lleno) Console.WriteLine ("¡El tanque está lleno!"); if (auto==tanque.medio) Console.WriteLine ("El tanque está por la mitad"); if (auto==tanque.bajo) Console.WriteLine ("¡El tanque está casi vacío!"); if (auto==tanque.critico) Console.WriteLine ("¡Alerta! tu auto se quedó sin combustible"); } } } </pre> Este programa sencillo crea una enumeración llamada tanque y dentro de ella crea 4 constantes: lleno, medio, bajo, y critico. Dentro de nuestro programa creamos la variable de '''tipo tanque''' llamada '''auto1''' la cual podrá tomar los valores especificados dentro de la enumeración. Cuando asignamos a la variable auto1 el valor de '''tanque.lleno''' y revisamos el estado del tanque llamando a la función '''RevisarEstadoTanque''', podremos comprobar cuál es el estado actual del tanque de combustible. Ésta es una forma muy descriptiva de cómo crear variables que cambien de estado, una solución elegante y sencilla a nuestro problema. En realidad las constantes dentro de las enumeraciones tienen valores enteros asignados. Estos valores pueden ser inicializados con distintos valores que nosotros deseemos e incluso podemos especificar qué tipo de entero queremos usar. En nuestro ejemplo anterior los valores de la enumeración son valores enteros del tipo '''int''' el primer elemento dentro de la enumeración tiene asignado el valor de 0, el siguiente el valor 1 y así sucesivamente. Esto sucede cuando no especificamos a qué tipo queremos inicializar nuestra enumeración y tampoco asignamos valores a las constantes. En el siguiente ejemplo podemos ver cómo especificar otro tipo de constantes y otros valores. Supongamos que queremos especificar cuantos segundos hay en un minuto, cuantos segundos hay en una hora y cuantos segundos hay en 24 horas. Con enumeraciones lo podemos hacer de la siguiente manera: '''Ejemplo 3.2 - Enumeraciones''' <pre> using System; namespace Ejemplos { class Enumeraciones { enum segundos :uint { minuto = 60, hora = 3600, dia = 86400, } static void Main() { Console.WriteLine("Existen {0} segundos en 1 minuto, {1} segundos en 1 hora y {2} segundos en 24 horas",(uint)segundos.minuto, (uint)segundos.hora, (uint)segundos.dia); } } } </pre> El resultado es el siguiente: Existen 60 segundos en 1 minuto, 3600 segundos en 1 hora y 86400 segundos en 24 horas El ejemplo anterior nos muestra otra forma de usar una enumeración. Hay que tener en cuenta que el tipo que va a tener la enumeración se encuentra después del nombre de la enumeración precedido por dos puntos. De esa forma podremos especificar de qué tipo son. Como habíamos dicho anteriormente se podrá utilizar cualquier tipo de la clase '''enteros''' como byte, sbyte, short, ushort, int, uint, long o ulong. En el caso de que no se especifique a qué tipo pertenece el compilador le dará el tipo int. También se debe tomar en cuenta que los valores de las constantes están asignados con el signo = y están separadas por comas. Como habéis visto la forma de acceder al valor numérico de las enumeraciones es especificando entre parentesis a qué tipo pertenecen, en este caso (uint). Después de lo cual especificamos el nombre de la enumeración seguido por un punto que separa al nombre de la constante. En el caso de que deseemos desplegar sólo el nombre de la constante y no su valor, se debe omitir el nombre del tipo como:<code> segundos.hora </code> sin (uint) al inicio. En el caso de que solamente especifiquemos algunos valores de las constantes, el compilador asignará el siguiente valor a la siguiente constante. Así por ejemplo: <pre> enum números { uno, //toma el valor de 0 dos, //toma el valor de 1 diez = 10, //toma el valor de 10 once, //toma el valor de 11 } </pre> == Operadores == Los operadores son símbolos con los cuales C# tomará una acción. Por ejemplo existen operadores matemáticos para sumar, restar, multiplicar y dividir números. Existen también operadores de comparación que analizará si un valor es igual, mayor o menor que otro y operadores de asignación los cuales asignarán nuevos valores a los objetos o variables. A continuación explicaremos un poco más detalladamente los operadores en C#: ==== Operadores matemáticos ==== Casi todos los lenguajes de programación soportan operadores matemáticos. Estos operadores se utilizan para realizar operaciones matemáticas sencillas entre números. Entre estos operadores tenemos los de suma, resta, multiplicación, división y módulo (o residuo): +,-,*,/,%, y se los usa de la siguiente manera: <pre> using System; class operadoresMatematicos { public static void Main() { int a = 7; int b = 4; int c = a + b; int d = a - b; int e = a * b; int f = a / b; int g = a % b; Console.WriteLine ("De los números: {0} y {1} la suma es: {2}, la resta es:{3}, la multiplicación es: {4}, la división es: {5} con un residuo de: {6}",a,b,c,d,e,f,g); } } </pre> ==== Operadores de asignación ==== Los operadores de asignación son aquellos que sirven para asignar el valor del objeto o variable de la derecha al objeto o variable de la izquierda. Un ejemplo sencillo de este tipo de operadores es la inicialización de variables. Como habíamos visto, para asignar el valor a una variable simplemente utilizamos el símbolo (u operador) igual = int a = 15; //la variable <code>a</code> tomará el valor de 15. int b = a = 10; //la variable <code>a</code> y la variable <code>b</code> tomarán el valor de 10. Además de estos operadores de asignación sencillos, existen otros operadores de asignación que realizan operaciones matemáticas antes de asignar el valor a la variable u objeto. Entre ellos tenemos: +=, -=, *=, /=, %=, ++, --. Ejemplos: var += 10; // realiza la operación var = var+10; var -= 10; // realiza la operación var = var-10; var *= 10; // realiza la operación var = var*10; var /= 10; // realiza la operación var = var/10; var++; //realiza la operación var = var+1; después de procesar esta línea ++var; //realiza la operación var = var+1; antes de procesar esta línea var--; //realiza la operación var = var-1; después de procesar esta línea --var; //realiza la operación var = var-1; antes de procesar esta línea ==== Operadores de comparación ==== Estos operadores son muy útiles cuando tenemos que cambiar el flujo de nuestro programa. Con ellos podemos comparar si un objeto o variable es igual (==), no es igual (!=), es mayor o igual (>=), es menor o igual (<=), es mayor (>) o es menor (<) que otro objeto. El resultado de esta comparación es de tipo bool es decir verdadero o falso (true o false). Estos operadores se los usa de la siguiente forma: int a = 10; int b = 20; bool resp; resp = (a == b); // compara si a es igual a b y retorna el valor bool false (o falso), tómese en cuenta que a==b es MUY diferente a a=b resp = (a != b); // compara si a es diferente a b y retorna el valor bool true (o verdadero) resp = (a <= b); // compara si a es menor o igual a b y retorna el valor bool true (o verdadero) resp = (a >= b); // compara si a es mayor o igual a b y retorna el valor bool false (o falso) resp = (a < b); // compara si a es menor a b y retorna el valor bool true (o verdadero) resp = (a > b); // compara si a es mayor a b y retorna el valor bool false (o falso) ==== Operadores lógicos ==== Para entender como funcionan los operadores lógicos tenemos que aprender un poco lo que son los números binarios. En esta parte del libro no cubriremos en detalle este extenso tema de los números binarios ni del Algebra que gobierna estos números ni mucho menos de como se comportan las puertas lógicas dentro de un ordenador porque nos tomaría uno o dos libros completos, pero nos gustaría dar un poco de bases de como es que los números binarios forman parte de los operadores lógicos. Toda información que el ordenador opera internamente es representada por números binarios (por unos y ceros que son conocidos también por verdadero y falso), así la letra A el ordenador internamente lo representa en código binaro ASCII como 01000001 que en números "normales" o decimales es 65. Para manipular esta información en unos y ceros, el ordernador tiene operadores lógicos los cuales permiten cambiar la información de una manera que nos convenga. Por medio de estos operadores lógicos el ordenador es capaz de tomar decisiones, procesar cualquier información, hacer complicadas operaciones matemáticas, o en otras palabras, por medio de estos operadores lógicos, el ordenador hace todo lo que vosotros le habéis visto hacer. Los operadores lógicos más importantes para nuestro estudio en C# son: ===== AND ===== Representado por el símbolo '''&'''. Comprueba si todos los números binarios son 1 (o verdadero) entonces la respuesta es 1 (o verdadero) ===== OR ===== Representado por el símbolo '''|''' (barra vertical de la tecla del 1). Comprueba si cualquiera de los números binarios es 1 (o verdadero) entonces la respuesta es 1 (o verdadero) ===== NOT ===== Representado por el símbolo ~ y !. Invierte la respuesta. En operaciones con tipos bool, el operador ! cambia la variable de verdadero a falso o viceversa, pero en números binarios, el operador ~ cambia cada uno de los unos y ceros por su opuesto, cuando encuentra un uno lo cambia por un cero y viceversa, así por ejemplo si tenemos el número binario 01000001 y aplicamos el operador NOT ~ obtendremos 10111110, pero si tenemos una expresión que se evalua como '''true''' (o verdadera) y si se aplica el operador !, se obtiene una respuesta false (o falsa). Por ejemplo (!(10==10)) esta expresión tiene como resultado false ===== XOR ===== Representado por el símbolo ^. En dos números, comprueba si los dos números binarios son iguales, entonces la respuesta es 0 (o falso). ===== << ===== Desplazar a la izquierda desplaza todos los bits hacia la izquierda introduciendo ceros al final de la derecha y descartando los últimos números. Así el número 01000001 si se lo desplaza a la izquierda una vez 01000001 << 1, se convierte en 10000010 ===== >> ===== Al igual que el operador anterior, desplazar a la derecha desplaza todos los bits hacia la derecha introduciendo ceros al final de la izquierda y descartando los últimos números. Así el número 01000001 si se lo desplaza a la derecha una vez 01000001 >> 1, se convierte en 00100000 ==== Operadores lógicos de unión ==== En el caso de que deseemos comparar varios valores para saber si todos son verdaderos o si alguno es verdadero podemos usar los operadores lógicos de unión && y || a && b // esta línea compara si a '''y''' b son verdaderos retorna el valor true (o verdadero) si los dos lo son a || b // esta línea compara si a '''o''' b son verdaderos retorna el valor true (o verdadero) si alguno de los dos es !a // esta línea compara si a es verdadero retorna falso si lo es y viceversa. a y b pueden representar variables, constantes, números, funciones, expresiones, etc. que den como resultado un valor de decisión (true o false). Así por ejemplo, el siguiente ejemplo es válido: int a = 0; int b = 10; int c = 20; if ((a <= b) && (c >= b)) System.Console.WriteLine ("a es menor o igual a b y c es mayor o igual a b"); {{nav|C sharp NET/Capítulo 2|Capítulo 2|C sharp NET/Capítulo 4|Capítulo 4}} {{AutoCat}} rt5rkhh1i7gy7r035cg42vdhlc1axpb Wikilibros:Acerca de 4 3692 428397 409816 2026-07-19T19:15:25Z Antimundo 74354 Actualizar y retirar sección de comunidad pues ya hay otras páginas más actualizadas y mejores que cumplen este propósito 428397 wikitext text/x-wiki == ¿Qué es Wikilibros? == Este proyecto es una colección de libros, manuales, y otros textos, de contenido libre, que se escribe colaborativamente como en la ''[[w:Wikipedia|Wikipedia]]''. El sitio trabaja con [[w:tecnología wiki|tecnología wiki]], lo que significa que cualquier usuario puede colaborar en la escritura de cualquier libro, haciendo clic en un enlace "editar" que existe en cada página. === Breve historia === Wikilibros, del inglés ''Wikibooks'', anteriormente llamado ''Wikimedia Free Textbook Project'' y ''Wikimedia-Textbooks'', es un proyecto hermano de ''Wikipedia'' y es parte de ''Wikimedia Foundation''. La edición en español se denomino ''Wikilibros''. <small>[[w:Wikilibros|Mas información.]]</small> ''Wikibooks'' es un proyecto de la [http://wikimediafoundation.org/wiki/Portada Fundación Wikimedia] puesto en marcha el 10 de julio de 2003. Inicialmente todos los idiomas estaban juntos en http://www.wikibooks.org. El 22 de julio del 2004 comenzó a migrarse ''Wikilibros'', la edición en español, a su nuevo dominio en http://es.wikibooks.org. Actualmente, todo el contenido en español ya se ha migrado a este dominio. Además estamos trabajando en nuevos libros. Desde el 22 de julio del 2004, los voluntarios han escrito unas {{NUMBEROFARTICLES}} páginas en unos [[Plantilla:Estantería|cuantos libros]]. Todos los libros publicados en Wikilibros siguen la filosofía [[w:Wiki|wiki]] y son publicados bajo la licencia [[w:Licencia de documentación libre GNU|GFDL]]. En la página '''[[Wikilibros:Políticas y orientaciones]]''' se encuentra la mayor parte de la información necesaria para editar una página. Además, la [[Wikilibros:Zona de pruebas|zona de pruebas]] es un lugar donde podrás experimentar y ver como funciona el [[w:Wiki|wiki]]. También puede consultar el artículo de Wikipedia "[[w:Cómo se edita una página|Cómo se edita una página]]". Consulte la [[:en:Wikibooks:Mailing lists|lista de correo]] (en inglés), o deje su comentario en el [[Wikilibros:Café|Café]] para discutir los proyectos en curso. == Recuerda == * '''Cualquiera puede modificar una página de Wikilibros'''. Simplemente pincha en la pestaña ''editar'', que se encuentra en la parte superior de todas las páginas. Si vas a editar una página te recomendamos que antes de hacerlo te registres, y leas el [[Wikilibros:Manual de estilo|Manual de estilo]] y las [[Wikilibros:Políticas y orientaciones|políticas y orientaciones]] de Wikilibros. * Este proyecto '''sólo''' alberga '''libros de texto o con finalidad educativa'''. * Si modificas alguna página revisa que '''el texto que incluyes no debe tener copyright''' y que se puede publicar bajo alguna [[Wikilibros:Derechos de autor|licencia permitida en Wikilibros]]. == Wikilibros y la Wikiversidad == La [[v:Portada|Wikiversidad]] es un nuevo proyecto en proceso de discusión y creación, que va a aprovechar el fondo documental de los proyectos wiki para crear una plataforma educativa virtual. ''Wikibooks'' va a ser una fuente para la biblioteca virtual de la Wikiversidad. == Véase también == *[[Wikilibros:Café|Café]] *[[Wikilibros:Políticas y orientaciones|Políticas y orientaciones]] *[[Wikilibros:Política de nombrado|Políticas de nombrado de artículos]] *[[Wikilibros:Manual de estilo|Manual de estilo]] [[Categoría:Wikilibros|Acerca de]] [[af:Wikibooks]] [[de:Wikibooks:Über Wikibooks]] [[en:Help:About]] [[fr:Wikilivres:Wikilivres]] [[hu:Wikikönyvek/A Wikikönyvekről]] [[id:Wikibooks:Perihal]] [[it:Wikibooks:About]] [[ja:Wikibooks:ウィキブックスについて]] [[ka:ვიკიწიგნები:შესახებ]] [[ms:Wikibooks:Perihal]] [[nl:Wikibooks:Info]] [[pl:Wikibooks:O Wikibooks]] [[pt:Wikilivros:Sobre]] [[simple:Wikibooks:About]] [[su:Wikibooks:Ngeunaan]] [[vi:Wikibooks:Giới thiệu]] g65u7xt30uyb66nwrakplbnevkqsjy6 C sharp NET/Capítulo 17 0 3960 428439 305097 2026-07-20T11:02:59Z Antimundo 74354 Categorizar usando AutoCat 428439 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 16|Capítulo 16|C sharp NET/Capítulo 18|Capítulo 18}} = '''Programando aplicaciones WEB con ASP.NET usando C#''' = <br /> <br /> .NET provee un rica infraestructura para diseñar no solamente programas de escritorio sino también páginas y aplicaciones Web usando la tecnología llamada ASP.NET. Como hemos dicho anteriormente, el lenguage de programación C# fue diseñado precisamente pensando en el Internet; debido a esto, C# es el lenguage de preferencia para programar éstas aplicaciones. Por supuesto que también usaremos en conjunto con C# los lenguajes tradicionales para el Web como son el HTML, XML y Javascript para enriquecer nuestras aplicaciones. Con estas tecnologías a nuestro alcance podremos crear lo que necesitemos de una manera rápida y sencilla. ASP.NET es la más avanzada tecnología para crear aplicaciones y páginas Web sobrepasando a tecnologías populares como PHP o JSP en varios aspectos como rapidez, sencillez, seguridad e incluso costo (ya que existe el proyecto MONO www.mono-project.com que proporciona una versión de ASP.NET [incluyendo un servidor] de forma gratuita). Cuando Microsoft lanzó al mercado dicha tecnología, fue acogida rápidamente debido a su facilidad de uso y a su poder. Ésta tecnología alivia inmensamente al programador de tener que crear código desde cero. ASP.NET cuenta con una inmensa colección de herramientas tanto controles como clases y funciones para crear aplicaciones rápidamente. Se dice que por lo general ASP.NET le ahorra al programador crear de 50% a 70% del código que se necesita ya que viene actualmente incorporado y listo para usarse. ASP.NET 2.0 es la nueva versión de ASP.NET, a decir verdad no incluye grande cambios sobre la versión 1.1 pero si se ha puesto énfasis en crear más controles, se han reorganizado y optimizado algunas funciones haciendo que ASP.NET sea más seguro, flexible y robusto. En este capítulo aprenderemos como utilizar para nuestro beneficio ésta gran tecnología. * [[C sharp NET/Capítulo 17/Introducción a ASP.NET|Introducción a ASP.NET 2.0]] * [[C sharp NET/Capítulo 17/El modelo de programación de ASP.NET|El modelo de programación de ASP.NET]] * [[C sharp NET/Capítulo 17/Creando aplicaciones usando Visual Studio 2005 y MonoDevelop 0.11|Creando aplicaciones usando Visual Studio 2005 y MonoDevelop 0.11]] * [[C sharp NET/Capítulo 17/Lo básico de una página|Lo básico de una página]] * [[C sharp NET/Capítulo 17/Controles|Controles]] * [[C sharp NET/Capítulo 17/Creando y depurando páginas|Creando y depurando páginas]] * [[C sharp NET/Capítulo 17/Accediendo y manipulando información|Accediendo y manipulando información]] * [[C sharp NET/Capítulo 17/Contenedores de Datos|Contenedores de Datos]] * [[C sharp NET/Capítulo 17/Enlazando datos|Enlazando datos]] * [[C sharp NET/Capítulo 17/Usando controles para desplegar información|Usando controles para desplegar información]] * [[C sharp NET/Capítulo 17/Creando páginas altamante interactivas usando AJAX|Creando páginas altamante interactivas usando AJAX]] * [[C sharp NET/Capítulo 17/Temas avanzados|Temas avanzados]] * [[C sharp NET/Capítulo 18/El futuro de ASP.NET|El futuro de ASP.NET, Silverlight y aplicaciones para el Web usando WPF]] <br /> {{nav|C sharp NET/Capítulo 16|Capítulo 16|C sharp NET/Capítulo 18|Capítulo 18}} {{AutoCat}} s6grfd631889r2lst9g4359ufk5guum C sharp NET/Capítulo 5 0 4906 428448 305083 2026-07-20T11:04:48Z Antimundo 74354 Categorizar usando AutoCat 428448 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 4|Capítulo 4|C sharp NET/Capítulo 6|Capítulo 6}} = '''Introducción a las clases y objetos''' = <br /> <br /> == Introducción a las clases en C# == Como hemos dicho, C# es un lenguaje orientado a objetos. A diferencia de lenguajes como C++ o Python en los que la orientación a objetos es opcional, en C# y al igual que en Java, la orientación a objetos es ineludible, de hecho cualquier método o variable está contenida dentro de un objeto. Y el concepto fundamental en torno a la orientación a objetos es la clase. Una clase es como una plantilla que describe cómo deben ser las instancias de dicha clase, de forma que cuando creamos una instancia, ésta tendrá exactamente los mismos métodos y variables que los que tiene la clase. Los datos y métodos contenidos en una clase se llaman miembros de la clase y se accede a ellos siempre mediante el operador "." . En el siguiente ejemplo, se definirá una clase, Clase1 y en el método Main se creará una instancia de Clase1 llamada MiClase. Una buena idea es jugar un poco con el código para ver que la instancia de la clase efectivamente tiene los mismos miembros que la clase Clase1 (que sería la plantilla de la que hablábamos antes) <pre> using System; //definimos nuestra clase class Clase1{ public int a = 1; private double b = 3; public char c = 'a'; } //usamos la clase que hemos creado class UsoClase{ public static void Main() { Clase1 MiClase = new Clase1(); // asi creamos una instancia de Clase1 Console.WriteLine( MiClase.c ); //podemos llamar a los tipos que hay dentro de Clase1 } } </pre> los identificadores public delante de los tipos que hay dentro de Clase1 son necesarios para luego poder ser llamados desde otra clase, como en este caso, que estamos llamando a los miembros de una instancia de Clase1 desde UsoClase. Pero en las clases no solo hay variables, también podemos incluir métodos. <pre> using System; //definimos nuestra clase class Clase1{ public int a = 1; public double b = 3; public char c = 'a'; public void Descripcion() { Console.WriteLine("Hola, soy una clase"); } } //usamos la clase que hemos creado class UsoClase{ public static void Main() { Clase1 MiClase = new Clase1(); // asi creamos una instancia de Clase1 Console.WriteLine( MiClase.c ); //podemos usar todos los tipos que hay dentro de Clase1 MiClase.Descripcion(); } } </pre> Podemos hacer más cosas con las clases, como heredar otras clases o implementar interfaces, pero en este capítulo nos centraremos en el uso de métodos y variables. === Métodos === Los métodos, también llamados funciones, son trozos de código que reciben unos datos, hacen algo con esos datos, y a veces devuelven algún valor. En C#, todos los métodos se encuentran contenidos dentro de un objeto. La estructura mínima de un método tiene las siguientes partes: * Tipo devuelto * Nombre del método * Parámetros (puede ser vacío) * Cuerpo del método de forma que el siguiente método: <pre> double Divide( double a, double b ) { return a/b; } </pre> devuelve un tipo double, tiene por nombre Divide, los parámetos son a y b, ambos del tipo double, y el cuerpo del método es simplemente "return a/b;". Cuando queramos llamar a un método, debemos simplemente poner el nombre del método y sus argumentos dentro de un paréntesis separados por comas. Para llamar al método Divide declarado antes, simplemente debemos escribir <code>Divide(8, 2);</code> Según lo que hemos visto, el ejemplo del método Divide() completo necesita tener una clase donde definirse y un método Main() donde ejecutarse. <pre> using System; class Metodo{ public double Divide( double a, double b ) { return a/b; } } class Principal{ public static void Main() { Metodo m = new Metodo(); Console.WriteLine( m.Divide(8, 2) ); } } </pre> ===Pasando valores a los métodos=== ==== Parámetros ==== La declaración formal de parámetros también define variables. Hay cuatro tipos de parámetros: parámetros por valor, por referencia, parámetros de salida, y arreglos de parámetros. ==== Paso por valor ==== El paso de parámetros por valor es usado por defecto para pasar parámetros a métodos. Cuando se pasa un parámetro por valor a una función realmente se está pasando una copia de dicho parámetro, por lo que las modificaciones que le hagamos al parámetro dentro del método no afectarán al parámetro original. El ejemplo <pre> using System; class Test { static void F(int p) { p++; Console.WriteLine("p = {0}", p); } static void Main() { int a = 1; Console.WriteLine("pre: a = {0}", a); F(a); Console.WriteLine("post: a = {0}", a); } } </pre> muestra un método F que tiene un parámetro por valor llamado p. El ejemplo produce la salida: pre: a = 1 p = 2 post: a = 1 aunque el valor del parámetro '''p''' haya sido modificado dentro del método, éste parámetro solamente tenía una copia del valor del parámetro '''a''' que pasamos al método; por lo que cuando imprimimos el parámetro '''a''' vemos que éste parámetro ha mantenido su valor original. ==== Paso por referencia ==== El paso de parámetros por referencia es la contraposición lógica al paso por valor. En el paso por referencia no se realiza ninguna copia del objeto, sino que lo que se le pasa a la función es una referencia del objeto, de forma que el parámetro pasa directamente a la función y cualquier modificación sobre el parámetro dentro de la función afectará al parámetro original <pre> using System; class Test { static void Swap(ref int a, ref int b) { // intercambia los dos valores int t = a; a = b; b = t; } static void Main() { int x = 1; int y = 2; Console.WriteLine("pre: x = {0}, y = {1}", x, y); Swap(ref x, ref y); Console.WriteLine("post: x = {0}, y = {1}", x, y); } } </pre> muestra un método swap que tiene dos parámetros por referencia. La salida producida es: pre: x = 1, y = 2 post: x = 2, y = 1 La palabra clave '''ref''' debe de ser usada tanto en la declaración formal de la función como en los usos que se hace de ésta. ==== Parámetro de salida ==== El parámetro de salida es similar al parámetro por referencia, salvo que el valor inicial de dicho argumento carece de importancia. Un argumento de salida se declara con el modificador out. El ejemplo using System; class Test { static void Divide(int num1, int num2, out int result, out int resid) { result = num1 / num2; resid = num1 % num2; } static void Main() { int valor1 = 10; int valor2 = 3; int respuesta, residuo; Divide(valor1, valor2, out respuesta, out residuo); Console.WriteLine("La división de {0} para {1} = {2} con un residuo de {3}", valor1, valor2, respuesta, residuo); } } muestra un método Divide que incluye dos parámetros de salida. Uno para el resultado (variable result) de la división y otro para el resto (variable resid). Vemos que estos resultados son asignados a las variables '''respuesta''' y '''residuo''' respectivamente. ====Arreglo de parámetros==== Habrá ocasiones que necesitemos pasar varios parámetros a un método (o función) pero no sabremos con anticipación cuantos parámetros tendremos que pasar; para esto podremos usar un arreglo de parámetros. Un arreglo de parámetros permite guardar una relación de varios a uno: varios argumentos pueden ser representados por un único arreglo de parámetros. En otras palabras, los arreglos de parámetros permiten listas de argumentos de tamaño variable. Un arreglo de parámetros se declara con el modificador '''params'''. Sólo puede haber un arreglo de parámetros en cada método, y siempre debe ser el último parámetro especificado. El tipo del arreglo de parámetros debe ser siempre un tipo arreglo '''unidimensional'''. Al llamar a la función se puede pasar uno o varios argumentos del tipo del arreglo. El ejemplo <pre> using System; class Test { static void F(params int[] args) { Console.WriteLine("nº de argumentos: {0}", args.Length); for (int i = 0; i < args.Length; i++) Console.WriteLine("args[{0}] = {1}", i, args[i]); } static void Main() { F(); F(1); F(1, 2); F(1, 2, 3); F(new int[] {1, 2, 3, 4}); } } </pre> muestra un método F que toma un número variable de argumentos int, y varias llamadas a este método. La salida es: nº de argumentos: 0 nº de argumentos: 1 args[0] = 1 nº de argumentos: 2 args[0] = 1 args[1] = 2 nº de argumentos: 3 args[0] = 1 args[1] = 2 args[2] = 3 nº de argumentos: 4 args[0] = 1 args[1] = 2 args[2] = 3 args[3] = 4 La mayoría de los ejemplos presentes en este capítulo utilizan el método WriteLine de la clase Console. El comportamiento para las sustituciones, como muestra el ejemplo int a = 1, b = 2; Console.WriteLine("a = {0}, b = {1}", a, b); se consigue usando un arreglo de parámetros. El método WriteLine proporciona varios métodos sobrecargados para el caso común en el que se pasa un pequeño número de argumentos, y un método que usa un arreglo de parámetros. <pre> using System; namespace System { public class Console { public static void WriteLine(string s) {...} public static void WriteLine(string s, object a) {...} public static void WriteLine(string s, object a, object b) {...} ... public static void WriteLine(string s, params object[] args) {...} } } </pre> === Modificadores public y static === El modificador public lo hemos utilizado anteriormente. Se puede utilizar en la declaración de cualquier método o variable, y como es de esperar, produce el efecto de que el campo afectado se vuelve '''público''', esto es, se puede utilizar desde otras clases <pre> using System; class Metodo{ public double Divide( double a, double b ) { return a/b; } } class Principal{ public static void Main() { Metodo m = new Metodo(); Console.WriteLine( m.Divide(8, 2) ); } } </pre> Si por ejemplo intentamos declarar el método Divide sin el modificador public, obtendremos un error en tiempo de compilación. El modificador complementario de public es private, que provoca que el método o dato solo sea accesible desde la clase en la que está declarado. Si no se especifica nada, se toma por defecto el modificador private De esta forma podríamos separar las clases Metodo y Principal en dos archivos separados, llamados por ejemplo metodo.cs y principal.cs . Para compilar esto, bastará compilar ambos archivos al mismo tiempo, de forma similar a esto: mcs principal.cs metodo.cs Además, tampoco es necesario crear una instancia de la clase sólo para acceder a un método declarado en ella. Para eso debemos anteponer a la declaración del método el modificador static. Los métodos estáticos se caracterizan por no necesitar una instancia de la clase para cumplir su función, pero como contrapartida, no pueden acceder a datos propios de la clase. <pre> using System; class Metodo{ public static double Divide( double a, double b ) { return a/b; } } class Principal{ public static void Main() { Console.WriteLine( Metodo.Divide(8, 2) ); } } </pre> Los métodos estáticos se utilizan en multitud de situaciones. Por ejemplo, el método Console.WriteLine() o las funciones de la librería matemática estándar no son más que métodos estáticos de sus respectivas clases. === Constructores e instancias de una clase === Como hemos visto, las instancias de una clase se crean con la sintaxis nombreclase objeto = new nombreclase( argumentos ); donde nombreclase es el nombre que le hemos dado a la definición de la clase, argumentos es una lista de argumentos posiblemente vacía y objeto es el nombre que queremos darle a la instancia de la clase. Una vez creada una clase, sus miembros se inicializan a sus valores predeterminados ( cero para valores numéricos, cadena vacía para el tipo string, etc. ). La siguiente clase representa un punto sobre el plano, de forma que tiene dos valores públicos X e Y, y un método que calcula la distancia al origen del punto (módulo) <pre> using System; class Punto{ public double X; public double Y; public double Modulo() { double d; d = Math.Sqrt(X*X + Y*Y); //Sqrt = raiz cuadrada return d; } } class Principal{ public static void Main() { Punto A = new Punto(); A.X = 1; A.Y = 1; Console.WriteLine("El modulo del punto (1,1) es: {0}", A.Modulo() ); } } </pre> Ahora bien, la forma en la que se crea la instancia, es decir, inicializando los datos a cero (ejercicio: comprobar esto), se puede personalizar, de forma que podemos construir nuestro propio constructor que le diga a la clase los valores por defecto que debe tomar. Esto se realiza simplemente escribiendo dentro de la clase un método que tenga el mismo nombre que la clase y en el que no se especifica el valor devuelto. La clase Punto con un constructor sería así: <pre> using System; class Punto{ public double X; public double Y; public Punto() //constructor { X = 1; Y = 1; } public double Modulo() { double d; d = Math.Sqrt(X*X + Y*Y); //Sqrt = raiz cuadrada return d; } } </pre> de forma que ahora al crear una instancia de la clase se crea el punto (1,1) en lugar del (0,0), que era el que se creaba por defecto. De esta forma, al crear la instancia, par ya contendrá los valores (1,1) . En la práctica se utilizan mucho constructores con parámetos, de forma que al crear la instancia se le asignan valores según los parámetros. La siguiente implementación de Par contiene un constructor que acepta un par de valores, que servirán para inicializar los valores A y B <pre> class Punto{ public Punto( double val1, double val2) { X = val1; Y = val2; } ... } </pre> También tenemos la posibilidad de declarar una clase con varios constructores (cada uno con diferentes parámetros) Lo que hará el compilador de C# es buscar el constructor que se adecúe a los parámetros que le llegan, y ejecutarlo como si fuera un método más. Dependiendo de la llamada que se haga en el "new", usaremos un constructor u otro. === Sobrecarga de métodos === En C#, al igual que en C++ y en Java es posible definir varios métodos con el mismo nombre pero con distintos parámetros, de forma que el compilador decide a cuál se llama dependiendo de los parámetros que le lleguen. Esto es muy práctico, pues no tienes que renombrar cada función según el tipo de valor que acepta. El siguiente ejemplo implementa un par de métodos que elevan al cuadrado el valor que reciben, y se implementan para tipos double y para int. En C, que es un lenguaje que no soporta sobrecarga de métodos, se tendría que haber llamado distinto a ambos métodos, por ejemplo alcuadrado_double y alcuadrado_int <pre> using System; class Eleva{ public static double AlCuadrado( int a ) { return a*a; } public static double AlCuadrado( double a ) { return a*a; } } class Principal{ public static void Main() { Console.WriteLine("4 al cuadrado es {0}", Eleva.AlCuadrado(4) ); Console.WriteLine("3.2 al cuadrado es {0}", Eleva.AlCuadrado(3.2) ); } } </pre> === La palabra reservada this === La palabra reservada this sirve para hacer referencia a miembros de la clase en caso de que se quiera especificar, ya sea por motivos de colisión de nombres o por la claridad del código. Su sintaxis es this.campo donde campo es la variable de la clase a la que queremos hacer referencia. En el siguiente ejemplo, declaramos un constructor para la clase Punto, que toma dos argumentos X e Y. Entonces es obligado el uso de this para distinguir entre el X de la clase y el X tomado como parámetro <pre> class Complejo { double X; double Y; Complejo(double X, double Y) { this.X = X; this.Y = Y; } } </pre> == Propiedades e indizadores == === Propiedades === Las propiedades son una característica de C# que permiten aparentemente el acceso a un miembro de la clase mientras mantiene el control asociado al acceso mediante métodos. Para los programadores de Java hay que decir que esto no es más que la formalización del patrón de asignación (setter) y método de lectura (getter) Las propiedades son como métodos que se declaran dentro de un bloque asociado a una variable mediante las palabras reservadas get (se encarga de devolver algo cuando se llama al tipo que lo contiene ) y set (que hace algo cuando se le asigna un valor a la variable que lo contiene. Este valor viene especificado en la variable value ) <pre> using System; class TestProperties { private static string clave; public string Clave { get { Console.WriteLine ("Acceso a la propiedad clave"); return clave; } set { Console.WriteLine ("Cambio del valor de clave"); clave = value; } } } class Test { public static void Main () { TestProperties tp = new TestProperties(); string c = "ClaveClave"; tp.Clave = c; Console.WriteLine (tp.Clave); } } </pre> En realidad, lo que se hace es declarar una variable privada de forma que no se puede acceder de forma directa, y se crean dos métodos ( o uno si solo se requiere acceso de lectura) que permiten acceder al contenido de la variable y tal vez modificarla. Si no queremos que se pueda modificar la variable, no incluímos el método "set" y ya tendríamos propiedades de sólo lectura. === Indexadores === Hemos visto, en el apartado en el que tratamos las propiedades, que podemos acceder a una variable privada de una clase a través de eventos que nos permiten controlar la forma en la que accedemos a dicha variable. Los indexadores nos van a permitir hacer algo parecido. Nos van a permitir acceder a una clase como si se tratara de un arreglo. Lo vemos de forma más sencilla con un ejemplo: <pre> using System; class PruebaIndexadores { private int[] tabla = {1, 2, 3, 4}; public int this [int indice] { get { Console.WriteLine ("La posicion {0} de la tabla tiene el valor {1}", indice, tabla[indice]); return tabla[indice]; } set { Console.WriteLine ("Escrito el valor {0} en la posición {1} de la tabla", value, indice); tabla[indice] = value; } } } </pre> Tenemos una clase PruebaIndexadores en la que hay un array llamado "tabla", declarado como privado, por lo que no podremos acceder a él desde fuera de nuestra clase. Pero hemos declarado también un indexador (public int this [int indice]), que nos permitirá acceder a él de forma más controlada. Para probar esta clase, creamos otra clase con un punto de entrada (public static void Main ()), que será donde hagamos las pruebas. Primero creamos un objeto de la clase PruebaIndexadores: PruebaIndexadores obj = new PruebaIndexadores (); Luego accedemos a una posición del indexador: int a = obj[3]; Esta línea lo que hace es llamar al indexador, pasándole como parámetro el índice, en este caso 3. Al ser una consulta de lectura, se ejecuta el código que haya en la parte "get" del indexador. Una vez ejecutado, lo que nos aparece por pantalla es esto: La posicion 3 de la tabla tiene el valor 4 Vamos ahora a hacer un cambio en la tabla: obj[3] = 6; Lo que se ejecuta ahora es la parte "set" del indexador. Lo que aparecerá en pantalla una vez ejecutado esto será: Escrito el valor 6 en la posición 3 de la tabla Nótese que tenemos que hacer explícitamente el acceso al array (tabla[indice]=value) en el set, ya que el indexador no tiene forma de saber qué variable se supone que tiene que manejar. Si no pusiéramos esa línea, en realidad el indexador no cambiaría el valor del array. Para comprobar que realmente se ha hecho el cambio, volvemos a acceder al indexador: a = obj[3]; Y esta vez nos aparecerá esto: La posicion 3 de la tabla tiene el valor 6. {{nav|C sharp NET/Capítulo 4|Capítulo 4|C sharp NET/Capítulo 6|Capítulo 6}} {{AutoCat}} fe90972iaiaojcpra97twhaylvelc6i C sharp NET/Capítulo 6 0 4938 428449 338502 2026-07-20T11:04:59Z Antimundo 74354 Categorizar usando AutoCat 428449 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 5|Capítulo 5|C sharp NET/Capítulo 7|Capítulo 7}} = '''Herencia y Polimorfismo''' = <br /> <br /> == Herencia == La herencia es un concepto fundamental de la programación orientada a objetos. Cuando se dice que una cierta clase A hereda otra clase B significa que la clase A contiene todos los miembros de la clase B más algunos que opcionalmente puede implementar ella misma Las clases en C# soportan herencia simple, de forma que una clase puede derivar de otra, pero no de varias (como si era posible en C++). De hecho, en C# todas las clases derivan implícitamente de la clase object. La sintaxis que se utiliza es la siguiente: <pre> class MiClaseDerivada : MiClaseBase { //miembros } </pre> En el siguiente ejemplo definimos una clase A con un método F(). Posteriormente definimos una clase B que hereda A y además define un método G(). Finalmente creamos una clase con un método Main() que llamará a los dos métodos de B, al implementado por B y al heredado <pre> using System; class A{ public void F() { Console.WriteLine("Soy F() de A"); } } class B : A{ public void G() { Console.WriteLine("Soy G() de B"); } } class Principal{ public static void Main() { B clase_heredada = new B(); clase_heredada.F(); clase_heredada.G(); } } </pre> === La palabra reservada ''base'' === La palabra reservada base sirve para acceder a miembros de la clase heredada de la misma forma que this sirve para acceder a miembros de la propia clase. Su sintaxis es idéntica a la de this, esto es: base.nombre_del_miembro En el siguiente ejemplo declaramos una clase B que hereda A y que utiliza el método F() de A. <pre> class B : A{ public void H() { base.F(); Console.WriteLine("soy H() de B"); } } </pre> === Clases Abstractas === Las clases abstractas son clases que contienen algún método incompleto, esto es, que está definido pero no implementado. Por lo tanto, no se pueden instanciar y su único propósito es servir de clase base de las que se derivarán otras clases. Las clases que heredan una clase abstracta deben implementar los métodos incompletos. Las clases abstractas se declaran con la palabra reservada abstract <pre> using System; abstract class A{ public void F(); //metodo no implementado } class B : A{ //error en tiempo de compilación, B tiene que definir un método F() } </pre> === Miembros virtual === Métodos, propiedades e indexadores pueden ser virtual, lo que significa que su implementación puede ser sobreescrita en clases derivadas. El ejemplo <pre> using System; class A { public virtual void F() { Console.WriteLine("A.F"); } } class B: A { public override void F() { base.F(); Console.WriteLine("B.F"); } } class Test { public static void Main() { B b = new B(); b.F(); A a = b; a.F(); } } </pre> muestra una clase A con un método virtual F, y una clase B que sobreescribe F. El método sobreescrito en B contiene una llamada, base.F(), el cual llama al método sobreescrito en A. === Problemas propuestos === ''Por escribir. Puedes colaborar escribiendo estos problemas.'' Este código me pareció interesante de compartir, una modesta recreación del efecto matrix, escrita en C#. <pre> using System; namespace m7tr1x { class Program { static void Main(string[] args) { Console.Title = "tH3 M7tr1x 3ff3<t"; Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WindowLeft = Console.WindowTop = 0; Console.WindowHeight = Console.BufferHeight = Console.LargestWindowHeight; Console.WindowWidth = Console.BufferWidth = Console.LargestWindowWidth; Console.WriteLine("H1T 7NY K3Y T0 C0NT1NU3 =/"); Console.ReadKey(); Console.CursorVisible = false; int width, height; int[] y; int[] l; Initialize(out width, out height, out y, out l); int ms; while (true) { DateTime t1 = DateTime.Now; MatrixStep(width, height, y, l); ms = 10 - (int)((TimeSpan)(DateTime.Now - t1)).TotalMilliseconds; if (ms> 0) System.Threading.Thread.Sleep(ms); if (Console.KeyAvailable) if (Console.ReadKey().Key == ConsoleKey.F5) Initialize(out width, out height, out y, out l); } } static bool thistime = false; private static void MatrixStep(int width, int height, int[] y, int[] l) { int x; thistime = !thistime; for (x = 0; x <width; ++x) { if (x % 11 == 10) { if (!thistime) continue; Console.ForegroundColor = ConsoleColor.White; } else { Console.ForegroundColor = ConsoleColor.DarkGreen; Console.SetCursorPosition(x, inBoxY(y[x] - 2 - (l[x] / 40 * 2), height)); Console.Write(R); Console.ForegroundColor = ConsoleColor.Green; } Console.SetCursorPosition(x, y[x]); Console.Write(R); y[x] = inBoxY(y[x] + 1, height); Console.SetCursorPosition(x, inBoxY(y[x] - l[x], height)); Console.Write(' '); } } private static void Initialize(out int width, out int height, out int[] y, out int[] l) { int h1; int h2 = (h1 = (height = Console.WindowHeight) / 2) / 2; width = Console.WindowWidth - 1; y = new int[width]; l = new int[width]; int x; Console.Clear(); for (x = 0; x <width; ++x) { y[x] = r.Next(height); l[x] = r.Next(h2 * ((x % 11 != 10) ? 2 : 1), h1 * ((x % 11 != 10) ? 2 : 1)); } } static Random r = new Random(); static char R { get { int t = r.Next(10); if (t <= 2) return (char)('0' + r.Next(10)); else if (t <= 4) return (char)('a' + r.Next(27)); else if (t <= 6) return (char)('A' + r.Next(27)); else return (char)(r.Next(32, 255)); } } public static int inBoxY(int n, int height) { n = n % height; if (n <0) return n + height; else return n; } } } </pre>El programa anterior de Matrix es muy interesante, pero no tiene que ver con este capítulo de '''Herencia y Polimorfismo'''{{nav|C sharp NET/Capítulo 5|Capítulo 5|C sharp NET/Capítulo 7|Capítulo 7}} {{AutoCat}} rx72si7tqbwb68zjyftgqtsp8sq71e6 OpenOffice.org/Desarrollo 0 5342 428415 306518 2026-07-20T01:13:39Z Mazbel 57931 Evitando transclusión 428415 wikitext text/x-wiki {{Desarrollo|75%|18 de Septiembre de 2005}} 5o1znno5f22dufmc1g2w7h435ysyn74 C sharp NET/Capítulo 19 0 5396 428440 305133 2026-07-20T11:03:09Z Antimundo 74354 Categorizar usando AutoCat 428440 wikitext text/x-wiki {{nav|C sharp NET / Capítulo 18|Capítulo 18|C sharp NET / Capítulo 20|Capítulo 20}} = '''XML''' = <br /> <br /> <br /> Cuando Microsoft lanzó las primeras versiones de su plataforma .NET, nos sorprendió a todos por su apuesta por los estándares, lo cual contrastaba claramente con prácticas anteriores. El estándar más importante adoptado en la plataforma .NET es sin duda XML (e<u>X</u>tensible <u>M</u>arkup <u>L</u>anguage, Lenguaje Extensible de Marcas). XML es una tecnología tan integrada en .NET, que la propia plataforma utiliza XML internamente para sus archivos de configuración y para su propia documentación. XML es, por lo tanto, una tecnología con una importancia fundamental en .NET. == Conceptos básicos de XML == XML es un lenguaje para estructurar datos. Sirve, por ejemplo, para almacenar en un archivo de texto una hoja de cálculo, una libreta de direcciones o un dibujo vectorial. XML hace mucho más fácil al ordenador el proceso de generar datos, leer los datos y asegurarse de que la estructura de los datos no es ambigua. A su vez, contiene características que aseguran su validez durante mucho tiempo: es ampliable, independiente de plataforma, no pertenece a ninguna firma concreta de software y soporta internacionalización. El aspecto de un archivo XML es muy similar al de un archivo HTML, con texto encerrado entre etiquetas. Las etiquetas no son más que palabras rodeadas por < y >. El siguiente podría ser un ejemplo de archivo XML que describe a la persona que escribe éste tutorial. <pre> <?xml version="1.0"?> <persona> <nombre>Fabian</nombre> <apellido>Seoane</apellido> <organizacion>Mono Hispano</organizacion> <pagina>http://fseoane.net</pagina> </persona> </pre> La diferencia fundamental con HTML es que XML no tiene etiquetas predefinidas, sino que éstas dependen de la implementación. Por ejemplo, en el archivo que acabamos de ver, las etiquetas disponibles podrían ser persona, nombre, apellido, ..., mientras que en un archivo XML que describa una librería, las etiquetas podrían ser ensamblado, clase, método, etc. Todo ésto podría parecer un lío increíble si no se dispusiera de un mecanismo para traducir entre los diversos formatos XML, por ejemplo, entre el archivo persona y un archivo HTML que muestra la información sobre la persona. Por fortuna, esto existe, se llaman hojas XSL y la librería de clases dispone de métodos para transformar entre XML a partir de hojas XSL. Si quieres saber más sobre XML te sugiero que mires las siguientes páginas: http://w3.org/XML/, http://xml.com == XML en .Net == A lo largo de este capítulo utilizaremos de forma extensiva el espacio de nombres System.Xml. Los estándares cubiertos por este espacio de nombres son: * XML 1.0 - http://www.w3.org/TR/1998/REC-xml-19980210 - includyendo soporte para DTDs. * XML Namespaces - http://www.w3.org/TR/REC-xml-names/ - tanto stream level como DOM. * XSD Schemas - http://www.w3.org/2001/XMLSchema * XPath expressions - http://www.w3.org/TR/xpath * XSLT transformations - http://www.w3.org/TR/xslt * DOM Level 1 Core - http://www.w3.org/TR/REC-DOM-Level-1/ * DOM Level 2 Core - http://www.w3.org/TR/DOM-Level-2/ == Escribir un archivo XML == Comenzaremos por escribir un sencillo archivo XML. En éste caso será el ejemplo que acabamos de utilizar. El código siguiente crea un documento llamado ejemplo.xml con un documento xml como el del ejemplo anterior. <pre> using System; using System.Xml; class EjemploXml{ public static void Main() { XmlTextWriter writer = new XmlTextWriter("ejemplo.xml", System.Text.Encoding.UTF8); //Usa indentación por legibilidad writer.Formatting = Formatting.Indented; //Escribe la declaración del XML writer.WriteStartDocument(); //Escribe el elemento raiz writer.WriteStartElement("libro"); //Escribe los elementos dentro de sus etiquetas writer.WriteElementString("titulo", "El lenguaje C#"); writer.WriteElementString("dificultad", "media"); writer.WriteElementString("organizacion", "Mono Hispano - wikilibros"); writer.WriteEndElement(); writer.Flush(); writer.Close(); } } </pre> El cual creará un archivo ejemplo.xml con el siguiente aspecto: <pre> <?xml version="1.0" encoding="utf-8"?> <libro> <titulo>El lenguaje C#</titulo> <dificultad>media</dificultad> <organizacion>Mono Hispano - wikilibros</organizacion> </libro> </pre> {{nav|C sharp NET / Capítulo 18|Capítulo 18|C sharp NET / Capítulo 20|Capítulo 20}} {{AutoCat}} 42mhqj04c819mz38f2k2bi4cn4kwslm C sharp NET/Capítulo 7 0 5414 428450 305084 2026-07-20T11:05:08Z Antimundo 74354 Categorizar usando AutoCat 428450 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 6|Capítulo 6|C sharp NET/Capítulo 8|Capítulo 8}} = '''Sobrecarga de operadores''' = <br /> <br /> == ¿Qué es la sobrecarga de operadores? == La sobrecarga de operadores es la capacidad para transformar los operadores de un lenguaje como por ejemplo el +, -, etc, cuando se dice transformar se refiere a que los operandos que entran en juego no tienen que ser los que admite el lenguaje por defecto. Mediante esta técnica podemos sumar dos objetos creados por nosotros o un objeto y un entero, en vez de limitarnos a sumar números enteros o reales, por ejemplo. La sobrecarga de operadores ya era posible en c++ y en otros lenguajes, pero sorprendentemente java no lo incorpora, así que podemos decir que esta característica es una ventaja de c# respecto a java, aunque mucha gente, esta posibilidad, no lo considera una ventaja porque complica el código. A la hora de hablar de operadores vamos a distinguir entre dos tipos, los unarios y los binarios. Los unarios son aquellos que solo requieren un operando, por ejemplo a++, en este caso el operando es 'a' y el operador '++'. Los operadores binarios son aquellos que necesitan dos operadores, por ejemplo a+c , ahora el operador es '+' y los operandos 'a' y 'c'. Es importante esta distinción ya que la programación se hará de forma diferente. Los operadores que podemos sobrecargar son los unarios, +, -, !, ~, ++, --; y los binarios +, -, *, /, %, &, |, ^, <<, >>. Es importante decir que los operadores de comparación, ==, !=, <, >, <=, >=, se pueden sobrecargar pero con la condición que siempre se sobrecargue el complementario, es decir, si sobrecargamos el == debemos sobrecargar el !=. == Sobrecargando operadores en la práctica == Para mostrar la sobrecarga vamos a usar el repetido ejemplo de los números complejos, ( aunque también valdría el de las coordenadas cartesianas ). Como se sabe, los números complejos tienen dos partes, la real y la imaginaria, cuando se suma dos números complejos su resultado es la suma de las dos partes, para ello se va a crear una clase llamada ComplexNum que contendrá ambas partes. Sin esta técnica no se podría sumar dos objetos de este tipo con este práctico método, ya que esta clase no es válida como operando de los operadores de c#. Empecemos con el código de la clase de números complejos. <pre> public class ComplexNum { private float img; private float real; // constructor de la clase public ComplexNum(float real, float img) { this.real = real; this.img = img; } // propiedad Real public float Real{ get{ return real; } set{ real = value; } } // propiedad Img public float Img{ get{ return img; } set{ img = value; } } // Sobrescribimos el miembro ToString heredado de Object override public string ToString() { if ( img >= 0 ) return real + "+" + img +"i"; else return real + "" + img + "i"; } public static ComplexNum operator+(ComplexNum a, ComplexNum b) { return new ComplexNum(a.real + b.real, a.img + b.img); } } </pre> En el ejemplo hemos puesto la clase, con un constructor , dos propiedades para obtener los datos privados de la clase y un método que nos transfoma el número complejo a una cadena de caracteres para que se pueda visualizar fácilmente. Finalmente hemos sobrecargado el operador '+', de forma que podremos sumar dos números complejos como si se tratara de números usuales. == Operadores binarios == Para empezar vamos a sobrecargar el operador suma('+') para que al sumar dos objetos de la clase ComplexNum, es decir dos números complejos obtengamos un número complejo que será la suma de ambas partes. Cabe destacar que los prototipos para sobrecargar operadores serán: public static Operando operator+(Operando a, Operando b) Este es el prototipo para el operador +, el resto de operadores binarios van a seguir el mismo patrón. Por tanto el código del método de sobrecarga será el siguiente: public static ComplexNum operator+(ComplexNum a, ComplexNum b) { return new ComplexNum(a.Real + b.Real, a.Img + b.Img); } Este método sobrecarga el operador suma para que podamos sumar dos números complejos. Un dato a tener en cuenta es que los métodos que sobrecargan operadores deben ser static. Como se ve en el código los operandos son 'a' y 'b', que se reciben como parámetro y el resultado de la operación es otro número complejo que es el que retorna el método. Por tanto se limita a crear un nuevo número complejo con ambas partes operadas. De la misma forma podemos crear la sobrecarga del operador resta('-') para que lleve a cabo la misma función: public static ComplexNum operator-(ComplexNum a, ComplexNum b) { return new ComplexNum(a.Real - b.Real, a.Img - b.Img); } Como vemos el método es idéntico solo que sustituyendo los + por -. En este caso el trabajo que hacemos dentro del método es trivial pero podría ser tan complejo como se quisiera. == Operadores Unarios == En esta sección se verá cómo sobrecargar los operadores unarios, es decir aquellos que toman un solo operando, como por ejemplo a++. El prototipo de los métodos que van a sobrecargar operadores unarios será: public static Operando operator++(Operando a) Como antes sustituyendo el ++ por cualquier operador unario. El ejemplo dentro de nuestra clase de números complejos sería: public static ComplexNum operator++(ComplexNum a) { float auximg = a.Img; float auxreal = a.Real; return new ComplexNum(++auxreal, ++auximg); } A primera vista puede quedar la duda si estamos sobrecargando la operación ++a o a++. Este aspecto se encarga el compilador de resolverlo, es decir, se sobrecarga la operación ++ y el compilador se encarga de "sumar y asignar" o "asignar y sumar". Este problema no ocurría en C++, cosa que teníamos que manejar nosotros. Como hemos dicho antes, la operación que hagamos dentro del método que sobrecarga el operador es totalmente libre, se puede poner el ejemplo de multiplicar dos matrices lo que es mas complejo que sumar dos números complejos. {{nav|C sharp NET/Capítulo 6|Capítulo 6|C sharp NET/Capítulo 8|Capítulo 8}} {{AutoCat}} d837buujso25ks06nd6qrrzklqxyipt C sharp NET/Capítulo 8 0 5432 428451 305086 2026-07-20T11:05:27Z Antimundo 74354 Categorizar usando AutoCat 428451 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 7|Capítulo 7|C sharp NET/Capítulo 9|Capítulo 9}} = '''Estructuras''' = <br /> <br /><br /> La lista de similitudes entre clases y estructuras es larga: las estructuras pueden implementar interfaces, y pueden tener el mismo tipo de miembros que las clases. Sin embargo, las estructuras difieren de las clases en algunos puntos importantes: las estructuras son tipos por valor en lugar de tipos por referencia, y no permiten la herencia. Los valores de las estructuras quedan almacenados "en la pila" o "alineados". Los programadores cuidadosos pueden a veces mejorar el rendimiento mediante un uso meditado de las estructuras. Por ejemplo, el uso de una estructura más bien que una clase para un Punto puede producir una gran diferencia en el número de asignaciones producidas en memoria en tiempo de ejecución. El siguiente programa crea e inicializa un arreglo de 100 puntos. Con Punto implementado como clase, 101 objetos separados son inicializados ( uno para el vector y uno para cada uno de los 100 elementos ) <pre> class Punto { public int x, y; public Punto(int x, int y) { this.x = x; this.y = y; } } class Test { static void Main() { Punto[] Puntos = new Punto[100]; for (int i = 0; i < 100; i++) { Puntos[i] = new Punto(i, i*i); } } } </pre> Si Punto fuera implementado como una estructura, como en <pre> struct Punto { public int x, y; public Punto(int x, int y) { this.x = x; this.y = y; } } </pre> únicamente un objeto es inicializado: el elemento del arreglo. Las instancias de Punto se almacenan de forma alineada en el arreglo. Esta optimización puede ser mal usada. Usar estructuras en lugar de clases también puede hacer que una aplicación funcione más lento o utilice más memoria, pues pasar una instancia de estructura por valor provoca que una copia de esa estructura sea creada. == Rendimiento == Como hemos dicho, la principal ventaja por la que se usan en determinadas circunstancias estructuras y no clases es que en circunstancias particulares éstas demuestran mucho mejor rendimiento. {{nav|C sharp NET/Capítulo 7|Capítulo 7|C sharp NET/Capítulo 9|Capítulo 9}} {{AutoCat}} oz73go27n4wmulpxr5gt7lr5kuj2mmf Introducción a la psicología 0 6305 428398 419740 2026-07-19T19:54:51Z Antimundo 74354 Categorizar usando estantes 428398 wikitext text/x-wiki *[[Introducción a la psicología (inicio) ]] *[[w:Historia de la psicología|Historia de la psicología]] *[[Metodología de la investigación en psicología]] *[[w:Cerebro|Bases biológicas de la psicología]] *[[w:Sentido (percepción)|Los sentidos]] *[[w:Percepción|Percepción]] *[[w:Aprendizaje|Aprendizaje]] *[[w:Memoria (proceso)|Memoria]] *[[w:Estado de conciencia|Estados de la conciencia]] *[[w:Pensamiento|Pensamiento]] *[[w:Inteligencia|Inteligencia]] *[[w:Motivación|Motivación]] *[[w:Emoción|Afectividad]] *[[w:Función ejecutiva (neuropsicología)|Funciones ejecutivas]] *[[w:Psicología del desarrollo|Desarrollo psicológico]] *[[w:Psicología de la personalidad|Teorías de la personalidad]] *[[w:Psicometría|Psicometría]] *[[w:DSM-5|Psicopatología]] *[[w:Psicoterapia|Psicoterapia]] *[[w:Psicología social|Psicología Social]] {{Estantes|Ciencias de la salud}} fdxdwc65bw11zgfm8p651yhlmsmi4ss OpenOffice.org/Introducción 0 6423 428408 306510 2026-07-20T00:56:23Z Mazbel 57931 actualización 428408 wikitext text/x-wiki == Introducción == ===¿Qué es OpenOffice.org?=== Es una suite ofimática para los sistemas operativos más comunes. Existe en versiones para mas de 30 lenguas diferentes y es utilizado por mas de 70 millones de personas. Podéis obtener más información en sus sedes electrónicas:[http://www.openoffice.org/ OpenOffice.org] (en inglés), [http://es.openoffice.org/ OpenOffice.org en español] , [http://www.softcatala.org/wiki/OpenOffice.org en Catalán] y [http://www.mancomun.org/index.php/component/option,com_content/task,view/id,368/Itemid,113/ en Gallego]. La suite consta de los siguientes programas: *OpenOffice.org Writer: procesador de textos *OpenOffice.org Math: editor de fórmulas *OpenOffice.org Calc: hoja de cálculo *OpenOffice.org Draw: editor de dibujos y gráficos *OpenOffice.org Impress: editor de presentaciones *OpenOffice.org Base: administrador de base de datos *OpenOffice.org Web: editor de páginas web Ofrece además un lenguaje de macros, ''OpenOffice.org Basic'', y una interfaz gráfica de base de datos. ===Ventajas de OpenOffice.org=== Para el usuario no experto OpenOffice.org ofrece las siguientes ventajas: * Es libre, se puede descargar gratuitamente de internet, copiar y redistribuir, todo esto de forma completamente legal. * Con el tiempo todos los programas caducan, se quedan obsoletos; OpenOffice.org, no: siempre puedes ir a su página web y descargarte gratuitamente la última versión actualizada y mejorada. * Con OpenOffice.org tienes completa libertad para elegir el sistema operativo que desees. Si estás harto de los cuelgues de Windows y buscas la sencillez de uso de un Mac o la aventura e innovación de Linux, no hay ningún problema: te compras el Mac o instalas Linux, descargas la versión correspondiente de OpenOffice.org y listo. * Por lo mismo, con OpenOffice.org estás a salvo si tienes necesidad de editar tus documentos en un ordenador que funciona con un sistema operativo distinto del tuyo. Puedes sobrevivir (informáticamente hablando) en entornos diversos. * Es muy compatible con Microsoft Office: los documentos de texto, hojas de cálculo y presentaciones de MS Office se pueden abrir, editar y guardar satisfactoriamente con OpenOffice.org. * A partir de su versión 2.0, utiliza el formato Open Document, que permite la fácil lectura y edición de los documentos creados. ===Instalación=== Descarga la versión del [http://es.openoffice.org/programa/ programa] para tu sistema operativo y los [http://lingucomponent.openoffice.org/download_dictionary.html diccionarios] para la corrección ortográfica e instálalos siguiendo las instrucciones de las páginas web. Si usas Windows y vienes al IES Carlos Casares, también puedes hablar conmigo y pedirme un CD de software libre para Windows, con el que instalar OpenOffice.org no ofrece mayor dificultad. También los discos "Live" oficiales de [http://www.ubuntu-es.org/ Ubuntu Linux], cuando los usas con Windows arrancado y funcional, te dan la posibilidad de instalar distintas versiones para Windows de algunos de los programas mas populares, entre ellos OpenOffice.org. ===La interfaz gráfica del usuario=== La interfaz gráfica del usuario, o GUI, es el conjunto de elementos gráficos (ventanas, menús, botones, etc.) que permiten la interacción entre el usuario y la aplicación informática. La ilustración siguiente muestra la interfaz gráfica de usuario de OpenOffice.org Writer tal como aparece en mi ordenador al abrir el ejercicio writer-03.sxw. bajo el software siguiente: :* OpenOffice.org 2.0.3 en español :* Escritorio KDE 3.3.2 con decoración de ventanas Keramic y esquema de colores Rojo desierto :* Mandrake Linux 10.0 ''En Windows, la interfaz gráfica seguramente tendrá un aspecto diferente. También pueden variar ligeramente algunos procedimientos.'' [[Imagen:OOWrite01.png]] ====Barra de título de la ventana==== Muestra: el icono de la aplicación; el titulo del documento y el nombre de la aplicación. Además contiene los botones de manejo de la ventana, como Maximizar/Minimizar, Restaurar y Cerrar. Asociado a la barra de título y al icono mediante botón secundario aparece un menú de opciones. ====Barra de menús==== Permite acceder a todos los menús de la aplicación y contiene el botón de cierre del documento cuando hay un solo documento abierto. ====Barras de símbolos==== Contienen símbolos que permiten el acceso directo a las funciones más importantes de la aplicación. Son lo que en otras aplicaciones se conoce como barras de herramientas, pero aquí este término se reserva para una barra de símbolos específica. Por medio del menú Ver podemos controlar qué barras están visibles y cuáles permanecen ocultas. Los símbolos que tienen una flechita verde abren un menú de opciones al sostener la pulsación del ratón. Por ejemplo, el botón Pegar, dependiendo del contenido del portapapeles, puede abrir las siguientes opciones: =====Barra de funciones===== Contiene funciones como Abrir archivo, Guardar documento, Copiar, Pegar, etc. =====Barras de objetos===== Existen muchas barras diferentes para manejar todos los tipos de objetos (texto, tablas, imágenes, etc.) que soporta OpenOffice.org Writer. Para ahorrar espacio, se visualizan todas en el mismo lugar; cuando hay varias disponibles, aparece un botón a la derecha para conmutar las barras y seleccionar la barra que nos interese. En la ilustración previa, el cursor se halla a la derecha de la palabra ratón, que forma parte de una enumeración que está dentro de una tabla, por lo que, aunque sólo esté visible la Barra de objetos de texto, pulsando sucesivamente el botón de conmutación de barras, podemos visualizar la Barra de objetos de numeración y la Barra de objetos para tablas. ::* Barra de objetos de texto ::* Barra de objetos de numeración ::* Barra de objetos para tablas Las flechas pequeñitas que hay al final de esta barra permiten mostrar botones adicionales que no caben en la ventana actual. =====Barra de herramientas===== De modo predeterminado se muestra verticalmente a la izquierda del área de edición. Contiene diversas funciones como Insertar objeto, Revisión ortográfica, etc. ====Regla==== La regla permite controlar las dimensiones del documento y modificar rápidamente los márgenes, tabuladores, etc. ====Barras de desplazamiento de la ventana==== Cuando el documento no cabe en la ventana, estas barras permiten desplazarlo vertical y horizontalmente. ====Botones de navegación==== Permiten desplazarse rápidamente entre páginas, objetos, resultados de búsquedas, etc. ====Barra de estado==== Muestra información sobre el documento. La información de la ilustración se interpreta así: ::* Página 1/1: el cursor se halla en la primera página de un total de 1. ::* Predeterminado: nombre del estilo de página de la página actual. ::* 100%: escala de visualización del documento. ::* INSERT: Muestra el modo de inserción actual: insertar o sobreescribir. ::* STD: Muestra el modo de selección actual: estándar (STD), ampliar (EXT) o agregar (AGR). ::* HYP: Modo de los hiperenlaces: activar (HYP) o seleccionar (SEL). ::* barrra de titulo indica el titulo del documento {{AutoCat}} nh0kjl02ueutue936dofe0iugxqwpcu OpenOffice.org/Writer: el procesador de textos (I) 0 6424 428410 408646 2026-07-20T00:58:08Z Mazbel 57931 actualización 428410 wikitext text/x-wiki == Writer: el procesador de textos (II) == === Ejercicio 1 === NB: Sobre las instrucciones y gráficos ==== Crear un documento ==== :* Abre el menú de inicio del escritorio y arranca OpenOffice.org Writer: se abrirá un documento nuevo preparado para escribir lo que quieras. [[Archivo:Abrir01.png|thumb|250px|left|none|Creando un nuevo documento desde la barra de Menú]] [[Archivo:Abrir02.png|thumb|250px|left|none|Creando un nuevo documento desde la barra de Herramientas]] ==== Pegar texto ==== :1. Selecciona y copia el texto sombreado: {| align=center |---- bgcolor=#CCFFFF | Informática o computación es la ciencia del tratamiento automático de la información mediante un computador (llamado también ordenador y computadora). Entre las tareas más populares que ha facilitado esta tecnología se encuentran: elaborar documentos, enviar y recibir correo electrónico, dibujar, crear efectos visuales y sonoros, maquetación de folletos y libros, manejar la información contable en una empresa, tocar música, controlar procesos industriales y jugar. |} :2. Pulsa sobre el icono correspondiente de la barra de tareas del escritorio para activar el documento nuevo de OpenOffice.org Writer. :3. Pega el texto. Tienes cuatro formas diferentes de hacerlo. Pruébalas todas: ::* Pulsar el botón Pegar de la barra de funciones. ::* Seleccionar Editar->Pegar. ::* Seleccionar la opción Pegar del menú contextual que se abre pulsando el botón derecho del ratón. ::* Pulsar la combinación de teclas Ctrl V. ==== Guardar el documento ==== :1. Guarda el documento. Tienes tres formas de hacerlo: ::* Pulsar el botón Guardar de la barra de funciones. ::* Seleccionar Archivo->Guardar. ::* Pulsar la combinación de teclas Ctrl S o Ctrl G, dependiendo de nuestro idioma. :2. Como se trata de un documento nuevo, se abrirá el cuadro de diálogo Guardar como, donde deberás indicar el nombre con que quieres guardarlo. Guárdalo como writer-01.odt Para ello, teclea writer-01 en el cuadro de texto Nombre de archivo (no es necesario poner la extensión) y comprueba que la opción seleccionada en el cuadro Tipo de archivo sea Texto en formato OpenDocument (.odt). Por último pulsa el botón Guardar. ==== Exportar como PDF ==== El formato PDF se usa mucho para compartir documentos para su visualización e impresión. :1. Exporta el documento como writer-01.pdf. Para ello, selecciona Archivo->Exportar en formato PDF. Se abrirá el cuadro de diálogo Exportar, similar al cuadro de diálogo Guardar como que acabamos de ver. Pulsa el botón Exportar. :2. Se abrirá el cuadro de diálogo Opciones PDF, donde puedes ajustar las opciones de exportación. Pulsa el botón Exportar y listo. ::* Una forma más rápida de exportar el documento en formato PDF, sin pasar por el cuadro de diálogo Opciones PDF, consiste simplemente en pulsar el botón Exportar directamente como PDF de la barra de funciones y, como en el caso anterior, completar el cuadro de diálogo Exportar. ==== Cerrar el documento ==== :* Cierra el documento sin cerrar la aplicación. Tienes dos formas de hacerlo: ::* Pulsar el botón Cerrar el documento. ::* Seleccionar Archivo->Cerrar. ==== Cerrar la aplicación ==== Observa que, para cerrar la aplicación, no es necesario cerrar primero el documento, de modo que en el uso real no tendría mucho sentido realizar estos dos pasos consecutivamente, como lo hacemos aquí. :* Cierra la aplicación. Tienes tres formas de hacerlo: ::o Pulsar el botón Cerrar de la ventana. ::o Seleccionar Archivo-> Terminar. ::o Pulsar la combinación de teclas Ctrl Q. ::o seleccionar-> Inicio === Ejercicio 2 === Prueba ahora a repetir el Ejercicio 1 con otro texto. :1. Selecciona el texto sombreado y cópialo: {| border=1 align=center |---- bgcolor=#CCCCFF | |Informática es un vocablo inspirado en el francés informatique formado por la conjunción de las palabras Information y Automatique, para dar idea de la automatización de la información que se logra con los sistemas computacionales. Esta palabra se usa mayormente en España. Computación se usa principalmente en América. |} :2. Crea un documento de texto nuevo. :3. Pega el texto copiado. :4. Guarda el documento como writer-02.odt :5. Expórtalo como writer-02.pdf y déjalo abierto. === Ejercicio 3 === Para hacer este ejercicio primero debes descargar [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-03.odt writer-03.odt] y guardarlo con ese mismo nombre. Se descargará muy rápido porque OpenOffice.org guarda los documentos en formato comprimido; en esto es muy superior a Microsoft Office. Con Mozilla Firefox: :1. Pulsa con el botón secundario del ratón (el derecho en los ratones para diestros) sobre el enlace y selecciona Guardar enlace como. :2. Cuando se abra el cuadro de diálogo, guárdalo en tu carpeta personal con el nombre propuesto (writer-03.odt). ==== Abrir archivo ==== :1. Activa la ventana de OpenOffice.org pulsando sobre el icono correspondiente de la barra de tareas y abre el fichero que acabas de guardar. Tienes tres formas de hacerlo: ::* Pulsar el botón Abrir archivo de la barra de funciones. ::* Seleccionar Archivo->Abrir. ::* Pulsar la combinación de teclas Ctrl O. :2. En el cuadro de diálogo Abrir, selecciona el archivo y pulsa Abrir. ==== Ajustar la escala ==== La escala se usa para ajustar el tamaño de visualización en pantalla del documento; como norma general, desearemos visualizar la mayor cantidad de texto posible manteniendo la letra bien legible. :1. Abre el cuadro de diálogo Escala. Tienes dos formas de hacerlo. ::* Seleccionar Ver->Escala. ::* Hacer doble clic sobre el valor de la escala en la barra de estado. :2. Selecciona el valor deseado --un porcentaje, Ancho de página, etc.-- y pulsa Aceptar. El valor seleccionado es un atributo del documento, se almacena cuando se guarda el documento. Los valores de porcentaje seleccionan una escala fija: el documento se abrirá siempre a la escala seleccionada; las opciones Ancho de página, Toda la página y Óptimo, ajustarán la escala para que se visualice todo el ancho de la página, etc., independientemente del tamaño de la ventana. ==== Seleccionar, borrar y deshacer ==== El documento que acabas de abrir ([http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-03.odt writer-03.odt]) contiene explicaciones para seleccionar, borrar y deshacer, y un ejercicio práctico. Estudia las explicaciones y haz el ejercicio. === Ejercicio 4 === == ==== Insertar saltos == Descarga el documento [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-04.odt writer-04.odt] y guárdalo en tu carpeta personal con ese mismo nombre. Ábrelo, estudia las explicaciones y haz los ejercicios que contiene. y también contiene herramientas como openoffice === Ejercicio 5 === Descarga los documentos [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-05.odt writer-05.odt] y [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-05.pdf writer-05.pdf] y guárdalos en tu carpeta personal sin cambiarles el nombre; estudia el apartado siguiente sobre el formato de los caracteres y haz el ejercicio. Debes formatear el primer documento para que resulte lo más parecido posible al segundo: obtendrás un esperpento tipográfico, un ejemplo casi perfecto de lo que no debes hacer. Se trata simplemente de un ejercicio para aprender a manejar los formatos; a los que deseéis iniciaros en el sutil arte de la tipografía, os recomiendo la página [http://platea.cnice.mecd.es/%7Ejmas/manual/html/textos_impecables.html Textos impecables] del excelente [http://platea.cnice.mecd.es/%7Ejmas/manual/index.html Manual de diseño digital] de Joan M. Mas. ==== Formato de carácter ==== Son propiedades del formato de los caracteres todas aquellas características del documento que afectan, o pueden afectar, a una extensión de texto inferior al párrafo. Por ejemplo, el tamaño de la fuente puede variar dentro del párrafo: es, por tanto, una propiedad del formato de los caracteres. Entre las propiedades aplicadas más a menudo destacan las siguientes: :* La familia de la fuente (Arial, Times New Roman, etc.) :* El tamaño de la fuente :* El estilo de la fuente (regular, negrita, cursiva, etc.) :* La decoración y efectos de la fuente (subrayado, color, relieve, etc.) :* La posición y orientación de los caracteres :* El color del fondo de los caracteres Podemos considerar tres métodos para dar formato a los caracteres: con el menú, con la barra de objetos y con el teclado. En todos los casos: :1. Selecciona primero el texto al que deseas aplicar el formato; si no seleccionas nada, el formato se aplicará a la palabra donde esté situado el cursor. :2. Aplica el formato empleando el método que te resulte más cómodo o que esté disponible (hay propiedades de formato que no se pueden aplicar por medio de la barra de objetos ni del teclado). ::* Dar formato con el menú :::1. Abre el cuadro de diálogo Caracteres. Tienes dos formas de hacerlo. ::::o Seleccionar Formato->Carácter. ::::o Seleccionar la opción Carácter del menú contextual que se abre pulsando el botón secundario del ratón. :::2. En el cuadro de diálogo Caracteres selecciona los formatos que deseas aplicar. Observa que se accede a las diferentes propiedades a través de cinco fichas diferentes. Pulsa el botón Ayuda para obtener información acerca de las propiedades. Pulsa Aceptar para aplicar el formato y cerrar el cuadro de diálogo. :::* Dar formato con la barra de objetos de texto (vid. barras de objetos) ::::o Los siguientes formatos de carácter se pueden aplicar (o quitar) directamente pulsando sobre el botón correspondiente de la barra de objetos de texto: familia de la fuente, tamaño de la fuente, estilo y efectos de la fuente (negrita, cursiva y subrayado), color de los caracteres y color del fondo de los caracteres. :::* Dar formato con el teclado ::::o Algunas propiedades tienen sus propias combinaciones de teclas, por ejemplo: negrita Ctrl N, cursiva Ctrl I, subrayado Ctrl U. Para más información, consulta el tema de ayuda Combinaciones de teclas en OpenOffice.org. NB: Observa que algunas de las combinaciones indicadas en este tema de ayuda no son correctas, posiblemente debido a que el intento de adaptación parcial de las combinaciones de teclas a las iniciales castellanas no fue tenido en cuenta por el traductor de la documentación. Ya puedes empezar a hacer el Ejercicio 5; ten en en cuenta estas orientaciones: :* El objetivo es formatear [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-05.odt writer-05.odt] para que se parezca lo más posible a [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-05.pdf writer-05.pdf]. :* El tipo básico debe ser Times New Roman de 12 puntos. Por tanto, lo primero que debes hacer es seleccionar todo el texto y aplicar este tipo. :* Usa estas fuentes (deben de estar disponibles en cualquier ordenador): ::o Times New Roman ::o Arial ::o Comic Sans MS ::o Courier New :* No debes realizar ninguna operación que no sea aplicar formato de caracteres. Puedes usar el cuadro de diálogo Caracteres, la Barra de objetos de texto y las combinaciones de teclas. :* Los colores usados son Azul claro, Rojo claro y Turquesa. Para aplicarlos, mantén pulsado el ratón sobre el símbolo Color del carácter de la Barra de objetos de texto hasta que se abra el cuadro de selección de colores. [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-06.odt writer-06.odt] y [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-06.pdf writer-06.pdf] y guárdalos en tu carpeta personal sin cambiarles el nombre; estudia los apartados siguientes sobre el formato de párrafos y páginas y haz el ejercicio. Debes formatear el primer documento para que resulte lo más parecido posible al segundo. ==== Formato de párrafo ==== Son propiedades del formato del párrafo todas aquellas características del texto que, sin ser necesariamente comunes a toda la página, afectan a extensiones de texto superiores al carácter y la palabra. Por ejemplo, no tiene sentido hablar del espacio interlineal de una palabra o un carácter, pero tampoco es ésta una característica de la página, puesto que una misma página puede tener párrafos con diferentes espacios interlineales. Se trata, pues, de una propiedad del formato del párrafo. Entre las propiedades aplicadas más a menudo destacan las siguientes: :* Las sangrías: izquierda, derecha y de primera línea. No confundais la sangría con el margen: el margen es la distancia entre el borde de la página y la zona rectangular donde se escribe, y es un atributo de la página; la sangría, en cambio, es la distancia entre el extremo de la línea y el margen de la página, y puede variar de un párrafo a otro. :* El espacio entre párrafos y entre las líneas del párrafo. :* La alineación de texto: a la izquierda, a la derecha, centrado o justificado. :* La numeración y las viñetas :* El control del flujo del texto (separación silábica, saltos anteriores y posteriores, líneas huérfanas y viudas, etc.) :* Los bordes del párrafo :* El color del fondo del párrafo Podemos considerar tres métodos para dar formato a los párrafos: con el menú, con la barra de objetos y con el teclado. En todos los casos: :1. Selecciona primero los párrafos a los que deseas aplicar el formato; si no seleccionas ninguno, el formato se aplicará al párrafo donde esté situado el cursor. :2. Aplica el formato empleando el método que te resulte más cómodo o que esté disponible (hay propiedades de formato que no se pueden aplicar por medio de la barra de objetos ni del teclado). ::* Dar formato con el menú :::1. Abre el cuadro de diálogo Párrafo. Tienes dos formas de hacerlo. ::::* Seleccionar Formato->Párrafo. ::::* Seleccionar la opción Párrafo del menú contextual que se abre pulsando el botón secundario del ratón. :::2. En el cuadro de diálogo Párrafo selecciona los formatos que deseas aplicar. Observa que se accede a las diferentes propiedades a través de ocho fichas diferentes. Pulsa el botón Ayuda para obtener información acerca de las propiedades. Pulsa Aceptar para aplicar el formato y cerrar el cuadro de diálogo. :* Dar formato con la barra de objetos de texto (vid. barras de objetos) ::* Los siguientes formatos de párrafo se pueden aplicar (o quitar) directamente pulsando sobre el botón correspondiente de la barra de objetos de texto: alineación izquierda, centrada, derecha y justificada; numeración, viñetas,reducir y aumentar la sangría izquierda y color de fondo. :* Dar formato con el teclado ::* Algunas propiedades tienen sus propias combinaciones de teclas, por ejemplo: alineación centrada Ctrl E, alineación derecha Ctrl D, alineación justificada Ctrl J. Para más información, consulta el tema de ayuda Combinaciones de teclas en OpenOffice.org (nota). ==== Formato y estilos de página ==== Son propiedades del formato de página las siguientes: * El tamaño y orientación del papel * Los márgenes * El color o imagen de fondo * Los bordes de la página * El encabezamiento y pie de página * El diseño de columnas * La configuración de las notas a pie de página Obviamente, todo procesador de textos debe permitir aplicar formatos distintos a páginas o grupos de páginas diferentes. OpenOffice.org Writer lo hace de forma muy eficiente por medio de los estilos de página. Se trata de una colección personalizable de formatos predefinidos, organizada de modo que cada página del documento se asocia a uno de estos formatos y solamente uno; si modificamos un estilo de página, las modificaciones se trasladarán a todas las páginas a él asociadas. Por defecto, todas las páginas de un documento nuevo se asocian al estilo Predeterminado. Para modificar el estilo de página asociado a la página actual (la página donde se halla el cursor, no el puntero del ratón): :1. Abre el cuadro de diálogo Estilo de página. Hay tres formas de abrirlo: ::* Seleccionar Formato->Página. ::* Seleccionar la opción Página del menú contextual que se abre pulsando el botón secundario del ratón. ::* Hacer doble-clic en la barra de estado sobre el nombre del estilo de página. 2. En el cuadro de diálogo Página selecciona los formatos que deseas aplicar. Observa que se accede a las diferentes propiedades a través de ocho fichas diferentes. Pulsa el botón Ayuda para obtener información acerca de las propiedades. Pulsa Aceptar para aplicar el formato y cerrar el cuadro de diálogo. Para aplicar un estilo de página a la página actual: :1. Si no está visible el Estilista, pulsa el botón Mostrar/ocultar Estilista de la barra de funciones para visualizarlo. :2. En la ventana del Estilista, pulsa el botón Estilos de página. :3. Haz doble-clic en el estilo que quieras aplicar Ya puedes empezar a hacer el Ejercicio 6; ten en en cuenta estas orientaciones: :* El objetivo es formatear [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-06.odt writer-06.odt] para que se parezca lo más posible a [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-06.pdf writer-06.pdf].(Observa que en el PDF queda una página en blanco después de la portada: el documento está preparado para su impresión a doble cara). :* Para empezar, selecciona todo y aplica el formato básico siguiente: ::o Formato de carácter: Fuente Times New Roman de 12 puntos ::o Formato de párrafo: :::+ Espacio detrás del párrafo: 0,80 cm :::+ Interlineado: 1,5 líneas :::+ Alineación: justificado :::+ Ajuste de huérfanas y viudas: 2 líneas :* Prepara la portada: ::o Con el cursor al principio del documento, pulsa la tecla Entrar para insertar un párrafo vacío inicial. Selecciona el título "Grandes figuras de la Informática" y aplica el formato siguiente: :::+ Formato de párrafo: ::::# Sangría delante: 1 cm ::::# Sangría detrás: 1 cm ::::# Espacio delante: 10 cm ::::# Alineación: centrado ::::# Flujo de texto: salto de página después ::::# Bordes: horizontal y vertical de 1 punto a 0,15 cm de distancia :::+ Formato de carácter: ::::# Fuente: Arial negrita de 26 puntos ::o Aplica el estilo de página Primera página ::o Modifica el estilo de página (haz doble-clic sobre el nombre del estilo en la barra de estado) para ponerle un borde por los cuatro lados de 3,55 puntos. :* Da formato al texto restante guiándote por del estilo de página Predeterminado: ::o Abre el cuadro de formato del estilo de página (haz doble-clic en el nombre del estilo en la barra de estado). ::o Activa el encabezamiento y el pie de página y pulsa Aceptar. ::o Haz clic en el recuadro del encabezamiento, pulsa el tabulador y teclea "Grandes figuras de la Informática". ::o Haz clic en el recuadro del pie de página, pulsa el tabulador, teclea "Página", pulsa la barra espaciadora e inserta el número de página: menú Insertar->Campos->Número de página. :* Retoques: ::o Para que la primera página numerada tenga el número 1, pulsa sobre el título "Edsger Disjktra", abre el cuadro de formato de párrafo y configura el salto de página delante con estilo de página Predeterminado y nº de página 1. ::o Si el título "Citas" te queda en una página y las citas en otra, pulsa sobre el título, abre el cuadro de formato de párrafo y en Flujo de texto activa la casilla Mantener párrafos juntos. Importante: Guarda bien el ejercicio realizado: lo necesitarás más adelante. === Ejercicio 7 === ==== Basura tipográfica ==== Se considera basura tipográfica el uso repetido de la barra espaciadora, del tabulador y de la tecla Entrar para dar formato a un documento. Ejemplos corrientes de basura tipográfica son insertar espacios para centrar un título, o líneas para pasar a una página nueva. En ambos ejemplos la permanencia del formato deseado depende de que no se modifique nada el texto. Así, si aumentamos el tamaño de la fuente del título, éste dejará de estar centrado; si suprimimos una frase, el párrafo que debía empezar una página figurará al final de la anterior. En el primero de los ejemplos anteriores, el formato correcto se logra aplicando el formato de párrafo centrado. En el segundo, se puede conseguir aplicando un formato de párrafo con salto de página delante al párrafo que debe comenzar la página nueva, pero también se puede insertar un salto de página independiente del formato de párrafo. ==== Insertar saltos ==== :* Con el menú: ::1. Selecciona Insertar->Salto manual. ::2. En el cuadro Insertar salto selecciona el tipo de salto que quieras y pulsa Aceptar. :* Con el teclado: ::o Salto de línea dentro del párrafo: Mayúsculas Entrar ::o Salto de columna: Ctrl Mayúsculas Entrar ::o Salto de página: Ctrl Entrar Haz el Ejercicio 7. Descarga el documento [http://softwarelibre.uca.es/tutorial-openoffice/ejercicios/writer-07.odt writer-07.odt] y guárdalo en tu carpeta personal sin cambiarle el nombre. Ábrelo y formatéalo correctamente, eliminando la basura tipográfica, de modo que el aspecto final sea similar o mejor al inicial. Ten en cuenta estas orientaciones: * No deben quedar líneas en blanco. * No debe haber espacios ni al principio ni al final de las líneas, ni más de dos espacios seguidos en medio. * Cada estrofa debe ser un único párrafo: usa saltos de línea (Mayúsculas Entrar) para separar los versos. {{AutoCat}} hewv7rwqj81exdt27uojemegpw59zbf Fractalidades en Investigación Crítica 0 6454 428402 403222 2026-07-19T20:02:36Z Antimundo 74354 Libro de dudosa cabida 428402 wikitext text/x-wiki {{Libro de dudosa cabida|Libro abandonado que no recibe ningún añadido de contenido desde 2006, que es un texto original e incumple claramente [[WL:NOES]], y además es un infraesbozo sin contexto ni casi contenido.}} {{Corregir nombrado}} Este wikilibro quiere liberar el conocimiento que generamos en la asignatura de Fractalidades en Investigación Crítica (Facultat de Psicología, Universitat Autònoma de Barcelona). Este wikilibro se usa como base para la asignatura y es transformado a partir de las discusiones que se generan en la misma. Entendemos que qualquier persona es libre de discutir, participar y transformar este espacio. En todo caso, si quieres coordinarte en la trasformación del texto, puedes ponerte en contacto con Joan Pujol, joan.pujol(en)uab.es = Fractalidades en Investigación Crítica = '''Autores ''(Listar por contribución a secciones)'':''' * Joan Pujol Tarrés (Coordinador), joan.pujol_EN_uab.es * Claudia Alarcón Espinoza (Santiago: Espacio Público, Corporeidad y Sociedad de Control) * Teresa Arredondo Lugon (Santiago: Espacio Público, Corporeidad y Sociedad de Control) * Alejandro Góngora Briones (Santiago: Espacio Público, Corporeidad y Sociedad de Control) * Jordi Bonet i Martí (Verdad y ficción), jordi.bonet_EN_uab.es * Karla Montenegro * Juan Carlos Acero * Javier Romano, romanojavi_EN_gmail.com == Introducción == Las ciencias sociales participan de las tecnologías, conocimientos y discursos que sirven para gestionar y regular a personas y poblaciones. Las necesidades de gobernabilidad de las democracias liberales contemporáneas exigen la conquista de nuevos campos de conocimiento y el desarrollo de tecnologías de control más eficaces. En respuesta a la proliferación de mecanismos de bio-poder, están emergiendo conceptos y prácticas de investigación que, más que un campo de conocimiento unificado, ofrecen perspectivas teóricas y metodológicas para generar, desde los márgenes, fijaciones temporales desde las que afrontar y resignificar las nuevas formas de gobernabilidad. En un paralelismo con los fractales, los conceptos en investigación crítica se caracterizan por, entre otras: aceptar la complejidad de lo social; enfrentarse a lo irregular y a los fenómenos no uniformes; encontrar paralelismos entre lo local y lo global; sentirse cómodos con la indeterminación y los espacios borrosos; no ser idénticos al usarse en distintas ocasiones; situarse una dimensión fraccionaria entre lo real y lo relativo. Respecto del uso de la metáfora de 'fractalidades', es una referencia a cómo entender la investigación y la realidad. A continuación, una definición de fractal: ;Fractal:Relativo o perteneciente a un fractal o a los fractales, objeto fractal, geometría. ;Fractal:Modelo matemático o objeto real que mantiene su forma esencial, fragmentada e irregular aunque se varíe la escala de observación. Una cita de John Law sobre el tema: :''"A fractal is a line which occupied more than one dimension but less than two. A fractional object is more than one and less than many. Somewhere in between. Which is difficult to think because it defies the simplicities of the single -but also the corresponding simplicities of pluralism of laissez faire, of a single universe inhabited by separate objects".'' '''(Law, 1999)''' Este texto explora los conceptos que se han desarrollado en el campo de la Investigación Crítica, con especial atención a las implicaciones de poder/saber del conocimiento disciplinar, y desarrolla métodos y técnicas de investigación que permitan el desarrollo de fijaciones que aborden la realidad social respetando su carácter fractal. = Conceptos en Investigación Crítica = Los siguientes conceptos permiten identificar formas de gobierno de lo social y apuntan a formas de acción frente a estas formas de gobierno. :* [[w:Gubernamentalidad|Gubernamentalidad]] :* [[w:Biopolítica|Biopolítica]] :* Matriz - Red :* Corporeidad :* Invención del Otro :* Performatividad = Aplicación de los Conceptos en el Análisis de Fenómenos Sociales Concretos = == Santiago: Espacio Público, Corporeidad y Sociedad de Control == [[Fractalidades en Investigación Crítica/Análisis de cómo se estructura el espacio publico para mantener a los cuerpos en constante control|Ver la Sección]] '''Autores:''' * Claudia Alarcón Espinoza. (calarconespinoza@gmail.com) * Teresa Arredondo Lugon. (laviridiana@hotmail.com) * Alejandro Góngora Briones.(agongora@gmail.com) = Prácticas de Investigación - Acción = == Investigación como Apertura Crítica == [[Fractalidades en Investigación Crítica/Investigación como apertura crítica|Ver la Sección]] == Verdad y Ficción == [[Fractalidades en Investigación Crítica/Verdad y ficción|Ver la Sección]] '''Autores:''' * Jordi Bonet i Martí * Karla Montenegro * Juan Carlos Acero ''Abstract'' El [[w:es:positivismo|positivismo]] encumbró la verdad en el altar del [[w:es:método científico|método científico]] como correspondencia entre descripción científica y realidad fáctica subyacente. La dicotomía [[w:es:verdad|verdad]]/[[w:es:ficción|ficción]] se autoconstituyó así en el filo de la navaja que nos permitiría diferenciar el dominio de la [[w:es:ciencia|ciencia]] (objetiva) del del [[w:es:arte|arte]]/[[w:es:literatura|literatura]] (subjetiva). La razón científica se autoconstituía así en la armazón de la [[w:es:retórica|retórica]] de la verdad, a partir del postulado de una estricta separación entre objeto y sujeto negando el carácter contingente y sociohistórico de la producción científica. Sin embargo, esta aseveración ha sido recientemente problematizada por el [[w:en:linguistic turn|giro lingüístico]] e interpretativo abierto por el [[w:es:paradigma|paradigma]] postpositivista. Las fronteras entre géneros tienden a difuminarse ([[w:en:Geertz|Geertz]], 1983) y la otrora immaculada verdad se fragmenta en regímenes de verdad según la acepción foucaultiana. Esta obertura provoca no solo un terremoto epistemológico respecto a los criterios tradicionales de validez y [[w:es:fiabilidad|fiabilidad]] sino que nos interpela acerca de los mismos estilos de producción y reproducción de conocimiento. Estilos como la narración, la dramaturgia, la performance y la poesía anteriormente adscritos a la creación literaria agujerean las fronteras disciplinarias como nuevos estilos de producción del conocimiento científico. En concordancia con las nuevas formas de escritura, (Clifford, 1986) os presentamos un artículo dialógico que combina distintos estilos, el académico formalizado con un guión teatral y un cuento, que fueron representados en la sesión de la asignatura Fractalidades en la Investigación Crítica. Nuestro objetivo es explorar a partir de ellos los uso de nuevos usos de la escritura a la vez que nos interrogamos acerca de los criterios de validación desde una perspectiva postpositivista. Esperamos que disfrutéis de su lectura. ''Keywords: postpositivismo, giro narrativo, dialogía, retórica, antropología postmoderna'' == Ética y Política de la Investigación == '''[[Fractalidades en Investigación Crítica/Ética y politica de la investigación|Las derivas: de la práctica politica a la práctica investigadora "políticamente responsable"]]''' '''Autoras:''' * Maria Mena i Yuste * Albert Farré i Cobos == De la Perspectiva del Sujeto a la Multiplicidad del Objeto == [[Fractalidades en Investigación Crítica/Resúmenes|Ver la Sección]] == De la Perspectiva del Sujeto a la Multiplicidad del Objeto:Afectividad en la red virtual == [[Fractalidades en Investigación Crítica/Afectividad en la red virtual|Ver la Sección]] '''Autores''' * Marcos Moreno marcosmo77@yahoo.com.mx * Maya Ninova maya.ninova@gmail.com == Performatividad en la Investigación == [[FIC:Performatividad en la investigacion|Ver la Sección]] == Conocimiento Situado y Narratividad == [[FIC:Conocimiento situado y narratividad|Ver la Sección]] == Conocimiento Semiótico-Material y Derivas == [[FIC:Conocimiento semiotico material y derivas|Ver la Sección]] == Etnografia y Dialogismo == [[Fractalidades en Investigación Crítica/Etnografia y dialogismo|Ver la Sección]] ==Notas== *[[Fractalidades en Investigación Crítica/Notas|Notas]] '''Autor:''' * Javier Romano: romano javi_EN_gmail.com = Referencias = [[Categoría:Wikilibros:Nombrado incorrectamente]] [[Categoría:Psicología]] l07uv38a2j19o42hvua205zpqz2wxlq C sharp NET/Capítulo 13 0 6577 428438 305132 2026-07-20T11:01:30Z Antimundo 74354 Categorizar usando AutoCat 428438 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 12|Capítulo 12|C sharp NET/Capítulo 14|Capítulo 14}} = '''Delegación y Eventos''' = <br /> <br /> == Programando con delegados == Otra cuestión a tener en cuenta cuando programemos con delegados, es que éstos no tienen en cuenta la visibilidad de los métodos. Esto permite llamar a métodos privados desde otros si ambos tienen acceso al delegado. Es decir, imaginemos que una clase guarda en un delegado referencia a uno de sus métodos privados. Si desde otra clase que tenga acceso al delegado (pero no al método privado) se convoca a éste, se ejecutará ese método. En verdad no se está violando la privacidad del método, porque no es la clase quien lo convoca, sino el delegado, que sí tiene acceso al mismo. === Llamadas a múltiples métodos === Hasta el momento hemos visto como hacer que un delegado guarde referencia de un sólo método. Sin embargo, existe una clase, System.MulticastDelegate, que deriva de System.Delegate, que se diferencia de esta última en que puede tener múltiples métodos en su lista de invocaciones. Al usar la palabra clave "delegate" se están usando estas clases de forma interna, sin tener que hacer referencia a ellas en el código. Para poder hacer esto usaremos los operadores sobrecargados '+=' y '-=' que, respectivamente, añaden o eliminan a un método de la lista de invocaciones de un delegado. Para intentar asimilar esto mejor, veámoslo con un ejemplo más completo. === Ejemplo de uso de delegados === <pre>using System; // Define el tipo delegado delegate void MiDelegado (string cadena); class Ejemplo { public static MiDelegado delegado; public static void Main () { // Crea una un objeto delegado y le asigna un método. delegado = new MiDelegado (ClaseA.MetodoEstatico); ClaseA A = new ClaseA(); delegado += new MiDelegado (A.MetodoPublico); ClaseB B = new ClaseB(); // El constructor inserta MetodoPrivado // delegado += new MiDelegado (B.MetodoNoValido); // Excepción // el método no cumple con la definición del tipo delegado delegado ("Hola mundo"); } } class ClaseA { public static void MetodoEstatico (string cad) { Console.WriteLine ("ClaseA.MetodoEstatico ha sido llamado: {0}", cad); } public void MetodoPublico (string cad) { Console.WriteLine ("ClaseA.MetodoPublico ha sido llamado: {0}", cad); } } class ClaseB { void MetodoPrivado (string cad) { Console.WriteLine ("ClaseB.MetodoPrivado ha sido llamado: {0}", cad); } public void MetodoNoValido (int entero) { Console.WriteLine ("ClaseB.MetodoNoValido ha sido llamado: {0}", entero); } public ClaseB () { Ejemplo.delegado += new MiDelegado (MetodoPrivado); } }</pre> Podemos ver que, en este caso, nuestro delegado sólo manipula métodos que no devuelvan nada y que reciban como único parámetro una cadena. Si observamos los métodos que componen ClaseA y ClaseB, el denominado MetodoNoValido no concuerda con la definición de nuestro delegado, ya que recibe un entero y no una cadena. Eso implica que no vamos a poder llamarlo desde ninguna instancia del delegado que hemos declarado. Sin embargo, con las otras no tendremos ningún problema. Bien, observemos paso a paso lo que hace el programa. Fijemos nuestra atención en el método principal (Main). Primero insertamos un método estático. Como sabemos, para llamar a un método de este tipo, se hace a partir del nombre de la clase y no de una instancia. Bien, hasta aquí nada que no hayamos visto ya, pero ahora insertemos un segundo módulo en el delegado. Como hemos dicho, hemos usado el operador '+=' para incluir otro método más en nuestro delegado, en este caso MetodoPublico. Si usaramos de nuevo el operador '=', borraríamos la antigua lista de invocaciones y crearíamos una nueva con sólo una función referenciada. Ahora tenemos dos métodos en la lista de invocaciones de nuestro delegado. Por último, creamos una instancia de ClaseB, la cual en su constructor incluye una referencia más al delegado, en este caso a MetodoPrivado. Si ahora compilamos y ejecutamos este código, obtendremos esto: ClaseA.MetodoEstatico ha sido llamado: Hola mundo ClaseA.MetodoPublico ha sido llamado: Hola mundo ClaseB.MetodoPrivado ha sido llamado: Hola mundo Como vemos, aunque hemos convocado al delegado desde la clase Ejemplo, que no tiene acceso a MetodoPrivado, éste ha sido ejecutado. Como explicamos, esto es así porque realmente quien lo está haciendo es el delegado y no el método Main. Por último, una cuestión más. Hasta el momento hemos visto a delegados que gestionan miembros que no devuelven ningún valor. Pero, ¿qué ocurre cuando los devuelven? En este caso, la ejecución del delegado no devuelve todos esos valores, sólo el que retorne el último método de su lista de invocación. {{nav|C sharp NET/Capítulo 12|Capítulo 12|C sharp NET/Capítulo 14|Capítulo 14}} {{AutoCat}} ifd123oi6100bmjucl3k976ai88fsfj C sharp NET/Capítulo 9 0 6701 428452 305130 2026-07-20T11:05:37Z Antimundo 74354 Categorizar usando AutoCat 428452 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 8|Capítulo 8|C sharp NET/Capítulo 10|Capítulo 10}} = '''Interfaces''' = <br /> <br /> == Definición == Una Interfaz es una colección de miembros abstractos relacionados semánticamente. Una interfaz representa un comportamiento que una clase dada puede soportar. El número de miembros de una interfaz dependen del comportamiento que queramos soportar, por ejemplo todos los objetos que sean móviles podrían querer soportar los métodos acelerar y frenar. Según la interfaz de C# una interfaz sería: <pre> public interface IMovil { bool Acelerar(int n); bool Frenar(int n); } </pre> También podríamos declarar dentro de la interfaz una propiedad que nos permita leer y/o escribir la velocidad que queremos que tome nuestro objeto. <pre> public interface IMovil { bool Velocidad{get; set;} } </pre> Dado que una interfaz es una colección de miembros abstractos cualquier clase o estructura que quiera implementar una interfaz está obligada a implementar cada uno de los métodos que se declaran en la interfaz. De esta forma se consigue un cierto tipo de polimorfismo ya que si varias clases implementan la misma estructura tenemos la posibilidad de tratar con todas ellas de la misma forma. Seguramente alguien se preguntara por que usar interfaces pudiendo usar una clase base abstracta definiendo los métodos anteriores como abstractos, la primera razón es simplicidad, una clase base abstracta suele hacer más que definir una colección de métodos, es capaz de definir métodos públicos, privados, protegidos y también metodos concretos (estáticos) a los que pueden acceder todas las clases que deriven de ella mientras que una interfaz se limita a definir una colección de métodos sin ninguna implementación. La segunda razón es que C# solamente soporta herencia simple, pero sin embargo podemos hacer que una clase implemente múltiples interfaces. He aquí como haríamos para heredar de una clase base e implementar una interfaz, teniendo en cuenta que VehiculoDeMotor será nuestra clase base e IMovil nuestra interfaz. <pre> public class CocheDeportivo : VehiculoDeMotor, IMovil { //Implementación de los métodos abstractos de vehículo bool Acelerar(int n) { //implementación de Acelerar } bool Frenar(int n) { //implementación de Frenar } } </pre> Hay que tener en cuenta que siempre hay que poner la clase base antes de las interfaces. Ahora nuestra clase CocheDeportivo así como cualquier otra clase que implemente IMovil podra acelerar y frenar, hay que tener en cuenta que si implementamos IMovil tendremos que implementar absolutamente todos sus métodos. == Obteniendo Referencias a la Interfaz == Si hemos creado la clase CocheDeportivo podemos querer saber si éste soporta el comportamiento de IMovil de modo que podemos hacer un cast explícito: <pre> CocheDeportivo coche1 = new CocheDeportivo(); IMovil movil = (IMovil) coche1; movil.Acelerar(30); </pre> En caso de que nuestro objeto implemente la interfaz podríamos operar sobre él con todos los métodos de la misma, pero en caso de que no la soporte tendríamos un error en tiempo de ejecución, con lo cual la forma correcta de hacerlo es: <pre> CocheDeportivo coche1 = new CocheDeportivo(); try{ IMovil movil = (IMovil) coche1; movil.Acelerar(30); } catch(InvalidCastException e){ //gestión del error } </pre> Otra forma de hacerlo sin tener que recurrir a la gestión de excepciones sería utilizando la palabra reservada '''as''' de C#: <pre> CocheDeportivo coche1 = new CocheDeportivo(); IMovil movil; movil = coche1 as IMovil; if (movil != null) movil.Frenar(10); else //otro tratamiento </pre> La palabra reservada as pone la variable de tipo interfaz a null si la interfaz dada no está soportada por el objeto. Por último también podemos usar la palabra reservada '''is''' de C# para descubrir si un objeto implementa o no una interfaz: <pre> CocheDeportivo coche1 = new CocheDeportivo(); if (coche1 is IMovil) coche1.Acelerar(10); else //otra gestión </pre> == Pasar interfaces como parámetros == Las interfaces son tipos de datos fuertemente tipados (valga la redundancia) de modo que se pueden pasar como parámetros a métodos y se pueden usar también como valores de retorno. Hemos creado la interfaz IGiro de la siguiente manera: <pre> public interface IGiro { void GirarDerecha(int grados); void GirarIzquierda(int grados); } </pre> Y queremos que nuestro coche deportivo pueda girar a izquierda y derecha: <pre> public class CocheDeportivo : VehiculoDeMotor, IMovil, IGiro { //Implementación de los métodos abstractos de vehículo bool Acelerar(int n) { //Implementación de Acelerar } bool Frenar(int n) { //Implementación de frenar } void GirarDerecha(int grados) { //Implementación de GirarDerecha } void GirarIzquierda(int grados) { //Implementación de GirarIzquierda } } </pre> Como hemos visto para soportar otra interfaz simplemente la añadimos al final después de una ",". Ahora supongamos que queremos hacer un método que nos provea de utilidades para el giro por ejemplo hacer trompos, le podríamos pasar una interfaz IGiro de la siguiente forma <pre> public class UtilsGiro { public static void Trompo(IGiro giro) { giro.GirarIzquierda(360); } } </pre> == Implementación Explícita de una Interfaz == Siguiendo con nuestro ejemplo de los coches definimos una nuevas interfaces: <pre> public interface IAltaVelocidad { void Turbo(bool activar); //resto de metodods } </pre> Como se puede ver nuestra interfaz implementa un método Turbo. ¿Qué pasaría si una clase heredase a su vez de la clase Formula Uno que también implemente el método void Turbo (bool)? Bueno vamos a verlo: <pre> public class Campeon : Formula1, IAltaVelocidad { public override void Turbo(bool activar) { //gestion del turbo } } </pre> Esto en un principio sería correcto pero qué pasa si hacemos lo siguiente: <pre> Campeon miCampeon = new Campeon(); miCampeon.Turbo(true); IAltaVelocidad iav = (IAltaVelocidad) miCampeon; iav.Turbo(true); </pre> Ambas veces se llamaría al mismo método, el definido en la clase Formula1, pero como haríamos si quisiéramos tener dos Turbos diferentes? la respuesta es hacer que los métodos definidos en la interfaz sean sólo accesibles desde una referencia a la interfaz, esto es lo que se llama implementación explícita de una interface. <pre> public class Campeon : Formula1, IAltaVelocidad { public override void Turbo(bool activar) { //gestión del turbo } void IAltaVelocidad.Turbo(bool activar) { //gestión del turbo } } </pre> El segundo método sólo podrá ser llamado si usamos una referencia de tipo IAltaVelocidad mientras que el primero podrá ser llamado usando una referencia a Campeon o a Formula1 (su clase base). Existen algunas reglas extra al hacer esto, por ejemplo no podemos usar modificadores de accesibilidad (public, private, protected) ya que si intentamos que sólo se pueda acceder al método desde una referencia a la interfaz hacerlo sería contraproducente. También hay que tener en cuenta que pueden haber colisiones de nombres entre clases base e interfaces y entre interfaces entre sí, técnicamente no existe ninguna diferencia y todas pueden ser tratadas como hemos explicado arriba. == Jerarquías de interfaces == Las interfaces pueden servir de base para otras interfaces al igual que las clases, e igual que en éstas la idea es que vayamos de lo general a lo particular. Por ejemplo: <pre> interface IVehiculo { void Acelerar(); void Frenar(); } </pre> <pre> interface IVehiculoGasolina : IVehiculo { void CambiarVelocidadInyeccion(int velocidad); } </pre> <pre> interface IVehiculo4x4: IVehiculoGasolina { void Activar4x4(bool activar); } </pre> Al implementar una de estas interfaces en nuestra clase tenemos que implementar todos los métodos de esta interfaz y de sus ancestros. <pre> public class CocheDeJuguete : IVehiculo { void IVehiculo.Acelerar(int n) { //Gestión del acelerado } void IVehiculo.Frenar(int n) { //Gestión del frenado } } </pre> <pre> public class CocheNormal:IVehiculoGasolina { void IVehiculo.Acelerar(int n) { //Gestión del acelerado } void IVehiculo.Frenar(int n) { //Gestión del frenado } void IVehiculoGasolina.CambiarVelocidadInyeccion(int velocidad) { //Gestión de la inyeccion } } </pre> <pre> public class TodoTerreno:IVehiculo4x4 { void IVehiculo.Acelerar(int n) { //Gestión del acelerado } void IVehiculo.Frenar(int n) { //Gestión del frenado } void IVehiculoGasolina.CambiarVelocidadInyeccion(int velocidad) { //Gestión de la inyeccion } void IVehiculo4x4.Activar4x4(bool activar) { //Gestión de 4x4 } } </pre> Y lógicamente las llamadas a los métodos serían: <pre> TodoTerreno miTodoTerreno = new TodoTerreno(); ((IVehiculo4x4)miTodoTerreno).Acelerar(20); ((IVehiculo4x4)miTodoTerreno).Frenar(20); ((IVehiculo4x4)miTodoTerreno).CambiarVelocidadInyeccion(1000); ((IVehiculo4x4)miTodoTerreno).Activar4x4(true); </pre> {{nav|C sharp NET/Capítulo 8|Capítulo 8|C sharp NET/Capítulo 10|Capítulo 10}} {{AutoCat}} oq6n5vzmvkz7duiuawpm084vymip7m4 Turco 0 7515 428359 427495 2026-07-19T17:28:43Z Antimundo 74354 428359 wikitext text/x-wiki {{Traduciendo|en|Turkish}} [[Archivo:Istanbul new mosque.jpg|thumb|right|300px| «Yeni Camii» (La Nueva Mezquita), Estambul]] En este libro encontrarás todo lo que necesitas saber para poder hablar, escribir y leer en la lengua turca. Esto es, sin duda alguna, un esfuerzo colaborativo, por favor, siéntete libre de contribuir con aquello que desees, o incluso tan sólo revisar errores. :Türkçe Vikikitap'a hoşgeldiniz. Bu kitapta Türkçe konuşmak, yazmak ve okumak için gereken her şeyi bulacaksınız. Bu birlikte yapılması gereken bir çaba, bu yüzden lütfen, katılmaktan çekinmeyin, yalnızca yanlışları düzeltmekle bile olsa. == Indice de temas == # [[/Introducción|Introducción a la lengua turca]] # [[/Pronunciación y alfabeto|Pronunciación y alfabeto]] de la lengua turca # [[/Lección 1 - Saludos|Lección 1 - Saludos]] # [[/Lección 2 - Yo soy...|Lección 2 - Yo soy...]] # [[/Lección 3 - En el hotel (Otelde)|Lección 3 - En el hotel (Otelde)]] # [[/Lección 4 - Preguntas|Lección 4 - Preguntas]] == Vocabulario == # [[/Frases útiles en turco|Frases útiles en turco]] # [[/Lista de verbos|Lista de verbos turcos]] # [[/Lista de palabras|Lista de palabras turcas]] # [[/Números (sayılar)|Números en lengua turca (sayılar)]] # [[/Ser o no ser|Ser o no ser]] # [[/El idioma turco más común cuando vemos la televisión por satélite|El idioma turco más común cuando vemos la televisión por satélite]] # [[/Argot o jerga|Argot o jerga]] # [[/Los colores (renkler)|Los colores (renkler)]] # [[/Los días de la semana (Haftanın günleri)|Los días de la semana (Haftanın günleri)]] # [[/Los meses (Aylar)|Los meses (Aylar)]] # [[/Verbos|Verbos]] == Gramática == # [[/Orden de las palabras|Orden de las palabras]] # [[/Pronombres|Pronombres]] # [[/Casos|Casos]] # [[/Plural|Plural]] # [[/Presente|Presente]] # [[/Negativo - Tiempos verbales del Presente Continuo|Negativo - Tiempos verbales del Presente Continuo]] # [[/Interrogativo - Tiempos verbales del Presente Continuo|Interrogativo - Tiempos verbales del Presente Continuo]] == Enlaces Externos == {{wikipedia|Idioma_turco}} * [http://sozluk.webdeyim.net Diccionario Turco-Español / Español-Turco] {{Estantes|Idiomas}} [[bg:Речник на турските думи в българския език]] [[de:Türkisch]] [[en:Turkish]] [[he:טורקית]] [[hr:Turski jezik]] [[ia:Turco]] [[ja:トルコ語]] [[nl:Turks]] [[tr:Türkçe]] [[zh:土耳其语]] ru1sd3o1h1v3osl8ha0c1sk62hyu4qn Turco/Pronunciación y alfabeto 0 7519 428360 370229 2026-07-19T17:29:12Z Antimundo 74354 Categorizar usando AutoCat 428360 wikitext text/x-wiki == Alfabeto == {| class="wikitable" ! colspan=2 style="text-align: center; width: 50px" | Letra !! Valor !! Nombre !! Ejemplo |- | A || a || /{{IPA|ɑ}}/ || [a] |- | B || b || /{{IPA|b}}/ || [be] |- | C || c || /{{IPA|dƷ}}/ ||[ce] || Inglés: '''j'''ob |- | Ç || ç || /{{IPA|tʃ}}/ ||[çe] || Español: le'''ch'''e |- | D || d || /{{IPA|d}}/ || [de] |- | E || e || /{{IPA|e}}/ || [e] |- | F || f || /{{IPA|f}}/ || [fe] |- | G || g || /{{IPA|g}}/ o /{{IPA|ɟ}}/ || [ge] |- | Ğ || ğ || * || [yumuşak, ge] 'g suave' || Es sorda |- | H || h || /{{IPA|h}}/ || [he] || Inglés: '''h'''ouse |- | I || ı || /{{IPA|ɯ}}/ || [ı] || No hay similar: como [u] sin redondeo |- | İ || i || /{{IPA|i}}/ || [i] |- | J || j || /{{IPA|Ʒ}}/ || [je] || Francés: ima'''g'''e |- | K || k || /{{IPA|k}}/, /{{IPA|c}}/ || [ke] |- | L || l || /{{IPA|l}}/, /{{IPA|ɫ}}/ || [le] |- | M || m || /{{IPA|m}}/ || [me] |- | N || n || /{{IPA|n}}/ || [ne] |- | O || o || /{{IPA|o}}/ || [o] |- | Ö || ö || /{{IPA|ø̞}}/ || [ö] || Francés: f'''eu''' |- | P || p || /{{IPA|p}}/ || [pe] |- | R || r || /{{IPA|r}}/ || [re] |- | S || s || /{{IPA|s}}/ || [se] |- | Ş || ş || /{{IPA|ʃ}}/ || [şe] || Inglés: '''sh'''ine |- | T || t || /{{IPA|t}}/ || [te] |- | U || u || /{{IPA|u}}/ || [u] |- | Ü || ü || /{{IPA|y}}/ || [ü] || Francés: v'''u'''e |- | V || v || /{{IPA|v}}/ || [ve] || Francés: '''v'''oir |- | Y || y || /{{IPA|j}}/ || [ye] || Español: '''y'''o |- | Z || z || /{{IPA|z}}/ || [ze] || Francés: poi'''s'''on |} ==Armonía vocálica== La lengua turca cuenta con dos '''series de vocales''': • ''Vocales pesadas'': a, o, u, ı • ''vocales ligeras'': e, ö, ü, i La primera regla de la armonía vocálica ("'''armonía palatal'''" Büyük ünlü uyumu) señala que las vocales de cada serie deben ser seguidas por vocales de la misma serie. Ejemplos: • Konuş-acağımızı (lo que hablaremos) • Görüş-eceğimizi (los que conoceremos) La vocales ligeras o anteriores(e, i, ö, ü) tienen que ser seguidas por vocales anteriores y las vocales pesadas o posteriores (a, ı , o, u) deben ser seguidas por vocales posteriores. La segunda regla de la armonía vocálica (de la '''armonía labial''' señala que Las vocales llanas (a,e,ı,i) tienen que ser seguidas por las vocales llanas; pero las vocales redondeadas (o,u,ö,ü) deben ser seguidas por las vocales bajas y llanas (a/e) o altas y redondeadas (u/ü Según estas reglas, cada vocal puede ser seguida sólo por dos vocales, que son: <nowiki>Anteriores Posteriores e e, i a a, ı i e, i ı a, ı ö e, ü o a, u ü e, ü u a, u</nowiki> Son sobre todo los sufijos los que obedecen estas reglas: Sufijo de plural (2 formas): -ler o -lar ked[[i]]-l[[e]]r 'gatos' bir[[a]]-l[[a]]r 'cervezas' Sufijo de pasado simple(4 formas): -di, -dı, -dü o -du ç[[i]]z-d[[i]]-m 'yo corrí' y[[ü]]z-d[[ü]]-nüz 'ustedes nadaron' '''Hay excepciones a la armonía de las vocales''': En turco, las palabras que no concuerdan con la regla de "la armonía de las vocales" son en general palabras de origen extranjero (la mayoría son de origen (árabe y persa, pero también las hay de origen europeo). Sin embargo, los sufijos agregados a tales palabras también concuerdan con la vocal de la ultima silaba: Ejemplos: '' memur'' 'funcionario', ''memuru'' ''domates'' 'tomate' ''domatesi'' ''hakim'' 'juez' ''hakimi'' Sin embargo, hay un pequeño numero de palabras "turcas" que no concuerdan con la regla: anne (madre), karde&#351; (hermano), elma (manzana), haydi (anda), hadi (anda), hangi (cuál), dahi (también), hani (dónde), &#351;i&#351;man (gordo), inanmak (creer) Algunas palabras compuestas no cumplen la armonía de las vocales: bilgisayar , formado por bilgi (información) y sayar (calculador) ilkbahar (primavera) , formada por ilk (primero) y bahar (primavera) Igualmente algunos sufijos no tienen alternancias vocálicas, es decir no cambia; por lo tanto no concuerdan con la "armonía de las vocales": -ken -ki -iyor -imrak -leyin == Armonía en consonantes == Las consonantes se dividen en dos grupos: *Fuerte: ç, h, k, p, s, ş, t. *Suaves: b, c, d, f, g, ğ, j, l, m, n, r, v, y, z Con algunos sufijos, si la primera letra del sufijo es una consonante suave, ésta es convertida en una consonantes fuerte si la consonante anterior es fuerte. Sufijo de pasado simple: -di gel-di 'él vino' kes-ti 'él cortó' <noinclude> <div style="text-align: center; font-size: 1.2em; clear: both;"> [[Turco/Introducción|'''←Lección anterior''']] | [[Turco/Lección 1 - Saludos|'''Siguiente lección→''']] </div> </noinclude> {{AutoCat}} 49yvjuw3m43xl9gbw04olrspkfk8w0a Aprende Lógica 0 8386 428373 425294 2026-07-19T17:50:53Z Antimundo 74354 Categorizar usando estantes 428373 wikitext text/x-wiki <noinclude> [[Archivo:Chess pieces.png|350px|right]] <br style="clear: all"/> </noinclude> <!-- fecha de inicio del libro 2 MARZO DEL 2009--> == Prólogo == Bienvenido, gentil lector. Realmente la intención es doble: que disfrutes y aprendas ;) === Acerca de este libro === Este libro es una recopilación de notas de lógica. #[[Aprende Lógica/Introducción|Introducción]] {{desarrollo|25%}} ;Clasificación de la Lógica # [[Aprende Lógica/Historia|Historia]] {{desarrollo|75%}} # [[Aprende Lógica/Raciocinio|Raciocinio]] {{desarrollo|00%}} # [[Aprende Lógica/Verdad y validez|Verdad y validez]] {{desarrollo|00%}} ; Desafíos # [[Aprende Lógica/Paradojas|Paradojas]] <!-- #[[Aprende Lógica / Tipos| Tipos]] {{desarrollo|00%}} ##[[Aprende Lógica / Tipos / subtipo|subtipo]] {{desarrollo}} ##[[Aprende Lógica / Tipos / Tipos / subtipo2|subtipo2]] {{desarrollo|00%}} ###[[Aprende Lógica / Tipos / Tipos / subtipo2 / tipochico|tipochico]] {{desarrollo|00%}} ###[[Aprende Lógica / Tipos / Tipos / subtipo2 / tipochico2|tipochico2]] {{desarrollo|00%}} --> {{Estantes|Lógica}} 56zrdh85yowcm4u5cpnimgr5bzobbgn Aprende Lógica/Introducción 0 8436 428376 417740 2026-07-19T18:15:49Z Antimundo 74354 Categorizar usando AutoCat 428376 wikitext text/x-wiki == Introducción == La lógica es la ciencia que estudia los razonamientos y pensamientos. Está relacionada con la racionalidad y la estructura de los conceptos, estudia el pensamiento en sí. Aristóteles al ser el primero en emplear el término “Lógica” para referirse al estudio de los argumentos dentro del lenguaje natural la definió como “El arte de la argumentación correcta y verdadera”. '''Temas de la Lógica''' ''La Inferencia'' Consiste en derivar la verdad de una proposición, llamada conclusión, de la verdad de otras proposiciones, llamadas premisas. Es decir que es una estructura de proposiciones donde, de una o más proposiciones llamadas premisas, se deriva otra llamada conclusión. ''Condicionantes'' La lógica plantea certezas lógicas y las encuentra en sus leyes lógicas o tautologías convertidas en reglas cuya aplicación encadenada sobre verdades o certezas axiomática o empíricamente establecidas constituyen el desarrollo de los argumentos lógicos como inferencias o razonamientos deductivos.[10] Cuando en un argumento o discurso se viola una regla lógica, se dice que se ha cometido una falacia. Cuando se requiere poner voluntad para conservar la veracidad del planteamiento, se dice que es sesgado. Cuando hay un interés personal, se dice que es egoísta. Cuando únicamente recoge una serie de hechos, describiendo las transformaciones entre los hechos, se dice que el resultado se verifica, bien sea cierto o falso.. Existe también una división entre lo llamado "falacia indirecta" y "falacia bella" o "falacia de redondeo", en la que la expresión se materializa como un elemento del contexto llamado "wittgensteiniano", en honor del filósofo austriaco Ludwig Wittgenstein. ''Lógica y Ciencia'' La lógica estudia los problemas y las leyes del pensar formal. La lógica no entra en definir qué es verdad y qué es falsedad material. Esos conceptos, al tener contenido semántico, son competencia del razonamiento aplicado a la experiencia. Pero la ciencia para elaborar sus razonamientos necesita la lógica. Los razonamientos formales, o inferencias válidas, son indispensables para todas las ciencias. La filosofía, como epistemología o filosofía de la ciencia estudia las condiciones del pensar científico y metodológico y las condiciones de verdad de las teorías científicas, así como su alcance y límites. {{AutoCat}} 6ny0xttifn0zegzic17ujifip48qa7q Aprende Lógica/Historia 0 8452 428377 417728 2026-07-19T18:15:58Z Antimundo 74354 Categorizar usando AutoCat 428377 wikitext text/x-wiki '''Historia de la Logica''' Históricamente la palabra "lógica" ha ido cambiando de sentido. Comenzó siendo una modelización de los razonamientos, propuesta por los filósofos griegos, y posteriormente ha evolucionado hacia diversos sistemas formales, relacionados con la teoría. Etimológicamente la palabra lógica deriva del término griego Λογικός logikós derivado de λόγος logos 'razón'. Históricamente se considera a Aristóteles el fundador de la lógica como propedéutica o herramienta básica para todas las Ciencias, ya que fue el primero en formalizar completamente el campo. La lógica, como un análisis explícito de los métodos de razonamientos, se desarrolló originalmente en tres civilizaciones de la historia antigua: China, India y Grecia entre el Siglo V y el Siglo I a. C. En China no duró mucho tiempo: la traducción y la investigación escolar en lógica fue reprimida por la dinastía Qin, acorde con la filosofía legista. En India, la lógica duró bastante más: se desarrolló (por ejemplo con la nyaya) hasta que en el mundo islámico apareció la escuela de Asharite, la cual suprimió parte del trabajo original en lógica. (A pesar de lo anterior, hubo innovaciones escolásticas indias hasta principios del siglo XIX, pero no sobrevivió mucho dentro de la India Colonial). El tratamiento sofisticado y formal de la lógica moderna aparentemente proviene de la tradición griega. Aristóteles fue el primero en emplear el término “Lógica” para referirse al estudio de los argumentos dentro del "lenguaje apofántico" como manifestador de la verdad en la ciencia. Pensaba que la verdad se manifiesta en el juicio verdadero y el argumento válido en el silogismo: “Silogismo es un argumento en el cual, establecidas ciertas cosas, resulta necesariamente de ellas, por ser lo que son, otra cosa diferente”. Nació así la lógica formal. Aristóteles formalizó el cuadro de oposición de los juicios y las formas válidas del silogismo. Kant en el siglo XVIII pensaba que Aristóteles había llevado la lógica formal a su perfección, por lo que básicamente hasta entonces no había habido prácticamente modificaciones de importancia. Y lo justificaba al considerar que siendo la lógica una ciencia formal, era por ello analítica y a priori, lo que justifica su necesidad y su universalidad, pues es la razón la que trata consigo misma respecto a sus leyes del pensar, sin contenido de experiencia alguno. En la filosofía tradicional, por otro lado, la “Lógica Informal”, o el estudio metódico de los argumentos probables fue investigada por la retórica, la oratoria y la filosofía, entre otras ramas del conocimiento. Se especializó medularmente en la identificación de falacias y paradojas, así como en la construcción correcta de los discursos. Aristóteles asimismo consideró el argumento inductivo, base de lo que constituye la ciencia experimental, cuya lógica está ligada al progreso de la ciencia y al método. A partir de mediados del Siglo XIX la lógica formal comenzó a ser estudiada en el campo de las matemáticas y posteriormente por las ciencias computacionales, naciendo así la Lógica simbólica. La lógica simbólica trata de esquematizar los pensamientos de forma clara y sin ambigüedades. Para ello usa un lenguaje formalizado constituido como cálculo. De este modo, en la edad contemporánea, la lógica generalmente es entendida como un cálculo y se aplica a los razonamientos en una forma prescripta mediante aplicación de reglas de inferencia como un cálculo lógico o matemático. Hoy día se considera una única ciencia lógico-matemática cuya expresión más importante en el campo de la ciencia es la creación de modelos gracias sobre todo a la aplicación técnica en los circuitos lógicos que hacen posible la informática y el cálculo numérico. Si bien a lo largo de este proceso la lógica aristotélica pareció inútil e incompleta, Luckasiewicz mostró que, a pesar de sus grandes dificultades, la lógica aristotélica era consistente, si bien había que interpretarse como lógica de clases, lo cual no es pequeña modificación. Por ello la silogística prácticamente no tiene uso actualmente. Para la Lógica matemática y la filosofía analítica la lógica es un objeto de estudio en sí mismo, por lo que esta es estudiada a un nivel más abstracto. Existen muchos otros sistemas lógicos, como la lógica dialéctica, lógica difusa, lógica probabilística, lógica modal y la lógica no monótona. Martin Heidegger —discípulo de Edmund Husserl—, se aparta de estas líneas de consideración de la lógica —aunque sin despreciarlas y comprendiendo su alcance (pero también sus límites), planteando que una lógica más originaria se podría encontrar en un plano previo a las proposiciones, sentencias, declaraciones o juicios. Tomar en cuenta eso podría llevar a un replanteamiento de la lógica de la proposición o la lógica del juicio, puesto que nos conduciría a movernos en las raíces de la lógica tal como ha sido habitualmente entendida, raíces que hasta ahora han sido insuficientemente atendidas. Para él, la lógica tendría que partir de una suficiente meditación del λόγος ( lógos), el cual debería ser distinguido de la ratio (razón), que, en rigor, significa algo distinto. '''Historia de la Lógica en el mundo''' La historia de la lógica documenta el desarrollo de la lógica en varias culturas y tradiciones a lo largo de la historia. Aunque muchas culturas han empleado intrincados sistemas de razonamiento, e, incluso, el pensamiento lógico estaba ya implícito en Babilonia en algún sentido, la lógica como análisis explícito de los métodos de razonamiento ha recibido un tratamiento sustancial solo originalmente en tres tradiciones: la china, la india y la griega. Aunque las dataciones exactas son inciertas, particularmente en el caso de la India, es probable que la lógica emergiese en las tres sociedades hacia el siglo IV a. C. El tratamiento formalmente sofisticado de la lógica proviene de la tradición griega, especialmente de la lógica aristotélica, que sería más tarde desarrollada por los lógicos islámicos y, luego, por los lógicos de la Edad Media europea. El descubrimiento de la lógica india entre los especialistas británicos en el siglo XVIII influyó también en la lógica moderna. '''''La Lógica en Mesopotamia''''' En Mesopotamia, el Manual de diagnóstico médico de Esagil-kin-apli, escrito en el siglo XI a. C., se basó en un conjunto lógico de axiomas y asunciones, entre las que se incluyen la visión moderna de que, a través del examen e inspección de los síntomas de un paciente, es posible determinar el problema del mismo, su etiología y su desarrollo futuro, y las posibilidades de recuperación. Durante los siglos VIII y VII, los astrónomos babilonios empezaron a utilizar una lógica interna en sus sistemas de predicción planetaria, que fue una importante contribución a la lógica y la filosofía de la ciencia. El pensamiento babilónico tuvo una considerable influencia en el pensamiento de la Grecia arcaica. '''''La Lógica en Grecia''''' En Grecia, emergieron dos tradiciones lógicas opuestas. La lógica estoica estaba enraizada en Euclides de Megara, pupilo de Socrates, y con su concentración en la lógica proposicional es la que quizás esté más próxima a la lógica moderna. Sin embargo, la tradición que sobrevivió a las influencias de culturas posteriores fue la peripatética, que tuvo su origen en el conjunto de obras de Aristóteles conocido como Organon, "instrumento", la primera obra griega sistemática sobre lógica. El examen de Aristóteles del silogismo permite interesantes comparaciones con el esquema indio de la inferencia y la menos rígida discusión china. A través del latín en Europa occidental y de distintas lenguas orientales, como el árabe, armenio y georgiano, la tradición aristotélica fue considerada de forma especial para la codificación de las leyes del razonamiento. Solo a partir del siglo XIX cambió este enfoque. '''''La Lógica en la India''''' Dos de las seis escuelas indias de pensamiento están relacionadas con la lógica: Nyaya y Vaisheshika. Los Nyaya Sutras de Aksapada Gautama constituyen el núcleo de textos de la escula Nyaya, una de las seis escuelas ortodoxas de filosofía hindú. Esta escuela realista trabajó con un rígido esquema de inferencia de cinco miembros que engloba una premisa inicial, una razón, un ejemplo, una aplicación y una conclusión. La filosofía budista idealista se convirtió en la principal oponente de los Naiyayikas. Nagarjuna, el fundador del camino intermedio Madhyamika, desarrolló un análisis conocido como "catuskoti" o tetralemma. Esta argumentación de cuatro aspectos examinó y rechazó sistemáticamente la afirmación de una proposición, su negación, la afirmación conjunta y negación, y finalmente, el rechazo de su afirmación y negación. Pero fue con Dignaga y su sucesor Dharmakirti con quienes la lógica budista alcanzó su mayor altura. Su análisis, centrado en la definición de la implicación necesariamente lógica, "vyapti", conocida también como concomitancia o penetración invariable. A este fin, fue desarrollada una doctrina conocida como "apoha" o diferenciación. Comprende lo que se podría llamar la inclusión y exclusión de propiedades definitorias. Las dificultades concernientes a esta empresa, en parte, estimularon a la escuela neoescolástica de Navya-Nyāya, que introdujo un análisis formal de la inferencia en al siglo XVI. '''''La Lógica en China''''' En China, un contemporáneo de Confucio, Mozi, "Maestro Mo", es considerado como el fundador de la escuela Mohista (mohísmo), cuyos principios están relacionados con temas como la inferencia válida y las condiciones de las conclusiones correctas. En particular, una de las escuelas que siguieron al mohísmo, los lógicos, es considerada por varios expertos como la primera que investigó la lógica formal. Desafortunadamente, debido a la rígida normativa legal durante la dinastía Qin, esa línea de investigación desapareció de China hasta la introducción de la filosofía india por parte del budismo. '''''La Lógica en la filosofía Islámica''''' Durante un tiempo tras la muerte de Mahoma, la ley islámica consideró importante formular estándares para los argumentos, lo que dio lugar a una nueva aproximación a la lógica en Kalam, pero esta aproximación fue más tarde desplazada por ideas tomadas de la filosofía griega y helenística con el auge de los filósofos de la escuela Mu'tazili, que valoraron extraordinariamente el Organon de Aristóteles. Las obras de los filósofos islámicos con influencias helenísticas fueron cruciales para la recepción de la lógica aristótelica en la Europa medieval, junto con los comentarios sobre el Organon elaborados por Averroes. Las obras de al-Farabi, Avicenna, al-Ghazali y otros lógicos musulmanes que en ocasiones criticaron y corrigieron la lógica aristotélica e introdujeron sus propias formas de lógica, también desempeñaron un papel central en el subsecuente desarrollo de la lógica europea medieval. La lógica islámica no solo incluye el estudio de modelos formales de inferencia y su validación, sino también elementos de la filosofía del lenguaje y elementos de epistemología y metafísica. Debido a disputas con gramáticos árabes, los filósofos islámicos estuvieron muy interesados en trabajar en el estudio de las relaciones entre lógica y lenguaje, y dedicaron muchas discusiones a la cuestión del objeto de interés y objetivos de la lógica en relación con el razonamiento y el habla. En el área del análisis lógico-formal, elaboraron la teoría de los términos, proposiciones y silogismos. Consideraron el silogismo como la forma a la que toda argumentación racional podía reducirse, y consideraron la teoría silogística como el punto central de la lógica. Incluso, la poética fue considerada, en ciertos aspectos, como un arte silogístico por muchos de los más importantes lógicos islámicos. Entre los más importantes desarrollos realizados por los lógicos musulmanes está el de la lógica de Avicena como sustituta de la lógica aristotélica. El sistema lógico de Avicena fue responsable de la introducción del silogismo hipotético,[4] de la lógica modo-temporal, y de la lógica inductiva. Otro importante desarrollo en la filosofía islámica es el de una estricta ciencia de la cita, la isnad o "revisión", y el desarrollo de un método científico de investigación abierta para poner en cuestión determinadas afirmaciones, la ijtihad, que podía aplicarse normalmente a muchos tipos de cuestiones. Desde el siglo XII, a pesar de la sofisticación lógica de al-Ghazali, el auge de la escuela Asharite al final de la Edad Media limitó poco a poco la obra original sobre lógica en el mundo islámico, aunque continuó posteriormente en el siglo XV. '''''La Lógica en la Europa medieval''''' Se entiende habitualmente por "lógica medieval" (también conocida como "lógica escolástica") la forma de la lógica aristotélica desarrollada en la Europa medieval en el periodo de c 1200–1600. Esta tarea comenzó tras las traducciones al latín del siglo XII, cuando textos árabes sobre lógica aristotélica y la lógica de Avicena fueron traducidos a la lengua de Roma. Aunque la lógica de Avicena tuvo influencia en los primeros lógicos medievales europeos tales como Alberto Magno, la tradición aristotélica se convirtió en la dominante debido a la importante influencia del averroísmo. Tras la fase inicial de traducciones, la tradición de la lógica medieval fue desarrollada en manuales como el de Petrus Hispanus (fl. siglo XIII), de identidad desconocida, que fue autor de un manual estándar sobre lógica, el Tractatus, que fue bien conocido en Europa durante varios siglos. La tradición alcanzó su punto más alto en el siglo XIV, con las obras de Guillermo de Ockham (c. 1287–1347) y Jean Buridan. Un rasgo del desarrollo de la lógica aristotélica se conoce con el nombre de teoría de la suposición, un estudio de la semántica de los términos de la proposición. La últimas grandes obras de esta tradición son Logic de John Poinsot (1589–1644, conocido como John of St Thomas), y Disputas metafísicas de Francisco Suárez (1548–1617). '''''La Lógica tradicional''''' La expresión "lógica tradicional" hace referencia, habitualmente, a la tradición de manuales que comienza con Logic, or the Art of Thinking de Antoine Arnauld y Pierre Nicole, más conocido como Lógica de Port-Royal. Publicada en 1662, fue la más influyente obra sobre lógica en Inglaterra hasta el Sistema Lógico de Mill de 1825 [N4]. El libro presenta una muy libre doctrina cartesiana (que la proposición es una combinación de ideas antes que de términos, por ejemplo) dentro de un marco que se deriva ampliamente de la lógica de términos aristotélica y medieval. Entre 1664 y 1700 se publicaron ocho ediciones, y el libro tuvo considerable influencia. Fue frecuentemente reeditado en Inglaterra hasta finales del siglo XIX. El tratamiento que realiza Locke de la proposición en el Ensayo es, esencialmente, el de Port-Royal: "Las proposiciones verbales, que son palabras, [son] los signos de nuestras ideas, ya vayan juntas o separadas en oraciones afirmativas o negativas. Así, pues, la proposición consiste en juntar o separar esos signos, de acuerdo con las cosas con las que están de acuerdo o en desacuerdo." (Locke, An Essay Concerning Human Understanding, IV. 5. 6) Los trabajos más conocidos dentro de esta tradición son los de Isaac Watts, Logick: Or, the Right Use of Reason (1725), Richard Whately, Logic (1826), y John Stuart Mill, A System of Logic (1843), que fue una de las últimas grandes obras de la tradición. '''''El advenimiento de la Lógica moderna''''' Historicamente, Descartes puede que haya sido el primer filósofo en haber tenido la idea de usar el álgebra, especialmente sus técnicas para resolver cantidades desconocidas en las ecuaciones, como vehículo para la exploración científica. La idea de un cálculo de razonamiento fue también cultivada por Gottfried Wilhelm Leibniz. Leibniz fue el primero en formular la noción de un sistema de lógica matemática aplicable de forma generalizada. Sin embargo, los documentos relevantes al respecto no fueron publicados hasta 1901 y muchos de ellos siguen sin estar publicados, y la actual comprensión del poder de los descubrimientos de Leibniz no empezó a desarrollarse hasta los años ochenta. Gottlob Frege en su Begriffsschrift (1879) extendió la lógica formal más allá de la lógica proposicional para incluir constructores como "todo" y "algunos". Mostró cómo introducir variables y cuantificadores para revelar la estructura lógica de las oraciones, que podría estar ocultas tras su estructura gramatical. Por ejemplo, "Todos los seres humanos son mortales" se convierte en "Toda cosa x es tal que, si x es un ser humano entonces x es mortal." La peculiar doble notación dimensional de Frege hizo que su obra fuese ignorada durante muchos años. En un magistral artículo de 1885 leído por Peano, Ernst Schröder y otros, Charles Peirce introdujo el término "Lógica de segundo orden" proporcionando la mayor parte de la moderna notación lógica, incluyendo los símbolos prefijados para la cuantificación universal y existencial. Los lógicos de finales del siglo XIX y de comienzos del XX estuvieron más familiarizados con el sistema lógico de Peirce-Schröder, aunque generalmente se reconoce que Frege es el Padre de la lógica moderna. En 1889 Giuseppe Peano publicó la primera versión de la axiomatización lógica de la aritmética. Cinco de los nueve axiomas son conocidos como axiomas de Peano. Uno de estos axiomas fue una formalización del principio de la inducción matemática. {{AutoCat}} fweoi4a2l6ofu8fxa4sf4dllxsq7lww C sharp NET/Capítulo 10 0 8635 428436 305088 2026-07-20T11:01:08Z Antimundo 74354 Categorizar usando AutoCat 428436 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 9|Capítulo 9|C sharp NET/Capítulo 11|Capítulo 11}} = '''Estructuras de datos''' = <br /> <br /> Hay varias formas de agrupar conjuntos de datos en C#. == Enumeraciones == La palabra clave '''enum''' se utiliza para declarar una enumeración, un tipo que consiste en un conjunto de constantes con el nombre de lista de enumeradores. Cada tipo de enumeración tiene un tipo subyacente, pudiendo estos ser cualquier tipo integral menos char. El tipo predeterminado de los elementos de la enumeración es int. Por defecto el primer enumerador tiene el valor 0 y el valor sucesivo se incrementa en 1. Ejemplo: <pre> public enum Dias { Domingo, Lunes, Martes, Miercoles, Jueves, Viernes, Sabado } </pre> En esta enumeración Domingo es 0, Lunes es 1 y así sucesivamente. Los enumeradores pueden tener inicializadores reemplazando estos a los valores predeterminados, por ejemplo: <pre> public enum Dias { Domingo = 1, Lunes, Martes, Miercoles, Jueves, Viernes, Sabado } </pre> En este caso obligamos a la enumeración a comenzar desde 1 en lugar de 0. Dijimos que el tipo subyacente de las enumeraciones es int, sin embargo se necesita una conversión explícita para pasar un valor enum a un valor int, así: int x = (int)Dias.Lunes; En este caso el resultado sería que x valdría 2. == Estructuras == {{nav|C sharp NET/Capítulo 9|Capítulo 9|C sharp NET/Capítulo 11|Capítulo 11}} {{AutoCat}} dcb8g6nsy5f2de7jwf1l9o40qttienh C sharp NET/Capítulo 0 0 9531 428434 305076 2026-07-20T11:00:49Z Antimundo 74354 Categorizar usando AutoCat 428434 wikitext text/x-wiki {{nav|C sharp NET|MENU PRINCIPAL|C sharp NET/Capítulo 1|Capítulo 1}} = '''Una Breve Introducción a los Lenguajes de Programación''' = <br /><br /> Comencemos con lo mas elemental, cuando dos o mas personas se comunican, para transmitirse información, expresar ideas, noticias, conceptos y hasta contarse algún chisme, utilizan un elemento para hacerlo y a tal elemento lo conocemos como '''Lenguaje'''. Sin ahondar en formalidades, un lenguaje es una herramienta para comunicarse por medio de signos, que pueden ser, escritos, sonoros, gestuales, etc. Usualmente, al lenguaje que usamos los humanos (independientemente del idioma) se le llama '''Lenguaje Natural'''. De esta manera, por ejemplo, un español, un mexicano y un uruguayo se comunicarán entre sí usando su lenguaje natural (que en particular es expresado en Español con sus variantes regionales), de forma análoga dialogarían un australiano, un irlandés y un estadounidense (seguramente comunicándose en Inglés con sus variantes regionales). La importancia en si, de ésta herramienta, es el poder de comunicar, solicitar e incluso dar instrucciones para realizar algo concreto. En el mundo de la informática, debemos ser muy precisos en como damos esas indicaciones y por ello se procura siempre que todo sea claro, sin confusiones, contradicciones ni ambigüedades. El Lenguaje Natural humano, es complejo para ser interpretado por máquinas, para ello, a lo largo de la historia, se han creado lenguajes simples y concretos, para poder interactuar con máquinas. La Programación, es una actividad en la cual tenemos que dar instrucciones precisas a una máquina, para que haga exactamente lo que queremos y para ello, se han creado y perfeccionado lenguajes, conocidos hoy como '''Lenguajes de Programación'''. Los actuales '''lenguajes de programación''' tienen características que pueden asemejarse en buen grado a los lenguajes naturales como el Español, Inglés, o cualquier otro; ya que al igual que en la comunicación oral o escrita, los lenguajes de programación tienen un vocabulario definido, además de reglas ortográficas, de estructura, de puntuación, es decir la sintaxis que deben seguir y por supesto una semántica, esto es el significado que adquieren las conformaciones basadas en las reglas antes mencionadas. Como en los lenguajes humanos corrientes (Lenguajes Naturales), estas reglas deben tomarse en cuenta para que las ideas que tratamos de expresar tengan sentido. También sucede que un lenguaje de programación cambia con el tiempo, igual que un lenguaje natural . Si tú eres un hispano-hablante sabrás que en cada país hispanoamericano se usan palabras que en otros países no se utilizan o las mismas palabras tienen un significado distinto entre países (esto es llamado ambigüedad): el idioma Español ha venido evolucionando con el tiempo y se ha adaptado a la geografía. En este mismo sentido, el lenguaje de programación C#.NET es una actualización técnica de otros lenguajes de programación más antiguos como lo son el C, C++, Java, Visual Basic, Delphi, etc. El creador de este lenguaje '''Anders Heljsberg''', es un calificado profesional de la informática que además ha desarrollado lenguajes y herramientas como Turbo Pascal, Delphi (de Borland Co.) y Visual J++ (Microsoft). Por lo que C# pretende ser el siguiente eslabón en la evolución de los lenguajes de programación mas avanzados, buscando combinar en proporciones adecuadas: Potencia, Sencillez y Actualidad/Tendencia. **************** La evolución de los ordenadores (computadores) y de los lenguajes de programación ha sido grandísima. No hace muchos años existían personas que tenían que hacer agujeros en tarjetas de cartulina para poder dar instrucciones al computador: eran las famosas tarjetas perforadas. Pocos años despúes de esos días existían personas (y hasta ahora existen aquellos) que pueden "hablar con el ordenador", se trata de informáticos que en su época solo disponían de elementos de muy bajo nivel para controlar el computador, eso hasta el día de hoy es la base de las técnicas de cómputo, independientemente de cuanto hayan aumentado las capacidades de memorias, velocidades de microprocesadores, miniaturizaciones, etc. La forma en que una máquina de cómputo recibe instrucciones es una manera peculiar. No es la idea aquí ahondar sobre este tema, pero es importante brindar una idea al respecto. Supóngase que se cuenta con un sistema de riego, en principio asúmase algo simple, un jardín con un dispersor de agua, que se activa o desactiva utilizando una simple llave de encendido y apagado, como las de las luces. De esta forma podemos decir que tenemos un sistema que interpreta o entiende 2 instrucciones: Llave para arriba ---> ENCENDIDO Llave hacia abajo ---> APAGADO De esta manera el sistema se enciende o se apaga conforme alguien le da una de estas 2 instrucciones que el mismo interpreta o "entiende". Podemos esquematizar el referido sistema de esta forma: [ INSTRUCCIONES ]====>[ PROCESAMIENTO ]====>[ Acciones / Resultados ] Para tratar de simplificar la forma de transmitir o escribir una de esas instrucciones, podemos decir que si al bloque de procesamiento le enviamos la instrucción "1", implica un ENCENDIDO, es decir que le estamos pidiendo poner en marcha el sistema. Por el contrario, si le enviamos un "0", es un APAGADO, le estamos pidiendo detener el sistema. Hemos hecho esto, porque como antes mencionamos, las máquinas deben trabajar con interpretaciones lo mas concreta y simplificadas posibles. Es mas fácil para una máquina elemental, interpretar un "1", un "0" o incluso una serie de éstos números [*]. Así que ahora tenemos algo como un lenguaje elemental para dar indicaciones, donde tenemos dos instrucciones: Instrucción: ENCENDIDO ............. Equivale a: 1 Instrucción: APAGADO ................ Equivale a: 0 Imaginemos ahora que el sistema de riego, además de tener encendido y apagado, tiene otra modalidad llamada DIARIO, que simplemente provoca que el mismo se encienda una vez al día, a una hora indicada, por un lapso determinado (ej: 90 minutos). Así que necesitamos otra representación o equivalencia simple para indicar esta nueva instrucción. Reformulemos el caso anterior, de la siguiente manera: Instrucción: '''ENCENDIDO''' .............. Equivale a: 01 Instrucción: '''APAGADO''' ................ Equivale a: 00 Instrucción: '''DIARIO''' ................. Equivale a: 10 **** Añadir más para ilustrar sobre el lenguaje binario (bajo nivel) y los lenguajes de alto nivel**** (en construcción) **************** Ya que hemos recalcado las similitudes entre los lenguajes de programación y los lenguajes naturales también hay que tener presente que un lenguaje de programación es mucho más estricto que uno natural en el sentido de que '''no pueden existir ambigüedades'''. Es muy fácil en el idioma Español tener frases que impliquen algo que ya conocemos o que signifiquen cosas diferentes. Por el contrario los lenguajes de programación son claros, específicos y directos, no se admiten ambigüedades ni suposiciones. Para poder dominar un lenguaje de programación (al igual que con los lenguajes naturales) se requiere mucho estudio pero por sobre todo '''muchísima práctica'''. Una persona podría leer este manual unas 500 veces pero si no pone en práctica los conceptos ni investiga por su cuenta, jamás llegará a dominar este maravilloso lenguaje de programación. Así que: ¡a practicar se ha dicho! ---- [*] Al sistema numérico compuesto únicamente por los elementos "0" y "1" se le llama '''Sistema Numérico Binario''', o popularmente Sistema Binario. {{nav|C sharp NET|MENU PRINCIPAL|C sharp NET/Capítulo 1|Capítulo 1}} {{AutoCat}} s2tpog3kptw21sqzojnk67tc7eehflp C sharp NET/Capítulo 26 0 10226 428443 305105 2026-07-20T11:03:49Z Antimundo 74354 Categorizar usando AutoCat 428443 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 25|Capítulo 25|C sharp NET/Capítulo 27|Capítulo 27}} = '''Utilizando Bases de Datos''' = <br /> <br /> <br /> Por lo general tendremos que acceder a bases de datos tanto locales como remotas, por eso .NET define distintos tipos que nos ayudan en esta tarea, estos namespaces se conocen como ADO.NET que no es mas que una mejora del tradicional ADO. == Diferencias entre ADO y ADO.NET == ADO.NET además de ser una mejora de ADO intenta implementar un nuevo paradigma para el desarrollo de sistemas desconectados sobre todo centrándose en el desarrollo de lo que en inglés se llama aplicaciones N-Tier (aplicaciones en n capas) estas son generalmente aplicaciones web que actualmente están en expansión. Una de las nuevas criaturas de ADO.NET es el DataSet que representa un conjunto de tablas y relaciones de manera desconectada de la fuente de datos de modo que podamos interactuar con los datos, modificarlos y devolverlos a la fuente primaria usando el ya conocido data adapter. Otra de las grandes características añadidas es el soporte completo para XML, los datos usan internamente esta representación para moverse entre las capas de aplicación a traves de HTTP por ejemplo. Finalmente nos queda por destacar que ADO.NET es una librería manejada (managed library) lo que hace que su uso sea exactamente igual en cualquiera de los lenguajes soportados por .NET. == ADO.NET a grandes rasgos == Los tipos que componen ADO.NET tienen por objetivo obtener datos de la base de datos rellenar un DataSet, manipular dicho elemento y devolver los datos manipulados a la base de datos, con la particularidad de que dentro del DataSet podemos tener la representación de tablas y relaciones entre ellas hasta llegar a tener una representación completa de toda una base de datos. Para poder trabajar correctamente con un DataSet están definidas dentro del namespace System.Data algunas interfaces como son IDbCommand, IDbDataAdapter, IDbConnection y IDataReader. Hay dos proveedores que vienen con .Net predeterminados SQL que permite acceder a SQL Server 7.0 o superior y OleDb que permite acceder a cualquier base de datos que soporte OLE DB, también es común encontrarnos con proveedores para bases de datos Oracle por ejemplo. <br /> {{nav|C sharp NET/Capítulo 25|Capítulo 25|C sharp NET/Capítulo 27|Capítulo 27}} {{AutoCat}} lryd9aj82v63vdww37uechxuet1kd8z Tecnologías para el Desarrollo Rural 0 11633 428459 335726 2026-07-20T11:31:33Z Antimundo 74354 Categorizar libro 428459 wikitext text/x-wiki {{Categorizar libro}} <center><big><big><big>'''Tecnologías para el Desarrollo Rural'''</big></big></big></center><br /><br /> El objetivo de este proyecto es crear un libro o una serie de libros que se puedan utilizar para la educación de los niños sobre procesos y tecnologías que pueden mejorar la vida de la gente en comunidades pobres o desfavorecidas, respetando al mismo tiempo el medio ambiente. Si quieres aportar algo a este proyecto, recuerda que está dirigido a niños. Tiene que ser sencillo y fácil de entender al mismo tiempo que preciso. Utiliza vocabulario técnico cuando sea necesario, pero minimiza la utilización de tecnicismos cuando el lenguaje más simple transmitiría la misma idea. Este libro es una traducción del wikilibro: "Technologies for Rural Development" == Módulos Principales == {{Leyenda desarrollo}} Los módulos incluidos son los siguientes: # [[Tecnologías para el Desarrollo Rural/Portada|Portada]] {{desarrollo|25%|}} # [[Tecnologías para el Desarrollo Rural/Introducción|Introducción]] {{desarrollo|25%|}} # [[Tecnologías para el Desarrollo Rural/Cómo Utilizar el Agua|Cómo Utilizar el Agua]] {{desarrollo|25%|}} # [[Tecnologías para el Desarrollo Rural/Cómo Construir una Casa|Cómo Construir una Casa]] {{desarrollo|25%|}} # [[Tecnologías para el Desarrollo Rural/Cómo Mejorar la Agricultura|Cómo Mejorar la Agricultura]] {{desarrollo|00%|}} # [[Tecnologías para el Desarrollo Rural/Qué Hacer con los Residuos|Qué Hacer con los Residuos]] {{desarrollo|00%|}} # [[Tecnologías para el Desarrollo Rural/Cómo Mejorar las Infraestructuras|Cómo Mejorar las Infraestructuras]] {{desarrollo|00%|}} # [[Tecnologías para el Desarrollo Rural/Cómo Generar Energía|Cómo Generar Energía]] {{desarrollo|00%|}} == Conceptos Fundamentales == En cada módulo deberán aparecer los siguientes conceptos: * Resumen del proceso o tecnología. * Breve historia de los procesos y tecnologías. * Aplicaciones de las tecnologías orientadas a potenciar el desarrollo. * Consideraciones medioambientales para las tecnologías o los procesos. * Seguridad e higiene. * Diagramas para ilustrar los conceptos principales ::Para insertar una imagen o diagrama que has creado, hay que utilizar la siguiente plantilla [[:m:commons:Template:PD-self|PD-Self]] == Otros Módulos == Otros módulos en este libro podrían ser: # [[Tecnologías para el Desarrollo Rural/Cómo Mejorar el Transporte|Cómo Mejorar el Transporte]] {{desarrollo|00%|}} # [[Tecnologías para el Desarrollo Rural/Cómo Utilizar los Sistemas de Comunicación|Cómo Utilizar los Sistemas de Comunicación]] {{desarrollo|00%|}} # [[Tecnologías para el Desarrollo Rural/Salud e Higiene|Salud e Higiene]] {{desarrollo|00%|}} == Formatos == === Wikilibro Completo === Esta página tiene todos los módulos del Wikilibro acumulados en una página. === Versión completa en HTML === * [[Tecnologías para el Desarrollo Rural/Texto completo|Versión completa de Tecnologías para el Desarrollo Rural]] == Traducciones == El objetivo de este proyecto es informar a la gente, especialmente a los niños en comunidades rurales sobre tecnologías que pueden mejorar sus vidas. Para lograr este objetivo es muy importante traducir el texto en todos los idiomas posibles. Es probable que a medida que se vaya desarrollando el documento, las traducciones difieran del texto original creado en inglés, no obstante en la fase inicial esto no tendrá importancia e incluso facilitará más información para el proyecto. Antes de que una traducción sea considerada como finalizada, debería coincidir con el texto en inglés. Para conseguir una traducción exacta se podría adaptar en cualquiera de los textos. En caso de disputa, se debería resolver hablando del tema en la página de discusión en la versión inglesa, que es la versión principal, tal y como se define en la licencia GNU. == Links de interés == [[Categoría:Tecnologías para el Desarrollo Rural]] 19hek1ri70g4w4q5t4m3j8isrdcolmw Wikilibros:Imágenes 4 12134 428396 191891 2026-07-19T18:56:29Z Antimundo 74354 Arreglar plantilla rota cuyo texto no se renderizaba 428396 wikitext text/x-wiki {{Aviso|En junio de 2009 la comunidad de Wikilibros [[Wikilibros:Votaciones/2009/Política de imágenes|decidió]] deshabilitar la subida de imágenes y archivos locales y trasladar los existentes a [[commons:|Wikimedia Commons]]. Wikilibros ya [[Wikilibros:Política de imágenes|no permite]] ni el alojamiento ni la subida de archivos localmente. Todos los archivos locales tranferibles a Wikimedia Commons han sido trasladados allí, el resto (archivos sin datos de procedencia, licencia y violaciones a los derechos de autor) han sido borrados. Si desea subir una imagen por favor use [[commons:Special:UploadWizard|el asistente de subida de archivos]] de Wikimedia-Commons. Por favor respete las políticas de Commons al realizar dicha operación. }} ;Véase también * [[Wikilibros:Política de imágenes]] [[Categoría:Wikilibros]] t0j936c92suh37r8hszvm8kfoo9cwkl Categoría:Libro:C sharp NET 14 12786 428453 79273 2026-07-20T11:06:17Z Antimundo 74354 Antimundo trasladó la página [[Categoría:C sharp NET]] a [[Categoría:Libro:C sharp NET]]: Categorizar usando estantes 79273 wikitext text/x-wiki [[Categoría:Programación]] malnw6ughgzjcvpjuy4q9l6tokgxig0 428455 428453 2026-07-20T11:06:41Z Antimundo 74354 Categorizar usando estantes 428455 wikitext text/x-wiki [[Categoría:Estante:Lenguajes de programación]] [[Categoría:Libros organizados]] 99qezphhbang3fprkfft2jxm0izjol7 Aprende Lógica/Verdad y validez 0 14451 428379 417730 2026-07-19T18:16:16Z Antimundo 74354 Categorizar usando AutoCat 428379 wikitext text/x-wiki Como se ha indicado, la Lógica pretende ser '''el instrumento''' con el cual discenir cuándo una argumentación es válida. Por lo común la gente suele confundir un argumento válido con uno verdadero. Son cosas distintas, aunque estén relacionadas. Así, la Lógica no pretende ver si una afirmación es o no cierta, sino si es válida o no. Veamos un ejemplo: si digo la frase: "el sol está a una temperatura de 0ºC", evidentemente estoy diciendo algo que es falso. No es verdad (si lo fuera, ninguno de nosotros estaría vivo para poder tacharme de mentiroso). Sin embargo, ¿es cierta la frase?: "los dragones son verdes" No podemos afirmar nada sobre la certeza de la frase. ¿Por qué? Pues por la evidente razón de que los dragones no existen, sólo existen en la imaginación de las personas. Si en la imaginación de todas las personas, los dragones fueran verdes, entonces aun así tampoco estaría muy claro que la frase fuese cierta. Pongamos otro ejemplo. Imaginemos que afuera hace un día de perros. Entonces anuncio: "si llueve, saldré con el paraguas". Imaginemos que finalmente, en contra de todos los indicios, no llueve, y yo, precavido, salgo sin embargo con el paraguas bajo el brazo. ¿He mentido? Mejor dicho, ¿he faltado a mi palabra? Hasta ahora lo que he hecho es preguntarme por la CERTEZA de las frases anteriores. Pero hemos visto que no siempre es tan sencillo determinar si una frase (enunciativa y afirmativa) es o no cierta. En lugar de ello, vamos a intentar otra cosa: vamos a ver qué posibilidades de ser cierta tiene una frase en concreto, dependiendo de si se apoya en la veracidad o la falsedad de otras. Así no habrá peligro de confusión. Si no sabemos si una afirmación es cierta o no, pero sabemos que se apoya en otras afirmaciones, podemos discernir su veracidad en función de la veracidad de las afirmaciones en las que se apoya. En eso consiste la validez de una argumentación. Nosotros estableceremos unos cuantos casos, unas "formas de apoyo" de una afirmación en otras, que consideraremos '''válidas'''. En el caso en que las usemos (correctamente, por supuesto), y sólo en ese caso, la afirmación global podrá decirse que es válida. Entonces, la certeza de tal afirmación se deducirá de una manera mecánica de la certeza o falsedad de aquellas afirmaciones en las que se apoya. {{AutoCat}} 84vobl6czhz3kiw9ic8120mtxneyx50 Plantilla:Nuevo libro 10 14685 428423 68431 2026-07-20T09:52:27Z Antimundo 74354 Los enlaces interlingüísticos en la actualidad se gestionan mediante wikidata 428423 wikitext text/x-wiki <!-- Este es un modelo para escribir el nuevo libro, no olvides sustituir los textos de ejemplo por los adecuados para tu libro. Si tienes dudas consulta [[Wikilibros:Ayuda]] Aquí escribe una introducción al tema del libro, a qué tipo de lectores va dirigido y cualquier consideración que quieras hacer sobre el libro. También puedes hacer una invitación a todos los visitantes a colaborar en la escritura del wikilibro. Incluir un enlace a un artículo relacionado en la Wikipedia tampoco es mala idea. --> == Contenido == <!-- Cambia los capítulos de ejemplo por los definitivos, pero recuerda cumplir la política de subpáginas. Si tienes dudas lee [[Wikilibros:Política de nombrado]] --> # [[/Capítulo de ejemplo 1/]] # [[/Capítulo de ejemplo 2/]] ## [[/Capítulo de ejemplo 2.1/]] ## [[/Capítulo de ejemplo 2.2/]] # [[/Capítulo de ejemplo 3/]] <!-- No olvides cambiar la categoría siguiente por la adecuada --> <includeonly> [[Categoría:Libros pendientes de categorizar]] </includeonly> cuvyghfbzjhtylxpe2k7xy0203e2orb 428424 428423 2026-07-20T09:57:31Z Antimundo 74354 Según la política de nombrado, los títulos de las subpáginas no deben estar numerados 428424 wikitext text/x-wiki <!-- Este es un modelo para escribir el nuevo libro, no olvides sustituir los textos de ejemplo por los adecuados para tu libro. Si tienes dudas consulta [[Wikilibros:Ayuda]] Aquí escribe una introducción al tema del libro, a qué tipo de lectores va dirigido y cualquier consideración que quieras hacer sobre el libro. También puedes hacer una invitación a todos los visitantes a colaborar en la escritura del wikilibro. Incluir un enlace a un artículo relacionado en la Wikipedia tampoco es mala idea. --> == Índice == <!-- Cambia los capítulos de ejemplo por los definitivos, pero recuerda cumplir la política de subpáginas. Si tienes dudas lee [[Wikilibros:Política de nombrado]] --> # [[/Capítulo de ejemplo A/]] # [[/Capítulo de ejemplo B/]] # [[/Capítulo de ejemplo C/]] <!-- No olvides cambiar la categoría siguiente por la adecuada --> <includeonly> [[Categoría:Libros pendientes de categorizar]] </includeonly> qkjag6ay4id71osmyfnpvlv3f5ty1az 428425 428424 2026-07-20T10:12:53Z Antimundo 74354 Mejorar y simplificar redacción de las explicaciones 428425 wikitext text/x-wiki <!-- Este es un modelo para crear un nuevo libro. Sustituye este texto por una breve descripción que explique el tema del libro, a qué lectores va dirigido, cuál es su alcance, y cualquier otra consideración que quieras hacer sobre el libro. Una definición clara ayudará a otros colaboradores a desarrollar el libro de forma coherente. Si ya existe un libro con la misma definición, es preferible contribuir en él en lugar de crear uno nuevo. --> == Índice == <!-- Sustituye estos capítulos de ejemplo por los definitivos, respetando la política de nombrado de subpáginas. --> # [[/Capítulo de ejemplo A/]] # [[/Capítulo de ejemplo B/]] # [[/Capítulo de ejemplo C/]] <!-- Sustituye esta categoría por la que corresponda al libro. --> <includeonly> [[Categoría:Libros pendientes de categorizar]] </includeonly> iopsunxh5hurzycoz40nlkjlcdq51rv 428426 428425 2026-07-20T10:13:41Z Antimundo 74354 Añadir documentación 428426 wikitext text/x-wiki <!-- Este es un modelo para crear un nuevo libro. Sustituye este texto por una breve descripción que explique el tema del libro, a qué lectores va dirigido, cuál es su alcance, y cualquier otra consideración que quieras hacer sobre el libro. Una definición clara ayudará a otros colaboradores a desarrollar el libro de forma coherente. Si ya existe un libro con la misma definición, es preferible contribuir en él en lugar de crear uno nuevo. --> == Índice == <!-- Sustituye estos capítulos de ejemplo por los definitivos, respetando la política de nombrado de subpáginas. --> # [[/Capítulo de ejemplo A/]] # [[/Capítulo de ejemplo B/]] # [[/Capítulo de ejemplo C/]] <!-- Sustituye esta categoría por la que corresponda al libro. --> <includeonly> [[Categoría:Libros pendientes de categorizar]] </includeonly> <noinclude> {{Documentación}} </noinclude> bj70bc1n2q939dl5f61lrzuisp4h4ph Estructuras de datos dinámicas 0 15586 428394 428046 2026-07-19T18:38:50Z Antimundo 74354 Simplificar sintaxis wiki 428394 wikitext text/x-wiki {{Portada libro}} ==Objetivo== Este libro está dirigido principalmente a estudiantes de la carrera de Ingeniería en Sistemas. Está basado en el temario de la materia "Diseño e Implementación de Estructuras de Datos", de la Universidad Tecnológica Nacional, Facultad Regional Santa Fe, Argentina. == Contenido == # [[/Soporte teórico/]] # [[/Estructuras lineales/]] # [[/Árboles/]] # [[/Colas de prioridad y montones/]] # [[/Tablas Hash/]] # [[/Grafos/]] # [[/Algoritmos de optimización/]] # [[/Algoritmos de búsqueda/]] # [[/Algoritmos de ordenamiento/]] ---- * [[Estructuras de datos dinámicas/Texto completo|'''Texto completo''']]: Aquí se encuentra todo el texto de este libro. <noinclude> {{Estantes|Programación informática}} </noinclude> 0r3hcs785qw15astoxtjzl11a94dnjo Psicología Social: La exclusión social 0 15974 428429 222990 2026-07-20T10:47:20Z Antimundo 74354 Libro de dudosa cabida 428429 wikitext text/x-wiki {{Borrar|Página abandonada que desde que fue creada hace casi 20 años prácticamente no ha recibido ningún contenido (siendo la mayoría de ediciones vandalismos y las reversiones de estos vandalismos), el contenido sigue siendo un índice comentado con apuntes, sin el desarrollo necesario para constituir un libro didáctico, además carece de referencias, y es un texto original con obra y seña de su autor. En su estado actual no cumple la finalidad educativa propia de Wikilibros y se asemeja más a un borrador o proyecto de libro que a un libro propiamente dicho, por lo que su cabida resulta dudosa.}} '''La exclusión social''' Autor: Jordi Bonet i Martí (IGOP) La finalidad de este wikilibro es introducir al lector a una de las problemáticas más acuciantes de las sociedades contemporáneas: la exclusión social. Frente a una sociedad cada vez más autosatisfecha consigo misma, dónde de tanto en tanto, vemos asomarse a través de los medios de comunicación o en una charla con nuestros vecinos y amigos, desgarradoras historias de desamparo y de pobreza. Historias que no se ubican en realidades lejanas, sino que deambulan por los aceras de nuestras calles, detrás de los muros de nuestros barrios, sin que a menudo les prestemos demasiada atención: mujeres maltratadas, personas mayores condenadas al ostracismo social, familias que deben sobrevivir con escasisimos recursos económicos y personas migrantes que evitan andar por determinadas zonas de la ciudad por miedo a ser detenidas y expulsadas a sus países de origen. La mirada que os proponemos no parte sin embargo de la victimización, sino de la necesidad de una ética relacional de apertura y escucha al otro, que asuma colectivamente la responsabilidad de la inclusión ==1. ¿Qué es la exclusión social?== En los últimos años el término exclusión social ha venido a substituir al de pobreza, que había dominado el debate sobre la cuestión social durante la época moderna y contemporánea. El motivo de la sustitución fue que el término pobreza se consideraba demasiado reduccionista e insuficiente para dar cuenta de las nuevas formas de vulnerabilidad surgidas a raíz de las recientes transformaciones sociales en el mercado del trabajo, la estructura familiar y el sistema de protección social. Sin embargo, a fin de entender en mejor medida las distintas teorías sobre la exclusión social, y dado que todavía distintos autores prefieren utilizar el término pobreza nos basaremos '''Teorías culturalistas''' La Escuela de Chicago, la cultura de la pobreza y las teorías de la underclass '''Teorías basadas en el vínculo social''' Simmel, Paugam, Castel ''' Teorías estructuralistas''' Marx, Townsend Bourdieu, '''Teorías basadas en el acceso a recursos''' La teoría de capacidades de Amartya Send, Las teorías del capital social: Portes, Granovetter, Del paradigma de la pobreza al paradigma de la exclusión La exclusión social como fenómeno estructural: tendencias sociales. La exclusión social como fenómeno dinámico: trayectorias de exclusión . La exclusión social como fenómeno multidimensional: dimensiones asociadas. La exclusión social como fenómeno multifactorial: factores sociales relacionados. La exclusión social como fenómeno politizable: la construcción de una agenda política. ==2. ¿Quienes son los excluidos?== Ciertos grupos sociales que estan impedidos de participar en aspectos considerados como valiosos en la vida colectiva. Perfiles de exclusión social: análisis de los colectivos vulnerables Infancia y jóvenes en riesgo Los hogares desestructurados, el fracaso escolar La feminización de la pobreza La asunción integra de la atención a personas dependendientes Las mujeres que encabezan hogares monoparentales La transformación de las estructuras familiares tradicionales La sobrecarga doméstica dificulta sus posibilidades de inserción en el mercado de trabajo y el desarrollo de un proyecto vital autónomo Las mujeres pertenecientes a etnias o colectivos minorizados Los Sin Papeles La intensifición de los flujos migratorios Las personas mayores Envejecimiento y sobreenvejicimiento poblacional Del parado al precario La transformación del mercado de trabajo sometido a la lógica de la desregulación y la flexibilización. El parado de largo duración fruto de los procesos de reestructuración laboral ha dado lugar a una nueva figura el precario. Si bien esta figura se hace más llevadera en el caso de los jovenes, que pueden disponer todavía de cierto colchón familiar para mitigar los efectos de la precariedad, la situación deviene más grave a medida que subimos en edad La aparición del mileurista Las deficiencias formativas La familiriarización de la vulnerabilidad Los sin hogar El estigma Ex-presos, personas con trastornos psíquicos, discapacidades ==3. ¿Cúales son las causas de la exclusión?== Factores de vulnerabilidad Factores de protección ==4 Glosario== Adicciones Apoyo social Diversidad funcional Estigma Exclusión Feminización de la pobreza Inclusión Monoparentalidad Pobreza Redes Sociales Rentas mínimas de inserción Resiliencia Segregación Servicios Sociales ==6 Bibliografia== Subirats (2006) Fragilidades vecinas: narraciones biográficas desde la exclusión social. Madrid: Icaria joxly9y51rjxaxgsapsp4a9bokghdoi 428430 428429 2026-07-20T10:47:42Z Antimundo 74354 errata 428430 wikitext text/x-wiki {{Libro de dudosa cabida|Página abandonada que desde que fue creada hace casi 20 años prácticamente no ha recibido ningún contenido (siendo la mayoría de ediciones vandalismos y las reversiones de estos vandalismos), el contenido sigue siendo un índice comentado con apuntes, sin el desarrollo necesario para constituir un libro didáctico, además carece de referencias, y es un texto original con obra y seña de su autor. En su estado actual no cumple la finalidad educativa propia de Wikilibros y se asemeja más a un borrador o proyecto de libro que a un libro propiamente dicho, por lo que su cabida resulta dudosa.}} '''La exclusión social''' Autor: Jordi Bonet i Martí (IGOP) La finalidad de este wikilibro es introducir al lector a una de las problemáticas más acuciantes de las sociedades contemporáneas: la exclusión social. Frente a una sociedad cada vez más autosatisfecha consigo misma, dónde de tanto en tanto, vemos asomarse a través de los medios de comunicación o en una charla con nuestros vecinos y amigos, desgarradoras historias de desamparo y de pobreza. Historias que no se ubican en realidades lejanas, sino que deambulan por los aceras de nuestras calles, detrás de los muros de nuestros barrios, sin que a menudo les prestemos demasiada atención: mujeres maltratadas, personas mayores condenadas al ostracismo social, familias que deben sobrevivir con escasisimos recursos económicos y personas migrantes que evitan andar por determinadas zonas de la ciudad por miedo a ser detenidas y expulsadas a sus países de origen. La mirada que os proponemos no parte sin embargo de la victimización, sino de la necesidad de una ética relacional de apertura y escucha al otro, que asuma colectivamente la responsabilidad de la inclusión ==1. ¿Qué es la exclusión social?== En los últimos años el término exclusión social ha venido a substituir al de pobreza, que había dominado el debate sobre la cuestión social durante la época moderna y contemporánea. El motivo de la sustitución fue que el término pobreza se consideraba demasiado reduccionista e insuficiente para dar cuenta de las nuevas formas de vulnerabilidad surgidas a raíz de las recientes transformaciones sociales en el mercado del trabajo, la estructura familiar y el sistema de protección social. Sin embargo, a fin de entender en mejor medida las distintas teorías sobre la exclusión social, y dado que todavía distintos autores prefieren utilizar el término pobreza nos basaremos '''Teorías culturalistas''' La Escuela de Chicago, la cultura de la pobreza y las teorías de la underclass '''Teorías basadas en el vínculo social''' Simmel, Paugam, Castel ''' Teorías estructuralistas''' Marx, Townsend Bourdieu, '''Teorías basadas en el acceso a recursos''' La teoría de capacidades de Amartya Send, Las teorías del capital social: Portes, Granovetter, Del paradigma de la pobreza al paradigma de la exclusión La exclusión social como fenómeno estructural: tendencias sociales. La exclusión social como fenómeno dinámico: trayectorias de exclusión . La exclusión social como fenómeno multidimensional: dimensiones asociadas. La exclusión social como fenómeno multifactorial: factores sociales relacionados. La exclusión social como fenómeno politizable: la construcción de una agenda política. ==2. ¿Quienes son los excluidos?== Ciertos grupos sociales que estan impedidos de participar en aspectos considerados como valiosos en la vida colectiva. Perfiles de exclusión social: análisis de los colectivos vulnerables Infancia y jóvenes en riesgo Los hogares desestructurados, el fracaso escolar La feminización de la pobreza La asunción integra de la atención a personas dependendientes Las mujeres que encabezan hogares monoparentales La transformación de las estructuras familiares tradicionales La sobrecarga doméstica dificulta sus posibilidades de inserción en el mercado de trabajo y el desarrollo de un proyecto vital autónomo Las mujeres pertenecientes a etnias o colectivos minorizados Los Sin Papeles La intensifición de los flujos migratorios Las personas mayores Envejecimiento y sobreenvejicimiento poblacional Del parado al precario La transformación del mercado de trabajo sometido a la lógica de la desregulación y la flexibilización. El parado de largo duración fruto de los procesos de reestructuración laboral ha dado lugar a una nueva figura el precario. Si bien esta figura se hace más llevadera en el caso de los jovenes, que pueden disponer todavía de cierto colchón familiar para mitigar los efectos de la precariedad, la situación deviene más grave a medida que subimos en edad La aparición del mileurista Las deficiencias formativas La familiriarización de la vulnerabilidad Los sin hogar El estigma Ex-presos, personas con trastornos psíquicos, discapacidades ==3. ¿Cúales son las causas de la exclusión?== Factores de vulnerabilidad Factores de protección ==4 Glosario== Adicciones Apoyo social Diversidad funcional Estigma Exclusión Feminización de la pobreza Inclusión Monoparentalidad Pobreza Redes Sociales Rentas mínimas de inserción Resiliencia Segregación Servicios Sociales ==6 Bibliografia== Subirats (2006) Fragilidades vecinas: narraciones biográficas desde la exclusión social. Madrid: Icaria aw90bzzipf0znblr2b0a0z87utikitq C sharp NET/Capítulo 28 0 16125 428444 305110 2026-07-20T11:03:59Z Antimundo 74354 Categorizar usando AutoCat 428444 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 27|Capítulo 27|C sharp NET/Capítulo 29|Capítulo 29}} ='''Manejo de puertos con Mono y C#'''= <br /> <br /> ==Introducción== El objetivo de este capitulo es mostrar como usar la implementación de System.IO.Ports, que hace posible leer y escribir en un puerto serie (RS-232) con Mono. ==Limitaciones== En este momento existen una serie de limitaciones a tomar en cuenta. 1) No hay un evento que notifique la recepción de datos. Si deseas recibir información, hay que establecer un tiempo de espera (timeout) y observar si se reciben datos con ''ReadByte()'' cuando consideres que debe estar enviando información. 2) Debe leerse los datos en un vector de bytes (byte[]) ya que no hay soporte para vectores de caracteres (char[]) o strings, por lo que se debe traducir los bytes recibidos al '''encodig''' deseado. 3) Las funciones ''DiscardNull'', ''ParityReplace'', ''ReceivedBytesThreshold'' no están implementadas. ===Código de ejemplo=== Este codigo puede usarse para probar una conexión via un MODEM serial conectado al puerto /dev/ttyS0 using System; using System.IO.Ports; public class SerialPortTest { public static void Main(string[] args) { SerialPortTest myTest = new SerialPortTest(); myTest.Test(); } private SerialPort mySerial; // Constructor public SerialPortTest() { } public void Test() { if (mySerial != null) if (mySerial.IsOpen) mySerial.Close(); mySerial = new SerialPort("/dev/ttyS0", 38400); mySerial.Open(); mySerial.ReadTimeout = 400; SendData("ATI3\r"); // Should output some information about your modem firmware Console.WriteLine(ReadData()); } public string ReadData() { byte tmpByte; string rxString = ""; tmpByte = (byte) mySerial.ReadByte(); while (tmpByte != 255) { rxString += ((char) tmpByte); tmpByte = (byte) mySerial.ReadByte(); } return rxString; } public bool SendData(string Data) { mySerial.Write(Data); return true; } } Grabe este programa en un archivo con extensión .cs (por ejemplo SerialExample.cs). Entonces compílelo con la siguiente instrucción: gmcs SerialExample.cs Nota. Es importante que use gmcs en lugar mcs Y puede ejecutar el resultado de la siguiente manera: mono SerialExample.exe Suponiendo que esté conectado un MODEM serial, el programa deberá registrar la siguiente salida: $ mono SerialExample.exe Sportster 14,400/FAX RS Rev. 1.5 OK Ahora puede acceder su dispositivo serie en Linux desarrollando con Mono ==Puntos a considerar== Un punto clave a tener en cuenta es que el usuario que ejecute la aplicación debe de tener permisos sobre el fichero del controlador del puerto, esto se verifica ejecutando la siguiente instrucción dentro de la consola. ls -l /dev/ttyS0 Donde /dev/ttyS0 es el puerto con el que quieres establecer comunicación (no hay que perder de vista que en Linux los puertos son tratados como archivos) El resultado del comando será una lista de los permisos sobre el puerto, por ejemplo $ ls -l /dev/ttyS0 crw-rw---- 1 root dialout 4, 64 2007-05-25 10:28 /dev/ttyS0 Donde las letras tienen los siguientes significados: c - Dispositivo de caracteres (tty o impresora) r - Permiso de lectura w - Permiso de escritura Esta es la estructura de los permisos -rw- rw- r-- |||| ||| |||-----------> Acceso para alguien que no es dueño (other) |||| ||| ----------------> Acceso para miembros del grupo (group) |||| ----------------------> Acceso para el dueño (user) |-------------------------> Tipo de archivo (archivo, directorio, dispositivo, etc) Si el usuario no tiene permisos se lanza una excepción IOException, por lo que es importante validar los permisos asignados con el usuario que se ejecuta la aplicación. ==Links relacionados== Aquí hay unos links que podrían ser de utilidad. .NET Serial Port Library (http://sourceforge.net/projects/serialportnet/) Este proyecto tiene como objetivo implementar el namespace System.IO.Ports por completo para el framework 1.1 de .NET. {{nav|C sharp NET/Capítulo 27|Capítulo 27|C sharp NET/Capítulo 29|Capítulo 29}} {{AutoCat}} kbj49gzgsa94xs7ap2jjlycjhv73e2o Medicina Veterinaria 0 16657 428346 427292 2026-07-19T12:13:14Z Antimundo 74354 Categorizar usando estantes 428346 wikitext text/x-wiki {{Portada libro}} {{Mejorar formato}} __NOTOC__ == Apuntes de Veterinaria == <div style="float:right;background-color:#dedede;padding:30px;margin:15px;margin-right:85px;"> ==Contenido Rápido== # [[/Recomendaciones generales|Recomendaciones Generales]] # [[/Señales de alarma frecuentes|Señales de alarma frecuentes]] # [[/Enfermedades infecciosas|Enfermedades infecciosas]] # [[/Enfermedades parasitarias|Enfermedades parasitarias]] #[[/Zoonosis|Zoonosis]] # Dermatología # Cardiología # Fluidoterapia # Oftalmología # Apéndices # [[/Editores|Lista de colaboradores]] </div> ==Contenido== # [[/Recomendaciones generales|Recomendaciones Generales]] # [[/Señales de alarma frecuentes|Señales de alarma frecuentes]] ## [[/Señales de alarma frecuentes#Anorexia en Felinos|Anorexia en Felinos]] ## [[/Señales de alarma frecuentes#Constipación en Felinos|Constipación en Felinos]] # [[/Enfermedades infecciosas|Enfermedades infecciosas]] ## [[/Enfermedades infecciosas#Bacterianas|Bacterianas]] ## [[/Enfermedades infecciosas#Virales|Virales]] ## [[/Enfermedades infecciosas#Micóticas|Micóticas]] ## [[/Enfermedades infecciosas#Vacunación|Vacunación]] # [[/Enfermedades parasitarias|Enfermedades parasitarias]] ## [[/Enfermedades parasitarias/Breve clasificación|Breve clasificación]] ## [[/Enfermedades parasitarias/Desparasitación vs. exámenes complementarios|Desparasitación vs. exámenes complementarios]] ## [[/Enfermedades parasitarias/Filariasis|Filariasis]] ## [[/Enfermedades parasitarias/Parásitos intestinales|Parásitos intestinales]] ## [[/Enfermedades parasitarias/Hemobartonelosis|Hemobartonelosis]] ## [[/Enfermedades parasitarias/Toxoplasmosis|Toxoplasmosis]] ## [[/Enfermedades parasitarias/Giardiasis|Giardiasis]] ## [[/Enfermedades parasitarias/Sarnas|Sarnas]] #[[/Zoonosis|Zoonosis]] ## [[/Zoonosis#Definición de zoonosis|Definición de zoonosis]] ## [[/Zoonosis#Listado de zoonosis|Listado de zoonosis]] # Dermatología ## [[/Dermatología/Lesiones dermatológicas|Lesiones dermatológicas]] ## [[/Dermatología/Diferentes tipos de dermatosis|Diferentes tipos de dermatosis]] ## [[/Dermatología/Alopecía|Alopecía]]: causas # Cardiología ## [[/Cardiología/Soplos|Soplos]] ## [[/Cardiología/Estenosis Aórtica|Estenosis Aórtica]] ## [[/Cardiología/Estenosis pulmonar|Estenosis pulmonar]] ## [[/Cardiología/Conducto Arterioso Persistente|Conducto Arterioso Persistente]] ## [[/Cardiología/Tetralogía de Fallot|Tetralogía de Fallot]] ## [[/Cardiología/Fibrilación y Aleteo auricular|Fibrilación y Aleteo auricular]] ## [[/Cardiología/Insuficiencia Cardíaca Congestiva|Insuficiencia Cardíaca Congestiva]] ## [[/Cardiología/Paro o Bloqueo Sinusal|Paro o Bloqueo Sinusal]] ## [[/Cardiología/Efusión pericárdica|Efusión pericárdica]] ## [[/Cardiología/Cardiomiopatías felinas|Cardiomiopatías felinas]] # Fluidoterapia ##[[/Fluidoterapia/Definición de fluidoterapia|Definición de fluidoterapia]] ## [[/Fluidoterapia/Principios de la fluidoterapia|Principios de la fluidoterapia]] ## [[/Fluidoterapia/Soluciones parenterales|Soluciones parenterales]] ## [[/Fluidoterapia/Administración intraósea de fluidos|Administración intraósea de fluidos]] ## [[/Fluidoterapia/Indicaciones de la fluidoterapia|Indicaciones de la fluidoterapia]] ## [[/Fluidoterapia/Complicaciones de la fluidoterapia|Complicaciones de la fluidoterapia]] # Oftalmología ## [[/Oftalmología/Patologías más frecuentes en oftalmología|Patologías más frecuentes en oftalmología]] ## [[/Oftalmología/Uveitis|Uveitis]] ## [[/Oftalmología/Queratoconjuntivitis seca|Queratoconjuntivitis seca (QCS)]] ## [[/Oftalmología/Afecciones congénitas|Afecciones congénitas]] ## [[/Oftalmología/Retinopatías|Retinopatías]] ## [[/Oftalmología/Patologías de la dinámica palpebral|Patologías de la dinámica palpebral]] ## [[/Oftalmología/Fondo de ojo|Fondo de ojo-imágenes]] # Apéndices ## [[/Apéndices/Signos clínicos|Signos clínicos/Etilogías]] ## [[/Apéndices/Cuadros|Algoritmos/Cuadros]] ## [[/Apéndices/Imágenes|Imágenes]] # [[/Editores|Lista de colaboradores]] ==Véase también== En wikipedia: * [[w:Veterinaria|Veterinaria]] * [[w:Zoología|Zoología]] * [[w:Fisiología|Fisiología]] * [[w:Biología|Biología]] En wikiversity: * [[v:Zoología|Zoología]] * [[v:Fisiología|Fisiología]] * [[v:Biología general|Biología general]] {{Estantes|Ciencias de la salud}} a928q8qsymu9y84tvouzlbv3yzs17b8 Manual básico de ANT 0 18811 428404 199908 2026-07-19T20:27:29Z Mazbel 57931 +cat 428404 wikitext text/x-wiki '''[[Apache Ant]]''' es una herramienta usada en [[w:programación|programación]] (véase [[Fundamentos de programación]]) para la realización de tareas mecánicas y repetitivas, normalmente durante la fase de [[w:compilación|compilación]] y construcción (build). Es similar a Make pero desarrollado en lenguaje Java y requiere la plataforma Java. Esta herramienta, hecha en el [[w:lenguaje de programación|lenguaje de programación]] [[w:Java (lenguaje de programación)|Java]], tiene la ventaja de no depender de las órdenes del [[w:Intérprete de comandos|shell]] de cada sistema operativo, sino que se basa en archivos de configuración [[w:XML|XML]] y clases Java para la realización de las distintas tareas, siendo idónea como solución multi-plataforma. = Ejecución de Apache Ant = == ¿Qué se necesita para ejecutar ANT? == Para utilizar ANT basta con disponer de una distribución binaria de ANT y tener instalado la versión 1.4 o superior del [[w:JDK|JDK]]. La distribución binaria consiste en la siguiente estructura de directorios: ant +--- bin // contains launcher scripts | +--- lib // contains Ant jars plus necessary dependencies | +--- docs // contains documentation | +--- ant2 // a brief description of ant2 requirements | | | +--- images // various logos for html documentation | | | +--- manual // Ant documentation (a must read ;-) | +--- etc // contains xsl goodies to: // - create an enhanced report from xml output of various tasks. // - migrate your build files and get rid of 'deprecated' warning // - ... and more ;-) De dichos directorios, sólo se necesitan bin y lib para ejecutar ANT. == Algunas consideraciones a tener en cuenta == * Al ser una herramienta basada en XML, los archivos Ant deben ser escritos en XML. * La mayoría de las antiguas herramientas — las que se usan todos los días, como <javac>, <exec> y <java> — tienen malas configuraciones por defecto, valores para opciones que no son coherentes con las tareas más recientes. * Cuando se expanden las propiedades en una cadena o un elemento de texto, las propiedades no definidas no son planteadas como error, sino que se dejan como una referencia sin expandir (ej.: ${unassigned.property}). * No es un lenguaje para un flujo de trabajo general, y no debería ser usado como tal. == Ejecución de ANT == Para ejecutar ANT basta con escribir '''ant''' en la línea de comandos. Si se ha especificado la ejecución de un objetivo por defecto en la cabecera del proyecto del fichero build.xml no es necesario el uso de ningún parámetro ya que, como acabamos de ver en el ejemplo anterior, se ejecutara este por defecto. Para utilizar un buildfile diferente de build.xml hay que añadir el parámetro -buildfile nombre_fichero, donde nombre_fichero es el buildfile que se quiere utilizar: ant -buildfile buildfile_alt.xml Si se desea ejecutar uno o varios objetivos concretos, se debe añadir el nombre de este o estos objetivos en la línea de comandos vv: ant clean En este caso se ignorará el objetivo indicado en la cabecera del proyecto. = Configuración = Una vez obtenida la anterior distribución de ANT, se deben seguir los siguientes pasos: - Añadir el directorio "bin" al path. - Asignar a la variable de entorno "ANT_HOME" la ruta donde se ha instalado ANT. - Opcionalmente, asignar a la variable de entorno "JAVA_HOME" la ruta donde se ha instalado el JDK. Dependiendo del sistema operativo en el que nos encontremos tendremos los siguientes ejemplos de configuración: '''Windows y OS/2'''<br /> (Suponiendo que se ha instalado ANT en c:\ant\) set ANT_HOME=c:\ant<br /> set JAVA_HOME=c:\jdk1.2.2<br /> set PATH=%PATH%;%ANT_HOME%\bin<br /> '''Unix (bash)'''<br /> (Suponiendo que se ha instalado ANT en /usr/local/ant)<br /> export ANT_HOME=/usr/local/ant<br /> export JAVA_HOME=/usr/local/jdk-1.2.2<br /> export PATH=${PATH}:${ANT_HOME}/bin<br /> '''Unix (csh)'''<br /> setenv ANT_HOME /usr/local/ant<br /> setenv JAVA_HOME /usr/local/jdk-1.2.2<br /> set path=( $path $ANT_HOME/bin ) == Estructura de un fichero build.xml == Los ficheros buildfiles de ANT están escritos en XML. Cada buildfile contiene un proyecto (project) y al menos un objetivo (target). Cada objetivo puede contener varias tareas (task) que son fragmentos de código a ejecutar. Un proyecto, además, puede constar de diversas propiedades. Cada propiedad consta de nombre y valor y son usadas para asignar valores a los atributos de los task. La estructura de un fichero buildfile podría ser la siguiente: buildfile +--- project // proyecto del buildfile + +--- property_1 +--- property_2 +--- target_1 // objetivo_1 | | | +--- task_1 // tarea 1 de target_1 | +--- target_2 // objetivo_2 | | | +--- task_1 // tarea 1 de target_2 | +--- task_2 // tarea 2 de target_2 | +--- target_3 // objetivo_3 | +--- task_1 // tarea 1 de target_3 == Ejemplo de buildfile == A continuación se muestra un ejemplo de un archivo build.xml: <project name="MyProject" default="dist" basedir="."> <description> simple example build file </description> <!-- set global properties for this build --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <!-- Create the time stamp --> <tstamp/> <!-- Create the build directory structure used by compile --> <mkdir dir="${build}"/> </target> <target name="compile" depends="init" description="compile the source " > <!-- Compile the java code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target> <target name="dist" depends="compile" description="generate the distribution" > <!-- Create the distribution directory --> <mkdir dir="${dist}/lib"/> <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file --> <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/> </target> <target name="clean" description="clean up" > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project> La primera línea se corresponde con el proyecto que compone el buildfile, en ella pueden aparecer los siguientes atributos: - name = "MyProject": identifica el nombre del proyecto - default = "dist": identifica el objetivo que se ejecuta por defecto, en caso de no especificarle uno en concreto. - basedir = ".": directorio base sobre el que vamos a trabajar. En este ejemplo se trabajaría sobre el directorio actual. A continuación aparecen un listado de propiedades, su declaración se compone del literal property y los atributos name para especificar el nombre y location para asignarles un valor. <property name="src" location="src"/> Lo siguiente que aparece en el ejemplo son los objetivos. El primero de ellos es '''init''': <target name="init"> <tstamp/> <mkdir dir="${build}"/> </target> Como se mencionó anteriormente, un objetivo esta compuesto por una o varias tareas, en este caso tenemos las tareas '''tstamp''' y '''mkdir''', las cuales muestran la fecha y crean el directorio descrito por la propiedad build respectivamente. El siguiente objetivo que aparece es '''compile''' <target name="compile" depends="init" description="compile the source " > <javac srcdir="${src}" destdir="${build}"/> </target> En la declaración del objetivo podemos ver los siguiente atributos: - name = "compile": identifica el nombre del objetivo - depends = "init": identifica el objetivo que se debe ejecutar antes de lanzarse el actual. En este caso se debe ejecutar previamente el objetivo init (mostrar la fecha del sistema y crear un directorio) antes de ejecutar este objetivo. - description = "compile the source": breve descripción de lo que hace el objetivo. El cuerpo del objetivo está formado por la tarea '''javac''', que toma los ficheros fuente ubicados en la ruta indicada por el atributo ''srcdir'' y los compila en ''destdir''. El siguiente objetivo que compone el buildfile es '''dist'''. <target name="dist" depends="compile" description="generate the distribution" > <mkdir dir="${dist}/lib"/> <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/> </target> En este caso, '''dist''' depende del objetivo '''compile''' para ejecutarse, luego, antes de lanzar sus tareas se debe haber ejecutado '''compile'''. En este objetivo aparece la tarea '''mkdir''' descrita anteriormente y '''jar''', esta tarea construye un jar con el nombre MyProject concatenado con la fecha del sistema (DSTAMP) a partir de los compilados en el directorio indicado por la propiedad ''build''. Por ultimo tenemos el objetivo '''clean''' <target name="clean" description="clean up" > <delete dir="${build}"/> <delete dir="${dist}"/> </target> Compuesto por 2 tareas '''delete'''. Simplemente borra los directorios temporales necesarios para la creación del jar. Si repasamos la cabecera del proyecto, vemos que por defecto llama al objetivo '''dist''', el cual depende de '''compile''' y este a su vez de '''init''', por lo que el orden lógico de ejecución de este build.xml es: Ejecutar objetivo '''init''' - mostrar fecha de sistema - crear directorio build<br /> Ejecutar objetivo '''compile''' - compilar fuentes de src y guardarlos en build<br /> Ejecutar objetivo '''dist''' - crear directorio lib - crear jar a partir de los compilados El objetivo '''clean''' no depende del resto y tampoco se especifica en la cabecera del proyecto, por lo que se debe referenciar de forma explicita en la línea de comandos para que se ejecute. Otro ejemplo de build.xmlpuede ser el siguiente: <pre> <?xml version="1.0" encoding="UTF-8"?> <project name="projetWar" basedir="." default="checkstyle"> <property name="base.dir" value="../" /> <property name="baseTool.dir" value="../../outils/" /> <property name="src.dir" value="${base.dir}src" /> <property name="build.dir" value="${base.dir}webapp/WEB-INF/classes" /> <property name="doc" location="${base.dir}doc" /> <property name="lib" location="${base.dir}lib" /> <property name="reports" value="${baseTool.dir}/rapports" /> <property name="classpath" value="${build.dir}" /> <taskdef resource="checkstyletask.properties" classpath="${baseTool.dir}checkstyle-4.0-beta6/checkstyle-all-4.0-beta6.jar" /> <target name="reports" depends="checkstyle, classcycle, findbugs, jdepend"> <echo>Génération des rapports terminé.</echo> </target> <target name="jdepend"> <delete dir="${reports}/jdepend/" /> <mkdir dir="${reports}/jdepend/" /> <java classname="jdepend.xmlui.JDepend" fork="yes"> <classpath> <fileset dir="${baseTool.dir}/jdepend/" includes="**/*.jar" /> </classpath> <arg value="-file" /> <arg value="${reports}/jdepend/jdepend-report.xml" /> <arg value="${build.dir}" /> </java> <style basedir="${reports}/jdepend/" destdir="${reports}/jdepend/" includes="jdepend-report.xml" style="${baseTool.dir}/jdepend/jdepend.xsl" /> </target> <taskdef classpath="${baseTool.dir}findbugs-0.9.1/lib/findbugs-ant.jar" name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" /> <property name="findbugs.home" value="${baseTool.dir}findbugs-0.9.1/" /> <target name="findbugs"> <delete dir="${reports}/findbugs/" /> <mkdir dir="${reports}/findbugs/" /> <findbugs home="${findbugs.home}" output="html" outputFile="${reports}/findbugs/bcel-fb.html"> <classpath> </classpath> <sourcePath path="${src.dir}" /> <class location="${build.dir}" /> </findbugs> </target> <taskdef classpath="${baseTool.dir}/Classycle/classycle.jar" name="classycleReport" classname="classycle.ant.ReportTask" /> <target name="classcycle"> <delete dir="${reports}/classycle/" /> <mkdir dir="${reports}/classycle/" /> <classycleReport reportFile="${reports}/classycle/classycle.xml"> <fileset dir="${build.dir}"> <include name="**/*.class" /> </fileset> </classycleReport> <style in="${reports}/classycle/classycle.xml" out="${reports}/classycle/classycle.html" style="${baseTool.dir}/Classycle/reportXMLtoHTML.xsl" /> <copydir dest="${reports}/classycle/images" src="${baseTool.dir}/Classycle/images"> </copydir> </target> <target name="init"> <!-- création d'un répertoire pour la compilation --> <mkdir dir="${build.dir}" /> </target> <target name="checkstyle" description="Generates a report of code convention violations."> <delete dir="${reports}/checkstyle/" /> <mkdir dir="${reports}/checkstyle/" /> <checkstyle config="${baseTool.dir}/checkstyle-4.0-beta6/sun_checks.xml" failureProperty="checkstyle.failure" failOnViolation="false"> <classpath> <!-- use the value of the ${classpath} property in the classpath --> <pathelement path="${classpath}" /> <!-- include all jar files --> <fileset dir="${lib}"> <include name="**/*.jar" /> </fileset> <fileset dir="\var\www\jakarta-tomcat-4.0.6-LE-jdk14\common\lib"> <include name="**/*.jar" /> </fileset> </classpath> <formatter type="xml" tofile="${reports}/checkstyle/checkstyle_report.xml" /> <fileset dir="${src.dir}"> <include name="**/*.java" /> </fileset> </checkstyle> <style in="${reports}/checkstyle/checkstyle_report.xml" out="${reports}/checkstyle/index.html" style="${baseTool.dir}/checkstyle-4.0-beta6/contrib/checkstyle-noframes-sorted.xsl" /> </target> <target name="compil" depends="cleanTomcat"> <echo>Compilation des sources java</echo> <!-- compilation des sources Java --> <javac srcdir="${src.dir}" destdir="${build.dir}"> <classpath> <!-- use the value of the ${classpath} property in the classpath --> <pathelement path="${classpath}" /> <!-- include all jar files --> <fileset dir="${lib}"> <include name="**/*.jar" /> </fileset> <fileset dir="\var\www\jakarta-tomcat-4.0.6-LE-jdk14\common\lib"> <include name="**/*.jar" /> </fileset> </classpath> </javac> </target> <target name="compilJUnit"> <echo>Compilation des sources Junit</echo> <!-- compilation des sources Java --> <javac srcdir="tests" destdir="tests"> <classpath path="c:/eclipse3.1-WTP/plugins/org.junit_3.8.1/"> <!-- use the value of the ${classpath} property in the classpath --> <pathelement path="${classpath}" /> <!-- include all jar files --> <fileset dir="${lib}"> <include name="**/*.jar" /> </fileset> <fileset dir="\var\www\jakarta-tomcat-4.0.6-LE-jdk14\common\lib"> <include name="**/*.jar" /> </fileset> </classpath> </javac> </target> <target name="doc" depends="compil" description="Generation de la documentation"> <delete dir="${doc}/" /> <mkdir dir="${doc}/" /> <javadoc destdir="${doc}/" author="true" version="true" use="true" package="true"> <fileset dir="${src.dir}"> <include name="**/*.java" /> <exclude name="**/*Test*" /> </fileset> <classpath> <pathelement path="${java.class.path}" /> </classpath> </javadoc> </target> <target name="clean"> <delete dir="${build.dir}" /> </target> <target name="all" depends="init ,compil, doc" description="Generation complete"> <echo message="Generation complete." /> </target> <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpath="${baseTool.dir}/pmd-bin-3.3/pmd-3.3/lib/pmd-3.3.jar" /> <target name="pmd"> <delete dir="${reports}/pmd/" /> <mkdir dir="${reports}/pmd/" /> <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpath="${baseTool.dir}/pmd-bin-3.3/pmd-3.3/lib/pmd-3.3.jar" /> <pmd rulesetfiles="rulesets/optimizations.xml"> <formatter type="xml" toFile="${reports}/pmd/report_pmd.xml"/> <fileset dir="${src.dir}"> <include name="**/*.java" /> </fileset> </pmd> <xslt in="${reports}/pmd/report_pmd.xml" style="${baseTool.dir}/pmd-bin-3.3/pmd-3.3/etc/xslt/pmd-report-per-class.xslt" out="${reports}/pmd/report_pmd.html" /> </target> </project> </pre> == Ejemplo para una aplicación Hola Mundo == === Fichero de ejemplo <code>build.xml</code> === Debajo se muestra un archivo de ejemplo (build.xml) para una aplicación "Hola mundo" en Java. El archivo define cuatro objetivos - ''clean'', ''[[:m:w:en:Clobber_(computing)|clobber]]'', ''compile'' y ''jar'', cada uno de los cuales tiene una descripción asociada. El objetivo ''jar'' lista el objetivo ''compile'' como dependencia. Esto le dice a ANT que, antes de empezar el objetivo ''jar'', debe completar el objetivo ''compile''. Dentro de cada '''objetivo''' están las '''acciones''' que debe tomar ANT para construirlo (el objetivo); éstas se realizan usando tareas (''tasks'') incluidas (''built-in''). Por ejemplo, para construir el objetivo ''compile'', ANT debe primero crear un [[w:directorio|directorio]] llamado classes (ANT sólo lo hará si éste no existe previamente) y luego llamar al compilador de Java. Por lo tanto, las ''tareas'' utilizadas son ''mkdir'' y ''javac''. Éstos realizan una tarea similar a las utilidades de [[w:línea de comandos|línea de comandos]] del mismo nombre. Otra tarea usada en este ejemplo se llama ''jar'': <source lang="xml"> <jar destfile="hello.jar"> </source> Esta tarea de Apache Ant se llama igual que la utilidad de línea de comandos común de Java, [[w:JAR (formato de archivo)|JAR]], pero es en realidad una llamada al soporte de archivos jar/zip de Ant. Este detalle no es relevante para la mayoría de los usuarios finales, que obtienen el JAR que querían, con los archivos que pidieron. Muchas de las tareas Ant delegan su trabajo a los programas externos, ya sean nativos o Java. Utilizan <exec> propia Ant y tareas <java> configurar las líneas de comandos, y manejar todos los detalles de la cartografía (mapeo) de la información en el fichero de construcción a los argumentos del programa y la interpretación del valor de retorno. Los usuarios pueden ver a las tareas hacer esto (por ejemplo, <cvs>, <signjar>, <chmod>, <rpm>), al tratar de ejecutar la tarea en un sistema sin el programa subyacente en la [[w:ruta (informática)|ruta]] del sistema de archivos, o sin un [[w:Kit de desarrollo|conjunto de desarrollo]] Java (JDK) completo instalado. <source lang="xml"> <?xml version="1.0"?> <project name="Hello" default="compile"> <target name="clean" description="borrar archivos temporales"> <delete dir="classes"/> </target> <target name="clobber" depends="clean" description="eliminar todos los archivos artefacto"> <delete file="hello.jar"/> </target> <target name="compile" description="compilar el código java a un archivo class"> <mkdir dir="classes"/> <javac srcdir="." destdir="classes"/> </target> <target name="jar" depends="compile" description="crear un archivo Jar para la aplicación"> <jar destfile="hello.jar"> <fileset dir="classes" includes="**/*.class"/> <manifest> <attribute name="Main-Class" value="HelloProgram"/> </manifest> </jar> </target> </project> </source> = Portabilidad = Una de las primeras ayudas de Ant fue solucionar los problemas de portabilidad de [[w:Make|Make]]. En un ''Makefile'' las acciones necesarias para crear un objetivo se especifican como órdenes de [[Introducción a Linux/Consola|Intérprete de comandos]] que son específicos de la [[w:plataforma|plataforma]], normalmente un [[w:shell|shell]] de [[w:Unix|UNIX]]. Ant resuelve este problema proveyendo una gran cantidad de funcionalidades por él mismo, que pueden garantizar que permanecerán (casi) idénticas en todas las plataformas. Por ejemplo, en el ejemplo <code>build.xml</code> debajo del objetivo ''clean'' borra el directorio <code>classes</code> y todo su contenido. En un Makefile esto normalmente se haría con la orden: rm -rf classes/ <code>[[w:rm (Unix)|rm]]</code> (véase [[:m:b:es:Manual_de_consola_Bash_de_Linux|el manual de la consola Bash]]) es una orden específica de [[w:UNIX|UNIX]], que probablemente no estará disponible si el Makefile se usa en un entorno no Unix como [[w:Microsoft Windows|Windows]]. En un archivo de construcción Ant se puede conseguir lo mismo usando una orden propia: <delete dir="classes" /> Una discrepancia común entre diferentes plataformas es la manera en que las rutas de directorios se especifican. Unix usa la barra (/) para delimitar los componentes de una ruta, mientras que Windows usa la barra invertida (\). Los archivos de Ant permiten al autor elegir su convención favorita, barras o barras invertidas para directorios, comas o punto y coma para separar rutas. Ant lo convierte todo al formato apropiado para la plataforma actual. = Referencias = == Bibliografía == Para ampliar conocimientos en el uso de ANT, por favor consultar el siguiente enlace: http://ant.apache.org/manual/ {{Estantes|Programación informática}} [[Categoría:Software libre]] [[Categoría:Informática]] sapbwz4albcag28qyryrvtwajqg66pr Separación de San Mateo Atenco del Marquesado del Valle en 1575 0 18902 428428 137681 2026-07-20T10:33:48Z Antimundo 74354 Borrar 428428 wikitext text/x-wiki {{Borrar|[[WL:BR#L1]]. Se trata de un artículo de investigación histórica con análisis e interpretaciones del autor, presentado como un trabajo académico, y no de un libro o material didáctico elaborado de forma colaborativa. En consecuencia, incumple [[WL:NOES]], en particular los apartados «Wikilibros no es un repositorio de textos originales» (investigación original y ensayo) y «Wikilibros no es una enciclopedia».}} La exención de San Mateo Atenco del Marquesado del Valle y de la Villa de Toluca == LA EXPULSIÓN DE UNA ESTANCIA DE GANADO MENOR DEL PUEBLO DE SAN MATEO ATENCO DEL MARQUESADO DEL VALLE Y DE LA VILLA DE TOLUCA EN LAS POSTRIMERÍAS DEL SIGLO XVI == '''Martín Moscosa Almazán Facultad de Humanidades, U.A.E.M.''' Para el estudio que pretendemos realizar sobre las causas de la expulsión de una estancia de ganado menor, propiedad del marqués del Valle, en la última parte del siglo XVI, de San Mateo Atenco hemos empleado únicamente la información contenida en siete relaciones de probanzas hechas, tanto por parte del fiscal de su Majestad como por parte del Marqués del Valle, don Martín Cortés para la realización de este litigio. ''(AGI,passim)'' Estas probanzas en realidad son un resumen de los más de 25 interrogatorios extensos que se tienen identificados en el documento original y abordan temas relacionados con la conquista del valle de Matlatzinco por Axayácatl en 1478, el movimiento migratorio de sus habitantes y la llegada de pobladores indígenas de otras regiones, sobre el reparto que hizo éste a sus aliados de las tierras conquistadas, el uso que le dio al territorio ubicado en las márgenes del río Chiconaguatenco (hoy Lerma) así como la fundación de Atenco, sus límites territoriales y el poblamiento que ordenó el mismo Hernán Cortés de una estancia de ganado menor en el lugar, tema que será descrito en esta ocasión. Estas probanzas fueron sacadas del proceso original el 25 marzo de 1577 como parte de una solicitud de traslado que hizo el marqués en el Real Consejo de Indias para los autos que hubieran de hacerse en grado de segundas suplicaciones y fueron ordenadas por el escribano de Su Majestad, Sancho López de Agurto, el 19 de diciembre de 1576 ya que el documento original es muy extenso y que tal vez por comodidad los jueces conocieron el asunto y emitieron su fallo judicial mediante estas probanzas. Consideramos que para entender correctamente el sentido de lo que aquí expondremos, debemos aclarar primeramente algunos conceptos básicos, con la finalidad de que el lector se familiarice con algunos de términos legales empleados en los litigios judiciales durante el siglo XVI así como algunos términos que se encuentran en desuso en la actualidad. En primera instancia, el lector debe saber que el término probanza se emplea de manera continua en este trabajo de investigación, y se deberá tener en cuenta que “una probanza es una averiguación o prueba de que jurídicamente se hace algo”. Una estancia es una hacienda de campo destinada al cultivo y más especialmente a la ganadería. Sin embargo, la palabra estancia en si tiene dos connotaciones, ya que también se emplea para designar a algún sujeto relativamente lejano de una cabecera. Así mismo, el lector debe saber que la palabra hacienda en el siglo XVI se refería también al conjunto de bienes y riquezas que se poseían y no confundirla con la evocación que hoy se le da como una finca de campo y/o cultivo. Una mojonera es el lugar o sitio donde se ponen señales permanentes para fijar los linderos que señalan la confrontación de dos términos o jurisdicciones. De las siete probanzas mencionadas, cuatro están orientadas a solventar el tema de los límites territoriales y condiciones de sujeción de Atenco y las otras tres se refieren a la estancia de ganado menor del Marqués y que había sido establecido en Atenco. Este ha sido el criterio de ordenación que decidimos emplear para este estudio. A través del estudio de estas siete probanzas pretendemos explicar las causales que provocaran el fallo a favor del pueblo de Atenco en contra del Marquesado del Valle y de la villa de Toluca y la consecución de dos objetivos principales: la exención o autonomía del pueblo de Atenco del Marquesado del Valle y de la villa de Toluca; así como lograr la expulsión de la estancia de ganado menor del Marqués, asentada en el territorio de Atenco. Cabe aclarar que la estancia de ganado menor del Marqués a la que nos referiremos estaba compuesta inicialmente por ganado porcino, aunque más tarde fue complementada con ganado ovino y vacuno. Como podremos observar en estas probanzas, existen contradicciones entre lo que declararon los testigos de cada parte. Esta situación es normal, ya que como en cualquier litigio, cada una de las partes declaraba lo que le convenía a sus intereses particulares. Para efectos de cumplir con los objetivos propuestos en el cronograma, presentamos un avance preliminar de lo que será el trabajo de investigación. Cabe hacer notar que estamos presentando únicamente lo que se dijo en las probanzas sobre el tema de la estancia de ganado del Marqués en San Mateo Atenco y sobre la separación jurídica del marquesado del Valle y la jurisdiccional de la villa de Toluca de San Mateo Atenco y que por el momento no presentaremos ninguna comparación con lo que han escrito otros autores sobre la temática abordada, ni fundamentando teóricamente nada todavía. Únicamente tratamos de dilucidar lo que está contenido en las probanzas para poder tener una visión mas amplia de lo que sucedió en este litigio tan interesante, en el que una pequeña comunidad venció jurídicamente a una entidad tan poderosa como lo fue el Marquesado del Valle. Para ello, dividiremos el estudio de las probanzas en dos. En la primera parte desarrollaremos el tema de la estancia de ganado y en la segunda trataremos de encontrar los elementos que permitieron la separación jurídica de Atenco del marquesado y la jurisdiccional de la villa de Toluca, tomando en cuenta únicamente los testimonios aportados en las probanzas. La finalidad de hacer las cosas de esta manera es facilitar al lector la comprensión de lo que se trata en el litigio original, “traduciendo” el lenguaje jurídico empleado en el litigio del siglo XVI a uno más entendible por el lector contemporáneo.   '''Probanzas sobre la expulsión de la estancia de ganado de Atenco''' '''a)Relación sacada de la probanza hecha por parte de los indios de Atenco en el pleito que tratan con don Martín Cortés, marqués del Valle, sobre la estancia de ganado menor que tiene en el dicho pueblo.''' Comenzaremos esta exposición diciendo que esta probanza fue realizada por parte de los indios de Atenco en relación a la estancia de ganado que tenía Martín Cortés en el territorio de Atenco. El sentido que se le dio a esta probanza fue probar que la estancia de ganado menor de Cortés, así como los negros capataces de ella, era perjudicial a los intereses de los habitantes de Atenco, causándoles múltiples incomodidades y problemas en sus sementeras y hogares, convirtiéndose ésta una relación de agravios hechos hacia los indios de San Mateo Atenco a finales del siglo XVI, siendo denunciados en esta probanza. Básicamente, ésta probanza se dividió en dos partes. En la primera se trata de demostrar que la decisión que tomó Cortés de establecer la estancia en Atenco les fue muy perjudicial a los indios que ya vivían en Atenco al tiempo de la ocupación ganadera y en la segunda parte se acusó al marquesado, así como a la villa de Toluca, de haber antepuesto sus intereses particulares –fundamentalmente económicos— y haber provocado con ello la migración de tributarios hacia otros lugares porque no se administraba justicia. Está compuesta de diez preguntas realizadas a indios que declararon a favor de Atenco y que provenían de lugares como Calimaya, Metepec, Capulhuac y Tepezoyuca, es decir, lugares muy cercanos a Atenco. En la segunda pregunta comienza el fiscal tratando de demostrar que Atenco estaba ya fundado antes de que Hernán Cortés ordenara llevar su estancia de ganado al territorio atenquense. En las respuestas dadas por los testigos a esta cuestión se abordaron diversos aspectos. Mencionaron la existencia de entre 50 a 140 casas de indios mexicanos y matlatzincas; declararon sobre la ubicación cercana de la iglesia, dedicada a la advocación de San Mateo; hicieron también referencia a una peste que en tiempos prehispánicos había afectado seriamente a la población, provocando un descenso demográfico y como consecuencia de ello hubo un despoblamiento importante en la región y por último se declaró también que cuando la estancia de ganado del Marqués llegó a Atenco, ya era considerada la población como pueblo de por sí. Todas estas declaraciones tenían como propósito demostrar que Atenco estaba ya considerado en la antigüedad, por tener población suficiente, como un pueblo de por si, pero que a causa de una peste, su población disminuyó y que por esta razón la contraparte argumentaba que Atenco no era un pueblo de por si, sino un lugar con muy poca población, con un territorio adecuado para el establecimiento de la estancia de ganado. En la tercera pregunta, el fiscal alegó que la estancia de ganado menor, los negros –que eran los capataces de los indígenas— así como los perros –animales que eran dedicados al pastoreo— les eran muy perjudiciales, ya que la famosa estancia se puso dentro del territorio destinado para que los indios de Atenco pudieran vivir y cultivar sus parcelas y que por ello, el ganado hacía estragos, tanto a los indios como a sus sementeras. En este sentido, los testigos declararon que el ganado se comía el maíz; que los negros abusaban de ellos y les robaban el alimento y que los perros los mordían, tanto a los indios como a sus puercos, y que también se comían sus alimentos, por lo que estaba afectada seriamente su subsistencia así como la obtención del cereal que debían entregar como concepto de pago de tributo y que por estas causas se había originado una ola migratoria de indios tributarios hacia otros pueblos comarcanos, situación considerada alarmante. La cuarta pregunta buscaba mostrar todos los perjuicios que los de Atenco sufrían a causa del cuidado que tenían que tener al ganado del marqués, ya que ellos, de acuerdo con lo sugerido en esta pregunta, tenían que dejar de sembrar y no podían sostenerse y como consecuencia de esto, no tenían para pagar el tributo establecido en la tasación, situación que era grave. Asimismo, respondieron que por el miedo que tenían a que el ganado se comiera lo que sembraban, preferían no hacerlo y que por esta causa tenían que irse a lugares remotos para poder cultivar sus sementeras. Como podemos ver, en esta pregunta se trata de reafirmar lo dicho en la tercera pregunta, resaltando la cuestión de la migración de los tributarios a causa de los daños recibidos por el ganado marquesano. [Yo considero que el criterio que se aplicó por parte las autoridades españolas fue la “fuga” de tributarios y no tanto el asunto humanitarios que los indios no tuvieran que comer, sino que por razones económicas y en pro de los españoles, se falló en beneficio de los indios.] La quinta pregunta de la probanza buscaba ratificar que la estancia del marqués perjudicaba en mucho a los indios, diciendo que era muy notorio los graves perjuicios que acarreaba a su población tener a esta estancia de ganado dentro de su territorio de subsistencia, es por ello que se hizo hincapié en expresar que era muy perjudicial para los de Atenco. A partir de la sexta pregunta, los de Atenco cambiaron su estrategia y toman un rol ofensivo, acusando al Marqués de autoritario y de establecer su estancia ganadera en el lugar sin importarle que el territorio estuviera ya ocupado por ellos, tratando evidentemente con ello de demostrar que la estancia de ganado les afectó demasiado y que era necesario que fuera expulsada del lugar, ya que no traía ningún provecho a sus habitantes. Además, se acusaba a la villa de Toluca de ser cómplice de este acto. Los indios declararon nuevamente que por cuidar al ganado no atendían adecuadamente sus sembradíos, que cuidaban al ganado en contra de su voluntad y que además eran muy mal pagados por esta clase de servicio, además de ser maltratados por sus capataces negros. En la séptima pregunta se aborda la problemática de los capataces negros, sobre la autoridad que tenían los mismos sobre los indígenas así como del miedo que les provocaban ya que les robaban y violaban a sus mujeres y que las autoridades no hacían nada para protegerlos ya que la justicia únicamente se preocupaba por obtener beneficios personales y de hacer su propia voluntad. Los testigos respondieron que efectivamente los negros abusaban de los indios y que se metían a sus casas a robarles sus pertenencias, sin embargo, ninguno de ellos declaró nada con respecto a la violación de las mujeres. No dudemos que esta pregunta tal vez exageraba un poco la situación que era vivida por los indígenas. Sin embargo, existieron precisiones como las que hizo Alonso de León, quién dijo que había visto que un sábado de tianguis los negros robaban a los indios que ahí vendían sus productos. En este tenor, Thomás de Gaona dijo que había visto a los negros entrar a las casas de los indios en contra de su voluntad, pero que no sabía que era lo que hacían ahí dentro. También se mencionó que aunque los indios se quejaban de los abusos de que eran objeto, las autoridades de Toluca no les hacían caso alguno, situación que les incomodaba y afectaba mucho, ya que se encontraban en un estado de indefensión por parte de la autoridad. En la octava pregunta se vuelve a poner el dedo sobre la llaga. Se les preguntó a los testigos si sabían que los perros causaban múltiples vejaciones a los indios al entrar a sus casas para comerse sus alimentos y atemorizarlos al ser atacados por ellos, sin poder hacer nada por miedo a las represalias que los capataces negros emprendían contra ellos. En esta pregunta no se aclara cual era la manera de proceder de los negros en contra de los indios, sin embargo, en líneas anteriores vimos que los negros también se introducían a las casas y les robaban sus pertenencias. Al ser los negros sus capataces, no podemos dudar que los indios fueran golpeados y maltratados severamente por ellos, por lo que no se atrevían a defenderse y estaban recurriendo a la justicia de la Audiencia de México en su auxilio, ya que la justicia local, ubicada en la villa de Toluca, ignoraba sus reclamos. Los testigos respondieron a este cuestionamiento de manera positiva y confirmaron que los perros se comían los huevos, tortillas y mazorcas que tenían almacenadas en sus casas y que también causaban múltiples destrozos en sus sementeras, ya que derribaban las cañas de maíz y que incluso se comían el maíz de las mazorcas, por lo que sus cosechas se veían disminuidas, afectando con ello su subsistencia así como el tributo que debían entregar, ya que no podía dejar de pagarse. Podemos intuir por esto último que los indios tenían que anteponer el pago de tributo a su propia alimentación y que al reponer el cereal que estaba destinado al pago de tributo, y que había sido devastado por los perros, su fuente de subsistencia se encontraba mermada por esta causa. El asunto de la migración de indios tributarios se tocó en la novena pregunta de esta probanza. Se trató de probar que a causa del maltrato que sufrían los indios por causa de sus capataces negros, de sus perros, así como del mismo ganado marquesano, los indios preferían migrar hacia otras poblaciones comarcanas, especialmente los indios que se dedicaban a la pesca. Los testigos habían respondido que efectivamente sabían que éstas eran causa de que indios de Atenco, así como sus familias, migraran hacia otros pueblos como Capulhuac, Zinacantepec, Tlalasco, Ocoyoacac, Calimaya y Metepec, ya que su patrimonio y su propia subsistencia se encontraban en riesgo. Todos estos pueblos eran circunvecinos de Atenco. Además, los testigos dijeron que sólo unos cuantos de ellos regresaron a su localidad. Por último, la décima pregunta sólo buscaba determinar si los hechos eran públicos y notorios, como para saber si cualquier persona pudiera dar fe de lo expuesto, contestando los testigos afirmativamente. Podemos concluir que esta probanza buscaba precisamente probar que la estancia de ganado del marqués había acarreado muchos males y perjuicios a los indios de Atenco. La obligación de cuidar del ganado marquesano les impedía a los indios solventar otros asuntos trascendentes como era la consecución de su propio sustento y las afectaciones recibidas para poder reunir el cereal para el pago del tributo. La cercanía misma de la población con el sitio destinado al cuidado del ganado marquesano era un factor que incidía en la vida de los indios atenquenses. Existieron por lo tanto tres causas principales que los de Atenco esgrimieron para solicitar la expulsión del ganado del marqués de su territorio: • Que el ganado del marqués se comía el maíz de las parcelas, afectando con ello el sustento de los indios y reduciendo la posibilidad de reunir la media hanega de maíz que debía ser entregada como parte del tributo tasado; • Que los perros también ocasionaban destrozos en los maizales, por lo que afectaban la producción del cereal cultivado y; • Que los negros que habitaban en la estancia también ocasionaban perjuicios a los indios, que se metían a sus casas para robarse sus alimentos; además, solían maltratar y vejar a los indios de Atenco. Además de lo anterior, los indios a pesar de que se quejaban ante las autoridades, no eran atendidos, ya que la justicia se encontraba en la villa de Toluca y que sólo actuaba en medida de lo que el marqués dispusiera. '''b)Relación sacada de la probanza hecha por parte de don Martín Cortés, marqués del Valle, sobre que se quite una estancia de ganado menor que tiene el dicho Marqués, ha tenido y tiene junto a donde está poblada ahora la estancia de Atenco.''' Esta probanza fue promovida por parte del marquesado en contra del fiscal de Su Majestad para defender su posición con respecto a la posesión de una estancia de ganado menor en el territorio de Atenco. Para ello, se auxilió de testigos indios principales de lugares como Atenco, Jalatlaco y Zinacantepec y testigos españoles de la villa de Toluca. El marquesado trató de probar su dicho utilizando a varios testigos de Atenco, lo que le significó un revés, ya que éstos declararon siempre a favor de su propia causa, como se verá más adelante. Esta probanza está compuesta de cuatro preguntas y por medio de ella el marqués trató de demostrar que cuando se estableció la estancia en Atenco, en el lugar no había una población indígena considerable y que por ello no serían agraviados por el poblamiento de ganado y que la cerca de adobe que se había construido serviría para proteger las sementeras del ganado y así no causar perjuicios a los indios. Asimismo, que los indios de Atenco eran los custodios del ganado por mandado de los que había gobernado a la Nueva España; que sí se les remuneraba por este servicio y que, a pesar de ello, los indios emprendían acciones dolosas, como el derribo de partes de la cerca, para dañar sus propias sementeras y así justificar la retirada de la estancia de ganado del marqués de las tierras de Atenco. A la segunda pregunta, referente al momento del establecimiento de la estancia de ganado por mandato directo de Hernán Cortés y antes de que se poblara más de los que se encontraba al momento del juicio, los testigos indígenas de Atenco respondieron que antes de que se conquistara la Nueva España, en el lugar habían más de 120 casas de funcionarios mexicanos y matlatzincas, quienes estaban encargados del cuidado de las trojes de Moctezuma pero que hubo una peste que causó gran mortandad, por lo que la población disminuyó y que por ello los españoles encontraron el lugar casi despoblado. Sobre el asunto de la cerca, dijeron que existían salidas para que el ganado pudiera salir a pastar, sin embargo, que habían derribado parte de la cerca con el objeto de hacer una zanja que tuviera la misma finalidad que la dicha cerca, sin embargo, durante una inundación se ahogaron muchos corderos, por lo que tuvieron que rellenarla –con material de la misma cerca-- para evitar que volviera a suceder esto. Por el lado de los testigos españoles, éstos declararon que, cuando llegaron al lugar, no había una población muy grande, únicamente unas cuantas casas ocupadas por custodios de las trojes de Moctezuma y que por ello la estancia se había poblado de puercos antes que de personas y que al no haber gente suficiente que cuidara del ganado, acudían a realizar este trabajo indios desde Tlacotepec. Estaban enterados que por el año de 1535 ya se había construido una cerca que tenía como finalidad proteger las sementeras de los indios; además que ésta tenía entradas y salidas para que el ganado pudiera salir a pastar y no perjudicaran los sembradíos y que a pesar de que se había deteriorado se había reparado, sin embargo, hacía tres meses (ya en 1575, después de 40 años) los indios la habían derribado para poder construir más casas dentro de la estancia de ganado y que habían levantado algunas cruces. Como podemos observar, los españoles difirieron con lo que dijeron los indígenas en cuanto al objetivo de derribar la cerca, diciendo que los indígenas lo hicieron con dolo y para poder ampliar el terreno en donde estaban asentados y construir más casas. Sin embargo, los naturales dijeron que únicamente lo hicieron para tapar una zanja que se inundaba y salvaguardar con ésta acción la integridad de la estancia de ganado del marqués. La tercera pregunta tenía por objeto dilucidar dos cuestiones: la primera era saber si la cerca se había construido para que el ganado no pudiera hacer daño a los sembradíos y la segunda era que si los indios de Atenco le habían hecho “portillos” intencionalmente a la cerca para que entrara el ganado a dañar las sementeras y encontrar con ello una excusa de queja y poder decir que el ganado les era perjudicial. Como puede apreciarse, la intención de esta pregunta era únicamente afirmar que los indígenas habían realizado actos intencionales para decir que la estancia de ganado les era perjudicial. Para el caso de las respuestas de los testigos indígenas, éstos repitieron que la estancia de ganado se pobló y fundó en un sitio que ya se encontraba ocupado antes de que Cortés se comenzara a servir de la villa de Toluca y que antes de la llegada de los españoles, en el lugar se encontraban las trojes de Moctezuma y que las tierras de donde se obtenía el maíz que ahí se almacenaba, eran trabajadas por los naturales de los pueblos comarcanos. Los testigos no mencionaron nada sobre que hicieran “portillos” de manera intencional para que el ganado entrara a dañar sus sementeras ni que el derribar una parte de la cerca fuera para encontrar motivo de queja en contra del ganado del marqués. Diego Mixcóatl, principal de Atenco, ratificó lo declarado en la pregunta anterior y confesó que había una cerca entre Atenco y la estancia de ganado y que junto a ésta había una zanja, la cual, en época de lluvias, se inundaba y que por ello se ahogaban algunas ovejas. Dijo también que por este último hecho, el español que residía en la estancia, les pedía al alcalde, regidores y principales y a los demás indios de Atenco le pagaran las ovejas que se le ahogaban y que viéndose molestados por este hecho, los indios de Atenco acordaron derribar la cerca “y dejaron cierto adobe y tierra de la pared de ella en la dicha zanja” para taparla y evitar que las ovejas se siguieran ahogando. Los testigos españoles, quienes eran todos vecinos de la villa de Toluca, dijeron que sabían que entre Atenco y la estancia de ganado menor estaba hecha una pared, la cual no solamente defendía y guardaba que el ganado de ella no hiciera daño a las sementeras de los indios; y que por ello traían sus caballos y puercos. Y estando la cerca sin daños, como solía estar, por ninguna vía podían los naturales de Atenco recibir daño alguno del ganado. Y que hacía dos o tres meses los indios la habían derribado y llenado unas zanjas que estaban junto a la pared y que a causa de lo anterior los ganados de la estancia y de otras partes podían entrar libremente a hacer daño a las sementeras de los indios. En este sentido, Francisco Rodríguez Magallanes dijo que los indios lo habían hecho con malicia y al fin y efecto de poder alegar que el ganado les hacía mucho daño. Podemos resumir entonces que las dos partes coincidieron que la cerca se había levantado con la finalidad de que las sementeras estuvieran resguardadas y que no sufrieran daño por parte del ganado del marqués, sin embargo, ésta se encontraba parcialmente destruida. Los naturales no aceptaron que dañaron la cerca con la intención de que el ganado les dañara las sementeras, sino que habían derribado una parte para tapar las zanjas para que no se inundaran y no se ahogaran las ovejas, mientras que los de Toluca afirmaron que lo hicieron con la intención de que el ganado entrara a hacer daño a sus sementeras y así tener motivo de queja en contra del ganado del marqués. La cuarta pregunta buscaba probar que el trabajo de cuidado del ganado del marqués era una actividad remuneradora y que se les pagaba a los indios por este servicio, que lo hacían de manera voluntaria y que por ello no habían recibido daño alguno. Nuevamente las respuestas se dividieron. Los testigos de Atenco, aunque contestaron que sí se les pagaba por el cuidado del ganado, agregaron que la estancia estaba asentada entre sus casas y junto a la Iglesia y que no tenían más espacio para hacer más casas sino hacia la parte donde está la estancia y consideraban que los indios eran agraviados y perjudicados por esta causa porque estaba muy cerca de donde ellos vivían. Francisco Zacarías dijo además que los perros de la estancia les mordían las puercas que tenían paridas y que los indios que guardaban el ganado “andaban todo el año alejados y fuera de sus casas, pasando gran trabajo de noche y de día en el campo entre los hielos y aguas.” Asimismo, Francisco Matheo volvió a tocar el tema sobre los negros diciendo que éstos entraban en sus casas y Diego Mixcóatl dijo que también los negros maltrataban a los indios e indias, haciéndoles otras molestias. Los indios aprovechaban cualquier oportunidad para resaltar que tanto los indios, los negros y los perros les causaban muchos agravios y perjuicios, convirtiéndose los interrogatorios en una relación de quejas sobre los daños recibidos. Por otro lado, los testigos españoles manifestaron lo contrario a lo declarado por los indios. Por ejemplo, Joan Nieto dijo que las personas que tenían arrendada la estancia de ganado habían tenido mucho cuidado y vigilaban que el ganado no hiciera daño a los naturales; que el ganado era resguardado por los naturales de Atenco por mandado del marqués y que por ello los reservaba a otros servicios y que se les pagaba medio real cada día a cada uno y un real al alguacil que los llevaba cada lunes. Creían los testigos españoles que los indios tenían grandes beneficios a causa de la estancia porque obtenían granjerías de la lana y esquilar, carne y otras cosas. Alonso Pérez, español y vecino de la villa de Toluca, quien era el arrendatario de la estancia de ganado, dijo que los indios obtenían grandes utilidades a causa de la estancia de ganado, incluso Francisco Rodríguez Magallanes, también español, dijo que sabía que muchos de los naturales de Atenco eran ricos por causa de la estancia de ganado. Otro español, Pedro Arvallo, dijo que otro de los beneficios de tener la estancia de ganado ahí era que podían estercolar sus sementeras. Los españoles nunca dijeron que el cuidado del ganado del marqués por parte de indios de Atenco se hiciera de manera voluntaria sino que se hacía por mandato del Marqués, a pesar de ser un servicio remunerado. Como ha podido observarse, esta probanza no le salió muy bien al Marqués, ya que al llamar como testigos a indios de la parte contraria, es decir, de Atenco, éstos aprovecharon para hacer una defensa a su propia postura, aprovechando cada oportunidad para hacer notar los perjuicios que el ganado del marqués les provocaba en su territorio –así como les afectaban los negros y los perros– y que no los dejaba desarrollarse de manera plena. En cambio, los testigos españoles, quienes eran vecinos de la villa de Toluca, pusieron todo su empeño para demostrar que la estancia no les causaría daño alguno a los indios de Atenco si la cerca se encontrara en óptimas condiciones, situación rebatida por los indios de Atenco que dijeron que si la cerca se encontraba dañada fue por salvaguardar al ganado mismo y evitar que se ahogara en las zanjas llenas de agua al rellenarlas con el material de la cerca. Los testigos españoles también mencionaron que otra de las causas del deterioro de la cerca era a causa de que los indios la derribaban para poder construir más casas. Esto último nos indica un crecimiento demográfico en el lugar, es decir, un aumento en el número de tributarios que demandaban más tierras para cultivo y establecimiento de viviendas. '''c)Relación sacada de la probanza hecha por parte de don Martín Cortés, marqués del Valle, en el pleito que contra él tratan el fiscal de Su Majestad sobre la estancia de ganado menor que tiene en el sitio de la estancia de Atengo, sujeta a la villa de Toluca.''' ''' ''' En esta averiguación se abordaron dos problemáticas que ya se habían tratado en la probanza anterior, denotando con ello la importancia que el marquesado le daba a éstas para la resolución a su favor, que fueron la poca población en Atenco al momento de llegar el ganado del marqués y los medios que se habían empleado para salvaguardar la integridad de las sementeras de los indios de Atenco. Primeramente, el abogado del marqués argumentó, nuevamente, que al momento de asentar y poblar la estancia de ganado menor en Atenco no había un considerable número de habitantes que pudieran sentirse agraviados por la colocación de la famosa estancia en el lugar y que antes que perjudicarlos, les beneficiaba. El segundo argumento retomado fue que la cerca que se había levantado alrededor de la estancia tenía por objetivo proteger sus sementeras pero que los indios dolosamente la habían derribado para tener motivos de quejas en contra de la estancia de ganado menor y agregaron en esta probanza un tercer argumento consistente en recalcar que los indios de Atenco, maliciosamente, habían comenzado a cultivar y construir casas dentro del terreno destinado al cuidado del ganado marquesano, aun cuando tenían tierras suficientes en otros lugares para hacer lo anterior, en una clara muestra de desafío. Para contestar a esta probanza intervinieron testigos españoles e indígenas, residentes ellos en la villa de Toluca, Huitzizilapa, Jilotzingo, Tlacotepec y Otzolotepec. La segunda y tercer pregunta son muy similares entre sí, lo que denota la importancia que los abogados del marqués le daban al asunto. En ambas se preguntó a los testigos si sabían que cuando se fundó la estancia de ganado, en el lugar había muy pocos habitantes, fundamentalmente guardias de las trojes de Moctezuma, y que las tierras del lugar se hallaban sin cultivar. A la segunda pregunta los testigos españoles dijeron cuando llegaron al lugar únicamente había entre 8 y 10 casas de guardias de las trojes imperiales, por lo que no se había hecho perjuicio a nadie. Por la parte de los testigos indígenas, que declaraban a favor de Toluca y del Marqués, dijeron que las tierras eran cenagales, estaban baldías y eran zacatales. A la tercera pregunta los testigos indígenas que respondieron dijeron que había entre seis y siete habitantes en la localidad, que vivían en unos jacales y que se dedicaban al cuidado de las trojes de Moctezuma. Que al momento de llevar al lugar al ganado de Cortés, se quedaron a servirle, lo cual les fue de mucho provecho y no les perjudicó en nada. La segunda parte de la probanza tocaba el tema de la construcción de la cerca y su parcial destrucción, temas contenidos en la cuarta y quinta pregunta respectivamente. En la cuarta interpelación se les cuestionó a los testigos si sabían que por ir a vivir al sitio donde estaban asentadas las trojes se hizo una cerca para que el ganado no pasara a los sembradíos ni a las casas de los indios asentados en el lugar. Los que respondieron a ésta fueron mayormente españoles y dijeron que desde que se había construido la cerca habían llegado a vivir al lugar muchos indios más, por lo que la localidad se hizo más grande. Que la cerca era de adobe y que además de la cerca se cavó una zanja. Uno de los testigos indios, Miguel Yaotl, natural de Cuernavaca, aclaró que los indios de Atenco habían derribado la cerca por mandato de un español que les favorecía, un tal García. La quinta pregunta se refería a que si los indios de la estancia de Atenco maliciosamente habían derribado parte de la cerca y le hicieron aberturas para que por ahí pasara el ganado del marqués a causar desmanes en las sementeras y que aprovecharon tales aberturas para hacer casas, teniendo otros lugares para hacerlo, contestaron cinco españoles y un indio. Dijeron los testigos que los indios hicieron casas alrededor de la estancia, que pusieron muchas cruces y que hicieron una iglesia dentro de la estancia de ganado, por lo que tuvieron que ponerle guardias para que no se metiera el ganado a la dicha iglesia. Hubo un español, llamado Benito Vicente que al tratar de impedir que las tierras destinadas a la estancia fueran invadidas, fue maltratado de tal manera por los indios que tuvo que huir e irse a vivir a México. Otro de los testigos, Joan Pérez, español, dijo que además de la cerca había una zanja que tenía “hasta dos estados” de agua y que nadie podía pasar por allí, sin embargo, que los indios de Atenco destruyeron parte de la cerca para rellenarla y así poder invadir los terrenos de la estancia, transitar por allí y comenzar a construir casas y labrar la tierra dentro de la estancia. El escribano de Su Majestad, Joan Ramírez, apoyaba lo dicho por Joan Pérez y agregó que los indios tenían tierras baldías hacia el lado de Metepec y de Los Reyes. Como puede apreciarse en esta segunda parte de la probanza, los abogados del marqués quisieron demostrar que los indios los estaban provocando, que eran ellos los que estaban buscando excusas para que se sacara la estancia de ganado del lugar y que eran ellos los que estaban infringiendo dolosamente las disposiciones hechas por la justicia española poblando dentro del terreno destinado a la estancia, teniendo ellos otras tierras baldías para labrar y construir casas. Que eran ellos los que se habían provocado los males de los que se quejaban, culpando de ello al ganado del marqués y así poder expulsarlo del lugar. El tercer argumento de esta probanza, referente a la malicia con la que los de Atenco habían invadido las tierras destinadas a la estancia de ganado, fue tratado en las preguntas sexta y décima. En este tenor, la sexta pregunta buscaba demostrar que en Atenco había otras tierras baldías y apartadas de la estancia de ganado, en las cuales los indios podían hacer sus casas y cultivar más sementeras. Todos los testigos así lo manifestaron, diciendo que los indios de Atenco maliciosamente construían y sembraban cerca y dentro de la estancia de Atenco para perjudicarla. En la décima pregunta [no hay una pregunta con el número nueve, probablemente ésta es la número nueve pero se le atribuyó un número diferente] se les preguntó a los testigos si sabían que cuando se llevó el ganado del marqués a Atenco no había ninguna iglesia en el lugar y que después, pudiéndola hacer lejos de la estancia, la edificaron maliciosamente muy cerca de la cerca. Los testigos contestaron a esta posición de manera positiva, apoyando la idea de que cuando se llevó la estancia de ganado no había sido construida ninguna iglesia y que si se edificó en el lugar fue para agraviar a la estancia, ya que se había podido construir en otro lugar, ya que tenían tierras suficientes en otros lugares para hacerlo. La séptima y octava preguntas fueron más generales pero con una intención bien definida. En la séptima pregunta se les cuestionó si en el valle de Toluca había otras estancias de ganado, tanto menor como mayor. Los testigos respondieron que efectivamente, había otras estancias. El propósito de esto fue demostrar que en otros lugares no había disputas como las que se estaban dirimiendo en este litigio y que los problemas de los que se quejaban los de Atenco habían sido provocados por ellos mismos para perjudicar al marqués y a la estancia de ganado de su propiedad. Finalmente, la octava pregunta tuvo por objeto conocer si los testigos sabían que el marqués tenía el cuidado necesario para que su estancia de ganado no perjudicara a indios ni a persona alguna, a lo que los testigos contestaron que los dos españoles que la tenían arrendada cuidaban muy bien de que no se afectara a nadie. Esta pregunta busca reafirmar que lo que decían los de Atenco en contra de la estancia estaba fuera de lugar ya que se tomaban las providencias necesarias para que los indios no recibieran molestias ni agravios ni en sus personas ni en sus posesiones. Podemos resumir que esta probanza tuvo como finalidad reafirmar lo dicho en la probanza anterior y además agregar que los indios de Atenco tenían la capacidad de hacer cosas que dolosamente perjudicaran al marquesado y a su estancia de ganado. Ha sido muy interesante saber que un lugar tan pequeño se enfrentara, apoyado de la justicia real, a un gigante lleno de poder, a alguien que bien podía equipararse a otro rey dentro de la Nueva España, alguien que de alguna manera había desafiado el poder real y se había constituido como justicia casi suprema de un señorío tan grande e importante como lo fue el del valle. Conclusiones de las probanzas sobre ganado menor Podemos concluir que con estas tres probanzas los de Atenco ganaron el litigio en contra del marqués para que quitara la estancia de ganado, que los argumentos presentados fueron suficientes para que la Audiencia de México y posteriormente el Consejo de Indias fallaran en contra del marqués y expulsara a la estancia de ganado del territorio de Atenco. Los testigos declarantes a favor de Atenco argumentaron siempre que Atenco había sido considerado un pueblo de por si antes de la llegada de los españoles porque tenía población suficiente para que así sucediera pero que un imponderable, como fue la peste que hubo en tiempos prehispánicos, causó gran mortandad a la población indígena, disminuyéndola tanto que prácticamente dejó el lugar deshabitado, situación que aprovechó Cortés para llevar a Atenco su estancia de ganado menor, según lo declararon los testigos que estaban a favor del marqués, don Martín Cortés. Posteriormente, hubo una recuperación demográfica tan importante en Atenco que tuvo que colocarse una cerca de adobe que rodeara la estancia de ganado para proteger las casas y las sementeras del ganado, ya que causaba grandes malestares a la población indígena al comerse éste las mazorcas y derribar además las cañas de maíz. Los testigos que declararon a favor del marqués jamás contradijeron a los de Atenco en sus dichos sobre las vejaciones que los negros y perros les hacían en sus personas y posesiones, dando la Audiencia por sentado que lo declarado por los testigos a favor de Atenco tenían la razón, incluso en las probanzas promovidas por el marqués ni siquiera se habló sobre ésta problemática. Los testigos del marqués arremetieron en contra de los de Atenco diciendo que habían dañado intencionadamente la cerca para tener motivos de queja en contra del ganado, ya que al estar en malas condiciones se metía a las sementeras y causaba grandes males al grano. Además, que aprovecharon esta situación y que edificaron casas y cultivaban nuevas sementeras dentro del terreno asignado a la estancia de ganado. Sin embargo, los de Atenco se defendieron diciendo que si se había derribado una parte de la cerca había sido porque la zanja que rodeaba la estancia se inundaba y que a causa de esto el ganado se ahogaba y que como el español que arrendaba la estancia se quejaba de esto y molestaba a los indios para que le pagaran el ganado que resultaba muerto, decidieron derribar una parte de la cerca y rellenar la zanja con el material de la dicha cerca para que ya no se ahogara el ganado. La parte de Atenco nunca mencionó nada sobre que tuvieran otros terrenos baldíos hacia Metepec y Los Reyes, ya que lo único que reclamaban era que el ganado, los negros y los perros les hacían graves agravios. Consideramos que la probanza hecha por los de Atenco estuvo mejor integrada, que los declarantes apoyaron mejor sus argumentos y no tuvieron contradicciones. Además, sus testigos no eran de Atenco, sino de lugares circunvecinos, situación que daba solidez a sus dichos ya que a diferencia de las testigos presentados por la parte del marqués, que eran en su mayoría vecinos de la villa de Toluca y/o españoles, esta situación se prestaba fácilmente a declarar lo que le conviniera al marqués sin ajustarse a la verdad, pudiendo ser aleccionados o coaccionados a declarar como lo hicieron y esta situación no podía ser ignorada por la Audiencia de México al fallar a favor de los de Atenco. Probanzas sobre la exención de Atenco Es tiempo ahora de abordar las probanzas que tratan el problema de la exención política del pueblo de Atenco del marquesado del Valle y jurisdiccional de la villa de Toluca. Para tal efecto, debemos recordar nuevamente al lector que sobre ésta temática contamos con cuatro probanzas que se encuentran contenidas en este litigio. d) Relación sacada de la probanza hecha por parte de don Martín Cortés, marqués del Valle, en el pleito con los indios de la estancia de Atenco, sujeta a la villa de Toluca, sobre la exención que los dichos indios presentan. Esta probanza está compuesta de nueve preguntas. La primera y la última, al igual que la de todas las probanzas anteriores y siguientes son generales, es decir, se aplicaron en cada una de las probanzas. La finalidad de la primera pregunta era saber si los testigos estaban enterados de lo que se trataba el interrogatorio y la última determinar que los hechos declarados en los interrogatorios por los testigos eran notorios y de conocimiento público. Es por ello que volveremos a omitir mencionarlas en ésta y en el resto de las probanzas. Esta probanza es muy interesante ya que las declaraciones vertidas en ella estaban notoriamente divididas. Contestaron indios de Atenco, que siempre declaraban en contra del marqués, pero también lo hicieron españoles avecindados en la villa de Toluca así como indios de otras localidades que, como veremos más adelante, siempre contradijeron a lo que declaraban los indios de Atenco, apoyando la postura del marqués. Participaron en esta probanza 24 testigos, distribuidos como sigue: 11 testigos españoles, vecinos de la villa de Toluca; 4 principales y 1 regidor de Atenco, 1 principal de cada uno de estos lugares: Calimaya, Tlacotepec, Xalatlaco y Tlalchichilpa además de 1 regidor de este último lugar y 1 macehual de Metepec y otro de Tenango. Sin embargo, cabe aclarar que no todos los testigos participaron en toda la probanza, sino que algunos, especialmente los españoles, contestaron en unas preguntas y otros a otras. El sentido fundamental de esta probanza fue determinar si Atenco, desde su fundación, había estado sujeto al pueblo de Toluca. Para ello, la probanza estaba compuesta de preguntas que afirmaban esta condición de Atenco. El marqués cuestionó a los testigos sobre si sabían que los caciques de Toluca pescaban en el río Lerma sin que nadie se los impidiera; que si los de Atenco eran tributarios de la villa de Toluca; que si sabían que cuando Cortés llevó su estancia de ganado a Atenco, el lugar estaba prácticamente deshabitado; que si los de Atenco oían misa y la doctrina en Toluca; que si los de Atenco habían solicitado el marqués un alcalde y finalmente que si Atenco se encontraba dentro de los límites territoriales de la villa de Toluca y que por ello acudían a los llamados que les hacían las autoridades de Toluca. Evidentemente, y como puede observarse, todas estas afirmaciones tenían por objeto demostrar que en todos los sentidos Atenco se encontraba dentro de la jurisdicción de la villa de Toluca como sujeto de ella. Veamos lo que respondieron los testigos a todas estas cuestiones. Por el origen e intereses de los testigos, las contestaciones a ésta probanza se dividieron siempre en dos, a favor y en contra de lo que se preguntó. En la segunda pregunta de esta probanza, la cuál encerraba dos preguntas en sí, el abogado del marqués preguntó primeramente a los testigos si sabían que don Hernán Cortés se había servido de la villa de Toluca y sus sujetos y en segundo lugar que si sabían que Atenco, en ese tiempo, no estaba considerado como un pueblo, sino que era únicamente el lugar donde se encontraban asentadas las trojes que habían pertenecido a Moctezuma. Los testigos que vivían en Atenco no negaron en sus declaraciones que Cortés se había comenzado a servir de los de Atenco (aunque la pregunta era acerca de Toluca) pero explicaron que antes de la llegada de los españoles Atenco era ya un pueblo de por si, sin estar sujeto a Toluca, que tenía más de 200 casas pero que si la población se había disminuido había sido por causa de la peste, quedando aproximadamente 120 casas de indios mexicanos, matlatzincas y otomíes. Lo testigos indios de Tlalchichilpa, Tlacotepec, Tenango y Calimaya declaron que, efectivamente, don Hernán Cortés se había comenzado a servir de la villa de Toluca y sus sujetos, pero nunca mencionaron que Atenco fuera sujeto de Toluca. Los testigos españoles Miguel Sánchez Crespo y Gaspar de Malvenda no mencionaron nada sobre si Cortés se había servido de Toluca y sus sujetos, únicamente se remitieron al tiempo en que ellos llegaron y argumentaron que la estancia ya estaba poblada y fundada y que en ella había una gran cantidad de puercos así como unas trojes que habían servido para almacenar el grano que pertenecía a Moctezuma; que Martín Garrocho, español, tenía a su cargo la estancia de ganado del marqués y que de ese tiempo a la fecha la población india había ido en aumento. Otro español, Joan Serrano, fue el único que tocó el tema de la sujeción de Atenco al mencionar que de ser Atenco un sujeto de Toluca entonces tributaría zacate, huevos y pescado, pero no dijo si eso ocurría. En la tercera pregunta, referente a que si los testigos sabían que los caciques de Toluca iban a pesar al río Grande (Lerma) sin que nadie se los impidiera o estorbase, por encontrarse Atenco dentro del territorio de Toluca, los testigos nuevamente dividieron sus respuestas como queda a continuación. Los testigos de Atenco sostuvieron muy claramente que Toluca si tenía sus límites en el río Grande, pero que no por la parte en la que se ubicaba Atenco, sino que precisamente su límite llegaba hasta Atenco y que Atenco tenía como límite al río entre ellos y Ocoyoacac. Además, negaron que los de Toluca pescaran a la altura de donde se encuentra Atenco. Sin embargo, los testigos españoles Miguel Sánchez Crespo y Diego Flores hablaron sobre los límites territoriales de Toluca y dijeron que Atenco cae y se incluye dentro de los límites y mojonera de la villa de Toluca. Que los naturales de Toluca habían ido a pescar al río quieta y pacíficamente. Agregaron además que vieron como los indios de Atenco iban a la villa de Toluca a los llamamientos de los caciques de ella. Y estos testigos han considerado siempre a Atenco como sujeto. Dijeron también haber visto que los naturales de Toluca pescaban en el río sin que nadie se los impidiera. Diego Flores aseguró que cuando don Martín Cortés llegó a la villa, salió a recibirle el cacique de Toluca, don Pedro, quién mandó a los de Atenco a que lo recibieran, diciendo que él era su amo, reconociendo con ello la sujeción al cacique de Toluca. Francisco Rodríguez Magallanes declaró que supo y vio además que los de la villa de Toluca habían defendido el tular que estaba más allá de Atenco, para hacer petates. Alonso Pérez dijo además que vio a los de Atenco llevar maíz en caballos como tributo a Toluca, además de zacate y pescado pero desde que llegó el marqués ya no lo llevaban, además declaró que los vio hacer una sementera, junto con los de Toluca, para llevar el maíz al marqués. ¿Por qué contestaron los testigos españoles más de lo que se les había solicitado en esta pregunta? Creemos que como sus dichos sobre los límites territoriales carecían de fuerza suficiente por no haberse encontrado presentes cuando se dio la reorganización territorial en tiempos de Axayácatl y su hermano Cacamatzin y que ellos sólo podían referirse a los tiempos de su llegada, tiempo en el cuál ya se había organizado el espacio territorial en el valle de Toluca por lo que trataron de reforzar la idea de la sujeción de Atenco al proporcionar información diferente a la solicitada. La cuarta pregunta trató de reforzar la idea de que cuando Hernán Cortés mandó poblar Atenco con la estancia de ganado menor, el lugar se encontraba prácticamente despoblado, con muy pocas personas viviendo en este territorio y que fue a raíz del dicho establecimiento de ganado que Atenco se había ido poblando. ---- == Fuentes y Bibliografía == AGI, Escribanía de Cámara, legajo 161-A, 1700 ff García Castro, René, (1999) “Los Señoríos Otomianos y el Imperio Tenochca” en Indios, territorio y poder en la provincia Matlatzinca. La negociación del espacio político de los pueblos otomianos, siglos XV-XVII, Toluca, CIESAS / CONACULTA / El Colegio Mexiquense, 1ª. Edición, pp. 35-95 ––––––––––––––––-, (1999) “La colonización hispana, los caciques y los pueblos otomianos hasta 1570” en Indios, territorio y poder en la provincia Matlatzinca. La negociación del espacio político de los pueblos otomianos, siglos XV-XVII, Toluca, CIESAS / CONACULTA / El Colegio Mexiquense, 1ª. Edición, pp. 97-168 ––––––––––––––––-, (2006) “David contra Goliat o de cómo la pequeña comunidad de San Mateo Atenco venció jurídicamente al gran marquesado del valle en los siglos XVI y XVII” en René García Castro, Ma. Teresa Jarquín Ortega, coords., La proeza histórica de un pueblo. San Mateo Atenco en el Valle de Toluca Siglos VIII-XIX, Toluca, Colegio Mexiquense / U.A.E.M., 1ª. Edición, pp. 39-75 García Martínez, Bernardo (1969) El Marquesado del valle: Tres siglos de régimen señorial en la Nueva España, México, México, El Colegio de México, 175 pp. Gibson, Charles, (1964) Los Aztecas bajo el Dominio Español. 1519-1810, México, Siglo XXI, 15ª Edición en Español, 2003 Hernández Rodríguez, Rosaura, Raymundo C. Martínez García (2006) “El pueblo de Toluca y la localidad de San Mateo Atenco en el siglo XVI” en René García Castro, Ma. Teresa Jarquín Ortega, coords., La proeza histórica de un pueblo. San Mateo Atenco en el Valle de Toluca Siglos VIII-XIX, Toluca, Colegio Mexiquense / U.A.E.M., 1ª. Edición, pp. 109-114 [[Categoría:Libros pendientes de categorizar]] kd5cxfe6vtt2f9hpxr5hr32fvuggg3j Plantilla:+Portada 10 19100 428412 427976 2026-07-20T01:02:44Z Mazbel 57931 Quitando cat 428412 wikitext text/x-wiki __NOTOC__ {| {{+Tabla|{{Variable|ancho|60%}}}} class="plainlinks" | {{+Celda|relleno=10|borde={{RGB|{{Variable|tono}}9}}|fondo={{RGB|{{Variable|tono}}2}}|alinear=justify|columnas=6|vertical=top|redondeo={{Variable|redondeo}}}}|{{+Portada/encabezado |t ={{{título|{{{nombre|{{PAGENAME}}}}}}}} |s ={{{subtítulo|{{Variable|subtítulo}}}}} |at ={{Variable|alineartit}} |info={{{nombre|{{PAGENAME}}}}}/Info |img =auto |i ={{{imagen|{{Variable|imagen}}}}} |ai =center |ti =250px }} |---- |{{+Celda|2|110%|90%|center|{{RGB|{{Variable|tonosección}}9}}|{{RGB|{{Variable|tonosección}}3}}||{{Variable|redondeo}}|33.33%|font-weight:bolder;|2|alto=40px}}|{{#ifeq:{{NAMESPACE}}|Plantilla|Índice|{{#ifexist:{{{nombre}}}/Índice|[[{{{nombre}}}/Índice|Índice]]|<span class="plainlinks" style="font-size:80%">[{{fullurl:{{{nombre}}}/Índice|action=edit&preload=Plantilla:%2BPortada/%2BÍndice}} Crear un índice]</span>}}}} |{{+Celda|2|110%|90%|center|{{RGB|{{Variable|tonosección}}9}}|{{RGB|{{Variable|tonosección}}3}}||{{Variable|redondeo}}|33.33%|font-weight:bolder;|2|alto=40px}}|{{#ifeq:{{NAMESPACE}}|Plantilla|Introducción|{{#ifexist:{{{nombre}}}/Introducción|[[{{{nombre}}}/Introducción|Introducción]]|<span class="plainlinks" style="font-size:80%">[{{fullurl:{{{nombre}}}/Introducción|action=edit&preload=Plantilla:%2BPortada/%2BIntroducción}} Crear una introducción]</span>}}}} |{{+Celda|2|110%|90%|center|{{RGB|{{Variable|tonosección}}9}}|{{RGB|{{Variable|tonosección}}3}}||{{Variable|redondeo}}|33.33%|font-weight:bolder;|2|alto=40px}}|{{#ifeq:{{NAMESPACE}}|Plantilla|Texto completo|{{#ifexist:{{{nombre}}}/Texto completo|[[{{{nombre}}}/Texto completo|Texto completo]]|<span class="plainlinks" style="font-size:80%">[{{fullurl:{{{nombre}}}/Texto completo|action=edit&preload=Plantilla:%2BPortada/%2BTexto_completo}} Crear texto completo]</span>}}}} |---- |{{+Celda|2|110%|90%|center|{{RGB|{{Variable|tonoenlaces}}9}}|{{RGB|{{Variable|tonoenlaces}}4}}||{{Variable|redondeo}}|50%|font-weight:bolder;|3|alto=40px}}| [[Archivo:{{Variable|imagenlink}}|30px|link=]]&nbsp;{{#ifeq:{{NAMESPACE}}|Plantilla|Enlaces útiles|[[{{{nombre}}}/Enlaces|Enlaces útiles]]}} |{{+Celda|2|110%|90%|center|{{RGB|{{Variable|tonoedición}}9}}|{{RGB|{{Variable|tonoedición}}4}}||{{Variable|redondeo}}|50%|font-weight:bolder;|3|alto=40px}}| [[Archivo:{{Variable|imagenedit}}|30px|link=]]&nbsp;{{#ifeq:{{NAMESPACE}}|Plantilla|Edite este libro|[[{{{nombre}}}/Página de edición|Edite este libro]]}} |} <noinclude>{{documentación}}</noinclude> jjgd8nz34v4b5ztz3o4sc00vvlrx0ji Plantilla:Portada/Libros por mejorar 10 19222 428414 238771 2026-07-20T01:10:27Z Mazbel 57931 Actualizando enlace 428414 wikitext text/x-wiki <!----Puedes colocar en esta lista hasta quince (15) libros. Mete nuevos libros por arriba y bórralos por abajo, haciéndolos acompañar de la fecha cuando fueron incluidos en esta lista. NO ESCRIBAS AQUÍ TODO EL CONTENIDO DEL LIBRO. Sólo el título, tomando como referencia el formato de los libros que ya están. Léete el tutorial para crear un libro en http://es.wikibooks.org/wiki/Wikilibros:Manual/Crear#Crear_un_libro----> <!----INICIO DE LISTA DE LIBROS POR MEJORAR----> {{libro|Pediatría}} <!-- 13 de Diciembre 2014 --> - {{libro|Flat assembler (FASM)}} <!-- 11 de Octubre 2014 --> - {{libro|Kazajo}} <!-- 18 de Junio 2013 --> - {{libro|Dibujo}} <!-- 20 de Mayo 2012 --> - {{Libro|Programación en Vala}}<!-- 12 de agosto 2011 --> - {{Libro|Rumano}}<!-- 17 de enero 2011 --> - {{libro|Desarrollo de videojuegos para PSP con C++ y SDL}} <!-- 17 de enero 2011 --> - {{Libro|OpenOffice.org}}<!-- 4 de enero de 2011 --> - {{Libro|Manga}} <!-- 17 de enero 2011 --> – {{Libro|Lenguaje HTML}} <!-- 17 de enero 2011 --> – {{Libro|Finés}} <!-- 19 de julio de 2012 --> – {{Libro|Náhuatl}} <!-- 20 de julio de 2008 --> – {{Libro|Blender 3D}} <!-- 17 de enero 2011 --> - {{Libro|Geografía politica: Capitales}} <!-- 17 de enero 2011 --> - {{Libro|Manual del escritor}} <!-- 17 de enero 2011 --> – {{libro|Programación en Pascal}} <!-- 17 de enero 2011 --> – {{libro|Oratoria}} <!-- 17 de enero 2011 --> – {{Libro|Separación de San Mateo Atenco del Marquesado del Valle en 1575}} <!-- 17 de enero 2011 --> – {{Libro|Análisis estadístico y econométrico usando GNU R }} <!-- 17 de enero 2011 --> – {{libro|Manual_de_Scilab/Xcos}} <!-- 27 de Julio 2011 --> <!----FIN DE LISTA DE LIBROS POR MEJORAR----> <p style="text-align:right; font-size: 78%; line-height: 95%">{{editar|Plantilla:Portada/Libros por mejorar|Añadir un libro a esta lista}}</p> <p style="text-align:right; font-size: 78%; line-height: 95%">[[Wikilibros:Wikilibros por mejorar|'''Lista completa de los libros por mejorar''']]</p> <noinclude>[[Categoría:Wikilibros:Plantillas de la portada|Portada/por mejorar]]</noinclude> ij5xwbqghsnjqvff6twkcva3ix4byu9 C sharp NET/Capítulo 29 0 19640 428445 305114 2026-07-20T11:04:08Z Antimundo 74354 Categorizar usando AutoCat 428445 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 27|Capítulo 27|C sharp NET|MENU PRINCIPAL}} ='''Sockets'''= <br /> <br /> ==Introducción a los Sockets== Los sockets dotan a las aplicaciones la capacidad de comunicación en red. ==Sincrónico y Asincrónico == ==Clase Socket== <pre> using System.Net.Sockets; </pre> ==Servidor== ==Cliente== <br /> {{nav|C sharp NET/Capítulo 27|Capítulo 27|C sharp NET|MENU PRINCIPAL}} {{AutoCat}} 6zr4a8k32jhwidmsnc0sosm047z4mo7 C sharp NET/Capítulo 12 0 21884 428437 401061 2026-07-20T11:01:18Z Antimundo 74354 Categorizar usando AutoCat 428437 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 11|Capítulo 11|C sharp NET/Capítulo 13|Capítulo 13}} = '''Manejo de excepciones''' = <br /> <br /> C# proporciona soporte integrado para el manejo de excepciones o decir situaciones anormales de funcionamiento, las cuales pueden ocurrir en cualquier momento durante la ejecución del programa y son manejadas por el código que se encuentra fuera del flujo normal de control. Todo esto gracias a las instrucciones clave try, throw, catch y finally. C# proporciona una solución estructurada tanto a nivel del sistema como de aplicación. A pesar de que es muy similar a C++ en cuanto al manejo de excepciones existen varias diferencias, entre ellas que cada excepción está representada por una instancia de un tipo de clase derivado de System.Exception. En realidad es algo bastante simple: <pre> try { //haz esto... //si i = 0 throw una excepción } catch { //si falló haz esto... } finally { //haya fallado o no, haz esto... } </pre> Como se puede apreciar el manejo de excepciones es bastante sencillo y fácil de entender aunque no tengamos mucha experiencia programando, todo aquello que se puso entre las {} del try es un segmento de código en el que puede o no generarse un error en tiempo de ejecución(excepción), en caso de que haya habido un funcionamiento anómalo en el programa (excepción), la ejecución del código entra en el segmento de código catch y ejecuta el bloque de instrucciones que hemos definido para manejar ese error, finalmente el flujo del programa, haya o no habido excepción, entra en finally; aquí podemos poner rutinas para marcar los objetos que ya no se utilizarán de manera que el recolector de basura pueda liberar la memoria que dichos objetos ocupaban, rutinas que guarden un log de la aplicación para llevar un control de ¿cuántas veces ha fallado?, ¿por qué falló?, etc., todo bloque try puede tener uno o más catch para tratar cada una de las posibles excepciones, pero la flexibilidad de C# va más allá de eso, ya que nos permite lanzar nuestras propias excepciones, por ejemplo si un método no recibe un valor que debe recibir o recibe un valor que no puede procesar podemos lanzar nuestra propia excepción. Ejemplo: <pre> using System; public class ManejoExcepciones { public static void Main() { try //Le hacemos saber que puede ocurrir un error { string s=null; //Declaramos un string y lo dejamos vacío if (s == null) //Si el string esta vacío throw(new ExcepcionCadenaVacia()); //Lanzamos un error personalizado Console.WriteLine("Esto nunca se imprime"); //Si hay error el código sale de la ejecución normal //es por eso que esta parte nunca se ejecuta } catch( ExcepcionCadenaVacia e ) //Atrapamos nuestro error { Console.WriteLine("La cadena esta vacía"); //Manejamos el error } finally { Console.WriteLine("Esto siempre se imprime"); //Esto siempre se ejecutará } } } </pre> {{nav|C sharp NET/Capítulo 11|Capítulo 11|C sharp NET/Capítulo 13|Capítulo 13}} {{AutoCat}} n1qztlp92xn4rtb37rj4zywcg1g545m Plantilla:Sección no neutral/uso 10 24278 428418 425686 2026-07-20T09:40:37Z Antimundo 74354 Borrar 428418 wikitext text/x-wiki {{Borrar|Documentación de una redirección, la documentación que realmente usa esta plantilla es otra}} {{subpágina de documentación}} Código: <syntaxhighlight>{{Sección no neutral}}</syntaxhighlight> Campo de aplicación: Artículos no neutrales o claramente decantados en una dirección. 9t2t5i6192sujvucqdeefbw2v3kfmoh Enfermería 0 25790 428345 395244 2026-07-19T12:10:01Z Antimundo 74354 Categorizar usando estantes 428345 wikitext text/x-wiki {{Portada libro}} <!-- Posible {{copyvio}}. Posible contenido duplicado de wikipedia. Pendiente de verificar.--> La '''Enfermería''' es la ciencia del cuidado de la salud del ser humano. Es una disciplina que en el último siglo y particularmente en los últimos años ha ido definiendo cada vez más sus funciones dentro de las ciencias de la salud. Según la definición elaborada por la Facultad de Enfermería de la Universidad de Moscú, en Rusia, es la «ciencia o disciplina que se encarga del estudio de las respuestas reales o potenciales de la persona, familia o comunidad tanto sana como enferma en los aspectos biológico, psicológico, social y espiritual». La enfermería es una profesión de titulación universitaria que se dedica al cuidado integral del individuo, la familia y la comunidad en todas las etapas del ciclo vital y en sus procesos de desarrollo. == Contenido == # Conceptos de la Enfermería # Subcategorías # Enfermeras relevantes en la historia # Historia de la Enfermería === Conceptos de la Enfermería === * Autocuidado * Investigación en cuidados * Metaparadigma en Enfermería * Metodología de los cuidados enfermeros: ** Proceso de atención de Enfermería ** Modelos y teorías de la Enfermería === Subcategorías === ==== En España ==== En España, por definición, todos los enfermeros son profesionales, y están capacitados para realizar las cuatro funciones de la Enfermería: asistencial, administrativa, docente e investigadora. En la misma categoría, existe la figura del llamado enfermero supervisor, cuya función específica es supervisar el trabajo y entorno físico de trabajo de todos los profesionales que existen en la unidad a su cargo. También existe una segunda categoría de profesionales dentro de la Enfermería: los auxiliares de enfermería, especialidad no universitaria cuya función, delegada por el enfermero, está centrada en los cuidados más básicos. Sus tareas específicas son los cuidados relacionados con la alimentación, eliminación e higiene. Por ser profesionales, están capacitados igualmente para las cuatro funciones de la Enfermería. Los enfermeros tienen funciones independientes (las relativas al cuidado) y dependientes o delegadas por el médico (administración de medicación, vendajes especiales y técnicas invasivas como la venopunción, básicamente). ==== En Hispanoamérica ==== En Hispanoamérica, existe la figura del enfermero profesional o enfermero jefe, que, a diferencia del mero cuidador de una persona enferma, es una persona que, al igual que el enfermero en España, ha sido formado en todos los ámbitos de las ciencias de la salud, y que se caracteriza por tener conocimientos de anatomía, fisiología, patología, epidemiología, procesos de valoración de Enfermería, docencia, administración, gerencia y otras áreas. Un enfermero jefe cumple funciones sociales; es capaz de investigar, interpretar y proponer soluciones a los problemas de salud e interactuar en su comunidad en forma participativa. La vocación de servicio, la sensibilidad humana y social, la capacidad de interactuar con los seres humanos, en diferentes grupos sociales y de diversas edades, capacidad de tomar decisiones de manera asertiva, y afinidad por las ciencias de la salud son los rasgos que caracterizan la valía de un enfermero jefe. Además debe ser una persona estable, sensata, respetuosa, lógica, asertiva, estudiosa y laboriosa. Un enfermero puede ejercer diferentes funciones y abarca de forma independiente diferentes campos como la asistencia, la administración, investigación, docencia, y labor social, entre otros. El profesional de enfermería tiene una visión reformadora, tendente a cambiar de forma preventiva los aspectos y contornos de la sociedad, transformándola y convirtiéndola en una sociedad sana en todos los ámbitos. De igual modo que en España, también existe la figura del enfermero auxiliar, aunque con diferentes funciones. Este grupo lo constituyen aquellos trabajadores que han recibido una formación básica en Enfermería, los cuales realizan tareas como curaciones o limpiezas bajo la supervisión de un jefe. Muchas de las variadas obligaciones del personal auxiliar de enfermería son de naturaleza técnica, desde la toma de la tensión arterial al manejo de sistemas de soporte vital en unidades de cuidados intensivos, pero siempre bajo la supervisión de un enfermero jefe. Además, el personal de enfermería en general debe ser maestro, consejero y administrador, preocupado por la promoción y mantenimiento de la salud de los pacientes, así como por proporcionar los cuidados necesarios cuando éstos se encuentran enfermos. El personal auxiliar de enfermería tiene funciones dependientes e independientes. Las primeras son aquellas que deben ser llevadas a cabo bajo las órdenes de un médico y un enfermero jefe, e incluyen actividades como las de administrar medicación, vendar y curar heridas. Las funciones independientes son aquellas que el personal de enfermería lleva a cabo bajo su propio juicio profesional. Entre estas obligaciones se incluyen el lavado de los enfermos, las posturas de los pacientes para prevenir contracturas articulares, la educación a los pacientes para que aprendan a curarse ellos mismos y la asesoría nutricional. ==== En Chile ==== En Chile, en los últimos años, la enfermería está desempeñando su función asistencial también en el área prehospitalaria (SAMU), función que en otros países como Estados Unidos, Canadá, Costa Rica y Hong Kong es desempeñada exclusivamente por los paramédicos. En este país existen cursos de especialización en atención prehospitalaria como el CAPREA, PHTLS, PALS, NALS y ACLS, entre otros. Los profesionales que superan estos cursos reciben el nombre de reanimadores y están integrados en equipos que comparten con los técnicos de enfermería de nivel superior, los paramédicos y los conductores de ambulancia. === Enfermeras relevantes en la historia === * Florence Nightingale, considerada la madre de la Enfermería moderna. Orientó los cuidados de Enfermería al control del ambiente para facilitar la recuperación de los enfermos. * Virginia Henderson, autora del modelo conceptual basado en las 14 necesidades básicas de la persona. * Dorothea Orem, autora de la teoría general del déficit de autocuidado. * Hildegarde Peplau, autora del modelo de las relaciones interpersonales (Interpersonal Relations in Nursing, 1952). * Callista Roy, enfermera autora del modelo de adaptación (''Introduction to Nursing: An Adaptation Model'', 1976). * François Collière, enfermera francesa, asesora de la OMS y autora de importantes libros sobre cuidados y asistencia a los enfermos. * Jean Watson, autora de ''The Theory of Human Caring'', y de los factores curativos filosóficos, en 1975. * Elvira Dávila Ortiz, pionera en la profesión de enfermería y de la transfusión de sangre en Iberoamérica. === Historia de la Enfermería === ==== Primeros tiempos ==== Según indica Colliere, el origen de las prácticas de cuidados está ligado a las intervenciones maternales que aseguraban la continuidad de la vida y de la especie. La alimentación, como necesidad básica que implica suplencia y ayuda (por parte de la madre o sustituta) en los primeros estadíos evolutivos del hombre es considerada como la práctica de cuidados más antigua. Febe (60 d. C.) es la única mujer a la que se cita como diaconisa en el Nuevo Testamento (Romanos, 16, 1-2). Atendía a los pobres en sus hogares y con el tiempo se convirtió esta labor en parte primordial del trabajo de las diaconisas. No obstante, no se la relaciona con la Enfermería. ==== Edad Media ==== El cristianismo y su organización tuvo vínculos históricos importantes con las prácticas de cuidados de enfermería desde los monasterios a través de las Órdenes Religiosas, así como desde la conquista de Tierra Santa con las cruzadas. Como consecuencia del pensamiento medieval relacionado con la Reconquista de Santos Lugares, surgió un movimiento organizado, que cristalizó con el fenómeno histórico de las cruzadas, las cuales dieron lugar a la aparición de tres tipos de figuras: el guerrero, el religioso y el enfermero. La demanda de hospitales y sanitarios en las rutas seguidas por los cruzados propició la aparición de las Órdenes Militares dedicadas a la enfermería: los Caballeros Hospitalarios de San Juan de Jerusalén, los Caballeros Teutónicos, y los Caballeros de San Lázaro. En España, la primera institución destinada a acoger enfermos fue el Hospital del Obispo Masona, en Mérida, en el siglo VI, según Domínguez Alcón y el Diccionario Eclesiástico de España. Entre los hospitales medievales donde se desarrollaban actividades de enfermería, se encuentran El Hôtel-Dieu de París y Lyon, el Santo Spirito de Roma, el Hospital de la Seo de Tortosa, el Hospital de Mérida, y el Hospital d'en Clapers de Valencia, de los cuales, según datos recogidos por Domínguez Alcón, los dos primeros perduran en la actualidad. El llamado movimiento Beguino, constituido por «mujeres santas» que cuidaban enfermos, se diferencia dentro del entramado histórico-cristiano-caritativo ligado a los cuidados de enfermería fundamentalmente en no asumir los votos preceptivos de las órdenes religiosas. Las denominaciones de las personas encargadas de proporcionar cuidados de Enfermería han variado a lo largo de la historia en función de la época y el contexto donde éstos se desarrollaban (hospitales, leproserías, órdenes militsares, órdenes religiosas y ámbitos domésticos): macipa, mossa, clavera, donado, donada, hospitaler, hospitalera, enfermero, enfermera. Según la historiografía estudiada hasta ahora, los administradores o procuradores de los hospitales eran varones, salvo en el Hospital del Rey de Burgos. ==== Edad Moderna ==== Hasta el año 1500, la escasa atención en cuanto a la reglamentación de los cuidados de enfermería, practicados en ámbitos domésticos, propició una variedad de grupos que ejercían estas actividades fuera de los ámbitos institucionales: Nodrizas (didas). parteras o comadronas, grupos dedicados al cuidado a domicilio y grupos dedicados a otras prácticas sanadoras. En el siglo XVI, la Reforma Protestante tuvo graves consecuencias para los cuidados de salud, debido a la supresión de las instituciones de caridad. La filosofía protestante indica que «no son necesarias las obras de caridad para obtener la salvación». Esto se traduce en un abandono de la consideración del cuidado de enfermería que continuaba existiendo en el ámbito católico. Entre los años 1500 y 1860, la enfermería tuvo su peor momento, debido a que la idea predominante era que la enfermería constituía más una ocupación religiosa que intelectual, por lo que su progreso científico se consideraba innecesario. Además, tras la Reforma Protestante se produjo una desmotivación religiosa para dedicarse al cuidado de enfermos entre las personas laicas y una relegación a antiguas pacientes, presas y otras personas de los estratos más bajos de la sociedad de la actividad de aplicar cuidados. Donahue denominó a este período la "Época oscura de la Enfermería". El Instituto de Diaconisas de Kaiserwerth, creado en 1836 por el pastor protestante Theodor Fliedner (1800-1864), supuso para la enfermería el inicio de una formación reglada, para enfermeras. Este hecho, acaecido en el ámbito protestante, puede suponer en un análisis superficial una contradicción; sin embargo, el propio caos y desorganización de los cuidados de enfermería protestantes fue lo que exigió una reglamentación formal y específica para ejercer la profesión. ==== Edad Contemporánea ==== Según Robinson, el libro ''Notas sobre la enfermería'' (''Notes on Nursing''), publicado por Florence Nightingale en 1859 —tras sus experiencias en la guerra de Crimea—, supuso «un texto de crucial influencia sobre la enfermería moderna». En 1860 se inauguró la Nightingale Training School for Nurses ("Escuela Nightingale de Formación para Enfermeras"), la cual constituyó una institución educativa independiente financiada por la Fundación Nightingale. La originalidad del proyecto fue considerar que debían ser las propias enfermeras las que formasen a las estudiantes de enfermería mediante programas específicos de formación y haciendo hincapié tanto en las intervenciones de enfermería hospitalarias como extrahospitalarias, para el mantenimiento y prevención de la salud tanto del individuo como de las familias. En Estados Unidos, según Donahue, el primer texto sobre enfermería se publicó en 1885 por la señora Clara Weeks Shaw, y la primera revista nacional sobre enfermería, The Trained Nurse and Hospital Review, apareció en 1888. Según Donahue, Lilian Wald fue la precursora de lo que hoy se entiende como Enfermería Comunitaria, por medio de un proyecto que comenzó en Nueva York en 1893 como una organización filantrópica, y que constituiría la base para el posterior desarrollo de la Salud Pública en dicho país. En España no se puede hablar de un origen específico de la Enfermería de Salud Pública, ya que las ideas anglosajonas no tuvieron mucho eco entre las enfermeras españolas, hasta que en 1933 se crearon las 50 primeras plazas de enfermeras visitadoras y sanitarias. Posteriormente, Mrs. Benford Fenwick fundaría el Consejo Internacional de Enfermeras, la más antigua de todas las organizaciones internacionales para trabajadores profesionales. En 1922, en la Universidad de Indiana, se fundó la Sigma Theta Tau, una organización que promueve la investigación y dirección de Enfermería. Sus miembros son seleccionados de acuerdo con sus logros académicos y calidad profesional, y entre ellos figuran estudiantes, estudiantes graduados en Programas de Enfermería y dirigentes de Enfermería Comunitaria. A principios del siglo XX, en los Estados Unidos se admitía, por lo general, que la legislación sobre la aprobación estatal para la Enfermería elevaría a las personas que la practicaban a un nivel profesional mediante el establecimiento de unas normas educativas mínimas para las escuelas de Enfermería. Sin embargo, a medida que la demanda de enfermeras crecía, se establecieron más escuelas de Enfermería de distinta calidad, circunstancia que hizo poco por mejorar el nivel de la profesión. En la Segunda Guerra Mundial, la enfermería adquirió mayor importancia y relieve. En los últimos días de la guerra un artículo de Bixler y Bixler en la revista American Journal of Nursing valoraba la enfermería como una profesión. Los siete criterios para una profesión identificados por estos autores eran aplicables a la enfermería de la forma en que se practicaba en ese momento y justificaban la consideración de la enfermería como profesión. Bixler y Bixler revisaron sus criterios y el nivel profesional de la enfermería 14 años después y observaron que ambos continuaban siendo válidos. En España, el 4 de diciembre de 1953 se unifican en ATS (Asistente Técnico Sanitario) los estudios de auxiliares sanitarios siguiendo el modelo de especialidades médicas con el objeto de proporcionar mayor formación posbásica a las profesiones de matronas, practicantes y enfermeras, de modo que las matronas pasan a ser una especialidad de ATS (BOE del 12 de febrero de 1957, Decreto de enero de 1957. Para Fisioterapia, BOE del 23 de agosto, Real Decreto del 26 de julio de 1957). En 1977 (Decreto 2128), se transforman en España las enseñanzas conducentes al título de ATS por las de DUE (Diplomado Universitario en Enfermería). Este hecho histórico supuso el reconocimiento por parte de la Institución Universitaria de la Enfermería como disciplina en proceso de construcción y como profesión de carácter universitario con todo lo que ello implica: reconocimiento científico y académico de la antigua actividad del cuidado de enfermería, crecimiento doctrinal y la posibilidad futura de acceder a todos los grados académicos (licenciatura y doctorado). Más recientemente, Hall ha identificado los siguientes cinco criterios de actitud con la profesionalidad: # Uso de organizaciones profesionales como referentes importantes. # Creencia en la autorregulación, lo que conlleva a la idea de que sólo los profesionales que de un área especifica pueden establecer las normas para su práctica. # Creencia en el servicio al público como parte esencial de la profesión. # Sentimiento de considerar el campo o el compromiso con la profesión como un interés fundamental y un deseo que va más allá de la recompensa económica. # Autonomía cuando el profesional debe tomar decisiones sobre su trabajo basadas en las normas del mismo y en el código deontológico. ==== En la actualidad ==== En la actualidad, en Estados Unidos se ofrecen dos programas de doctorado en Enfermería: el doctorado académico y el doctorado en Ciencias de la Enfermería. Esto supone la consecución del máximo grado académico para la Enfermería en el contexto estadounidense. Asimismo, este "doble doctorado" supone exigencias académicas que configuran, sin duda, el conocimiento de Enfermería y la identidad profesional. Para pertenecer a la Academia de Enfermería Estadounidense (American Academy of Nursing) es necesario haber realizado trabajos de investigación inéditos que supongan un aumento del corpus de conocimientos de Enfermería. Este hecho es análogo para todas las disciplinas científicas así como para sus respectivas academias. {{Estantes|Ciencias de la salud}} 4yd4uvbzimh592s9r1v04rh4ux6mh9m Plantilla:Cdb 10 26537 428462 283546 2026-07-20T11:53:02Z Antimundo 74354 Usar metaplantilla de avisos 428462 wikitext text/x-wiki {{metaplantilla de avisos |tipo = serio |imagen = [[Archivo:User-trash-full-question.png|40px|link=|alt=]] |texto = '''Se está realizando una consulta de borrado para decidir si borrar {{ #ifeq: {{PAGENAME}} | {{BASEPAGENAME}} | este libro | esta página }}.'''<br>Este aviso no debe ser eliminado hasta que el debate se haya cerrado para así permitir a quienes lo deseen que compartan su opinión en la correspondiente discusión.<br>''La consulta se lleva a cabo en [[Wikilibros:Consultas de borrado]].''}} <noinclude>{{documentación de plantilla}}[[Categoría:Wikilibros:Plantillas de mantenimiento/Libros‎]]</noinclude><includeonly>[[Categoría:Wikilibros:Consultas de borrado]]</includeonly> bce3rgtjiqtxv6yl624x6e58sv4x0ia Categoría:Libro:Turco 14 30047 428361 281488 2026-07-19T17:29:57Z Antimundo 74354 Antimundo trasladó la página [[Categoría:Turco]] a [[Categoría:Libro:Turco]]: Categorizar usando estantes 281488 wikitext text/x-wiki {{LP|Turco}} [[Categoría:Libros de Idiomas|Turco]] dasp4bwtku4zyt94hc4ysl4fyxi8ocl 428363 428361 2026-07-19T17:31:06Z Antimundo 74354 Categorizar usando estantes 428363 wikitext text/x-wiki [[Categoría:Estante:Idiomas]] [[Categoría:Libros organizados]] insj9h9ydszoexkzdzttf2aa8brfuql C Sharp en una nuez 0 32667 428456 247273 2026-07-20T11:10:29Z Antimundo 74354 Fusionar en 428456 wikitext text/x-wiki {{Fusionar en|C sharp NET}} <!-- Este es un modelo para escribir el nuevo libro, no olvides sustituir los textos de ejemplo por los adecuados para tu libro. Si tienes dudas consulta [[Wikilibros:Ayuda]] Aquí escribe una introducción al tema del libro, a qué tipo de lectores va dirigido y cualquier consideración que quieras hacer sobre el libro. También puedes hacer una invitación a todos los visitantes a colaborar en la escritura del wikilibro. Incluir un enlace a un artículo relacionado en la Wikipedia tampoco es mala idea. --> == Introducción a un mundo maravilloso == Dentro de la comunidad de desarrolladores he encontrado un sin fin de recursos, explicaciones extensas de como se come C Sharp, pero sinceramente nadie se ha puesto en los zapatos de un novato y le ha dado los elementos, ni la guía necesaria, para salir de ese hoyo en el que todos nos encontramos cuando empezamos a programar, para resumir, también se requiere tener cierta maestria, para no escribir cosas de más, solo escribir lo necesario para darnos a entender, es todo un reto, en ese sentido este libro esta creado para precisamente, para evitar todos las encrucijadas de las definiciones e ir al grano de una vez. Si el CLR es genial y funciona sin que yo sepa como lo hace... ¿A quien le importa su historia y si tiene un sin fin de monerias que nunca voy a utilizar? Nota: A todos los compañeros que se esfuerzan en hacer libros mas serios, todo mi respeto y consideración. Solo pretendo ser mas dinámico para evitar lo que no nos sirve cuando requerimos encontrar soluciones rápidas a un problema que nos tiene hasta el cuello. == Contenido == <!-- Cambia los capítulos de ejemplo por los definitivos, pero recuerda cumplir la política de subpáginas. Si tienes dudas lee [[Wikilibros:Política de nombrado]] --> # [[/Capitulo 1. Breve, pero realmente breve historia de C Sharp|Capitulo 1. Breve, pero realmente breve historia de C Sharp]] # [[/Capítulo 2. Resumen del Lenguaje/]] ## [[/Capítulo de ejemplo 2.1/]] ## [[/Capítulo de ejemplo 2.2/]] # [[/Capítulo de ejemplo 3/]] <!-- No olvides cambiar la categoría siguiente por la adecuada --> <!-- Busca libros de temática semejante en otros idiomas y reemplaza el enlace siguiente --> [[Categoría:programación]] 04isqj0xyilzu1perbn87qrlwir92c3 Implementación de algoritmos de teoría de números 0 33756 428392 406601 2026-07-19T18:34:47Z Antimundo 74354 Retirar comentarios que ya resultan innecesarios y categorizar usando estantes 428392 wikitext text/x-wiki {{libro|Implementación de algoritmos de teoría de números}} El contenido del siguiente libro comprende la implementación de algoritmos en sistemas informáticos y/o lenguajes de programación de ciertos problemas de teoría de números, algunos de ellos muy famosos, como puede ser el test de primalidad o la criba de Eratóstenes. == Contenido == # [[/Introducción/]] # [[/Algoritmos básicos en teoría de números/]] ## [[/Algoritmo de multiplicación/]] ## [[/Algoritmo de división/]] ## [[/Algoritmo de Euclides/]] ## [[/Criba de Eratóstenes/]] ## [[/Números primos/]] ## [[/Algoritmo de factorización en números primos/]] ## [[/Números perfectos/]] ## [[/Números amigos/]] # [[/Funciones básicas de teoría de números/]] ## [[/Factorial/]] ## [[/Función φ de Euler/]] ## [[/Raíz cuadrada entera/]] ## [[/Raíz cuadrada modular/]] ## [[/Exponenciación modular/]] ## [[/Logaritmo discreto/]] ## [[/Función de Ackermann/]] # [[/Algoritmos aplicados al problema de la primalidad/]] ## [[/Deterministas/]] ### [[/Test de primalidad AKS/]] ### [[/Test de primalidad de curvas elípticas/]] ## [[/No deterministas/]] ### [[/Test de primalidad de Fermat/]] ### [[/Test de primalidad de Miller-Rabin/]] # [[/Algoritmos utilizados en criptografía/]] ## [[/RSA/]] # [[/Algoritmos cuánticos/]] # [[/Algoritmos avanzados/]] # [[/Conjeturas/]] ##[[/Conjetura de Collatz/]] {{Estantes|Programación informática}} ifl0ojyvxjopfuel4zwgwh99f5srprz C sharp NET/Capítulo 22 0 34748 428442 305103 2026-07-20T11:03:28Z Antimundo 74354 Categorizar usando AutoCat 428442 wikitext text/x-wiki {{nav|C sharp NET/Capítulo 21|Capítulo 21|C sharp NET/Capítulo 23|Capítulo 23}} = '''Programando en Redes''' = <br /> <br /> <br /> En la actualidad, existe la tendencia cada vez mas firme, de que en algún momento un programa requiera obtener datos y/o realizar acciones a través de una red local o incluso Internet. Un ejemplo simple, puede ser un simple widget, que accede a un sitio web para brindarnos la cotización de la moneda, la temperatura actual en nuestra ciudad e incluso el pronóstico meteorológico para los proxmos días. Obtener esta información, requiere establecer una conexión a un sitio determinado, acceder a un servicio determinado y traer esa información a nuestro computador. Veremos algunos conceptos fundamentales sobre redes, para luego mencionar como un programa hace uso de esos elementos y en particular se explicará como realizarlo con C#. Continuar explicando los conceptos del modelo OSI de 7 capas, situarnos en la capa de aplicación. Explicar el concepto de dirección y puertos. Mostrar como una conexión se establece hacia una dirección y puerto determinado. Mencionar los puertos estándares: 80=HTTP, 21=FTP, etc. {{nav|C sharp NET/Capítulo 21|Capítulo 21|C sharp NET/Capítulo 23|Capítulo 23}} {{AutoCat}} 0ti5t7lgxj4oqwfpnqc4wdj5uzl0wqc Plantilla:Cdb/uso 10 34815 428463 172874 2026-07-20T11:53:35Z Antimundo 74354 Arreglos menores de sintaxis 428463 wikitext text/x-wiki {{subpágina de documentación}} === Uso === Esta página sirve para nominar páginas en [[Wikilibros:Consultas de borrado|consulta de borrado]]. === Sintaxis=== Para nominaciones simples se añade al inicio de la página principal del Wikilibro: <pre> {{Cdb}} </pre> Para otro título de cabecera <pre> {{Cdb|sección=Nombre diferente al título de la página}} </pre> <includeonly> <!-- Interwikis aquí --> [[en:Template:Rfd]] {{DEFAULTSORT:{{PAGENAME}}}} </includeonly> 8nbwpjzo3lkbqon8q1h1dh4iat09yl5 Psicopatologia I 0 35223 428347 246081 2026-07-19T12:15:02Z Antimundo 74354 Infraesbozo 428347 wikitext text/x-wiki {{Infraesbozo}} [[/Trastornos del desarrollo|Trastornos del desarrollo]] [[Categoría:Psicología]] a998w3lbes5nilap5i7t5iv264lf4kp Plantilla:Desactualizado/uso 10 37215 428461 425740 2026-07-20T11:36:45Z Antimundo 74354 Añadir categoría a la que se añaden 428461 wikitext text/x-wiki {{subpágina de documentación}} === Código === <code><nowiki>{{Desactualizado}}</nowiki></code> === Campo de aplicación === Añade esta plantilla a páginas o secciones cuyo contenido ha quedado parcial o totalmente obsoleto debido al paso del tiempo o a cambios en el tema tratado. Las páginas con esta plantilla se añaden automáticamente a [[:Categoría:Wikilibros:Páginas desactualizadas]]. <includeonly> [[Categoría:Wikilibros:Plantillas de mantenimiento]] </includeonly> d72d3yl2bnbgabxo57rkd8ww8siuym5 Interlingua 0 40740 428368 331834 2026-07-19T17:40:42Z Antimundo 74354 Categorizar usando estantes y usar sintaxis wiki para evitar los problemas de renderización que causaba la plantilla 428368 wikitext text/x-wiki [[Archivo:Bandiera de Interlingua.svg|miniaturadeimagen|Bandera de Interlingua]] == Índice == === Introducción === * [[Interlingua/Introducción|Introducción]] === Gramática === {{:Interlingua/Gramática}} === Enlaces === * [[Interlingua/Página de edición|Página de edición]] {{Estantes|Idiomas}} 0mw4j14xksjugc9lle792t91kng7xs9 Yelmos 0 41635 428460 232901 2026-07-20T11:31:58Z Antimundo 74354 Categorizar libro 428460 wikitext text/x-wiki {{Categorizar libro}} __NOTOC__ <center><font size="8" color=000000><b> Yelmos </b></font></center><br /> <center><imagemap> Image:Topfhelm_DHM_transparent.png|150px rect 0 0 1000 560 [[Yelmos/Introducción]] </imagemap></center> <center><font size="6" face="Arial Narrow" color=#696969> Cascos de combate del Medievo </font></center><br /> <br /> <center> <font size="5">• [[Yelmos/Índice|Índice]]</font> <br /><br /> <font size="5">• [[Yelmos/Introducción|¿Qué es un yelmo?]]</font> <br /><br /> <font size="5">• [[Yelmos/Partes de un yelmo|Partes de un yelmo]]</font> <br /><br /> <font size="5">• [[Yelmos/Tipos de yelmos|Tipos de yelmos]]</font> <br /><br /> <font size="5">• [[Yelmos/Yelmo nasal|El yelmo nasal]]</font> <br /><br /> <font size="5">• [[Yelmos/Gran yelmo|El gran yelmo]]</font> <br /><br /> <font size="5">• [[Yelmos/Cervelliere|El cervelliere]]</font> <br /><br /> <font size="5">• [[Yelmos/Bacinete|El bacinete]]</font> <br /><br /> <font size="5">• [[Yelmos/Sallet|El sallet]]</font> </center> mku4jx5n7hmlqjskoyo8g3tjcha85bv Categoría:Libro:Árabe 14 52646 428365 350059 2026-07-19T17:32:12Z Antimundo 74354 Antimundo trasladó la página [[Categoría:Árabe]] a [[Categoría:Libro:Árabe]]: Categorizar usando estantes 350059 wikitext text/x-wiki [[Categoría:Libros de Idiomas|Arabe]] 7r4bzwccijtphy07jf5ktgx1tnia5m9 428367 428365 2026-07-19T17:34:14Z Antimundo 74354 Categorizar usando estantes 428367 wikitext text/x-wiki [[Categoría:Estante:Idiomas]] ltwfcw9uq20qck4yucxovllo8naqd9d Árabe 0 52647 428364 427740 2026-07-19T17:31:56Z Antimundo 74354 428364 wikitext text/x-wiki '''Árabe''' == Alfabeto árabe == :Wikipedia: [[:w:Alfabeto árabe|Alfabeto árabe]] * ‏ﺍ‎ - alif - la primera letra del alfabeto árabe - A * ﺏ - ba - B * ﺕ‎ - ta - T * ﺙ‎ - ca - C - como en cerveza (como en inglés: th) * ي‎ - ya - Y :No hay diferencia entre letra de imprenta y letra (escritura de mano) :No hay mayúscula o minúscula, sólo hay letras. : ﺏ + ﺍ + ﺏ + ﺍ = بابا - baba :Lea de derecha a izquierda: بابا - baba :La forma de la letra está influida por la posición que ocupa en la palabra. Primera letra de la palabra, última letra de la palabras o entre otras letras. :Hay dos métodos de aprendizaje de las letras: en el orden alfabético, porque las letras son agrupadas en el alfabeto en grupos con letras parecidos - la diferencia entre ellas es solo el número de puntos y si los puntos están arriba o debajo de las letras. :El segundo método es aprender las letras en 6 grupos: primero Alif y las letras que son con forma simple y son parecidas en la posición entre otras letras: ﺏ ﺕ ﺙ‎ ي‎ :conexión de las letras: == Primeras palabras == #أسد - asad - león - letra ﺍ - A #بطة - bata - pato - letra ﺏ - B #تفاحة - tafaha - manzana - letra ﺕ‎ - T #ثعلب - zaleb - zorro - letra ﺙ‎ - C (como en cerdo) #جمل - yamal [d ʒamal] - camello - letra ﺝ‎ - G (como en inglés# gentlemen) #حصان - ħisan [ħiˈsɑ:n] - caballo - letra ﺡ‎ - ḥāʾ #خروف - jaruf [xaˈruːf] - oveja - letra ‎ ‏ﺥ - J (como en Javier) #ديك - dic [di:k] - gallo - letra ﺩ‎ - D #ذرة - [ðura] - maíz - letra ﺫ‎ - ḏ [ð] #ريشة - [riːʃa] - pluma - letra ‏ﺭ‎ - R #زرافة - [zaˈraːfa] - jirafa - letra ﺯ - D [ð] #سمكة - samaka - pez - letra ﺱ‎ - S #شمس - [ʃams] - sol - letra ﺵ‎ - š (también sh) [ʃ] #صقر - [sɑqr] - halcón - letra ﺹ‎ - S ṣ [sˁ] #ضفدع - [đifdiʕ] - rana - letra ‎ ﺽ - D ḍ [dˁ] #طاووس - [tɒːˈwuːs] - pavo real - letra ﻁ‎ - T ṭ [tˁ] #ظرف - [ðɒrf] - sobre - letra ﻅ‎ - ẓ [ðˁ] / [zˁ] #عنب - [ʕinab] - uva - letra ﻉ‎ - [ʕ] (Ain) #غزالة - ɣaˈzaːla] (rozela) - ciervo - letra ﻍ ‎ - ġayn ġ (también gh) [ɣ] #فيل - [fi:l] - elefante - letra ﻑ‎ - F #قطة - quitba - gato - letra ﻕ‎ - Q qāf #كلب - kalb - perro - letra ﻙ‎ - K #ليمون - laimun - limón - letra ﻝ‎‎ - L #موز - mauz - plátano - letra ﻡ‎ - M #نجمة - naɡhma - estrella - letra ﻥ‎ - N #هلال - hilal - media luna - letra ﻩ‎ - H ha #وردة - warda - Rose - letra و - w (ou) #يد - iad - mano - letra ي‎ - i / ī == Los vocales == :Hay solo tres vocales: a, u, i :Cuando se hablan corto no se escriben. :Cuando se hablan largo se escriben con las letras: letra (alif) ﺍ - para largo A, letra (wouw) ﻭ‎ - para largo U, letra (ya) ي‎ - para largo I. :Las vocales cortas no se transcriben en la mayoría de libros y publicaciones, sino que han de deducirse del contexto. Para los niños (libros en la escuela) y para los extranjeros (estudiantes de lengua árabe) se escriben también y las vocales cortes. :el corte A se indica con una pequeña línea ariba de la letra. - esta señal se llama fatha. :el corte U se indica con una pequeña línea debajo de la letra. - esta señal se llama casra. :el corte I se indica con una pequeña línea-con-circulo ariba de la letra. - esta señal se llama dama. <gallery> File:00-Fatha.png|A - fatha File:00-Kasra.png|U - casra File:00-Damma.png|I - dama </gallery> #أسد - león - أَسَد #بطة - pato - بَطَّة #تفاحة - manzana - ??? #تفاح - manzana - تُفٌَ #ثعلب - zorro - ثَعْلَب #جمل - camello - جَمَلَ - ??? - جَمَل #حصان - caballo - حَصَان #خروف - oveja - ??? #ديك - gallo - ??? #ذرة - maíz - ذَرَّة #ريشة - pluma - ??? #زرافة - jirafa - ??? #سمكة - pez - ??? #شمس - sol - شَمْس #صقر - halcón - صَقَرَ #ضفدع - rana - ضِفْدَع #طاووس - pavo real - ??? #ظرف - sobre - ظَرْف #عنب - uva - ??? #غزالة - ciervo - ??? #فيل - elefante - ??? #قطة - gato - قِطَّة #كلب - perro - كَلْب #ليمون - limón - ??? #موز - plátano - مَوْز #نجمة - estrella - نَجْمَة #هلال - media luna - ??? #وردة - rosa - ??? #يد - mano - ??? == Más palabras == #كِتَاب - libro #أنا - yo #أنت - tú - أَنْتَ #هو - él - هُوَ #هي - ella - هِي #نحن - nosotros - نَحْنُ #لها - vosotros - ??? #هم - ellos - هِمْ #كل - todos - ??? #جميع - todos - ??? #جواب -- responder - ??? #الرد -- respuesta - ??? #تطلب -- preguntar - ??? #سؤال -- pregunta - ??? #أيضا - también - أَيْضًا #أرجوك -- por favor - ??? #حاجة -- necesidad - ??? #اِحْتَاجَ -- necesitar - ??? #هناك -- allí - ??? #هنا -- aquÍ - ??? #نافذة - ventana - نَافِذَة #كيف -- cómo - ??? #امتلك -- tener - ??? #دفتر -- cuaderno - ??? #سمع - oír - سَمِعَ #نعم - sí - نَعَم #لا -- no - ??? #خريطة - mapa (geografía) - خَرِيْطَة #جاء - venir - ??? #مصباح - lámpara - مِصْبَاح #مدرس - profesor, tutor - ??? #تعلم - aprender - ??? #مسطرة - regla - ??? #كتب - escribir - كُتُب - كَتَبَ - ??? #يوم - día - يَوْم #طاولة - mesa - طَاوِلَة #ترجم - traducir - ??? #تمرين - ejercicio - ??? #و - y - ??? #أو - o - ??? #كلمة - palabra - كَلِمَة #استمر - continuar - ??? #كرر - repetir - ??? #أين - dónde, a dónde - أَيْنَ #من - quién - مَنْ #حب - amor - حُبّ #عائلة - familia - عَائِلَة #مصير - destino - ??? #سعادة - suerte - ??? #حرف - letra - حَرْقٌ #بيت - casa - بَيْت #ثوم - ajo - ثَوْم #حجر - piedra - حَجَر #طالب - alumno #جامعة - universidad == Enlaces == *diccionarios *[http://www.lessan.org/es/ www.lessan.org] *[http://www.arabdict.com/en/spanish-arabic/libro www.arabdict.com] *[https://ar.wiktionary.org/wiki/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9 Wikcionario en árabe] (casi sin tradiccopnes] (pero con vocales) {{Estantes|Idiomas}} e0r23aob0mkkku60sktz0frhqgbe33s Arquitectura de computadoras 0 53865 428354 428296 2026-07-19T15:21:25Z MASB85 127556 introducción 428354 wikitext text/x-wiki {{En desarrollo}} {{Mejorar}} La arquitectura de computadoras analiza la estructura de los módulos de la computadora, los elementos que la integran y cómo interactúan entre sí. Este libro es ambicioso en el sentido que se pretende que sirva tanto a nivel divulgativo para un lego como para un nivel de educación secundaria técnica o incluso universitario de primeros años. A su vez, este libro tiene (al menos) dos líneas de lectura: * Una línea histórica, desde la computadora de mediados del siglo XX a la más contemporánea ARM y RISC, explicando los problemas que surgían y cómo se solucionaban. * Una línea conceptual en que los temas se construyen de los más simples, como compuertas AND, OR y NOT, a los más complejos como procesadores y memorias, sin atender a los motivos que dieron lugar a tal o cual tecnología. =Historia de las arquitecturas de computadoras= En 1945 se comercializa la [[/EDVAC|EDVAC]], computadora que es el prototipo de todas las modernas. Fue la primera en tener memoria, unidad aritmético lógica, unidad de control, periféricos de entrada y salida. Entre 1970 y 1980 Digital Equipment Corp. comercializa su [[/PDP-11|PDP-11]], primer minicomputadora en la que se desarrolló el sistema operativo UNIX. Fue una arquitectura influyente, que inspiró a la arquitectura del [[/Motorola 68000|Motorola 68000]]. En 1974 Intel comercializa su [[/Intel 8080|8080]]. En 1978 esta misma empresa lanza su procesador 8086, el primero con palabra de 16 bits y ''pipelining'' y también el primero de su [[/Intel x86|arquitectura x86]]. Tres años después, en 1981, IBM lanza al mercado la PC usando el procesador 8088, variante del 8086, en un bus ISA. ==Contenido== ===Arquitecturas de computadoras=== #Modelos de arquitectura de computadoras ##Modelo Von Newman: El modelo Von Newman es la arquitectura clásica descrita por John Von Newman en 1945, consta de procesador, que contempla la unidad de control, unidad lógica-aritmética y una unidad de registros; un bus de datos para acceder a la memoria, y los dispositivos de entrada y salida. ##Modelos Pipeline: Consiste en la segmentación de las instrucciones del procesador, así hay varias instrucciones procesándose simultáneamente, aumentando el flujo de instrucciones procesadas, un ejemplo de esta arquitectura es la RISC. ##Modelos multiprocesador: Es una arquitectura de dos o más microprocesadores compartiendo el mismo hardware, puede ser de manera simétrica o asimétrica. ===Componentes=== ##CPU ##Memoria ##Dispositivos de entrada/salida ##Bus k83yi8qncmql1kpqzdeux9nreztcqcq 428355 428354 2026-07-19T15:38:05Z MASB85 127556 Esbozo de la sección «Tecnologías básicas» 428355 wikitext text/x-wiki {{En desarrollo}} {{Mejorar}} La arquitectura de computadoras analiza la estructura de los módulos de la computadora, los elementos que la integran y cómo interactúan entre sí. Este libro es ambicioso en el sentido que se pretende que sirva tanto a nivel divulgativo para un lego como para un nivel de educación secundaria técnica o incluso universitario de primeros años. A su vez, este libro tiene (al menos) dos líneas de lectura: * Una línea histórica, desde la computadora de mediados del siglo XX a la más contemporánea ARM y RISC, explicando los problemas que surgían y cómo se solucionaban. * Una línea conceptual en que los temas se construyen de los más simples, como compuertas AND, OR y NOT, a los más complejos como procesadores y memorias, sin atender a los motivos que dieron lugar a tal o cual tecnología. =Historia de las arquitecturas de computadoras= En 1945 se comercializa la [[/EDVAC|EDVAC]], computadora que es el prototipo de todas las modernas. Fue la primera en tener memoria, unidad aritmético lógica, unidad de control, periféricos de entrada y salida. Entre 1970 y 1980 Digital Equipment Corp. comercializa su [[/PDP-11|PDP-11]], primer minicomputadora en la que se desarrolló el sistema operativo UNIX. Fue una arquitectura influyente, que inspiró a la arquitectura del [[/Motorola 68000|Motorola 68000]]. En 1974 Intel comercializa su [[/Intel 8080|8080]]. En 1978 esta misma empresa lanza su procesador 8086, el primero con palabra de 16 bits y ''pipelining'' y también el primero de su [[/Intel x86|arquitectura x86]]. Tres años después, en 1981, IBM lanza al mercado la PC usando el procesador 8088, variante del 8086, en un bus ISA. =Tecnologías básicas= Ya sea por vencimiento de las patentes, espionaje industrial o sencillamente porque se volvieron simples en comparación, hay tecnologías que son compartidas por todos los fabricantes y no son secreto para nadie. Por ejemplo, la representación binaria habrá sido un adelanto en su tiempo pero hoy es una tecnología ubicua, obvia, cualquier persona sin formación específica en tecnología de computadoras sabe que la información se representa con ceros y unos. Este juego de tecnologías la llamaremos ''tecnologías básicas'' * [[/Representación binaria|Representación binaria de números]] * Representación del estado del sistema y su evolución * Compuertas * Multiplexores * Sumadores * Multiplicadores * Unidades aritmético lógicas * Flip-flops * Registros * Direccionamiento * Unidades de control * Memorias estáticas * Memorias dinámicas ==Contenido== ===Arquitecturas de computadoras=== #Modelos de arquitectura de computadoras ##Modelo Von Newman: El modelo Von Newman es la arquitectura clásica descrita por John Von Newman en 1945, consta de procesador, que contempla la unidad de control, unidad lógica-aritmética y una unidad de registros; un bus de datos para acceder a la memoria, y los dispositivos de entrada y salida. ##Modelos Pipeline: Consiste en la segmentación de las instrucciones del procesador, así hay varias instrucciones procesándose simultáneamente, aumentando el flujo de instrucciones procesadas, un ejemplo de esta arquitectura es la RISC. ##Modelos multiprocesador: Es una arquitectura de dos o más microprocesadores compartiendo el mismo hardware, puede ser de manera simétrica o asimétrica. ===Componentes=== ##CPU ##Memoria ##Dispositivos de entrada/salida ##Bus e1dvyte5t1g87ipw6av2n5l4xgyy0ee Categoría:Libro:Implementación de algoritmos de teoría de números 14 57668 428393 369300 2026-07-19T18:35:42Z Antimundo 74354 Categorizar usando estantes 428393 wikitext text/x-wiki [[Categoría:Estante:Programación informática]] [[Categoría:Libros organizados]] pm75hp8ermwtqeqpvzc6sg99o4bg6yy Plantilla:Shelves/leaf 10 58861 428421 383282 2026-07-20T09:42:46Z Antimundo 74354 Borrar 428421 wikitext text/x-wiki {{Borrar|Plantilla sin uso copiada de enWikibooks, pero que aquí no se usa ningún lado.}} <includeonly>{{#invoke:TScope|override|Shelves/leaf2|{{ucfirst:{{{1}}}}}}}</includeonly><noinclude> {{documentation}} </noinclude> ipzf6kbntijoog60u6be5t7w9mezy1s Plantilla:Shelves/leaf2 10 58866 428422 383287 2026-07-20T09:42:56Z Antimundo 74354 Borrar 428422 wikitext text/x-wiki {{Borrar|Plantilla sin uso copiada de enWikibooks, pero que aquí no se usa ningún lado.}} <includeonly>{{#switch: 1 | {{#if:{{Shelf:Page?|{{{1}}}}}|0|1}} = {{color|red|'''&lt;{{#ifexist:Shelf:{{{1}}} |Shelf "[[Shelf:{{{1}}}|{{{1}}}]]" is apparently not set up correctly, interfering with shelving this book. |{{#ifexist:Department:{{{1}}}|Can't file a book directly in ''department'' "{{{1}}}"; please choose a shelf within the department. |Shelf "{{{1}}}" not found.}} [[{{BOOKCATEGORY|Shelf:}}/Attention needed]] }}&gt;'''}} | {{#if:{{Shelf:Ancestry?|{{{1}}}}}|0|1}} | {{#if:{{Shelf:Nonempty list?|{{:Shelf:{{{1}}}/ancestry|list}}}}|0|1}} = [[Category:Shelf:{{{1}}}]] [[Category:Shelf:{{{1}}}/all books]] {{color|red|'''&lt;Shelf "{{{1}}}" appears to need some attention to its ancestry list; you can check on it [[Shelf:{{{1}}}|here]].&gt;'''}} | #default = [[Category:Shelf:{{{1}}}]] [[Category:Shelf:{{{1}}}/all books]] {{Shelf:Map|Shelves/ancestor|{{:Shelf:{{{1}}}/ancestry|list}}}} }}</includeonly><noinclude> {{documentation}} </noinclude> qnkqnz6flz0zukqkr9bvry8x9v4265v Plantilla:Shelf:Map 10 58868 428420 383289 2026-07-20T09:42:36Z Antimundo 74354 Borrar 428420 wikitext text/x-wiki {{Borrar|Plantilla sin uso copiada de enWikibooks, pero que aquí no se usa ningún lado.}} <includeonly>{{#switch:{{evalx| (let (parents (get-arg-expr 2)) (if (not? (list? parents)) 0 (length parents))) |{{{2}}}}} |1={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}} |2={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}} |3={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}} |4={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}} |5={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}} |6={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}} |7={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}} |8={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}} |9={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 9) |{{{2}}}}}}} |10={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 9) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 10)|{{{2}}}}}}} |11={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 9) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 10)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 11)|{{{2}}}}}}} |12={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 9) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 10)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 11)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 12)|{{{2}}}}}}} |13={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 9) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 10)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 11)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 12)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 13)|{{{2}}}}}}} |14={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 9) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 10)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 11)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 12)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 13)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 14)|{{{2}}}}}}} |15={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 9) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 10)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 11)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 12)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 13)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 14)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 15)|{{{2}}}}}}} |16={{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 1) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 2) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 3) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 4) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 5) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 6) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 7) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 8) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 9) |{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 10)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 11)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 12)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 13)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 14)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 15)|{{{2}}}}}}}<!-- -->{{#invoke:TScope|drop|{{{1}}}|{{evalx| (nth (get-arg-expr 2) 16)|{{{2}}}}}}} |#default={{#if:{{{diagnose}}}|{{Shelf:Check page|shelf={{{shelf}}}}}}} }}</includeonly><noinclude> {{Documentation}} {{hidden use|Template:Shelf:Check page}} </noinclude> avd4u0s9574609l0na37xd0ont33bjh Plantilla:Shelf:Check page 10 58874 428419 383297 2026-07-20T09:42:21Z Antimundo 74354 Borrar 428419 wikitext text/x-wiki {{Borrar|Plantilla sin uso copiada de enWikibooks, pero que aquí no se usa ningún lado.}} <includeonly>{{#if:{{Shelf:Page?|{{{shelf|{{{1}}}}}}}}|| {{#ifexist:Shelf:{{{shelf|{{{1}}}}}} |This shelf page isn't formatted correctly. {{Query button |page=Shelf:{{{shelf|{{{1}}}}}} |query=action=edit&editintro=Template:Shelf:Editintro_format&summary=noinclude |text=edit shelf page }} |There is no shelf page with this name. Creating a new shelf is a significant act; see [[Using Wikibooks/Shelves, Categories, and Classifications|here]]. {{Query button |page=Shelf:{{{shelf|{{{1}}}}}} |query=action=edit&editintro=Template:Shelf:Editintro&preload=Template:Shelf:Preload&summary=create |text=create shelf }} }} <p>[[{{BOOKCATEGORY|Shelf:}}/Attention needed]] }}</includeonly><noinclude> {{documentation}} {{hidden use|Using Wikibooks/Shelves, Categories, and Classifications}} </noinclude> c1ciqwpddd4amj4bp133py9br1jrzl2 Categoría:Libro:Interlingua 14 62142 428369 414434 2026-07-19T17:41:11Z Antimundo 74354 Antimundo trasladó la página [[Categoría:Interlingua]] a [[Categoría:Libro:Interlingua]]: Categorizar usando estantes 414434 wikitext text/x-wiki {{LP}} [[Categoría:Libros de Idiomas]] a9dr1p72aige4dseihgchj14sfu7m25 428371 428369 2026-07-19T17:42:22Z Antimundo 74354 Categorizar usando estantes 428371 wikitext text/x-wiki [[Categoría:Estante:Idiomas]] [[Categoría:Libros organizados]] insj9h9ydszoexkzdzttf2aa8brfuql Deducción natural 0 63431 428375 427649 2026-07-19T17:52:35Z Antimundo 74354 Categorizar usando estantes 428375 wikitext text/x-wiki <!-- Este es un modelo para escribir el nuevo libro, no olvides sustituir los textos de ejemplo por los adecuados para tu libro. Si tienes dudas consulta [[Wikilibros:Ayuda]] Aquí escribe una introducción al tema del libro, a qué tipo de lectores va dirigido y cualquier consideración que quieras hacer sobre el libro. También puedes hacer una invitación a todos los visitantes a colaborar en la escritura del wikilibro. Incluir un enlace a un artículo relacionado en la Wikipedia tampoco es mala idea. --> <math> p </math> proposición <math> \top </math> [[w:es:Tautología|verdad]] <math> \bot </math> [[w:es:Contradicción|falsedad]] <math> \lnot </math> [[w:es:Negación lógica|negación]] <math> \land </math> [[w:es:Conjunción lógica|conjunción]] <math> \lor </math> [[w:es:Disyunción lógica|disyunción inclusiva]] <math> \nleftrightarrow </math> [[w:es:Disyunción exclusiva|disyunción exclusiva]] <math> \to </math> [[w:es:Condicional material|condicional]] <math> \leftrightarrow </math> [[w:es:Bicondicional|bicondicional]] <math> \vdash </math> [[w:es:Torniquete (símbolo)|torniquete]] <math> \equiv </math> [[w:es:Triple barra|equivalencia]] [[File:Logic Gates.svg|thumb]] * Prioridad del operador: (baja) <math> \quad \leftrightarrow \quad \to \quad \lor \quad \land \quad \lnot \quad </math> (alta).<ref>{{cita web|url=http://teachinglogic.liglab.fr/DN/syntax.php|título=Formulas and proofs syntax}}</ref><ref>{{cita web|url=https://web.stanford.edu/class/cs103/tools/truth-table-tool/|título=Truth Table Generator}}</ref> * El número de filas de la tabla sin contar el encabezado es igual a <math>{2^{n\acute{u}mero \ de \ variables}}</math> <math> \begin{array}{|c||c||c||c||c||c||c||c|c|c|} \hline p \nleftrightarrow q & p \leftrightarrow q & p \to q & p \nrightarrow q & p \lor q & p \downarrow q & p \land q & p \uparrow q & p & q\\ \hline 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1\\ 1 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 & 0\\ 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1\\ 0 & 1 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 0\\ \hline XOR & NXOR & IMPLY & NIMPLY & OR & NOR & AND & NAND & p & q \\ \hline \end{array} </math> * Entre dos operaciones idénticas la operación de la derecha es prioritaria. * La conjunción, la disyunción y el bicondicional tienen la propiedad [[w:es:Conmutatividad|conmutativa]] y [[w:es:Asociatividad (álgebra)|asociativa]]. == Reglas de deducción natural == <!-- Cambia los capítulos de ejemplo por los definitivos, pero recuerda cumplir la política de subpáginas. Si tienes dudas lee [[Wikilibros:Política de nombrado]] --> # [[/Reglas de introducción/]] # [[/Reglas de eliminación/]] # [[/Reglas derivadas/]] ## [[/Carga de premisa/]] # [[/Falacias/]] <math> p \to p </math> principio de identidad <math> p \leftrightarrow p </math> principio de identidad <math> \lnot (p \land \lnot p) </math> principio de no contradicción <math> p \lor \lnot p </math> principio de exclusión de tercero <math> \lnot \lnot p \leftrightarrow p </math> principio de doble negación <math> \lnot \lnot \lnot p \leftrightarrow \lnot p </math> principio de triple negación <math> p \land p \leftrightarrow p </math> ley de idempotencia de la conjunción <math> p \lor p \leftrightarrow p </math> ley de idempotencia de la disyunción <math> p \land q \leftrightarrow q \land p </math> ley conmutativa de la conjunción <math> p \lor q \leftrightarrow q \lor p </math> ley conmutativa de la disyunción <math> (p \leftrightarrow q) \leftrightarrow (q \leftrightarrow p) </math> ley conmutativa del bicondicional == Referencias == {{listaref}} {{Estantes|Lógica}} <!-- Busca libros de temática semejante en otros idiomas y reemplaza el enlace siguiente --> [[en:{{PAGENAME}}]] ghwme7hz9v84k6oz32fcnw1cqplf3vd Deducción natural/Carga de premisa 0 63432 428383 424891 2026-07-19T18:18:03Z Antimundo 74354 Categorizar usando AutoCat 428383 wikitext text/x-wiki {| | <math>\vdash</math> |rowspan=8| <math> \begin{array}{l} p \to q \to p \\ \begin{array}{|l|} \hline p \\ \begin{array}{|l|} \hline q \\ \begin{array}{|l|} \hline \lnot p \quad \\ p \land \lnot p \\ \hline \end{array} \quad \\ p \\ \hline \end{array} \quad \\ q \to p \\ \hline \end{array} \\ p \to q \to p \end{array} </math> |- | <math>1.</math> | <math>Supuesto</math> |- | <math>2.</math> | <math>Supuesto</math> |- | <math>3.</math> | <math>Supuesto</math> |- | <math>4.</math> | <math>I \land \quad 1,\ 3</math> |- | <math>5.</math> | <math>I \ \lnot \quad \ 3-4</math> |- | <math>6.</math> | <math>I \to \quad 2-5</math> |- | <math>7.</math> | <math>I \to \quad 1-6</math> |} {{AutoCat}} 7bd4x1ubr9kf1cwmwljrqzqt5tshw61 Mesecons 0 63654 428374 427623 2026-07-19T17:51:34Z Antimundo 74354 Categorizar usando estantes 428374 wikitext text/x-wiki {{Mejorar formato}} <!-- Este es un modelo para escribir el nuevo libro, no olvides sustituir los textos de ejemplo por los adecuados para tu libro. Si tienes dudas consulta [[Wikilibros:Ayuda]] Aquí escribe una introducción al tema del libro, a qué tipo de lectores va dirigido y cualquier consideración que quieras hacer sobre el libro. También puedes hacer una invitación a todos los visitantes a colaborar en la escritura del wikilibro. Incluir un enlace a un artículo relacionado en la Wikipedia tampoco es mala idea. --> <!-- Cambia los capítulos de ejemplo por los definitivos, pero recuerda cumplir la política de subpáginas. Si tienes dudas lee [[Wikilibros:Política de nombrado]] --> Este libro pretende servir como guía de acercamiento al uso de Mesecons como herramienta de gamificación en la enseñanza de lógica en general y de tablas de verdad en particular a estudiantes de bachillerato. Mesecons es una modificación (''mod'') del videojuego [[w:Luanti|Luanti]] (antes Minetest) que permite construir circuitos de manera análoga al [https://minecraft.fandom.com/wiki/Redstone_circuits/Logic ''redstone''] en [[w:Minecraft|Minecraft]]. Para poder jugar primero se instala el juego desde [https://www.luanti.org/es/ luanti.org] y, una vez abierto, se descarga desde dentro del programa en el apartado de Contenido. Creado un mundo nuevo, hay varios comandos que pueden ser de utilidad: * Concede todos los [https://docs.luanti.org/for-players/privileges/ privilegios]: <code>/grantme all</code> * <code>/set -n time_speed <speed></code>.—Pone la velocidad del ciclo día/noche donde <code><speed></code> es la velocidad del tiempo (leída como “<code><speed></code> veces más rápida que en la vida real”). El valor por defecto es 72, lo cual significa que un ciclo día-noche tarda 20 minutos por defecto. Requiere el privilegio “server”. ** <code>/set -n time_speed 0</code>.—Detiene el tiempo. * <code>/time <nowiki><horas>:<minutos></nowiki></code>.—Pone la hora del día en el formato 24 horas (0:00-23:59). Requiere el privilegio “settime”. Anteponga una virgulilla <code>~</code> a la hora para un cambio de tiempo relativo. ** <code>/time 12:00</code>.—Pone el mediodía. * <code>/time <nowiki><milihoras_del_día></nowiki></code>.—Pone la hora como un número entre 0 y 24000. Requiere el privilegio “settime”. También soporta sintaxis de número relativo con prefijo <code>~</code>. ** <code>/time 12000</code>.—También pone el mediodía. * <code>/spawnentity <entity> [<X>,<Y>,<Z>]</code>.—Presenta una entidad de tipo <entity> cerca de su lugar o en las coordenadas X,Y,Z, en caso de que se hayan especificado. Requiere los privilegios “give” e “interact”. Las coordenadas también soportan valores relativos con <code>~</code>. ** <code>/spawnentity boats:boat</code>.—Bota un bote. ** <code>/spawnentity carts:cart</code>.—Entra una vagoneta. La unidad básica de información es el bit (''binary digit''). Una lámpara representa los dos posibles valores del dígito binario: apagada su valor es 0 o falso, mientras que encendida su valor es 1 o verdadero. Si se acopla una palanca a la lámpara ya se puede componer la tabla de verdad básica de YES. Por el contrario, la puerta NOT invierte el valor de salida: al encender se apaga y viceversa. Con otra palanca más se compone un circuito en paralelo de manera que solo se apaga con las dos palancas apagadas, como en la puerta OR que a su vez puede negarse en NOR. Con la puerta AND se crea un circuito en serie de modo que la lámpara solo se enciende si las dos palancas también lo están. Del mismo modo se puede negar y convertirse en NAND. Las puertas XNOR y XOR comprueban si los valores de las variables de entrada (palancas) son iguales o desiguales respectivamente. Por último, las puertas IMPLY y NIMPLY representan el condicional material y su negación respectivamente. La siguiente tabla ofrece distintas posibilidades para el diseño de los circuitos: {| class="wikitable sortable" |+ [https://mesecons.net/ Mesecons] |- ! Ecuación !! Función !! [https://mesecons.net/luacontroller/ Controlador&nbsp;Lua] !! Microcontrolador !! Fórmula !! <math>b=1100, c=1010</math> !! Símbolo de la Comisión Electrotécnica Internacional |- | <math>a = b</math> || [[f:Z23153|YES]] || <code>port.a = pin.b</code> || <code>sbi(A, B)</code>‎ || <math>a \equiv b</math> || <math>y=10</math> || [[File:IEC YES label.svg]] |- | <math>a = 1 - b</math> || [[f:Z10216|NOT]] || <code>port.a = not pin.b</code> || <code>sbi(A, !B)</code>‎ || <math>a \equiv \lnot b</math> || <math>y=01</math> || [[File:IEC NOT label.svg]] |- | <math>a = b c</math> || [[f:Z10174|AND]] || <code>port.a = pin.b and pin.c</code> || <code>sbi(A, ‎B&C)</code>‎ || <math>a \equiv b \land c</math> || <math>y=1000</math> || [[File:IEC AND label.svg]] |- | <math>a = 1 - b c</math> || [[f:Z10243|NAND]] || <code>port.a = not (pin.b and pin.c)</code>‎ || <code><nowiki>sbi(A, !B|!C)</nowiki></code>‎ || <math>a \equiv \lnot (b \land c)</math> || <math>y=0111</math> || [[File:IEC NAND label.svg]] |- | <math>a = |b - c| + b c </math> || [[f:Z10184|OR]] || <code>port.a = pin.b or pin.c</code> || <code><nowiki>sbi(A, B|C)‎</nowiki></code> || <math>a \equiv b \lor c</math> || <math>y=1110</math> || [[File:IEC OR label.svg]] |- | <math>a = 1 - b c - |b - c|</math> || [[f:Z10231|NOR]] || <code>port.a = not (pin.b or pin.c)</code>‎ || <code>sbi(A, !B&!C)</code>‎ || <math>a \equiv \lnot (b \lor c)</math> || <math>y=0001</math> || [[File:IEC NOR label.svg]] |- | <math>a = 1 - b + bc</math> || [[f:Z10329|IMPLY]] || <code>port.a = not pin.b or pin.c</code> || <code><nowiki>sbi(A, !B|C)‎</nowiki></code> || <math>a \equiv b \rightarrow c</math> || <math>y=1011</math> || [[File:IEC Implies gate.svg]] |- | <math>a = b - bc</math> || [[f:Z10962|NIMPLY]] || <code>port.a = pin.b and not pin.c</code> || <code>sbi(A, B&!C)</code>‎ || <math>a \equiv \lnot (b \rightarrow c)</math> || <math>y=0100</math> || [[File:IEC Nimplies gate.svg]] |- | <math>a = |b - c|</math> || [[f:Z10237|XOR]] || <code>port.a = pin.b ~= pin.c</code> || <code>sbi(A, B~C)</code>‎ || <math>a \equiv \lnot (b \leftrightarrow c)</math> || <math>y=0110</math> || [[File:IEC XOR label.svg]] |- | <math>a = 1 - |b - c|</math> || [[f:Z844|XNOR]] || <code>port.a = pin.b == pin.c</code> || <code>sbi(A, B=C)</code>‎ || <math>a \equiv b \leftrightarrow c</math> || <math>y=1001</math> || [[File:IEC XNOR label.svg]] |} *<code>pin</code>.—Puerto de entrada. *<code>port</code>.—Puerto de salida. *<code>sbi</code>.—Supervisor Binary Interface. {{Estantes|Lógica}} a66izq3o4t7nkxg8dkv7u0g4jdrtrk2 Aprende Lógica/Paradojas 0 63655 428380 423425 2026-07-19T18:16:28Z Antimundo 74354 Categorizar usando AutoCat 428380 wikitext text/x-wiki [[Image:Missing square puzzle.svg|thumb|250px|''Paradoja del Cuadrado Perdido''. En realidad, no es más que una simple ilusión óptica, pero ilustra la idea.]] El término "paradoja" se utiliza para describir diversas situaciones conflictivas y contraintuitivas. El estudio de las paradojas es más que una simple curiosidad lógica; tiene importantes consecuencias para la ciencia y las matemáticas. Por ejemplo la antigua paradoja del mentiroso está relacionada con el Teorema de Incompletitud de Gödel. ''Paradoja del Mentiroso''':Esta es una de las paradojas más antiguas de la autorreferencia y se ha formulado de varias maneras. Aquí la formularemos de la siguiente manera. :{| border=1 cellpadding=4 | El contenido de esta caja es falso. |} a) Si el contenido de la caja es verdadero, entonces, según sí misma, el contenido de la caja es falso. b) Si el contenido de la caja es falso, entonces el contenido de la caja es verdadero. Como vemos esto es una paradoja de autorreferencia, es decir, contradicciones lógicas resultantes de afirmaciones que se refieren a sí mismas, pero cuya contradicción no es evidente. {{AutoCat}} iye9o1rxd6z549gzlvoftj1x0nofxa8 Aprende Lógica/Raciocinio 0 63660 428378 423456 2026-07-19T18:16:07Z Antimundo 74354 Categorizar usando AutoCat 428378 wikitext text/x-wiki Pruebas de razonamiento: La lógica puede entenderse como una característica de una persona, y su nivel de lógica puede evaluarse mediante pruebas de CI. La lógica no puede entenderse como "inteligencia" en su conjunto, ya que existen otros tipos de esta, pero actualmente es la inteligencia más importante. Las personas con un alto nivel de lógica son superdotadas, lo que significa que obtuvieron una puntuación superior a 126 en la prueba de CI. Una persona superdotada se define mejor como alguien con mayor eficiencia de razonamiento Razonamiento: Al hablar de razonamiento, debemos aclarar que, para la lógica, cualquier consideración psicológica sobre el acto de razonar es irrelevante. Lo que importa es la forma del razonamiento. Por lo tanto, definámoslo así: Un razonamiento es una lista de proposiciones, la última de las cuales se denomina conclusión (generalmente se distingue de las demás por palabras como "por lo tanto" y "por consiguiente", o por el símbolo ∴ y se deriva de las demás, llamadas premisas o proposiciones. Premisas o Proposiciones: Una premisa es un enunciado y la lógica las utiliza para determinar las condiciones para que sea verdadera o falsa. Por ejemplo, la oración "todos los cuervos son negros" es verdadera si cada elemento del conjunto "cuervos" cumple la propiedad "ser negro". La misma oración es falsa si al menos un elemento del conjunto "cuervos" no cumple la propiedad "ser negro". Además, mediante la lógica, podemos determinar específicamente qué estructuras proposicionales garantizan siempre la verdad de una oración. Por ejemplo, "Todos los A son A". Cualquiera que sustituyamos por "A" en esta estructura, si tiene sentido, entonces tenemos una oración verdadera. Por ejemplo: "Todos los cuervos son cuervos", "Todos los caballos son caballos", "Todos los dragones son dragones", etc. Principios lógicos supremos: A- Según el principio de no contradicción, dada una proposición y su negación, ambas no pueden ser verdaderas. B - Según el tercer excluido: Si decimos de algo que es o que no es verdadero, no habrá una tercera alternativa entre estas dos. C- Según el principio de identidad: el ser es y el no ser no es, es decir, todo es igual a sí mismo. Silogismo: El silogismo es una forma de razonamiento lógico en la que existen dos premisas y una conclusión distinta de estas. En estas premisas existe un término medio que es el que se repite en ambas premisas, pero no aparece en la conclusión. Por ejemplo: Si todo perro es un mamífero. Si todo mamífero es un vertebrado. Entonces, todo perro es un vertebrado. En este caso, el término medio es el término «mamífero». Términos o conceptos Son la base del pensamiento lógico. Por lo tanto, primero debemos definir los términos o conceptos antes de poder proceder lógicamente. En este caso particular ¿Qué es un «mamífero» o un «vertebrado» por ejemplo? {{AutoCat}} ko5td64ix7ox57azbpg6hpdtckwe0s4 Deducción natural/Reglas de introducción 0 63716 428386 425053 2026-07-19T18:19:10Z Antimundo 74354 Categorizar usando AutoCat 428386 wikitext text/x-wiki {|border="1" cellpadding="7" style="border-collapse:collapse;" !Conectiva !Nombre de la regla !Abreviación !Formalización !Cálculo de secuentes |- align="center" |<math>\neg \,</math> |align="center"|[[w:es:Introducción de la negación|Introducción de la negación]]<br />[[w:es:Reductio ad absurdum|Reducción al absurdo]] |<math>I \neg \,</math> | {| |rowspan=2| <math>\begin{array}{l} \begin{array}{|l|} \hline \quad p \quad \\ q \land \neg q \\ \hline \end{array} \\ \quad \neg p \end{array}</math> |<math>Supuesto</math> |- |<math> \quad </math> |} |<math>(p \to q \land \neg q) \to \neg p</math> <math>p \land q \land \neg q \to \neg p</math> <math>(p \to q) \land (p \to \neg q) \to \neg p</math> <math>(p \land q) \land p \land \neg q \to \neg p</math> |- align="center" |<math>\land \,</math> |align="center"|[[w:es:Introducción de la conjunción|Introducción de la conjunción]] |<math>I \land \,</math> |<math>\begin{matrix} p \\ \underline{\quad q \quad} \\ \overline{\; p \land q \;} \end{matrix} \qquad \begin{matrix} p \\ \underline{\quad q \quad} \\ \overline{\; q \land p \;} \end{matrix} </math> |<math> p \land q \leftrightarrow p \land q </math> <math> p \land q \leftrightarrow q \land p </math> |- align="center" |rowspan=""|<math>\lor \,</math> |align="center"|[[w:es:Introducción de la disyunción|Introducción de la disyunción]] |<math>I \lor \,</math> |<math>\begin{matrix} p \\ \hline p \lor q \end{matrix} \qquad \begin{matrix} p \\ \hline q \lor p \end{matrix}</math> |<math> p \to p \lor q </math> <math> p \to q \lor p </math> |- align="center" |rowspan=""|<math>\to \,</math> |align="center"|[[w:es:Teorema de la deducción|Teorema de la deducción]] |<math>I \to \,</math> | {| |rowspan=2| <math>\begin{array}{l} \begin{array}{|l|} \hline \quad p \quad \\ \quad q \quad \\ \hline \end{array} \\ \; \ p \to q \end{array}</math> |<math>Supuesto</math> |- |<math> \; \; </math> |} |<math> (p \to q) \to p \to q </math> <math> p \land q \to p \to q </math> <math> p \land q \to q \to p </math> |- align="center" |<math>\leftrightarrow \,</math> |align="center"|[[w:es:Introducción del bicondicional|Introducción del bicondicional]] |<math>I \leftrightarrow \,</math> |<math>\begin{matrix} p \to q \\ \underline {\; q \to p \;} \\ \overline {\; p \leftrightarrow q \;} \end{matrix} \qquad \begin{matrix} p \to q \\ \underline {\; q \to p \;} \\ \overline {\; q \leftrightarrow p \;} \end{matrix}</math> |<math> p \to q \land q \to p \leftrightarrow p \leftrightarrow q </math> <math> p \to q \land q \to p \leftrightarrow q \leftrightarrow p </math> |} {{AutoCat}} 4p1mzzcpjto5a1qayqypmldzgoohr02 Deducción natural/Reglas de eliminación 0 63717 428384 424893 2026-07-19T18:18:28Z Antimundo 74354 Categorizar usando AutoCat 428384 wikitext text/x-wiki {|border="1" cellpadding="7" style="border-collapse:collapse;" !Conectiva !Nombre de la regla !Abreviación !Formalización !Cálculo de secuentes |- align="center" |<math>\neg \,</math> |align="center"|[[w:es:Doble negación (lógica)|Doble negación]] |<math>E \neg \,</math> |<math>\begin{matrix} \underline{\quad p \quad} \\ \overline{\; \neg \neg p \;} \end{matrix}</math> |<math>\neg \neg p \leftrightarrow p</math> |- align="center" |<math>\land \,</math> |align="center"|[[w:es:Simplificación|Eliminación de la conjunción]] |<math>E \land \,</math> |<math>\begin{matrix} p \land q \\ \hline p \end{matrix}\qquad \begin{matrix} p \land q \\ \hline q \end{matrix}</math> |<math>p \land q \to p </math> <math> p \land q \to q</math> |- align="center" |<math>\lor \,</math> |align="center"|[[w:es:Eliminación de la disyunción|Eliminación de la disyunción]] |<math>E \lor \,</math> |<math>\begin{matrix} p \lor q \\ p \to r \\ q \to r \\ \hline r \end{matrix}\qquad \begin{matrix} \neg p \lor \neg q \\ r \to p \\ r \to q \\ \hline \neg r \end{matrix} </math> |<math>(p \lor q) \land (p \to r) \land (q \to r) \to r</math> <math>(\neg p \lor \neg q) \land (r \to p) \land (r \to q) \to \neg r</math> |- align="center" |rowspan=2|<math>\to \,</math> |align="center"|[[w:es:Modus ponendo ponens|Modus ponendo ponens]] |<math>MP</math> |<math>\begin{matrix} p \to q \\ p \\ \hline q \end{matrix}</math> |<math>(p \to q) \land p \to q</math> |- align="center" |align="center"|[[w:es:Modus tollendo tollens|Modus tollendo tollens]] |<math>MT</math> |<math>\begin{matrix} p \to q \\ \neg q\\ \hline \neg p \end{matrix}</math> |<math>(p \to q) \land \neg q \to \neg p</math> |- align="center" |<math>\leftrightarrow \,</math> |align="center"|[[w:es:Eliminación del bicondicional|Eliminación del bicondicional]] |<math>E \leftrightarrow \,</math> |<math>\begin{matrix}p \leftrightarrow q \\ \hline p \to q \end{matrix}\qquad \begin{matrix} p \leftrightarrow q \\ \hline q \to p \end{matrix}</math> |<math>p \leftrightarrow q \to p \to q </math> <math> p \leftrightarrow q \to q \to p</math> |} {{AutoCat}} 9tlo0ofjjpbl641mhfimz2q03gnx5qx Deducción natural/Reglas derivadas 0 63718 428385 424831 2026-07-19T18:18:54Z Antimundo 74354 Categorizar usando AutoCat 428385 wikitext text/x-wiki {|border="1" cellpadding="7" style="border-collapse:collapse;" !Nombre de la regla !Abreviación !Formalización !Cálculo de secuentes |- align="center" |rowspan=2|''Ex falso sequitur quodlibet'' [[w:es:Principio de explosión|Principio de explosión]] ''Ex contradictione sequitur quodlibet'' |<math>EFQ </math> |<math>\begin{matrix} \neg p \\ \hline p \to q \end{matrix} </math> |<math>\neg p \to p \to q</math> |- align="center" |<math>ECQ </math> |<math>\begin{matrix} p \land \neg p \\ \hline q \end{matrix} \qquad \begin{matrix} p \leftrightarrow \neg p \\ \hline q \end{matrix}</math> |<math>p \land \neg p \to q </math> <math> (p \leftrightarrow \neg p) \to q</math> |- align="center" |rowspan=2|[[w:es:Leyes de De Morgan|De Morgan]] |rowspan=2|<math>DM</math> |<math>\begin{matrix} \underline{\neg (p \land q) } \\ \overline{\neg p \lor \neg q} \end{matrix} \qquad \begin{matrix} \underline{\neg (p \lor q) } \\ \overline{\neg p \land \neg q} \end{matrix} </math> |<math> \neg (p \land q) \leftrightarrow \neg p \lor \neg q </math> <math> \neg (p \lor q) \leftrightarrow \neg p \land \neg q </math> |- align="center" |<math>\begin{matrix} \underline{\quad \; p \land q \; \quad} \\ \overline{\neg (\neg p \lor \neg q)} \end{matrix} \qquad \begin{matrix} \underline{\quad \; p \lor q \; \quad} \\ \overline{\neg (\neg p \land \neg q)} \end{matrix} </math> |<math> p \land q \leftrightarrow \neg (\neg p \lor \neg q) </math> <math> p \lor q \leftrightarrow \neg (\neg p \land \neg q) </math> |- align="center" |rowspan=2|Silogismo disyuntivo Inferencia de la alternativa [[w:es:Modus tollendo ponens|''Modus tollendo ponens'']] |rowspan=2|<math>SD</math> |<math>\begin{matrix} p \lor q \\ \neg p \\ \hline q \end{matrix} \qquad \begin{matrix} p \lor q \\ \neg q \\ \hline p \end{matrix}</math> |<math>(p \lor q) \land \neg p \to q </math> <math> (p \lor q) \land \neg q \to p</math> |- align="center" |<math>\begin{matrix} \neg p \lor q \\ p \\ \hline q \end{matrix} \qquad \begin{matrix} p \lor \neg q \\ q \\ \hline p \end{matrix}</math> |<math>(\neg p \lor q) \land p \to q </math> <math> (p \lor \neg q) \land q \to p</math> |- align="center" |[[Deducción natural/Carga de premisa|Carga de premisa]] |<math>CP</math> |<math>\begin{matrix} p \\ \hline q \to p \end{matrix} \qquad \begin{matrix} q \\ \hline p \to q \end{matrix}</math> |<math>p \to q \to p </math> <math> q \to p \to q</math> |- align="center" |[[w:es:Principio de identidad|Identidad]] Repetición |<math>Id</math> |<math>\begin{matrix} \underline{\quad p \quad} \\ \overline{\quad p \quad} \end{matrix} \qquad \begin{matrix} \underline{\quad q \quad} \\ \overline{\quad q \quad} \end{matrix}</math> |<math>p \leftrightarrow p </math> <math>q \leftrightarrow q</math> |- align="center" |Definición del condicional [[w:es:Implicación material|Implicación material]] |<math>Df\to</math> |<math>\begin{matrix} \underline{\; p \to q \;} \\ \overline{\; \neg p \lor q \;} \end{matrix} \qquad \begin{matrix} \underline{\quad p \to q \quad} \\ \overline{\; \neg (p \land \neg q) \;} \end{matrix}</math> |<math>p \to q \leftrightarrow \neg p \lor q </math> <math>p \to q \leftrightarrow \neg (p \land \neg q)</math> |- align="center" |[[w:es:Contraposición lógica|Contraposición]] [[w:es:Transposición (lógica)|Transposición]] |<math>Tp</math> |<math>\begin{matrix} \underline{\, \quad p \to q \quad \,} \\ \overline{\, \; \neg q \to \neg p \; \,} \end{matrix} \qquad \begin{matrix} \underline{\, \quad q \to p \quad \,} \\ \overline{\, \; \neg p \to \neg q \; \,} \end{matrix}</math> |<math>p \to q \leftrightarrow \neg q \to \neg p </math> <math>q \to p \leftrightarrow \neg p \to \neg q</math> |- align="center" |[[w:es:Silogismo hipotético|Silogismo hipotético]] Transición del condicional |<math>SH</math> |<math>\begin{matrix} p \to q \\ q \to r \\ \hline p \to r \end{matrix} </math> |<math>(p \to q) \land (q \to r) \to p \to r </math> |- align="center" |[[w:es:Dilema constructivo|Dilema constructivo]] |<math>DC</math> |<math> \begin{matrix} p \lor r \\ p \to q \\ r \to s \\ \hline q \lor s \\ \end{matrix} </math> |<math> (p \lor r) \land (p \to q) \land (r \to s) \to q \lor s </math> |- align="center" |[[w:es:Dilema destructivo|Dilema destructivo]] |<math>DD</math> |<math> \begin{matrix} p \to q \\ r \to s \\ \lnot q \lor \lnot s \\ \hline \lnot p \lor \lnot r \\ \end{matrix} </math> |<math> (p \to q) \land (r \to s) \land (\lnot q \lor \lnot s) \to \lnot p \lor \lnot r </math> |- align="center" |Distribución de la conjunción |<math>D \land</math> |<math>\begin{matrix} \underline{\, \; p \land (q \lor r) \; \,} \\ \overline{ p \land q \lor p \land r } \end{matrix} </math> |<math>p \land (q \lor r) \leftrightarrow p \land q \lor p \land r </math> |- align="center" |Distribución de la disyunción |<math>D \lor</math> |<math>\begin{matrix} \underline{\quad \, p \lor (q \land r) \, \quad} \\ \overline{ (p \lor q) \land (p \lor r) } \end{matrix} </math> |<math>p \lor (q \land r) \leftrightarrow (p \lor q) \land (p \lor r) </math> |} {{AutoCat}} 6nymsgp1atb70n3d3560zdiluywaryf Wikilibros:Consultas de borrado/Archivo/2026 4 64036 428391 428255 2026-07-19T18:29:07Z Antimundo 74354 /* Borrar el libro Manual de Iuris Explorer */ Respuesta 428391 wikitext text/x-wiki === [[:Categoría:Apuntes matemáticos]] === {{cierracdb-arr}} '''Eliminar''': Categoría vacía, sin páginas ni subcategorías asociadas. Mantenerla no aporta valor a la estructura de navegación y sólo incrementa el mantenimiento innecesario.--[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 15:55 1 jul 2026 (UTC) : Página: {{l|:Categoría:Apuntes matemáticos}} : Motivación: Página que se realiza una CDB hace 5 años por {{u|Proferichardperez}} ([[Special:Diff/396341|véase acá]]), sin embargo, nunca se llevó a discusión. Revisando la estructuración de la categoría, está vacía, ninguna página enlaza a ella y el libro en cuestión ([[Apuntes matemáticos]]) tiene su propia categorización en [[:Categoría:Educación]], por lo que sólo ocupa espacio--[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:35 22 jun 2026 (UTC) ;Discusión * * {{voto|borrar}} , como proponente --[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:35 22 jun 2026 (UTC) :{{Voto|Borrar}} En mi opinión es un infraesbozo, no hay ninguna estructura o contenido suficiente para que otro usuario pueda retomar el trabajo en este libro, y hace 6 años que no se edita por lo que claramente el usuario que lo creó no sigue trabajando en él. Me resulta una pena, pero creo que es mejor borrar esta clase de infraesbozos abandonados para poder centrarse en el mantenimiento de los libros que tienen una estructura y objetivos mas definidos. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:23 22 jun 2026 (UTC) {{cierracdb-ab}} == Cinco plantillas sin uso y obsoletas == '''Páginas''': Las cinco plantillas bajo la categoría: * [[:Categoría:Wikilibros:Plantillas para evitar la evaluación por MediaWiki]] Lo cual incluye las siguientes páginas (junto a sus páginas de uso). * [[Plantilla:!]] * [[Plantilla:!!]] * [[Plantilla:((]] * [[Plantilla:))]] * [[Plantilla:=]] '''Motivación''': Ninguna de estas plantillas están enlazadas ni transcluidas por ninguna otra página, y su uso está obsoleto, de hecho, incluso la propia documentación de la plantilla desaconseja su uso «''En general, evite el uso de estas plantillas si es posible.''». Fueron creadas entre 2008 y 2014 para sustituir caracteres como <code>!</code> o <code>=</code> por llamadas a plantillas (por ejemplo, <code><nowiki>|</nowiki></code> en lugar de <code>!</code>), evitando que MediaWiki los interpretara como parte de la sintaxis wiki. Esa técnica era habitual en versiones muy antiguas del software, pero hace años que ha quedado obsoleta: esos casos se resuelven escribiendo el carácter directamente, usando [[mw:Help:Formatting/es#Nowiki_para_HTML|nowiki]] cuando es necesario o reestructurando la plantilla. La propia documentación oficial de MediaWiki ya no recomienda este tipo de plantillas ([[mw:Help:Extension:ParserFunctions]]); para el caso de <code>!</code> indica expresamente que fue sustituida por la palabra mágica <code><nowiki>{{!}}</nowiki></code> desde MediaWiki 1.24 (publicada en 2014) (Véase la documentación oficial: [[mw:Help:Extension:ParserFunctions#Escaping_pipe_characters]] que de hecho llama a esta práctica un «''kludge''» que en español se traduce como «''chapuza''» o «''parche''»), y para el resto de casos la documentación moderna describe otros mecanismos (nowiki, entidades HTML o funciones del parser) sin recurrir a plantillas de escape. En definitiva, se trata de plantillas obsoletas, sin transclusiones ni enlaces entrantes y cuyo propio uso está desaconsejado. Dado que actualmente no dependen de ellas otras páginas, este es el momento idóneo para retirarlas antes de que alguien empiece usarlas y se genere una dependencia innecesaria. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 07:13 6 jul 2026 (UTC) ;Discusión * * {{voto|borrar}} , como proponente. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 07:15 6 jul 2026 (UTC) == Borrar el libro Manual de Iuris Explorer == '''Libro''': El libro completo de [[Manual de Iuris Explorer]]. '''Motivación''': Este libro fue creado en 2008, muy probablemente por la empresa que había creado el propio software, por ese motivo, el antiguo bibliotecario @[[Usuario:Morza|Morza]] lo marcó para borrar en 2009 ([[Wikilibros:Votaciones/2009/Borrar el libro Iurius Explorer]]), esta votación se cerró con un voto en contra y dos abstenciones (incluído el propio Morza que decidió abstenerse). Esto fue debido a que el usuario que había creado el libro comentó que estaba en proceso de seguir mejorandolo. Este siguió realizando algunas ediciones, y su última edición en Wikilibros fue en ese mismo año 2009. En la evaluación 2011 de Wikilibros ([[Wikilibros:Evaluación 2011/M]]) el usuario Morza escribió sobre este libro: {{cita|En su momento plantee su borrado: [[Wikilibros:Votaciones/2009/Borrar el libro Iurius Explorer]], aunque se decidió mantener por consenso. Creo que está hecho por la propia empresa, pero en su momento no se consideró promocional.}} Hoy, todos los enlaces a este software que aparecen en este libro están rotos (ejemplo https://www.juridica.com.ar/productos/iuris.html), y buscando en navegadores Google y DuckDuckGo me ha resultado imposible encontrar ninguna página que haga referencia a la existencia este software, las únicas referencias que existen son a este libro de Wikilibros. Además de estar abandonado, considero que este libro es totalmente irrelevante, a nadie le va a resultar útil un manual de un software que ni si quiera existe rastro o se puede encontrar en ningún lugar. Sumado a esto, coincido en las observaciones que se hicieron hace 15 años de que este libro está escrito en un lenguaje promocional, esto se evidencia por las constantes frases alabando las bondades de este software como: {{cita|* IurisExplorer está diseñado para satisfacer las exigencias del trabajo de un abogado, tanto en su desempeño individual como en su tarea dentro del estudio, adaptándose a las necesidades de profesionales jóvenes o con mayor experiencia. * IurisExplorer está diseñado desde la óptica del Profesional para ayudar al abogado en todas las tareas que éste debe realizar para el seguimiento de sus causas. IurisExplorer está integrado completamente con el standard de trabajo habitual que es Microsoft Office de manera de facilitar y completar la labor del profesional. * Cumpliendo con la total personalización de IurisExplorer, usted puede configurar el sistema para... * ...Cambia la posibilidad de “buscar información” por la de “TENER” la información donde se está trabajando, lo que implica más poder... * Utiliza Microsoft Word como Procesador de Textos potenciándolo en lugar de limitarlo... * ...Esta totalmente integrado con Microsoft Word, Microsoft Outlook y con Microsoft Excel. * Toda la potencia de Microsoft Word + Iuris Explorer facilita la creación y edición de escritos judiciales... * Informes: Iuris Explorer permite su total personalización derivándolos a Microsoft Word para su edición o impresión...}} Resumiendo, mis motivos para pedir el borrado son: * El usuario que creó el libro probablemente era un miembro de la propia empresa, y este lleva desde 2009 sin realizar ninguna edición. * Ni si quiera soy capaz de encontrar en internet ni una sola referencia a la propia existencia de este software, descontando este libro. Además, todos los enlaces que tiene este libro están rotos. * La empresa que realizaba el software (Jurídica.com S.A) ni si quiera sigue existiendo ya que parece que cerró en 2014 según he podido investigar. * El manual está escrito en un claro tono promocional. * No parece que este libro pueda ser de utilidad para nadie. Es un manual de un software privado que no se distribuye desde hace más de una década, del que no existen referencias públicas y cuyo sitio web ha desaparecido, por lo que su valor como material de aprendizaje es prácticamente nulo. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:51 9 jul 2026 (UTC) * {{voto|borrar}} , como proponente. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:52 9 jul 2026 (UTC) :: {{voto|comentario}} Buenas {{Ping|Mazbel}} disculpa por mencionarte en tantos lugares. Esta consulta de borrado ha sido cerrada automáticamente por el bot pues ya ha pasado el tiempo de votación, con un sólo voto (el mío). No sé muy bien cómo se procede en estos casos, aunque como ya he argumentado, yo considero que debería borrarse. ¡Un saludo! --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 19:32 18 jul 2026 (UTC) ::{{Voto|Comentario}} Añado información extra, al parecer esta no es la segunda, si no la tercera vez que un usuario propone borrar este libro. También fue marcado para borrar en la [[Wikilibros:Evaluación 2011/M]] por el motivo «'' Parece autopromoción''». [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:29 19 jul 2026 (UTC) 8vjl2rs41hluowoxceqc65hafr88on1 428399 428391 2026-07-19T19:57:13Z Mazbel 57931 /* Cinco plantillas sin uso y obsoletas */ Cerrando cdb 428399 wikitext text/x-wiki === [[:Categoría:Apuntes matemáticos]] === {{cierracdb-arr}} '''Eliminar''': Categoría vacía, sin páginas ni subcategorías asociadas. Mantenerla no aporta valor a la estructura de navegación y sólo incrementa el mantenimiento innecesario.--[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 15:55 1 jul 2026 (UTC) : Página: {{l|:Categoría:Apuntes matemáticos}} : Motivación: Página que se realiza una CDB hace 5 años por {{u|Proferichardperez}} ([[Special:Diff/396341|véase acá]]), sin embargo, nunca se llevó a discusión. Revisando la estructuración de la categoría, está vacía, ninguna página enlaza a ella y el libro en cuestión ([[Apuntes matemáticos]]) tiene su propia categorización en [[:Categoría:Educación]], por lo que sólo ocupa espacio--[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:35 22 jun 2026 (UTC) ;Discusión * * {{voto|borrar}} , como proponente --[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:35 22 jun 2026 (UTC) :{{Voto|Borrar}} En mi opinión es un infraesbozo, no hay ninguna estructura o contenido suficiente para que otro usuario pueda retomar el trabajo en este libro, y hace 6 años que no se edita por lo que claramente el usuario que lo creó no sigue trabajando en él. Me resulta una pena, pero creo que es mejor borrar esta clase de infraesbozos abandonados para poder centrarse en el mantenimiento de los libros que tienen una estructura y objetivos mas definidos. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:23 22 jun 2026 (UTC) {{cierracdb-ab}} == Cinco plantillas sin uso y obsoletas == {{cierracdb-arr}} '''Eliminar''': Plantillas obsoletas. Documentación oficial de MediaWiki desestima su uso. '''Páginas''': Las cinco plantillas bajo la categoría: * [[:Categoría:Wikilibros:Plantillas para evitar la evaluación por MediaWiki]] Lo cual incluye las siguientes páginas (junto a sus páginas de uso). * [[Plantilla:!]] * [[Plantilla:!!]] * [[Plantilla:((]] * [[Plantilla:))]] * [[Plantilla:=]] '''Motivación''': Ninguna de estas plantillas están enlazadas ni transcluidas por ninguna otra página, y su uso está obsoleto, de hecho, incluso la propia documentación de la plantilla desaconseja su uso «''En general, evite el uso de estas plantillas si es posible.''». Fueron creadas entre 2008 y 2014 para sustituir caracteres como <code>!</code> o <code>=</code> por llamadas a plantillas (por ejemplo, <code><nowiki>|</nowiki></code> en lugar de <code>!</code>), evitando que MediaWiki los interpretara como parte de la sintaxis wiki. Esa técnica era habitual en versiones muy antiguas del software, pero hace años que ha quedado obsoleta: esos casos se resuelven escribiendo el carácter directamente, usando [[mw:Help:Formatting/es#Nowiki_para_HTML|nowiki]] cuando es necesario o reestructurando la plantilla. La propia documentación oficial de MediaWiki ya no recomienda este tipo de plantillas ([[mw:Help:Extension:ParserFunctions]]); para el caso de <code>!</code> indica expresamente que fue sustituida por la palabra mágica <code><nowiki>{{!}}</nowiki></code> desde MediaWiki 1.24 (publicada en 2014) (Véase la documentación oficial: [[mw:Help:Extension:ParserFunctions#Escaping_pipe_characters]] que de hecho llama a esta práctica un «''kludge''» que en español se traduce como «''chapuza''» o «''parche''»), y para el resto de casos la documentación moderna describe otros mecanismos (nowiki, entidades HTML o funciones del parser) sin recurrir a plantillas de escape. En definitiva, se trata de plantillas obsoletas, sin transclusiones ni enlaces entrantes y cuyo propio uso está desaconsejado. Dado que actualmente no dependen de ellas otras páginas, este es el momento idóneo para retirarlas antes de que alguien empiece usarlas y se genere una dependencia innecesaria. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 07:13 6 jul 2026 (UTC) ;Discusión * * {{voto|borrar}} , como proponente. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 07:15 6 jul 2026 (UTC) {{cierracdb-ab}} == Borrar el libro Manual de Iuris Explorer == '''Libro''': El libro completo de [[Manual de Iuris Explorer]]. '''Motivación''': Este libro fue creado en 2008, muy probablemente por la empresa que había creado el propio software, por ese motivo, el antiguo bibliotecario @[[Usuario:Morza|Morza]] lo marcó para borrar en 2009 ([[Wikilibros:Votaciones/2009/Borrar el libro Iurius Explorer]]), esta votación se cerró con un voto en contra y dos abstenciones (incluído el propio Morza que decidió abstenerse). Esto fue debido a que el usuario que había creado el libro comentó que estaba en proceso de seguir mejorandolo. Este siguió realizando algunas ediciones, y su última edición en Wikilibros fue en ese mismo año 2009. En la evaluación 2011 de Wikilibros ([[Wikilibros:Evaluación 2011/M]]) el usuario Morza escribió sobre este libro: {{cita|En su momento plantee su borrado: [[Wikilibros:Votaciones/2009/Borrar el libro Iurius Explorer]], aunque se decidió mantener por consenso. Creo que está hecho por la propia empresa, pero en su momento no se consideró promocional.}} Hoy, todos los enlaces a este software que aparecen en este libro están rotos (ejemplo https://www.juridica.com.ar/productos/iuris.html), y buscando en navegadores Google y DuckDuckGo me ha resultado imposible encontrar ninguna página que haga referencia a la existencia este software, las únicas referencias que existen son a este libro de Wikilibros. Además de estar abandonado, considero que este libro es totalmente irrelevante, a nadie le va a resultar útil un manual de un software que ni si quiera existe rastro o se puede encontrar en ningún lugar. Sumado a esto, coincido en las observaciones que se hicieron hace 15 años de que este libro está escrito en un lenguaje promocional, esto se evidencia por las constantes frases alabando las bondades de este software como: {{cita|* IurisExplorer está diseñado para satisfacer las exigencias del trabajo de un abogado, tanto en su desempeño individual como en su tarea dentro del estudio, adaptándose a las necesidades de profesionales jóvenes o con mayor experiencia. * IurisExplorer está diseñado desde la óptica del Profesional para ayudar al abogado en todas las tareas que éste debe realizar para el seguimiento de sus causas. IurisExplorer está integrado completamente con el standard de trabajo habitual que es Microsoft Office de manera de facilitar y completar la labor del profesional. * Cumpliendo con la total personalización de IurisExplorer, usted puede configurar el sistema para... * ...Cambia la posibilidad de “buscar información” por la de “TENER” la información donde se está trabajando, lo que implica más poder... * Utiliza Microsoft Word como Procesador de Textos potenciándolo en lugar de limitarlo... * ...Esta totalmente integrado con Microsoft Word, Microsoft Outlook y con Microsoft Excel. * Toda la potencia de Microsoft Word + Iuris Explorer facilita la creación y edición de escritos judiciales... * Informes: Iuris Explorer permite su total personalización derivándolos a Microsoft Word para su edición o impresión...}} Resumiendo, mis motivos para pedir el borrado son: * El usuario que creó el libro probablemente era un miembro de la propia empresa, y este lleva desde 2009 sin realizar ninguna edición. * Ni si quiera soy capaz de encontrar en internet ni una sola referencia a la propia existencia de este software, descontando este libro. Además, todos los enlaces que tiene este libro están rotos. * La empresa que realizaba el software (Jurídica.com S.A) ni si quiera sigue existiendo ya que parece que cerró en 2014 según he podido investigar. * El manual está escrito en un claro tono promocional. * No parece que este libro pueda ser de utilidad para nadie. Es un manual de un software privado que no se distribuye desde hace más de una década, del que no existen referencias públicas y cuyo sitio web ha desaparecido, por lo que su valor como material de aprendizaje es prácticamente nulo. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:51 9 jul 2026 (UTC) * {{voto|borrar}} , como proponente. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:52 9 jul 2026 (UTC) :: {{voto|comentario}} Buenas {{Ping|Mazbel}} disculpa por mencionarte en tantos lugares. Esta consulta de borrado ha sido cerrada automáticamente por el bot pues ya ha pasado el tiempo de votación, con un sólo voto (el mío). No sé muy bien cómo se procede en estos casos, aunque como ya he argumentado, yo considero que debería borrarse. ¡Un saludo! --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 19:32 18 jul 2026 (UTC) ::{{Voto|Comentario}} Añado información extra, al parecer esta no es la segunda, si no la tercera vez que un usuario propone borrar este libro. También fue marcado para borrar en la [[Wikilibros:Evaluación 2011/M]] por el motivo «'' Parece autopromoción''». [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:29 19 jul 2026 (UTC) 4p0bw0yv07evg17ooklfdpgy9ltnzoa 428400 428399 2026-07-19T20:01:46Z Mazbel 57931 /* Borrar el libro Manual de Iuris Explorer */ cerrando cdb 428400 wikitext text/x-wiki === [[:Categoría:Apuntes matemáticos]] === {{cierracdb-arr}} '''Eliminar''': Categoría vacía, sin páginas ni subcategorías asociadas. Mantenerla no aporta valor a la estructura de navegación y sólo incrementa el mantenimiento innecesario.--[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 15:55 1 jul 2026 (UTC) : Página: {{l|:Categoría:Apuntes matemáticos}} : Motivación: Página que se realiza una CDB hace 5 años por {{u|Proferichardperez}} ([[Special:Diff/396341|véase acá]]), sin embargo, nunca se llevó a discusión. Revisando la estructuración de la categoría, está vacía, ninguna página enlaza a ella y el libro en cuestión ([[Apuntes matemáticos]]) tiene su propia categorización en [[:Categoría:Educación]], por lo que sólo ocupa espacio--[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:35 22 jun 2026 (UTC) ;Discusión * * {{voto|borrar}} , como proponente --[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:35 22 jun 2026 (UTC) :{{Voto|Borrar}} En mi opinión es un infraesbozo, no hay ninguna estructura o contenido suficiente para que otro usuario pueda retomar el trabajo en este libro, y hace 6 años que no se edita por lo que claramente el usuario que lo creó no sigue trabajando en él. Me resulta una pena, pero creo que es mejor borrar esta clase de infraesbozos abandonados para poder centrarse en el mantenimiento de los libros que tienen una estructura y objetivos mas definidos. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:23 22 jun 2026 (UTC) {{cierracdb-ab}} == Cinco plantillas sin uso y obsoletas == {{cierracdb-arr}} '''Eliminar''': Plantillas obsoletas. Documentación oficial de MediaWiki desestima su uso. '''Páginas''': Las cinco plantillas bajo la categoría: * [[:Categoría:Wikilibros:Plantillas para evitar la evaluación por MediaWiki]] Lo cual incluye las siguientes páginas (junto a sus páginas de uso). * [[Plantilla:!]] * [[Plantilla:!!]] * [[Plantilla:((]] * [[Plantilla:))]] * [[Plantilla:=]] '''Motivación''': Ninguna de estas plantillas están enlazadas ni transcluidas por ninguna otra página, y su uso está obsoleto, de hecho, incluso la propia documentación de la plantilla desaconseja su uso «''En general, evite el uso de estas plantillas si es posible.''». Fueron creadas entre 2008 y 2014 para sustituir caracteres como <code>!</code> o <code>=</code> por llamadas a plantillas (por ejemplo, <code><nowiki>|</nowiki></code> en lugar de <code>!</code>), evitando que MediaWiki los interpretara como parte de la sintaxis wiki. Esa técnica era habitual en versiones muy antiguas del software, pero hace años que ha quedado obsoleta: esos casos se resuelven escribiendo el carácter directamente, usando [[mw:Help:Formatting/es#Nowiki_para_HTML|nowiki]] cuando es necesario o reestructurando la plantilla. La propia documentación oficial de MediaWiki ya no recomienda este tipo de plantillas ([[mw:Help:Extension:ParserFunctions]]); para el caso de <code>!</code> indica expresamente que fue sustituida por la palabra mágica <code><nowiki>{{!}}</nowiki></code> desde MediaWiki 1.24 (publicada en 2014) (Véase la documentación oficial: [[mw:Help:Extension:ParserFunctions#Escaping_pipe_characters]] que de hecho llama a esta práctica un «''kludge''» que en español se traduce como «''chapuza''» o «''parche''»), y para el resto de casos la documentación moderna describe otros mecanismos (nowiki, entidades HTML o funciones del parser) sin recurrir a plantillas de escape. En definitiva, se trata de plantillas obsoletas, sin transclusiones ni enlaces entrantes y cuyo propio uso está desaconsejado. Dado que actualmente no dependen de ellas otras páginas, este es el momento idóneo para retirarlas antes de que alguien empiece usarlas y se genere una dependencia innecesaria. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 07:13 6 jul 2026 (UTC) ;Discusión * * {{voto|borrar}} , como proponente. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 07:15 6 jul 2026 (UTC) {{cierracdb-ab}} == Borrar el libro Manual de Iuris Explorer == {{cierracdb-arr}} '''Eliminar''': Libro de carácter autopromocional, no se edita desde 2010. No se ha verificado su utilidad. --[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 20:01 19 jul 2026 (UTC) '''Libro''': El libro completo de [[Manual de Iuris Explorer]]. '''Motivación''': Este libro fue creado en 2008, muy probablemente por la empresa que había creado el propio software, por ese motivo, el antiguo bibliotecario @[[Usuario:Morza|Morza]] lo marcó para borrar en 2009 ([[Wikilibros:Votaciones/2009/Borrar el libro Iurius Explorer]]), esta votación se cerró con un voto en contra y dos abstenciones (incluído el propio Morza que decidió abstenerse). Esto fue debido a que el usuario que había creado el libro comentó que estaba en proceso de seguir mejorandolo. Este siguió realizando algunas ediciones, y su última edición en Wikilibros fue en ese mismo año 2009. En la evaluación 2011 de Wikilibros ([[Wikilibros:Evaluación 2011/M]]) el usuario Morza escribió sobre este libro: {{cita|En su momento plantee su borrado: [[Wikilibros:Votaciones/2009/Borrar el libro Iurius Explorer]], aunque se decidió mantener por consenso. Creo que está hecho por la propia empresa, pero en su momento no se consideró promocional.}} Hoy, todos los enlaces a este software que aparecen en este libro están rotos (ejemplo https://www.juridica.com.ar/productos/iuris.html), y buscando en navegadores Google y DuckDuckGo me ha resultado imposible encontrar ninguna página que haga referencia a la existencia este software, las únicas referencias que existen son a este libro de Wikilibros. Además de estar abandonado, considero que este libro es totalmente irrelevante, a nadie le va a resultar útil un manual de un software que ni si quiera existe rastro o se puede encontrar en ningún lugar. Sumado a esto, coincido en las observaciones que se hicieron hace 15 años de que este libro está escrito en un lenguaje promocional, esto se evidencia por las constantes frases alabando las bondades de este software como: {{cita|* IurisExplorer está diseñado para satisfacer las exigencias del trabajo de un abogado, tanto en su desempeño individual como en su tarea dentro del estudio, adaptándose a las necesidades de profesionales jóvenes o con mayor experiencia. * IurisExplorer está diseñado desde la óptica del Profesional para ayudar al abogado en todas las tareas que éste debe realizar para el seguimiento de sus causas. IurisExplorer está integrado completamente con el standard de trabajo habitual que es Microsoft Office de manera de facilitar y completar la labor del profesional. * Cumpliendo con la total personalización de IurisExplorer, usted puede configurar el sistema para... * ...Cambia la posibilidad de “buscar información” por la de “TENER” la información donde se está trabajando, lo que implica más poder... * Utiliza Microsoft Word como Procesador de Textos potenciándolo en lugar de limitarlo... * ...Esta totalmente integrado con Microsoft Word, Microsoft Outlook y con Microsoft Excel. * Toda la potencia de Microsoft Word + Iuris Explorer facilita la creación y edición de escritos judiciales... * Informes: Iuris Explorer permite su total personalización derivándolos a Microsoft Word para su edición o impresión...}} Resumiendo, mis motivos para pedir el borrado son: * El usuario que creó el libro probablemente era un miembro de la propia empresa, y este lleva desde 2009 sin realizar ninguna edición. * Ni si quiera soy capaz de encontrar en internet ni una sola referencia a la propia existencia de este software, descontando este libro. Además, todos los enlaces que tiene este libro están rotos. * La empresa que realizaba el software (Jurídica.com S.A) ni si quiera sigue existiendo ya que parece que cerró en 2014 según he podido investigar. * El manual está escrito en un claro tono promocional. * No parece que este libro pueda ser de utilidad para nadie. Es un manual de un software privado que no se distribuye desde hace más de una década, del que no existen referencias públicas y cuyo sitio web ha desaparecido, por lo que su valor como material de aprendizaje es prácticamente nulo. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:51 9 jul 2026 (UTC) * {{voto|borrar}} , como proponente. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:52 9 jul 2026 (UTC) :: {{voto|comentario}} Buenas {{Ping|Mazbel}} disculpa por mencionarte en tantos lugares. Esta consulta de borrado ha sido cerrada automáticamente por el bot pues ya ha pasado el tiempo de votación, con un sólo voto (el mío). No sé muy bien cómo se procede en estos casos, aunque como ya he argumentado, yo considero que debería borrarse. ¡Un saludo! --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 19:32 18 jul 2026 (UTC) ::{{Voto|Comentario}} Añado información extra, al parecer esta no es la segunda, si no la tercera vez que un usuario propone borrar este libro. También fue marcado para borrar en la [[Wikilibros:Evaluación 2011/M]] por el motivo «'' Parece autopromoción''». [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:29 19 jul 2026 (UTC) {{cierracdb-ab}} kh44ehvveblphk0nyub5hrufzowmsnc 428401 428400 2026-07-19T20:02:01Z Mazbel 57931 /* Cinco plantillas sin uso y obsoletas */ firma 428401 wikitext text/x-wiki === [[:Categoría:Apuntes matemáticos]] === {{cierracdb-arr}} '''Eliminar''': Categoría vacía, sin páginas ni subcategorías asociadas. Mantenerla no aporta valor a la estructura de navegación y sólo incrementa el mantenimiento innecesario.--[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 15:55 1 jul 2026 (UTC) : Página: {{l|:Categoría:Apuntes matemáticos}} : Motivación: Página que se realiza una CDB hace 5 años por {{u|Proferichardperez}} ([[Special:Diff/396341|véase acá]]), sin embargo, nunca se llevó a discusión. Revisando la estructuración de la categoría, está vacía, ninguna página enlaza a ella y el libro en cuestión ([[Apuntes matemáticos]]) tiene su propia categorización en [[:Categoría:Educación]], por lo que sólo ocupa espacio--[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:35 22 jun 2026 (UTC) ;Discusión * * {{voto|borrar}} , como proponente --[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:35 22 jun 2026 (UTC) :{{Voto|Borrar}} En mi opinión es un infraesbozo, no hay ninguna estructura o contenido suficiente para que otro usuario pueda retomar el trabajo en este libro, y hace 6 años que no se edita por lo que claramente el usuario que lo creó no sigue trabajando en él. Me resulta una pena, pero creo que es mejor borrar esta clase de infraesbozos abandonados para poder centrarse en el mantenimiento de los libros que tienen una estructura y objetivos mas definidos. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:23 22 jun 2026 (UTC) {{cierracdb-ab}} == Cinco plantillas sin uso y obsoletas == {{cierracdb-arr}} '''Eliminar''': Plantillas obsoletas. Documentación oficial de MediaWiki desestima su uso. --[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 20:01 19 jul 2026 (UTC) '''Páginas''': Las cinco plantillas bajo la categoría: * [[:Categoría:Wikilibros:Plantillas para evitar la evaluación por MediaWiki]] Lo cual incluye las siguientes páginas (junto a sus páginas de uso). * [[Plantilla:!]] * [[Plantilla:!!]] * [[Plantilla:((]] * [[Plantilla:))]] * [[Plantilla:=]] '''Motivación''': Ninguna de estas plantillas están enlazadas ni transcluidas por ninguna otra página, y su uso está obsoleto, de hecho, incluso la propia documentación de la plantilla desaconseja su uso «''En general, evite el uso de estas plantillas si es posible.''». Fueron creadas entre 2008 y 2014 para sustituir caracteres como <code>!</code> o <code>=</code> por llamadas a plantillas (por ejemplo, <code><nowiki>|</nowiki></code> en lugar de <code>!</code>), evitando que MediaWiki los interpretara como parte de la sintaxis wiki. Esa técnica era habitual en versiones muy antiguas del software, pero hace años que ha quedado obsoleta: esos casos se resuelven escribiendo el carácter directamente, usando [[mw:Help:Formatting/es#Nowiki_para_HTML|nowiki]] cuando es necesario o reestructurando la plantilla. La propia documentación oficial de MediaWiki ya no recomienda este tipo de plantillas ([[mw:Help:Extension:ParserFunctions]]); para el caso de <code>!</code> indica expresamente que fue sustituida por la palabra mágica <code><nowiki>{{!}}</nowiki></code> desde MediaWiki 1.24 (publicada en 2014) (Véase la documentación oficial: [[mw:Help:Extension:ParserFunctions#Escaping_pipe_characters]] que de hecho llama a esta práctica un «''kludge''» que en español se traduce como «''chapuza''» o «''parche''»), y para el resto de casos la documentación moderna describe otros mecanismos (nowiki, entidades HTML o funciones del parser) sin recurrir a plantillas de escape. En definitiva, se trata de plantillas obsoletas, sin transclusiones ni enlaces entrantes y cuyo propio uso está desaconsejado. Dado que actualmente no dependen de ellas otras páginas, este es el momento idóneo para retirarlas antes de que alguien empiece usarlas y se genere una dependencia innecesaria. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 07:13 6 jul 2026 (UTC) ;Discusión * * {{voto|borrar}} , como proponente. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 07:15 6 jul 2026 (UTC) {{cierracdb-ab}} == Borrar el libro Manual de Iuris Explorer == {{cierracdb-arr}} '''Eliminar''': Libro de carácter autopromocional, no se edita desde 2010. No se ha verificado su utilidad. --[[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 20:01 19 jul 2026 (UTC) '''Libro''': El libro completo de [[Manual de Iuris Explorer]]. '''Motivación''': Este libro fue creado en 2008, muy probablemente por la empresa que había creado el propio software, por ese motivo, el antiguo bibliotecario @[[Usuario:Morza|Morza]] lo marcó para borrar en 2009 ([[Wikilibros:Votaciones/2009/Borrar el libro Iurius Explorer]]), esta votación se cerró con un voto en contra y dos abstenciones (incluído el propio Morza que decidió abstenerse). Esto fue debido a que el usuario que había creado el libro comentó que estaba en proceso de seguir mejorandolo. Este siguió realizando algunas ediciones, y su última edición en Wikilibros fue en ese mismo año 2009. En la evaluación 2011 de Wikilibros ([[Wikilibros:Evaluación 2011/M]]) el usuario Morza escribió sobre este libro: {{cita|En su momento plantee su borrado: [[Wikilibros:Votaciones/2009/Borrar el libro Iurius Explorer]], aunque se decidió mantener por consenso. Creo que está hecho por la propia empresa, pero en su momento no se consideró promocional.}} Hoy, todos los enlaces a este software que aparecen en este libro están rotos (ejemplo https://www.juridica.com.ar/productos/iuris.html), y buscando en navegadores Google y DuckDuckGo me ha resultado imposible encontrar ninguna página que haga referencia a la existencia este software, las únicas referencias que existen son a este libro de Wikilibros. Además de estar abandonado, considero que este libro es totalmente irrelevante, a nadie le va a resultar útil un manual de un software que ni si quiera existe rastro o se puede encontrar en ningún lugar. Sumado a esto, coincido en las observaciones que se hicieron hace 15 años de que este libro está escrito en un lenguaje promocional, esto se evidencia por las constantes frases alabando las bondades de este software como: {{cita|* IurisExplorer está diseñado para satisfacer las exigencias del trabajo de un abogado, tanto en su desempeño individual como en su tarea dentro del estudio, adaptándose a las necesidades de profesionales jóvenes o con mayor experiencia. * IurisExplorer está diseñado desde la óptica del Profesional para ayudar al abogado en todas las tareas que éste debe realizar para el seguimiento de sus causas. IurisExplorer está integrado completamente con el standard de trabajo habitual que es Microsoft Office de manera de facilitar y completar la labor del profesional. * Cumpliendo con la total personalización de IurisExplorer, usted puede configurar el sistema para... * ...Cambia la posibilidad de “buscar información” por la de “TENER” la información donde se está trabajando, lo que implica más poder... * Utiliza Microsoft Word como Procesador de Textos potenciándolo en lugar de limitarlo... * ...Esta totalmente integrado con Microsoft Word, Microsoft Outlook y con Microsoft Excel. * Toda la potencia de Microsoft Word + Iuris Explorer facilita la creación y edición de escritos judiciales... * Informes: Iuris Explorer permite su total personalización derivándolos a Microsoft Word para su edición o impresión...}} Resumiendo, mis motivos para pedir el borrado son: * El usuario que creó el libro probablemente era un miembro de la propia empresa, y este lleva desde 2009 sin realizar ninguna edición. * Ni si quiera soy capaz de encontrar en internet ni una sola referencia a la propia existencia de este software, descontando este libro. Además, todos los enlaces que tiene este libro están rotos. * La empresa que realizaba el software (Jurídica.com S.A) ni si quiera sigue existiendo ya que parece que cerró en 2014 según he podido investigar. * El manual está escrito en un claro tono promocional. * No parece que este libro pueda ser de utilidad para nadie. Es un manual de un software privado que no se distribuye desde hace más de una década, del que no existen referencias públicas y cuyo sitio web ha desaparecido, por lo que su valor como material de aprendizaje es prácticamente nulo. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:51 9 jul 2026 (UTC) * {{voto|borrar}} , como proponente. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:52 9 jul 2026 (UTC) :: {{voto|comentario}} Buenas {{Ping|Mazbel}} disculpa por mencionarte en tantos lugares. Esta consulta de borrado ha sido cerrada automáticamente por el bot pues ya ha pasado el tiempo de votación, con un sólo voto (el mío). No sé muy bien cómo se procede en estos casos, aunque como ya he argumentado, yo considero que debería borrarse. ¡Un saludo! --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 19:32 18 jul 2026 (UTC) ::{{Voto|Comentario}} Añado información extra, al parecer esta no es la segunda, si no la tercera vez que un usuario propone borrar este libro. También fue marcado para borrar en la [[Wikilibros:Evaluación 2011/M]] por el motivo «'' Parece autopromoción''». [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:29 19 jul 2026 (UTC) {{cierracdb-ab}} em0yhxvn75psckzrw80vq9go6tahk9c Deducción natural/Falacias 0 64051 428382 427652 2026-07-19T18:17:48Z Antimundo 74354 Categorizar usando AutoCat 428382 wikitext text/x-wiki {|border="1" cellpadding="7" style="border-collapse:collapse;" !Nombre de la falacia !Formalización !Cálculo de secuentes |- align="center" |[[w:Afirmación del consecuente|Afirmación del consecuente]] |<math> \cancel{\begin{matrix} p \to q \\ q \\ \hline p \end{matrix}} </math> |<math> \cancel{(p \to q) \land q \to p}</math> |- align="center" |[[w:Negación del antecedente|Negación del antecedente]] |<math> \cancel{\begin{matrix} p \to q \\ \neg p\\ \hline\neg q \end{matrix}} </math> |<math> \cancel{(p \to q) \land \lnot p \to \lnot q}</math> |- align="center" |Falso silogismo disyuntivo |<math> \cancel{\begin{matrix} p \lor q \\ p \\ \hline \lnot q \end{matrix}} </math> |<math> \cancel{(p \lor q) \land p \to \lnot q}</math> |} {{AutoCat}} 4ftazjfg8qupv8qud4u5vkiokkjvp9l Usuario discusión:Antimundo 3 64052 428417 428022 2026-07-20T09:28:07Z Antimundo 74354 /* Re: Una consulta sobre una posible candidatura a bibliotecario */ Respuesta 428417 wikitext text/x-wiki == Re: Una consulta sobre una posible candidatura a bibliotecario == Hola Antimundo, Gracias por consultarme antes de presentar la candidatura y, sobre todo, por explicar con tanta claridad tus motivaciones. He observado el trabajo que has realizado durante este último mes y valoro mucho que te hayas dedicado a tareas de mantenimiento que suelen quedar desatendidas. Tus más de 1200 ediciones demuestran iniciativa, constancia y un interés genuino por mejorar Wikilibros. Dicho esto, mi opinión sincera es que una candidatura en este momento podría resultar un poco precipitada, principalmente por el poco tiempo que llevas participando activamente en este proyecto concreto. Tu experiencia previa desde 2011 en otros proyectos de Wikimedia es, sin duda, un antecedente positivo, pero cada comunidad tiene sus propias dinámicas, políticas y formas de alcanzar consensos. Algo más de tiempo permitiría conocer mejor tu trabajo dentro de Wikilibros y comprobar la continuidad de tu participación. También conviene considerar si existe la necesidad actual de incorporar nuevos bibliotecarios. En este momento figuran ocho bibliotecarios en el proyecto, aunque es cierto que la actividad administrativa reciente se concentra en pocos usuarios y que yo me encuentro entre los más activos. Sin embargo, el volumen de acciones que requieren exclusivamente estas herramientas no parece especialmente elevado. Gran parte de la actividad administrativa reciente consiste en eliminaciones de páginas de prueba, contenidos de mantenimiento o páginas previamente marcadas para borrado. En cambio, acciones como bloqueos, protecciones, restauraciones o intervenciones administrativas más complejas no se producen de manera constante. Por ese motivo, me gustaría que profundizaras un poco más en esta parte de tu mensaje: «Hay bastantes tareas de mantenimiento que me gustaría poder hacer directamente». Sería útil que indicaras qué tareas concretas encuentras con frecuencia, cuáles requieren necesariamente permisos de bibliotecario y cuántas solicitudes has tenido que dejar pendientes o trasladar a otro usuario. Muchas de las labores que mencionas —corregir sintaxis, colocar plantillas de mantenimiento, solucionar problemas de renderización o revisar páginas— pueden seguir realizándose sin permisos administrativos. Saber exactamente qué acciones no puedes completar permitiría valorar mejor si existe una necesidad real y recurrente de concederte las herramientas. También hay que tener presente que Wikilibros forma parte del ámbito de vigilancia de los proyectos pequeños. Los usuarios con permisos globales adecuados pueden intervenir en situaciones rutinarias o urgentes, especialmente frente al vandalismo, el spam y otras actuaciones que requieran eliminaciones o bloqueos. Esto no reemplaza la labor de los bibliotecarios locales, que conocen mejor el proyecto y su comunidad, pero sí reduce la posibilidad de que una incidencia urgente quede completamente desatendida. Nada de esto significa que considere negativamente una futura candidatura tuya. Al contrario: el trabajo que has realizado hasta ahora va en una buena dirección y sería positivo que continuaras participando. Mi recomendación sería esperar un tiempo prudente, seguir desarrollando las tareas de mantenimiento que ya realizas, participar también en discusiones comunitarias y documentar los casos concretos en los que necesites herramientas administrativas. Si después de ese periodo mantienes el mismo nivel de actividad y se hace evidente que los permisos facilitarían una labor administrativa frecuente, necesaria y bien delimitada, tendría más elementos para considerar favorablemente tu candidatura. Por tanto, mi respuesta sería que, en este momento, preferiría que siguieras acumulando experiencia en Wikilibros antes de abrir una votación. No se trata de una falta de confianza ni de un rechazo definitivo, sino de que considero conveniente consolidar durante algo más de tiempo tu trayectoria dentro del proyecto y definir con mayor precisión para qué necesitarías las herramientas. Espero que recibas esta opinión con el mismo espíritu constructivo con el que has planteado tu consulta. Agradezco sinceramente tu disposición para colaborar y espero que continúes aportando al proyecto. {{No firmado|Mazbel|15:17 11 jul 2026}} :Buenas Mazbel, te respondo en esta misma discusión, por mantener la conversación en un solo lugar. :<br>Lo primero quisiera decirte que entiendo perfectamente que al llevar aquí un mes aún mes pueda parecer precipitado, precisamente te consulté porque pensé que igual se podía percibir así, por lo que no tengo problema en esperar un tiempo si así lo consideras necesario. Posiblemente en uno o dos meses, vuelva a realizar la misma consulta. :<br>Lo siguiente que quería es responder a tu pregunta sobre para qué querría estos permisos. Me resulta complicado responder a eso de forma breve, pues hay mucho por hacer en Wikilibros. Coincido en que, con la escasa actividad actual de Wikilibros, ya hay suficientes bibliotecarios para atender las labores administrativas habituales, como bloqueos, protecciones, restauraciones y borrados. Sin embargo, el ámbito en el que me gustaría colaborar de forma más activa no es ese, pues considero que, por ahora, está suficientemente cubierto. :<br>Quería empezar comentando que hasta hace poco había 8 bibliotecarios (sin contar el filtro antiabusos, que es un bot). Recientemente uno perdió sus permisos tras dos años sin realizar ninguna edición, y al menos otros tres no editan desde 2024, por lo que también están cerca de perderlos. Si la situación continúa así, pronto podrían quedar solo cuatro bibliotecarios, y actualmente eres, con diferencia, el más activo.<br>Respeto y valoro enormemente el trabajo que todos ellos han realizado para crear y mantener este sitio. Sin embargo, la realidad es que hoy eres el único bibliotecario que participa de forma activa para «avanzar» en el desarrollo del proyecto, más allá de simplemente «mantenerlo con vida». :<br><span style="font-size: 120%">'''[[Usuario:Antimundo/Taller/El estado actual de Wikilibros|He redactado una propuesta detallada en la que expongo mis objetivos de colaboración en Wikilibros]]'''</span>. Por favor, te pido encarecidamente que lo leas. La realidad es que para realizar la mayoría de acciones que explico aquí de forma efectiva, se requieren de permisos de bibliotecario. :<br>Voy a poner (algunos) ejemplos más específicos, directamente relacionados con mi artículo. :* Absolutamente todo lo que aparece en la portada está protegido y sólo puede ser editado por bibliotecarios, esto provoca que no puedo contribuir en las siguientes acciones: :** El libro de [[Italiano/Desarrollo]] aparece como si tuviese un 0% desarrollado, a pesar de que tiene bastante contenido, pero no puedo corregirlo, al igual que el desarrollo de ningún otro libro que salga en la portada. Por ejemplo el libro [[Atlas.ti/Desarrollo]] ni si quiera usa la plantilla de desarrollo correcta, pero tampoco puedo editarlo. :** [[Plantilla:Portada/nuevos|El listado de Libros nuevos de la portada]], lleva una década sin recibir prácticamente ninguna edición, lo cual provoca que la mayoría de estos libros sean de 2012 y 2013 pero aun así aparecen listados como si fuesen «nuevos». No puedo actualizar este listado para que realmente aparezcan los libros nuevos. Lo mismo pasa con todos los otros listados de libros, que llevan muchísimos años sin recibir ninguna actualización, pero sólo un bibliotecario puede cambiarlos. :** Hay varias de las plantillas de la portada que tienen errores de sintaxis, por ejemplo [[Plantilla:Proyectos de Wikimedia]] tiene un error de sintaxis de [[:mw:Help:Lint errors/deletable-table-tag]], pero no tengo permisos para arreglarlo. :* Esto que menciono de la portada, ocurre en '''muchísimas''' páginas que están protegidas y simplemente no puedo editar, pero tienen errores de sintaxis o problemas evidentes y triviales. Por ejemplo: :** Esto ya ha ocurrido varias veces, como cuando avisé de que {{ep|Portada/Desarrollo de libros}} no estaba usando las imágenes actualizadas, o de que el enlace de las donaciones de {{ep|Portada/Encabezado}} estaba roto. Cambios triviales que podría haber arreglado yo mismo pero tuve que avisar a un bibliotecario para que lo arreglase. :** [[Wikilibros:Derechos de autor]] usa la plantilla de {{ep|actualizar}} cuando debería usar la de {{ep|desactualizado}}. Es un cambio trivial, pero no puedo arreglarlo. :** Muchas plantillas como [[Plantilla:Fmbox]] o [[Plantilla:Oficial]] son completamente ilegibles en el modo oscuro. Resulta sencillo adaptarla para que sus colores funcionen bien, pero no puedo hacerlo porque está protegida y solo pueden editarla bibliotecarios. :* Hay una cantidad '''enorme''', del orden de miles de libros y páginas cuyos títulos no están escritos con el título correcto de ''Título/Sección'' o que incumplen [[Wikilibros:Política de nombrado]]. Así como una cantidad igual de grande de redirecciones totalmente inútiles que solo generan ruido, hojas sueltas que deberían moverse a su libro principal, etc. Páginas cuyo mantenimiento es trivial, pero donde a menudo hay que mover, renombrar, o eliminar conjuntos grandes de muchas páginas. Y técnicamente podría ir creando redirecciones una a una a mano, marcando una a una todas ellas para que un bibliotecario las borre y pararme a redactar una explicación de todos los motivos (como he venido haciendo hasta ahora), pero es un sistema extremadamente ineficiente. : Estos son tan solos ''algunos'' ejemplos de las muchísimas tareas de mantenimiento que me gustaría realizar, en las que me veo limitado al no tener los permisos. Y paro aquí por no hacer este mensaje demasiado denso, pero podría seguir citando muchísimas tareas que no puedo realizar. :<br>Como dije en mi anterior mensaje: ''sé que en teoría podría ir dejándote un mensaje cada vez que esto suceda (como ya he hecho en alguna ocasión), pero creo que esto sería poco práctico para los dos: tú tendrías que estar pendiente de constantes peticiones que podría resolver yo mismo y yo dependería constantemente de pedirte ayuda para cuestiones rutinarias.'' :<br>Espero que mi explicación haya sido clara, y siento haberme extendido tanto hablando del tema. Pero quería intentar dejar claro que los permisos realmente me ayudarían bastante en mis tareas de mantenimiento. --[[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 18:49 12 jul 2026 (UTC) :Me estoy dando cuenta de que quizás no se te notificó este mensaje porque no te mencioné, lo hago ahora, disculpa las molestias. @[[Usuario:Mazbel|Mazbel]] [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 09:28 20 jul 2026 (UTC) ==Autoverificado== [[Archivo:Wikibooks Autopatrolled.svg|frameless|100px|derecha|link=]] Hola Antimundo. Te informo que he añadido el derecho de [[Wikilibros:Verificadores#Autoverificado|autoverificado]] en tu cuenta, tras una exhaustiva revisión de las páginas que has creado. Esta herramienta no tendrá efecto alguno en tus ediciones, pues su objetivo es reducir la carga de trabajo de los patrulleros de [[Especial:Newpages|páginas nuevas]]. En caso de existir abuso, como por ejemplo reiteradas [[Wikilibros:Derechos de autor|violaciones de derechos de autor]], este permiso puede ser retirado por cualquier [[Wikilibros:Bibliotecarios|bibliotecario]]. Si tienes alguna consulta no dudes en preguntarme en mi [[User talk:Mazbel|página de discusión]]. Gracias por colaborar en Wikilibros. [[User:Mazbel|<span style="color:#000000;font-weight:bold;font-family:cursive, serif">Mazbel</span>]] [[User talk:Mazbel|<span style="color:#000000;font-size:small;font-family:cursive, serif;">(Talk)</span>]] 16:42 16 jul 2026 (UTC) :Gracias por el aviso y por la confianza. Un saludo. [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 16:46 16 jul 2026 (UTC) drxovz2hqph6hgbk8bhhsa4dh3b9tz9 Categoría:Estante:Ciencias de la salud 14 64123 428344 2026-07-19T12:09:47Z Antimundo 74354 Crear estante 428344 wikitext text/x-wiki [[Archivo:P medicine.svg|sinmarco|derecha|120px]] Estante para libros relacionados con ciencias de la salud. [[Categoría:Estante:Ciencias]] 3cc6u3ymnxu5jpkvfoiem5gz58cxp32 Arquitectura de computadoras/Representación binaria 0 64125 428356 2026-07-19T15:46:26Z MASB85 127556 primer párrafo 428356 wikitext text/x-wiki Recordemos que la computadora moderna utiliza elementos electrónicos que solamente tienen dos estados eléctricos: corte y conducción. Los conmutadores telefónicos, por otro lado, tienen diez posiciones o estados; así con uno de estos dispositivos se puede representar un dígito del 0 al 9. En contrapartida, una válvula termoiónica, un relé o un transistor solamente tiene dos estados: corte y conducción. De esta manera, hubo que encontrar la forma de representar un número —recordemos también que las computadoras fueron realizadas para efectuar cálculos más o menos complejos— usando solamente dos símbolos o dos estados (si este texto fuera sobre comunicaciones, lo correcto sería decir solamente un símbolo, ya que el otro es un espacio). mmih5jrs2z85lrtze1cgyeiq4etklgv 428357 428356 2026-07-19T16:09:59Z MASB85 127556 Base 10 428357 wikitext text/x-wiki Recordemos que la computadora moderna utiliza elementos electrónicos que solamente tienen dos estados eléctricos: corte y conducción. Los conmutadores telefónicos, por otro lado, tienen diez posiciones o estados; así con uno de estos dispositivos se puede representar un dígito del 0 al 9. En contrapartida, una válvula termoiónica, un relé o un transistor solamente tiene dos estados: corte y conducción. De esta manera, hubo que encontrar la forma de representar un número —recordemos también que las computadoras fueron realizadas para efectuar cálculos más o menos complejos— usando solamente dos símbolos o dos estados (si este texto fuera sobre comunicaciones, lo correcto sería decir solamente un símbolo, ya que el otro es un espacio). =Representación numérica en base 10= Para entender la representación en base 2, o sea binaria, primeramente debemos entender la que utilizamos usualmente, la de base 10 (nótese que este número no es casualidad: disponemos de exactamente 10 dedos entre ambas manos). Por ejemplo el número 4738 se lo puede descomponer así: <math display="block">4738 = 4\cdot10^3 + 7\cdot10^2 + 3\cdot10^1 + 8\cdot10^0</math> Nótese que ninguna cifra que acompaña a la potencia de diez es mayor a diez. Si lo fuera, por ejemplo <math display="block">4738 = 47\cdot10^2 + 3\cdot10^1 + 8\cdot10^0</math> podríamos hacer como sigue: <math display="block">\begin{matrix}4738 &=& (47)\cdot10^2 &+\ 3\cdot10^1 + 8\cdot10^0\\ &=& (4\cdot10 + 7)\cdot10^2 & +\ 3\cdot10^1 + 8\cdot10^0\\ &=&4\cdot10\cdot10^2 + 7\cdot10^2&+\ 3\cdot10^1 + 8\cdot10^0\\ &=&4\cdot10^3 + 7\cdot10^2&+\ 3\cdot10^1 + 8\cdot10^0\end{matrix}</math> e1mbjbxrdwgbgtcyxkm9o8x39c08x2g 428405 428357 2026-07-20T00:42:46Z MASB85 127556 /* Representación numérica en base 10 */ Empiezo un ejemplo en base 2 428405 wikitext text/x-wiki Recordemos que la computadora moderna utiliza elementos electrónicos que solamente tienen dos estados eléctricos: corte y conducción. Los conmutadores telefónicos, por otro lado, tienen diez posiciones o estados; así con uno de estos dispositivos se puede representar un dígito del 0 al 9. En contrapartida, una válvula termoiónica, un relé o un transistor solamente tiene dos estados: corte y conducción. De esta manera, hubo que encontrar la forma de representar un número —recordemos también que las computadoras fueron realizadas para efectuar cálculos más o menos complejos— usando solamente dos símbolos o dos estados (si este texto fuera sobre comunicaciones, lo correcto sería decir solamente un símbolo, ya que el otro es un espacio). =Representación numérica en base 2= Para entender la representación en base 2, o sea binaria, primeramente debemos entender la que utilizamos usualmente, la de base 10 (nótese que este número no es casualidad: disponemos de exactamente 10 dedos entre ambas manos). Por ejemplo el número 4738 se lo puede descomponer así: <math display="block">4738 = 4\cdot10^3 + 7\cdot10^2 + 3\cdot10^1 + 8\cdot10^0</math> Nótese que ninguna cifra que acompaña a la potencia de diez es mayor a diez. Si lo fuera, por ejemplo <math display="block">4738 = 47\cdot10^2 + 3\cdot10^1 + 8\cdot10^0</math> podríamos hacer como sigue: <math display="block">\begin{matrix}4738 &=& (47)\cdot10^2 &+\ 3\cdot10^1 + 8\cdot10^0\\ &=& (4\cdot10 + 7)\cdot10^2 & +\ 3\cdot10^1 + 8\cdot10^0\\ &=&4\cdot10\cdot10^2 + 7\cdot10^2&+\ 3\cdot10^1 + 8\cdot10^0\\ &=&4\cdot10^3 + 7\cdot10^2&+\ 3\cdot10^1 + 8\cdot10^0\end{matrix}</math> En base 2 <math display="block">\begin{matrix}738 &=& 2\cdot369 + 0\\ 369&=&2\cdot184 + 1\\ 184 &=& 2\cdot92 + 0\\ 92 &=& 2\cdot46 + 0\\ 46 &=& 2\cdot23 + 0\\ 23 &=& 2\cdot11 + 1 \\ 11 &=& 2\cdot5 + 1\\ 5 &=& 2\cdot2 + 1\\ 2 &=& 2\cdot1 +0 \end{matrix}</math> =Complemento a 2= bvs6qrq4xfo88i8whyjjhpt2pd89s5l 428416 428405 2026-07-20T03:55:48Z MASB85 127556 /* Complemento a 2 */ Borrador del párrafo 428416 wikitext text/x-wiki Recordemos que la computadora moderna utiliza elementos electrónicos que solamente tienen dos estados eléctricos: corte y conducción. Los conmutadores telefónicos, por otro lado, tienen diez posiciones o estados; así con uno de estos dispositivos se puede representar un dígito del 0 al 9. En contrapartida, una válvula termoiónica, un relé o un transistor solamente tiene dos estados: corte y conducción. De esta manera, hubo que encontrar la forma de representar un número —recordemos también que las computadoras fueron realizadas para efectuar cálculos más o menos complejos— usando solamente dos símbolos o dos estados (si este texto fuera sobre comunicaciones, lo correcto sería decir solamente un símbolo, ya que el otro es un espacio). =Representación numérica en base 2= Para entender la representación en base 2, o sea binaria, primeramente debemos entender la que utilizamos usualmente, la de base 10 (nótese que este número no es casualidad: disponemos de exactamente 10 dedos entre ambas manos). Por ejemplo el número 4738 se lo puede descomponer así: <math display="block">4738 = 4\cdot10^3 + 7\cdot10^2 + 3\cdot10^1 + 8\cdot10^0</math> Nótese que ninguna cifra que acompaña a la potencia de diez es mayor a diez. Si lo fuera, por ejemplo <math display="block">4738 = 47\cdot10^2 + 3\cdot10^1 + 8\cdot10^0</math> podríamos hacer como sigue: <math display="block">\begin{matrix}4738 &=& (47)\cdot10^2 &+\ 3\cdot10^1 + 8\cdot10^0\\ &=& (4\cdot10 + 7)\cdot10^2 & +\ 3\cdot10^1 + 8\cdot10^0\\ &=&4\cdot10\cdot10^2 + 7\cdot10^2&+\ 3\cdot10^1 + 8\cdot10^0\\ &=&4\cdot10^3 + 7\cdot10^2&+\ 3\cdot10^1 + 8\cdot10^0\end{matrix}</math> En base 2 <math display="block">\begin{matrix}738 &=& 2\cdot369 + 0\\ 369&=&2\cdot184 + 1\\ 184 &=& 2\cdot92 + 0\\ 92 &=& 2\cdot46 + 0\\ 46 &=& 2\cdot23 + 0\\ 23 &=& 2\cdot11 + 1 \\ 11 &=& 2\cdot5 + 1\\ 5 &=& 2\cdot2 + 1\\ 2 &=& 2\cdot1 +0 \end{matrix}</math> =Complemento a 2= Nuevamente, para entender mejor qué es y para qué sirve el complemento a 2 es mejor considerar la base en la que trabajamos usualmente, es decir, primeramente vamos a ver el complemento a 10. El complemento a 10 de un número es la diferencia entre la menor potencia de 10 mayor a los operandos y ese número. Veamos varios ejemplos para que quede claro. {| class="wikitable" |+ Texto de la leyenda |- ! Operandos !! Complemento a 10 |- | 15 || 1000 - 15 = 985 |- | 4 || 1000 - 4 = 996 |- | 367 || 1000 - 367 = 633 |- | 62 || 1000 - 62 = 938 |- | 26 || 1000 - 26 = 974 |} Así, por ejemplo, si queremos restar 15 de 62 le sumamos su complemento a 10 y descartamos la cifra más significativa: 62 - 15 -> 62 + 985 = 1047 -> 147 - 1000 = 47 26 - 4 -> 26 + 996 = 1022 -> 1022 - 1000 = 22 Para número negativos: 8 - 15 -> 8 + 985 = 993 -> 993 - 1000 = -7 plwd9fn82973idsxeq7xrv2t0tkxrip Categoría:Estante:Idiomas 14 64126 428358 2026-07-19T17:27:37Z Antimundo 74354 Crear estante 428358 wikitext text/x-wiki [[Archivo:P Comics.svg|sinmarco|derecha|120px]] Estante para libros sobre idiomas. [[Categoría:Estantes]] 0g1hqfon9k6tqpygdamdl1dz003t9jy Categoría:Turco 14 64127 428362 2026-07-19T17:29:57Z Antimundo 74354 Antimundo trasladó la página [[Categoría:Turco]] a [[Categoría:Libro:Turco]]: Categorizar usando estantes 428362 wikitext text/x-wiki #REDIRECCIÓN [[:Categoría:Libro:Turco]] 6g8c1mv1xa2kxnc04d17kiu55i9kvw5 Categoría:Árabe 14 64128 428366 2026-07-19T17:32:12Z Antimundo 74354 Antimundo trasladó la página [[Categoría:Árabe]] a [[Categoría:Libro:Árabe]]: Categorizar usando estantes 428366 wikitext text/x-wiki #REDIRECCIÓN [[:Categoría:Libro:Árabe]] 9w6k564m4n267p3akzeg9eqcqrixwfe Categoría:Interlingua 14 64129 428370 2026-07-19T17:41:11Z Antimundo 74354 Antimundo trasladó la página [[Categoría:Interlingua]] a [[Categoría:Libro:Interlingua]]: Categorizar usando estantes 428370 wikitext text/x-wiki #REDIRECCIÓN [[:Categoría:Libro:Interlingua]] 4tam9rouwd1vum2xlzx5wos56rq8qn0 Categoría:Estante:Lógica 14 64130 428372 2026-07-19T17:50:24Z Antimundo 74354 Crear estante 428372 wikitext text/x-wiki [[Archivo:P ktip.svg|sinmarco|derecha|120px]] Estante para libros relacionados con lógica. [[Categoría:Estante:Matemática]] 4p9ygebt6cmztx76sido8symqt7p55v Categoría:Libro:Aprende Lógica 14 64131 428381 2026-07-19T18:17:03Z Antimundo 74354 Crear categoría 428381 wikitext text/x-wiki [[Categoría:Estante:Lógica]] [[Categoría:Libros organizados]] 3db3eorkwntculdwhy55v24wydfm4e5 Categoría:Libro:Deducción natural 14 64132 428387 2026-07-19T18:19:39Z Antimundo 74354 Crear categoría 428387 wikitext text/x-wiki [[Categoría:Estante:Lógica]] [[Categoría:Libros organizados]] 3db3eorkwntculdwhy55v24wydfm4e5 Categoría:Libro:Apuntes de CI-5313 Base de Datos III (USB-VE) 14 64133 428403 2026-07-19T20:18:22Z Mazbel 57931 Página creada con «[[Categoría:Estante:Ofimática]]» 428403 wikitext text/x-wiki [[Categoría:Estante:Ofimática]] 7myimvo4kjip3t4406m7yy40lkwvc54 Categoría:Libro:OpenOffice.org 14 64134 428409 2026-07-20T00:57:32Z Mazbel 57931 Página creada con «[[Categoría:Estante:Ofimática]]» 428409 wikitext text/x-wiki [[Categoría:Estante:Ofimática]] 7myimvo4kjip3t4406m7yy40lkwvc54 Plantilla:Nuevo libro/uso 10 64135 428427 2026-07-20T10:17:46Z Antimundo 74354 Crear documentación 428427 wikitext text/x-wiki {{subpágina de documentación}} Esta plantilla contiene el texto predeterminado que se añade al crear un libro nuevo desde determinadas páginas. afzk6ss9kk14uzywb7d1ztzuumg3xe9 Categoría:C sharp NET 14 64136 428454 2026-07-20T11:06:17Z Antimundo 74354 Antimundo trasladó la página [[Categoría:C sharp NET]] a [[Categoría:Libro:C sharp NET]]: Categorizar usando estantes 428454 wikitext text/x-wiki #REDIRECCIÓN [[:Categoría:Libro:C sharp NET]] gpsym7276pjnsltrmhqxnxe3p1g853n Plantilla:Categorizar libro 10 64137 428457 2026-07-20T11:27:28Z Antimundo 74354 Crear plantilla 428457 wikitext text/x-wiki {{Metaplantilla de avisos | tipo = contenido | imagen = [[Archivo:Ambox glass question.svg|40px]] | texto = '''Este libro no está categorizado.'''<br> Por favor edita esta página, categorízalo siguiendo la [[Wikilibros:Política de nombrado|política de nombrado]] y retira este aviso. }} <includeonly>[[Categoría:Libros pendientes de categorizar]]</includeonly> <noinclude>{{documentación}}</noinclude> 8gufo1hj85lp6ryvvssyi8ag06nxr0e Plantilla:Categorizar libro/uso 10 64138 428458 2026-07-20T11:30:50Z Antimundo 74354 Crear documentación 428458 wikitext text/x-wiki {{subpágina de documentación}} === Código === <code><nowiki>{{Categorizar libro}}</nowiki></code> === Campo de aplicación === Añade esta plantilla a la página principal de un libro que no esté categorizado. Esta plantilla lo añadirá a la categoría [[:Categoría:Libros pendientes de categorizar]]. <includeonly> [[Categoría:Wikilibros:Plantillas de mantenimiento]] </includeonly> hwgxm7n4te6xbs6e6yc4xreoqzfgtnf