Wikilibros eswikibooks https://es.wikibooks.org/wiki/Portada MediaWiki 1.47.0-wmf.21 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 Programación en Java/Apéndices/Crear un PDF en Java 0 7176 435012 418426 2026-09-29T08:10:48Z Antimundo 74354 Categorizar usando AutoCat 435012 wikitext text/x-wiki == Cómo crear un PDF en Java == Crear un PDF en Java utilizando la librería itext.jar, es gratis y se puede descargar en [http://itextdocs.lowagie.com Itexdocs], cuyo manual está en [http://itextdocs.lowagie.com/tutorial/ Tutorial Itexdocs], puede ser muy útil cuando se requiere que en una aplicación web, el cliente reciba la respuesta en formato PDF al vuelo o en archivo, y escrupulosamente paginado del tipo página x de y, esto se logra programando metodos del tipo evento, por ejemplo cuando un documento es abierto ('''onOpenDocument'''), una página empieza ('''onStartPage'''), cuando una pagina termina ('''onEndPage'''), cuando se cierra el documento ('''onCloseDocument'''), Etc., estos métodos se programan y se ejecutan automáticamente siempre y cuando se extienda la clase en la que se encuentran a PdfPageEventHelper, de esta manera cuando ocurra un evento sucedera lo que se le programe a ese evento, pero para poner la paginación x de y, el valor de y lo sabremos al final cuando ya se va a cerrar el documento ó por programación se sabe, pero para poner en todas las páginas del documento el valor de y es una forma poner un lienzo (tipo Template) ese lienzo estará en blanco en el lugar de y, es como una variable que al final recibirá un valor y se pintará en todos lados del PDF donde lo pongamos, de esta manera ya cuando se sepa el valor de y se le asigna, este aparece pintado en el lienzo, ejemplo básico es el siguiente: /* * $Id: PageNumbersWatermark.java,v 1.3 2005/05/09 11:52:50 blowagie Exp $ * $Name: $ * * This code is part of the 'iText Tutorial'. * You can find the complete tutorial at the following address: * http://itextdocs.lowagie.com/tutorial/ * * This code is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * itext-questions@lists.sourceforge.net */ package com.lowagie.examples.directcontent.pageevents; import java.awt.Color; import java.io.FileOutputStream; import com.lowagie.text.Chunk; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.ExceptionConverter; import com.lowagie.text.Font; import com.lowagie.text.Image; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.Phrase; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfGState; import com.lowagie.text.pdf.PdfPTable; import com.lowagie.text.pdf.PdfPageEventHelper; import com.lowagie.text.pdf.PdfTemplate; import com.lowagie.text.pdf.PdfWriter; /** * Demonstrates the use of templates to add Watermarks and Pagenumbers. */ public class PageNumbersWatermark extends PdfPageEventHelper { /** An Image that goes in the header. */ public Image headerImage; /** The headertable. */ public PdfPTable table; /** The Graphic state */ public PdfGState gstate; /** A template that will hold the total number of pages. */ public PdfTemplate tpl; /** The font that will be used. */ public BaseFont helv; /** * Generates a document with a header containing Page x of y and with a Watermark on every page. * @param args no arguments needed */ public static void main(String args[]) { try { // step 1: creating the document Document doc = new Document(PageSize.A4, 50, 50, 100, 72); // step 2: creating the writer PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("pageNumbersWatermark.pdf")); '''// si deseas que respusta sea al vuelo y no en archivo //esta clase debe importar -- import javax.servlet.http.*; //y recibir como parametro el objeto response //así el clien te recibira la respuesta en su navegador en pdf ejemplo: ///PdfWriter writer = PdfWriter.getInstance(doc, response.getOutputStream());''' // step 3: initialisations + opening the document writer.setPageEvent(new PageNumbersWatermark()); doc.open(); // step 4: adding content String text = "some padding text "; for (int k = 0; k < 10; ++k) text += text; Paragraph p = new Paragraph(text); p.setAlignment(Element.ALIGN_JUSTIFIED); doc.add(p); // step 5: closing the document doc.close(); } catch ( Exception e ) { e.printStackTrace(); } } /** * @see com.lowagie.text.pdf.PdfPageEventHelper#onOpenDocument(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ public void onOpenDocument(PdfWriter writer, Document document) { try { // initialization of the header table headerImage = Image.getInstance("logo.gif"); table = new PdfPTable(2); Phrase p = new Phrase(); Chunk ck = new Chunk("lowagie.com\n", new Font(Font.TIMES_ROMAN, 16, Font.BOLDITALIC, Color.blue)); p.add(ck); ck = new Chunk("Ghent\nBelgium", new Font(Font.HELVETICA, 12, Font.NORMAL, Color.darkGray)); p.add(ck); table.getDefaultCell().setBackgroundColor(Color.yellow); table.getDefaultCell().setBorderWidth(0); table.addCell(p); table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT); table.addCell(new Phrase(new Chunk(headerImage, 0, 0))); // initialization of the Graphic State gstate = new PdfGState(); gstate.setFillOpacity(0.3f); gstate.setStrokeOpacity(0.3f); // initialization of the template tpl = writer.getDirectContent().createTemplate(100, 100); tpl.setBoundingBox(new Rectangle(-20, -20, 100, 100)); // initialization of the font helv = BaseFont.createFont("Helvetica", BaseFont.WINANSI, false); } catch(Exception e) { throw new ExceptionConverter(e); } } /** * @see com.lowagie.text.pdf.PdfPageEventHelper#onEndPage(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ public void onEndPage(PdfWriter writer, Document document) { PdfContentByte cb = writer.getDirectContent(); cb.saveState(); // write the headertable table.setTotalWidth(document.right() - document.left()); table.writeSelectedRows(0, -1, document.left(), document.getPageSize().height() - 50, cb); // compose the footer String text = "Page " + writer.getPageNumber() + " of "; float textSize = helv.getWidthPoint(text, 12); float textBase = document.bottom() - 20; cb.beginText(); cb.setFontAndSize(helv, 12); // for odd pagenumbers, show the footer at the left if ((writer.getPageNumber() & 1) == 1) { cb.setTextMatrix(document.left(), textBase); cb.showText(text); cb.endText(); cb.addTemplate(tpl, document.left() + textSize, textBase); } // for even numbers, show the footer at the right else { float adjust = helv.getWidthPoint("0", 12); cb.setTextMatrix(document.right() - textSize - adjust, textBase); cb.showText(text); cb.endText(); cb.addTemplate(tpl, document.right() - adjust, textBase); } cb.saveState(); // draw a Rectangle around the page cb.setColorStroke(Color.orange); cb.setLineWidth(2); cb.rectangle(20, 20, document.getPageSize().width() - 40, document.getPageSize().height() - 40); cb.stroke(); cb.restoreState(); // starting on page 3, a watermark with an Image that is made transparent if (writer.getPageNumber() >= 3) { cb.setGState(gstate); cb.setColorFill(Color.red); cb.beginText(); cb.setFontAndSize(helv, 48); cb.showTextAligned(Element.ALIGN_CENTER, "Watermark Opacity " + writer.getPageNumber(), document.getPageSize().width() / 2, document.getPageSize().height() / 2, 45); cb.endText(); try { cb.addImage(headerImage, headerImage.width(), 0, 0, headerImage.height(), 440, 80); } catch(Exception e) { throw new ExceptionConverter(e); } cb.restoreState(); } } /** * @see com.lowagie.text.pdf.PdfPageEventHelper#onStartPage(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ public void onStartPage(PdfWriter writer, Document document) { if (writer.getPageNumber() < 3) { PdfContentByte cb = writer.getDirectContentUnder(); cb.saveState(); cb.setColorFill(Color.pink); cb.beginText(); cb.setFontAndSize(helv, 48); cb.showTextAligned(Element.ALIGN_CENTER, "My Watermark Under " + writer.getPageNumber(), document.getPageSize().width() / 2, document.getPageSize().height() / 2, 45); cb.endText(); cb.restoreState(); } } /** * @see com.lowagie.text.pdf.PdfPageEventHelper#onCloseDocument(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ public void onCloseDocument(PdfWriter writer, Document document) { tpl.beginText(); tpl.setFontAndSize(helv, 12); tpl.setTextMatrix(0, 0); tpl.showText("" + (writer.getPageNumber() - 1)); tpl.endText(); } } ---- Dudas escribir a ange_leos@yahoo.es 19:47 21 oct, 2005 (UTC) Angelica L. {{AutoCat}} dolc1hh0bsndz4aoed85v9xix9myjo1 Ajedrez/Información/Léxico 0 9641 434982 432489 2026-09-29T01:54:50Z Aidonee 126673 Adjunté imágenes que permiten visualizar las tácticas, para que así el lector pueda lograr un mejor aprendizaje sobre las diferentes tácticas en ajedrez. Adjuntaré imágenes para cada táctica en tanto me sea posible. 434982 wikitext text/x-wiki <noinclude>{{+ÍndiceSección|tono=turquesa}}</noinclude> Por táctica se entiende que son los métodos o pasos que se dan, con el fin de alcanzar un objetivo que se desea. Es fundamental siempre tener un plan en mente, y mover en consecuencia. En el ajedrez, la táctica es la serie de movimientos de tus piezas, y existen varios tipos de objetivos, cada uno debe de tener una táctica distinta. A grandes rasgos, podemos dividir los planes fundamentales en dos: debilitar la seguridad del rey enemigo, y garantizar la propia. No obstante, es importante remarcar que no siempre se alcanzará la victoria por medio de la seguridad del rey. En este sentido, podemos definir como variables tácticas el valor posicional y el valor material, siendo el primero la seguridad de ambos reyes, el desarrollo de las piezas, entre otros, mientras que el segundo refiere a las piezas con las que se cuenta o no se cuenta por parte del rival o uno mismo, ambos factores que influyen considerablemente en la partida, a modo de desarrollo de tácticas o bien como consecuencia de estas últimas. Existen distintos términos en ajedrez para describir tácticas especiales. == Términos == === Clavada === [[Archivo:Chessboard-ig-square-1790642165364.png|miniatura|upright]] Una pieza clavada es una pieza que no puede mover porque expondría un ataque de una pieza rival sobre una pieza propia generalmente de mayor valor que la pieza atacante. Las clavadas pueden ser absolutas o relativas y serán absolutas cuando la pieza cubierta sea el rey. A diferencia de las clavadas absolutas, las relativas dejan la opción a una desclavada. Es decir, en ocasiones podemos mover la pieza clavada no importándonos la captura de la pieza que se encuentra detrás; esto a cambio de una ventaja mayor, como iniciar una combinación de mate, o de un cambio que simplifique la posición. ese es el método === Clavada Inversa o Enfilada === Ocurre cuando, en lugar de atacar a la pieza de mayor valor que está detrás de la pieza clavada por medio de Rayos X, la pieza de mayor valor se encuentra delante, por lo que obligamos al rival a retirarla para de esta manera capturar la pieza que se encuentra detrás. === Ataque doble === [[Archivo:Chessboard-ig-square-1790643053218.png|miniatura|upright]] Es una de las tácticas más simples del ajedrez y consiste en atacar a dos piezas al mismo tiempo. Esto generalmente deriva en la entrega de material por parte del rival o en una jugada defensiva poco cómoda. Existen diferentes tipos de doble Ataque , por ejemplo la horquilla, aquí abajo explicada. Otra forma de doble ataque puede ser descubrir una pieza tuya que antes estaba cubierta por otra pieza tuya, por ejemplo, quitar de delante de una torre un alfil y amenazar con el alfil una pieza y con la torre a otra que antes no amenazaba porque el alfil estaba delante. === Horquilla o Tenedor === [[Archivo:Chessboard-ig-square-1790643326301.png|miniatura|upright]] Cuando una misma pieza ataca a dos piezas rivales a la vez decimos que ejecuta una horquilla. Todas las piezas pueden hacerlo, sin embargo, el caballo prácticamente "a eso se dedica". ==== Horquilla con jaque ==== Cuando en una horquilla una de las piezas amenazadas es el rey, generalmente el bando atacado termina entregando la otra pieza, pues no es posible ignorar la amenaza sobre el rey. En este tipo de horquillas se nota aún más el poder del caballo. === Ataque al descubierto === Esto sucede cuando al mover una pieza la que esta atrás da jaque al rey. ==== Jaque doble ==== Esto sucede cuando al mover una pieza que da jaque al rey descubrimos otra que también da jaque al rey en la misma jugada. A esto se la llama jaque doble, y obliga al rival a mover el rey en lugar de simplemente bloquear o capturar la pieza que da el jaque. === Rayos X === Los Rayos X suceden cuando se ejerce presión o protección en una determinada columna, fila, o diagonal que actualmente se encuentra obstruida por una pieza intermedia propia o del rival, haciendo uso de una pieza de largo alcance como son las torres o los alfiles. === Sobrecarga === Sucede cuando una misma pieza protege dos casillas amenazadas, de manera que capturar en una deja desprotegida la otra. === Atracción === La atracción es una táctica poderosa que consiste en atraer una pieza enemiga, generalmente el rey, a una casilla específica para aprovechar una ventaja táctica. Esta táctica se utiliza para ejecutar mates, ganar material o posicionar al oponente en una situación desfavorable. Ejemplos de atracción incluyen sacrificios, jaques, amenazas directas y capturas forzadas. === Defensores Clave === Entiéndase por Defensores Clave como aquellas piezas que protegen de una jugada devastadora, y que mantienen la posición del rival jugable. La estrategia consiste en eliminar al defensor por medio de una captura, sacrificio, distracción o amenaza, de modo que la casilla que antes defendían quede desprotegida y lista para atacarse. === Distracción === De manera similar a la atracción, ocurre cuando se lleva a una pieza clave a otro lugar en donde deja de tener actividad ofensiva o defensiva, permitiéndonos ejecutar tácticas que previamente no eran posibles. === Jugada intermedia === Una jugada intermedia es aquella jugada que permite realizar uno de los anteriores temas tácticos que antes no podían realizarse debido a varias razones. Por ejemplo que una pieza propia obstruya a otra, y que nosotros la retiremos a otra casilla. {{AutoCat}} 2j1ugs51zcdyvzgqp2f37bckid8dax0 Wikilibro del mes 0 11196 434973 49097 2026-09-28T16:20:51Z Antimundo 74354 Corregir redirección 434973 wikitext text/x-wiki #REDIRECT [[Plantilla:Portada/Libros destacados]] ekwgvpwhv8vy40aloo9ri32n1eoej17 Contabilidad financiera 0 14828 434990 300910 2026-09-29T07:35:10Z Antimundo 74354 Categorizar usando estantes 434990 wikitext text/x-wiki == Introducción == El libro "Contabilidad Financiera" Aplicado para España == Índice de contenidos == [[/Introducción|Introducción]] ;Parte 1. Fundamentos Conceptuales de la Contabilidad # [[/Capítulo 1|Capítulo 1. Concepto de contabilidad]] ## [[/El objeto material de la contabilidad/]] ## [[/Los fines y objetivos de la ciencia contable/]] # [[/Capítulo 2|Capítulo 2. Teoría Básica de la Contabilidad Financiera]] # [[/Capítulo 3|Capítulo 3. La Planificación Contable en España]] ;Parte 2. El Plan General de Contabilidad (PGC) y cuadro de cuentas Plan General de Contabilidad # [[/Capítulo 4|Capítulo 4. Los Principios Contables en el Plan General de Contabilidad]] # [[/Capítulo 5|Capítulo 5. Las Normas de Valoración en el Plan General de Contabilidad]] Cuadro de cuentas # [[/Capítulo 6|Capítulo 6. Grupo 1. Financiación Básica]] # [[/Capítulo 7|Capítulo 7. Grupo 2. Inmovilizado]] # [[/Capítulo 8|Capítulo 8. Grupo 3. Existencias]] # [[/Capítulo 9|Capítulo 9. Grupo 4. Acreedores y Deudores por Operaciones de Trafico]] # [[/Capítulo 10|Capítulo 10. Grupo 5. Cuentas Financieras]] # [[/Capítulo 11|Capítulo 11. Grupo 6. Compras y Gastos]] # [[/Capítulo 12|Capítulo 12. Grupo 7. Ventas e Ingresos]] ;Parte 3. Otras operaciones # [[/Capítulo 13|Capítulo 13. La Determinación del Resultado en el Plan General de Contabilidad]] # [[/Capítulo 14|Capítulo 14. Las Cuentas Anuales en el Plan General de Contabilidad]] {{Estantes|Economía}} nbnx3z89t4s8g991d610duspivk6f64 434991 434990 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera]] a [[Contabilidad financiera]]: Título mal escrito: Política de nombrado 434990 wikitext text/x-wiki == Introducción == El libro "Contabilidad Financiera" Aplicado para España == Índice de contenidos == [[/Introducción|Introducción]] ;Parte 1. Fundamentos Conceptuales de la Contabilidad # [[/Capítulo 1|Capítulo 1. Concepto de contabilidad]] ## [[/El objeto material de la contabilidad/]] ## [[/Los fines y objetivos de la ciencia contable/]] # [[/Capítulo 2|Capítulo 2. Teoría Básica de la Contabilidad Financiera]] # [[/Capítulo 3|Capítulo 3. La Planificación Contable en España]] ;Parte 2. El Plan General de Contabilidad (PGC) y cuadro de cuentas Plan General de Contabilidad # [[/Capítulo 4|Capítulo 4. Los Principios Contables en el Plan General de Contabilidad]] # [[/Capítulo 5|Capítulo 5. Las Normas de Valoración en el Plan General de Contabilidad]] Cuadro de cuentas # [[/Capítulo 6|Capítulo 6. Grupo 1. Financiación Básica]] # [[/Capítulo 7|Capítulo 7. Grupo 2. Inmovilizado]] # [[/Capítulo 8|Capítulo 8. Grupo 3. Existencias]] # [[/Capítulo 9|Capítulo 9. Grupo 4. Acreedores y Deudores por Operaciones de Trafico]] # [[/Capítulo 10|Capítulo 10. Grupo 5. Cuentas Financieras]] # [[/Capítulo 11|Capítulo 11. Grupo 6. Compras y Gastos]] # [[/Capítulo 12|Capítulo 12. Grupo 7. Ventas e Ingresos]] ;Parte 3. Otras operaciones # [[/Capítulo 13|Capítulo 13. La Determinación del Resultado en el Plan General de Contabilidad]] # [[/Capítulo 14|Capítulo 14. Las Cuentas Anuales en el Plan General de Contabilidad]] {{Estantes|Economía}} nbnx3z89t4s8g991d610duspivk6f64 435001 434991 2026-09-29T07:38:53Z Antimundo 74354 Arreglos de sintaxis wiki 435001 wikitext text/x-wiki El libro «Contabilidad financiera» aplicado para España == Índice == [[Contabilidad financiera/Introducción|Introducción]] ;Parte 1. Fundamentos Conceptuales de la Contabilidad # [[Contabilidad financiera/Capítulo 1|Capítulo 1. Concepto de contabilidad]] ## [[Contabilidad financiera/El objeto material de la contabilidad/]] ## [[Contabilidad financiera/Los fines y objetivos de la ciencia contable/]] # [[Contabilidad financiera/Capítulo 2|Capítulo 2. Teoría Básica de la Contabilidad Financiera]] # [[Contabilidad financiera/Capítulo 3|Capítulo 3. La Planificación Contable en España]] ;Parte 2. El Plan General de Contabilidad (PGC) y cuadro de cuentas Plan General de Contabilidad # [[Contabilidad financiera/Capítulo 4|Capítulo 4. Los Principios Contables en el Plan General de Contabilidad]] # [[Contabilidad financiera/Capítulo 5|Capítulo 5. Las Normas de Valoración en el Plan General de Contabilidad]] Cuadro de cuentas # [[Contabilidad financiera/Capítulo 6|Capítulo 6. Grupo 1. Financiación Básica]] # [[Contabilidad financiera/Capítulo 7|Capítulo 7. Grupo 2. Inmovilizado]] # [[Contabilidad financiera/Capítulo 8|Capítulo 8. Grupo 3. Existencias]] # [[Contabilidad financiera/Capítulo 9|Capítulo 9. Grupo 4. Acreedores y Deudores por Operaciones de Trafico]] # [[Contabilidad financiera/Capítulo 10|Capítulo 10. Grupo 5. Cuentas Financieras]] # [[Contabilidad financiera/Capítulo 11|Capítulo 11. Grupo 6. Compras y Gastos]] # [[Contabilidad financiera/Capítulo 12|Capítulo 12. Grupo 7. Ventas e Ingresos]] ;Parte 3. Otras operaciones # [[Contabilidad financiera/Capítulo 13|Capítulo 13. La Determinación del Resultado en el Plan General de Contabilidad]] # [[Contabilidad financiera/Capítulo 14|Capítulo 14. Las Cuentas Anuales en el Plan General de Contabilidad]] {{Estantes|Economía}} 8nub8no4pnt5itsdasagi4xrw2nvg91 Contabilidad financiera/Introducción 0 14896 434989 213261 2026-09-29T07:34:01Z Antimundo 74354 Categorizar usando AutoCat 434989 wikitext text/x-wiki Este libro pretende ser un manual introductorio sobre aquellos temas que se pueden considerar básicos dentro de la Contabilidad Financiera, articulado en función del contenido del Plan General de Contabilidad de España (PGC), en un intento de analizar exhaustivamente el mismo. En este sentido, esta obra presenta un doble carácter: sintético y operativo. En primer término, se trata de analizar las soluciones que el Plan ha adoptado para la captación de unas determinadas operaciones empresariales, esto es, el sujeto de estudio es el quehacer económico (transacciones) y el Plan es el instrumento contable para captar, medir y representar dicha actividad. En cuanto al carácter operativo, se pretende conocer el propio Plan, tanto exponiendo detalladamente su contenido, especialmente el funcionamiento de las cuentas (incluyendo Modelos Contables) y la elaboración de las Cuentas Anuales (presentación en el Balance, Cuenta de Pérdidas y Ganancias y Cuadro de Financiación de las magnitudes contables), como desarrollando ejercicios prácticos que ayuden al estudio de las diferentes cuestiones. En este caso, el PGC pasa a ser el sujeto de estudio y el material didáctico un intento de exponer todas sus posibilidades. Sin embargo, como corresponde a un Curso Completo de Contabilidad Financiera, propio de los planes de estudio relacionados con las Ciencias Empresariales, no debe entenderse que el contenido del texto constituye simplemente una explicación del PGC, pues también se contemplan las soluciones propuestas por diversas normas existentes y la doctrina contable correspondiente. Por otro lado, las técnicas contables de aplicación en la actividad económica constituyen materias de cierta complejidad, pues intentan cuantificar aspectos que están sujetos a apreciaciones de carácter subjetivo, especialmente los relacionados con la valoración. De ahí la necesidad de una visión clara de los conceptos y abstracciones que han sido utilizados como plataforma racional en la elaboración de los procedimientos contables, lo que ha llevado a los autores a plantear un método pedagógico con un alto componente práctico. A este respecto, en esta obra se propone una metodología dinámica basada en dos aspectos principales: a) Profundización progresiva: Se parte de una explicación descriptiva de los conceptos contables generales y del Plan General Contable, profundizando en el detalle de todos los aspectos en él contemplados, especialmente en las relaciones contables. Incorporando 76 Modelos Contables a través de diagramas o ilustraciones que realzan a la vez la comprensión y retención, acelerando el progreso educativo. b) Práctica real: Se presentan más de 200 ejemplos y problemas a resolver de situaciones reales que incluyen las distintas operaciones contables de la actividad típica de las empresas, permitiendo analizar el ciclo contable completo. Con ello se aumenta la percepción del aspecto práctico de los diferentes temas, de forma que su aplicabilidad a la realidad sea lo más evidente y directa posible. De esta forma, existe a lo largo de toda la obra una permanente preocupación por guardar un correcto equilibrio entre el tratamiento conceptual de los temas y la aplicación práctica de estos. De acuerdo con lo anterior, el presente libro está '''dividido en catorce capítulos''': '''Los dos primeros''' pretenden dar una explicación de los más básicos conceptos en que se fundamenta la Contabilidad Financiera. El '''tercer capítulo''' se centra en el análisis de la circulación del valor económico en las empresas, justificación en sí misma de la implantación de un plan contable, destacando el proceso de reforma de la actual planificación en España e indicando una descripción básica del Plan General Contable de 1990. Los '''capítulos cuarto y quinto''' se dedican al estudio detallado de los principios contables y las normas de valoración a tenor de la consideración de las partes primera y quinta, respectivamente, del Plan General de Contabilidad de 1990. Los '''capítulos sexto a duodécimo''' versan sobre el análisis de la problemática contable de las cuentas de los Grupos 1 a 7, respectivamente, del Plan General de Contabilidad. En el '''capítulo decimotercero''' se estudia el proceso contable de la determinación del resultado y aplicación del mismo. Por último, la cuarta parte del Plan de 1990, relativa a las Cuentas Anuales, es analizada en el '''capítulo decimocuarto'''. {{AutoCat}} jj4oqkglsmuiwcxy9ozanwhyrn858qs 434997 434989 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera/Introducción]] a [[Contabilidad financiera/Introducción]]: Título mal escrito: Política de nombrado 434989 wikitext text/x-wiki Este libro pretende ser un manual introductorio sobre aquellos temas que se pueden considerar básicos dentro de la Contabilidad Financiera, articulado en función del contenido del Plan General de Contabilidad de España (PGC), en un intento de analizar exhaustivamente el mismo. En este sentido, esta obra presenta un doble carácter: sintético y operativo. En primer término, se trata de analizar las soluciones que el Plan ha adoptado para la captación de unas determinadas operaciones empresariales, esto es, el sujeto de estudio es el quehacer económico (transacciones) y el Plan es el instrumento contable para captar, medir y representar dicha actividad. En cuanto al carácter operativo, se pretende conocer el propio Plan, tanto exponiendo detalladamente su contenido, especialmente el funcionamiento de las cuentas (incluyendo Modelos Contables) y la elaboración de las Cuentas Anuales (presentación en el Balance, Cuenta de Pérdidas y Ganancias y Cuadro de Financiación de las magnitudes contables), como desarrollando ejercicios prácticos que ayuden al estudio de las diferentes cuestiones. En este caso, el PGC pasa a ser el sujeto de estudio y el material didáctico un intento de exponer todas sus posibilidades. Sin embargo, como corresponde a un Curso Completo de Contabilidad Financiera, propio de los planes de estudio relacionados con las Ciencias Empresariales, no debe entenderse que el contenido del texto constituye simplemente una explicación del PGC, pues también se contemplan las soluciones propuestas por diversas normas existentes y la doctrina contable correspondiente. Por otro lado, las técnicas contables de aplicación en la actividad económica constituyen materias de cierta complejidad, pues intentan cuantificar aspectos que están sujetos a apreciaciones de carácter subjetivo, especialmente los relacionados con la valoración. De ahí la necesidad de una visión clara de los conceptos y abstracciones que han sido utilizados como plataforma racional en la elaboración de los procedimientos contables, lo que ha llevado a los autores a plantear un método pedagógico con un alto componente práctico. A este respecto, en esta obra se propone una metodología dinámica basada en dos aspectos principales: a) Profundización progresiva: Se parte de una explicación descriptiva de los conceptos contables generales y del Plan General Contable, profundizando en el detalle de todos los aspectos en él contemplados, especialmente en las relaciones contables. Incorporando 76 Modelos Contables a través de diagramas o ilustraciones que realzan a la vez la comprensión y retención, acelerando el progreso educativo. b) Práctica real: Se presentan más de 200 ejemplos y problemas a resolver de situaciones reales que incluyen las distintas operaciones contables de la actividad típica de las empresas, permitiendo analizar el ciclo contable completo. Con ello se aumenta la percepción del aspecto práctico de los diferentes temas, de forma que su aplicabilidad a la realidad sea lo más evidente y directa posible. De esta forma, existe a lo largo de toda la obra una permanente preocupación por guardar un correcto equilibrio entre el tratamiento conceptual de los temas y la aplicación práctica de estos. De acuerdo con lo anterior, el presente libro está '''dividido en catorce capítulos''': '''Los dos primeros''' pretenden dar una explicación de los más básicos conceptos en que se fundamenta la Contabilidad Financiera. El '''tercer capítulo''' se centra en el análisis de la circulación del valor económico en las empresas, justificación en sí misma de la implantación de un plan contable, destacando el proceso de reforma de la actual planificación en España e indicando una descripción básica del Plan General Contable de 1990. Los '''capítulos cuarto y quinto''' se dedican al estudio detallado de los principios contables y las normas de valoración a tenor de la consideración de las partes primera y quinta, respectivamente, del Plan General de Contabilidad de 1990. Los '''capítulos sexto a duodécimo''' versan sobre el análisis de la problemática contable de las cuentas de los Grupos 1 a 7, respectivamente, del Plan General de Contabilidad. En el '''capítulo decimotercero''' se estudia el proceso contable de la determinación del resultado y aplicación del mismo. Por último, la cuarta parte del Plan de 1990, relativa a las Cuentas Anuales, es analizada en el '''capítulo decimocuarto'''. {{AutoCat}} jj4oqkglsmuiwcxy9ozanwhyrn858qs Contabilidad financiera/Capítulo 1 0 14898 434988 420210 2026-09-29T07:33:48Z Antimundo 74354 Categorizar usando AutoCat 434988 wikitext text/x-wiki '''1.1. CONCEPTO DE CONTABILIDAD''' Encontrar un concepto de Contabilidad que, por una parte, contente a cuantos estudiosos se han ocupado del problema y, por otra, abarque los conocimientos que actualmente se le exigen a nuestra ciencia, no es tarea fácil. Para ello, en primer término, conviene hacer referencia a alguna de las definiciones que sobre la misma se han realizado, tratando de comprobar cuál es el objeto material que los distintos autores han establecido para la ciencia de la Contabilidad, así como la naturaleza científica y los fines perseguidos que se desprenden de las numerosas definiciones que se han dado sobre nuestra disciplina a lo largo de su dilatada historia, variando según el momento del pensamiento contable y, en consecuencia, dando especial énfasis a diferentes aspectos: registral, jurídico, patrimonial, económico, comunicacional, etc. Así, por ejemplo, FERNANDEZ PIRLA<ref>FERNANDEZ PIRLA, J. Mª (1974): "Teoría Económica de la Contabilidad". ICE. Madrid, pág. 16.</ref> establece que "la Contabilidad es, ante todo, ciencia económica, por la naturaleza de los elementos sobre los que opera, por el fin que persigue -el conocimiento de la situación económica- y por los métodos que utiliza". Parece oportuno recoger asimismo la opinión de MONTESINOS JULVE,<ref>MONTESINOS JULVE, V. (1978): "Formación histórica, corrientes doctrinales y programas de investigación de la Contabilidad". Revista Técnica Contable. Vol. XXX, nº 351 a 358, marzo-octubre, pág. 372. </ref> la cual sin constituir una definición de la disciplina, como así lo manifiesta el propio autor, expresa una concepción de la Contabilidad de gran interés al considerarla como: "ciencia primordialmente normativa ocupada de la captación, elaboración, representación y comunicación de informaciones relativas a la realidad socioeconómica, con vistas a facilitar decisiones operacionales de los distintos sujetos económicos". También cabe señalar la definición de MALLO RODRIGUEZ,<ref>MALLO RODRIGUEZ, C. (1975): "Función de la Contabilidad actual en la Empresa". Revista Española de Financiación y Contabilidad, abril-septiembre, págs. 314 y 317. </ref> para el que "la Contabilidad es una ciencia general aplicable a todos los sujetos económicos, cuya finalidad se centra en la elaboración de información mediante una metodología propia y adecuada que facilite la predicción y, en consecuencia, la toma de decisiones tendente a la consecución de los objetivos establecidos". A su vez, CAÑIBANO CALVO<ref>CAÑIBANO CALVO, L. (1990): "Contabilidad. Análisis Contable de la Realidad Económica". Pirámide. Madrid, pág. 23. </ref> proporciona la siguiente definición de nuestra disciplina "la Contabilidad es una ciencia de naturaleza económica que tiene por objeto producir información para hacer posible el conocimiento pasado, presente y futuro de la realidad económica en términos cuantitativos a todos sus niveles organizativos, mediante la utilización de un método específico apoyado en bases suficientemente contrastadas, con el fin de facilitar las decisiones financieras externas y las de planificación y control internas". Por último, señalar la propuesta de GARCIA GARCIA<ref>GARCIA GARCIA, M. (1972): "Modernas Tendencias Metodológicas en Contabilidad". Revista Española de Financiación y Contabilidad, enero-febrero, pág. 25. </ref> al considerar la Contabilidad como una ciencia formal en el sentido de ciencia instrumental aplicable a toda realidad en que se den fenómenos circulatorios, cuando señala que "si el campo de la Contabilidad se refiere a aspectos estructurales genéricos de la realidad objetiva (por ejemplo, el aspecto circulatorio de cualquier realidad), no cabe duda que las formulaciones básicas de la ciencia contable han de ser abstractas (no ligadas a una finalidad concreta) así como el resto del contenido, cuyo desarrollo seguirá el método propio de las ciencias formales utilizando como instrumento básico el constructivismo propio de la ciencia lógico formal o el de la lógica dialéctica". El estudio anterior sobre la conceptualización doctrinal de la Contabilidad permite observar cómo a los caracteres estrictamente jurídicos o económicos se han superpuesto otros. De esta forma, la Contabilidad se considera tanto una actividad de servicio, como una disciplina descriptiva y normativa y como un sistema de información: *Como '''actividad de servicio''' proporciona a las partes interesadas información cuantitativa que facilita la toma de decisiones en un ambiente de escasez de recursos. * Como '''disciplina descriptiva y normativa''', capta y representa los eventos y operaciones que caracterizan la actividad económica, a través de la medición, interpretación y clasificación, reduciendo todos los datos a items significativos que describen la situación o evolución específicas. * Como '''sistema de información''', reúne y comunica dicha información económica. Teniendo en cuenta las proposiciones anteriores, se puede definir a la Contabilidad como aquella ciencia que estudia la realidad económica con objeto de elaborar y comunicar información estructurada, en términos cuantitativos y mediante un método específico, que permita el conocimiento de dicha realidad, posibilitando la adopción de decisiones tanto financieras como de planificación y control. De esta forma, de puede sintetizar el objeto material, el objeto formal y la finalidad de nuestra disciplina: * '''El objeto material''', compartido con otras ciencias, está constituido por la realidad económica. * '''El objeto formal''', el que configura la autonomía científica de la Contabilidad, consiste en producir información que haga posible el conocimiento de tal realidad económica, o en otras palabras, captar, representar, medir e interpretar la estructura de los flujos de renta y agregados de riqueza, ya pertenezcan a una unidad económica o a un ente supranacional. * '''La finalidad''' de la Contabilidad se concreta en la selección, elaboración y comunicación de la información necesaria para fundamentar racionalmente la adopción de decisiones financieras externas y las de planificación y control internas. <references/> {{AutoCat}} 0kkgnxryuvvqti85t6qem65c9fvhmdd 434993 434988 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera/Capítulo 1]] a [[Contabilidad financiera/Capítulo 1]]: Título mal escrito: Política de nombrado 434988 wikitext text/x-wiki '''1.1. CONCEPTO DE CONTABILIDAD''' Encontrar un concepto de Contabilidad que, por una parte, contente a cuantos estudiosos se han ocupado del problema y, por otra, abarque los conocimientos que actualmente se le exigen a nuestra ciencia, no es tarea fácil. Para ello, en primer término, conviene hacer referencia a alguna de las definiciones que sobre la misma se han realizado, tratando de comprobar cuál es el objeto material que los distintos autores han establecido para la ciencia de la Contabilidad, así como la naturaleza científica y los fines perseguidos que se desprenden de las numerosas definiciones que se han dado sobre nuestra disciplina a lo largo de su dilatada historia, variando según el momento del pensamiento contable y, en consecuencia, dando especial énfasis a diferentes aspectos: registral, jurídico, patrimonial, económico, comunicacional, etc. Así, por ejemplo, FERNANDEZ PIRLA<ref>FERNANDEZ PIRLA, J. Mª (1974): "Teoría Económica de la Contabilidad". ICE. Madrid, pág. 16.</ref> establece que "la Contabilidad es, ante todo, ciencia económica, por la naturaleza de los elementos sobre los que opera, por el fin que persigue -el conocimiento de la situación económica- y por los métodos que utiliza". Parece oportuno recoger asimismo la opinión de MONTESINOS JULVE,<ref>MONTESINOS JULVE, V. (1978): "Formación histórica, corrientes doctrinales y programas de investigación de la Contabilidad". Revista Técnica Contable. Vol. XXX, nº 351 a 358, marzo-octubre, pág. 372. </ref> la cual sin constituir una definición de la disciplina, como así lo manifiesta el propio autor, expresa una concepción de la Contabilidad de gran interés al considerarla como: "ciencia primordialmente normativa ocupada de la captación, elaboración, representación y comunicación de informaciones relativas a la realidad socioeconómica, con vistas a facilitar decisiones operacionales de los distintos sujetos económicos". También cabe señalar la definición de MALLO RODRIGUEZ,<ref>MALLO RODRIGUEZ, C. (1975): "Función de la Contabilidad actual en la Empresa". Revista Española de Financiación y Contabilidad, abril-septiembre, págs. 314 y 317. </ref> para el que "la Contabilidad es una ciencia general aplicable a todos los sujetos económicos, cuya finalidad se centra en la elaboración de información mediante una metodología propia y adecuada que facilite la predicción y, en consecuencia, la toma de decisiones tendente a la consecución de los objetivos establecidos". A su vez, CAÑIBANO CALVO<ref>CAÑIBANO CALVO, L. (1990): "Contabilidad. Análisis Contable de la Realidad Económica". Pirámide. Madrid, pág. 23. </ref> proporciona la siguiente definición de nuestra disciplina "la Contabilidad es una ciencia de naturaleza económica que tiene por objeto producir información para hacer posible el conocimiento pasado, presente y futuro de la realidad económica en términos cuantitativos a todos sus niveles organizativos, mediante la utilización de un método específico apoyado en bases suficientemente contrastadas, con el fin de facilitar las decisiones financieras externas y las de planificación y control internas". Por último, señalar la propuesta de GARCIA GARCIA<ref>GARCIA GARCIA, M. (1972): "Modernas Tendencias Metodológicas en Contabilidad". Revista Española de Financiación y Contabilidad, enero-febrero, pág. 25. </ref> al considerar la Contabilidad como una ciencia formal en el sentido de ciencia instrumental aplicable a toda realidad en que se den fenómenos circulatorios, cuando señala que "si el campo de la Contabilidad se refiere a aspectos estructurales genéricos de la realidad objetiva (por ejemplo, el aspecto circulatorio de cualquier realidad), no cabe duda que las formulaciones básicas de la ciencia contable han de ser abstractas (no ligadas a una finalidad concreta) así como el resto del contenido, cuyo desarrollo seguirá el método propio de las ciencias formales utilizando como instrumento básico el constructivismo propio de la ciencia lógico formal o el de la lógica dialéctica". El estudio anterior sobre la conceptualización doctrinal de la Contabilidad permite observar cómo a los caracteres estrictamente jurídicos o económicos se han superpuesto otros. De esta forma, la Contabilidad se considera tanto una actividad de servicio, como una disciplina descriptiva y normativa y como un sistema de información: *Como '''actividad de servicio''' proporciona a las partes interesadas información cuantitativa que facilita la toma de decisiones en un ambiente de escasez de recursos. * Como '''disciplina descriptiva y normativa''', capta y representa los eventos y operaciones que caracterizan la actividad económica, a través de la medición, interpretación y clasificación, reduciendo todos los datos a items significativos que describen la situación o evolución específicas. * Como '''sistema de información''', reúne y comunica dicha información económica. Teniendo en cuenta las proposiciones anteriores, se puede definir a la Contabilidad como aquella ciencia que estudia la realidad económica con objeto de elaborar y comunicar información estructurada, en términos cuantitativos y mediante un método específico, que permita el conocimiento de dicha realidad, posibilitando la adopción de decisiones tanto financieras como de planificación y control. De esta forma, de puede sintetizar el objeto material, el objeto formal y la finalidad de nuestra disciplina: * '''El objeto material''', compartido con otras ciencias, está constituido por la realidad económica. * '''El objeto formal''', el que configura la autonomía científica de la Contabilidad, consiste en producir información que haga posible el conocimiento de tal realidad económica, o en otras palabras, captar, representar, medir e interpretar la estructura de los flujos de renta y agregados de riqueza, ya pertenezcan a una unidad económica o a un ente supranacional. * '''La finalidad''' de la Contabilidad se concreta en la selección, elaboración y comunicación de la información necesaria para fundamentar racionalmente la adopción de decisiones financieras externas y las de planificación y control internas. <references/> {{AutoCat}} 0kkgnxryuvvqti85t6qem65c9fvhmdd Contabilidad financiera/El objeto material de la contabilidad 0 14909 434995 426337 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera/El objeto material de la contabilidad]] a [[Contabilidad financiera/El objeto material de la contabilidad]]: Título mal escrito: Política de nombrado 426337 wikitext text/x-wiki '''1.1.1. El objeto material de la Contabilidad''' De acuerdo con el profesor RIVERO ROMERO,<ref>RIVERO ROMERO, J. (1993): "Contabilidad Financiera". Trivium. Madrid, pág. 29.</ref> "el campo de actuación u objeto material de la Contabilidad es el patrimonio. El fin de nuestra disciplina es la medición y representación del indicado patrimonio". Desde una perspectiva jurídica, se puede observar cómo el '''patrimonio''' es la descripción valorada en unidades monetarias de dos tipos de elementos: por un lado, los bienes y derechos de la unidad económica (Activo) y, por otro, las deudas u obligaciones (Pasivo), siendo la diferencia entre ambos lo que se denomina el Neto Patrimonial o situación neta. A su vez, desde una óptica económica, el patrimonio de la unidad económica como un todo coordinado con un determinado destino, consiste en la descripción valorada, por un lado de sus recursos y, por otro, de los empleos de estos mismos recursos. '''a) Estructura de los recursos (Pasivo)''' Una primera clasificación de los orígenes de la financiación o Pasivo de la unidad económica se puede efectuar en base a la fuente de aportación de los mismos, ya sea por parte de los propietarios de la misma (recursos propios) o bien por terceros ajenos a ella (recursos ajenos). Los '''recursos propios''' suelen revestir dos formas distintas: por un lado, el desembolso inicial del empresario o de los socios al constituirse la unidad económica y también desembolsos posteriores en aquellas situaciones en que se produce una ampliación de capital y, por otro, la autofinanciación o recursos generados por la propia unidad económica al obtener ésta beneficios que se mantienen en la misma sin ser retirados por los socios con destino a sus patrimonios privados. Tal autofinanciación incluye las reservas que proceden de la acumulación de resultados positivos no repartidos entre los socios, ya sean alcanzados durante varios ejercicios económicos o bien como los resultados del ejercicio corriente. En lo que respecta a los '''recursos ajenos''', cabe distinguir entre: ''a largo plazo'', es decir cualquier deuda que la unidad económica deba reintegrar en un plazo superior a un año, y ''a corto plazo'', cuando la devolución de los recursos obtenidos debe producirse antes de dicho tiempo. A modo ilustrativo, en el [[Contabilidad Financiera/Cuadro 1.1.|Cuadro 1.1.]] aparecen los diferentes elementos que constituyen el Pasivo de la unidad económica, cuya consideración específica se indica a continuación: '''1. Fondos propios:''' *Las aportaciones de recursos efectuadas por el propietario en la empresa particular, por los socios en las sociedades de personas y por los accionistas en las sociedades de capital. *Los beneficios netos ya obtenidos (incluidos los del último ejercicio) que, por algún motivo, no hayan sido distribuidos a quien correspondan. *Las reservas o beneficios no retirados por los socios que permanecen en la sociedad, incrementando su capacidad de financiación. *La autofinanciación acumulada una vez calculada y deducida de los excedentes de explotación (al final de cada período contable, para hacer frente a renovación de los equipos, dada su incorporación al proceso de actividad de la unidad económica, y a los riesgos previstos de contingencias de pérdida). El conjunto constituido por los recursos propios también se denomina Neto Patrimonial, en cuyo caso se restringe la denominación de Pasivo para los recursos ajenos. '''2. Fondos ajenos a largo plazo''': Son las deudas contraídas por la unidad económica con los proveedores de inmovilizado, los prestamistas o entidades financieras, los obligacionistas y otros acreedores que otorgan su confianza a la misma por un período superior a un año. Cabe señalar que los empréstitos son préstamos recibidos por la empresa que se han dividido entre muchos prestamistas (obligacionistas) y que se han documentado en títulos reintegrables (obligaciones), los cuales devengan un interés preestablecido a favor de aquéllos. ''' 3. Fondos ajenos corrientes (Pasivo circulante)''': Son las deudas contraídas por la unidad económica con los proveedores de bienes o servicios, prestamistas u otros acreedores que otorgan su confianza a la empresa por un período inferior a un año. '''b) Estructura de los empleos (Activo)''' El Activo está constituido por todos los elementos patrimoniales en los que la empresa ha invertido los recursos financieros puestos a su disposición, de ahí que sea el tipo de actividad económica que desarrolla cada unidad el criterio que determina su composición. Así, por ejemplo, una empresa comercial se caracterizará por realizar inversiones importantes en existencias para poder disponer de los artículos a vender a sus clientes, pero no necesitará poseer gran nivel de maquinaria ni instalaciones industriales, ya que no desarrolla actividades de transformación, mientras que una empresa industrial deberá invertir sumas significativas en los equipos que requiere para su producción, lo que se denotará por un mayor montante del inmovilizado o empleos físicos permanente. De esta forma, para efectuar una primera clasificación del Activo, cabe distinguir en base a la función económica que tales empleos cumplen en la unidad económica, siendo la actividad específica de ésta la que permite determinar tal afectación. A modo ilustrativo, en el [[Cuadro 1.2.]] aparecen los diferentes elementos que constituyen el Activo de la unidad económica, cuya consideración específica se indica a continuación: #Empleos en derechos adquiridos o creados (activos intangibles): Incluyen las patentes, licencias, marcas, costes de investigación y desarrollo, etc. #Empleos físicos permanentes: Son aquellos bienes tangibles y duraderos que la unidad económica tiene intención de incorporar a su proceso de transformación o utilizar como instrumento de trabajo por un período superior a un año. Incluyen los terrenos, edificios, equipos de transformación, de transporte y de administración, etc. #Empleos financieros a largo plazo: Se trata de inversiones realizadas por la unidad económica en otras unidades económicas, realizadas con el propósito de influir en su gestión o de un préstamo, con la intención de conservarlas por un período superior a un año. #Empleos físicos corrientes (Existencias): Se trata de aquellos géneros o artículos adquiridos a terceros (materias primas, productos semiterminados, productos u obras en curso y productos terminados) para ser puestos a la venta, consumidos y repuestos. #Empleos financieros corrientes: Incluyen las deudas de clientes y otros deudores de la unidad económica que tienen que ser canceladas en un plazo inferior a un año, así como el efectivo, los efectos por cobrar, los depósitos bancarios a la vista o a plazo, los Bonos del Tesoro o valores análogos y las inversiones temporales motivadas más por un afán de rentabilidad, ante posibles excesos de tesorería, que con ánimo de dominio como es el caso de las inversiones permanentes anteriormente citadas. <references/> khn9vpy1878gb4awrhum1898leri7lo Contabilidad financiera/Los fines y objetivos de la ciencia contable 0 14910 434987 398491 2026-09-29T07:31:46Z Antimundo 74354 Categorizar usando AutoCat 434987 wikitext text/x-wiki '''1.1.2. Los fines y objetivos de la ciencia contable''' En las anteriores definiciones a que se ha hecho referencia se puede observar gran unanimidad en cuanto a los fines de la Contabilidad: ésta ha de servir de base para la toma de decisiones; esto es, la finalidad de la ciencia contable estaría en la obtención de información adecuada para objetivos concretos que pueda ser utilizada para la adopción de decisiones por parte de los usuarios de dicha información. Ahora bien, estos objetivos concretos que se persiguen con la información proporcionada por el sistema contable, dependerán de los usuarios de dicha información, y como estos usuarios son muy diversos, obviamente sus objetivos también lo serán. En este sentido se pueden distinguir dos enfoques básicos para determinar los objetivos: por una parte, suponer que la información se presenta a usuarios desconocidos, que tienen objetivos múltiples; por otro lado, suponer que la información se orienta hacia usuarios específicos, de los que se conocen sus objetivos concretos. El primero de estos enfoques conlleva, lógicamente, a la formulación de objetivos amplios, tratando de orientar las construcciones teóricas hacia la enumeración de principios y reglas capaces de atender a la multiplicidad de objetivos de los usuarios. Así, MOONITZ , refiriéndose a la empresa como entidad o sujeto contable, establecen los siguientes objetivos para la Contabilidad: #Medir los recursos poseídos por entidades específicas. #Reflejar las obligaciones de éstas frente a terceros interesados en las mismas. #Medir los cambios en los recursos de éstas frente a terceros interesados en éstas. #Asignar los cambios a períodos específicos de tiempo. #Expresar lo procedente en función de la moneda como denominador común. Por el contrario, el segundo de los enfoques conlleva la formulación de objetivos específicos, tratando de orientar las construcciones teóricas hacia la enunciación de principios y reglas sobre los que elaborar la información necesaria según los objetivos de usuarios específicos. {{AutoCat}} h05y24lv4dvzo1fbnwvyns3zy0bmqvf 434999 434987 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera/Los fines y objetivos de la ciencia contable]] a [[Contabilidad financiera/Los fines y objetivos de la ciencia contable]]: Título mal escrito: Política de nombrado 434987 wikitext text/x-wiki '''1.1.2. Los fines y objetivos de la ciencia contable''' En las anteriores definiciones a que se ha hecho referencia se puede observar gran unanimidad en cuanto a los fines de la Contabilidad: ésta ha de servir de base para la toma de decisiones; esto es, la finalidad de la ciencia contable estaría en la obtención de información adecuada para objetivos concretos que pueda ser utilizada para la adopción de decisiones por parte de los usuarios de dicha información. Ahora bien, estos objetivos concretos que se persiguen con la información proporcionada por el sistema contable, dependerán de los usuarios de dicha información, y como estos usuarios son muy diversos, obviamente sus objetivos también lo serán. En este sentido se pueden distinguir dos enfoques básicos para determinar los objetivos: por una parte, suponer que la información se presenta a usuarios desconocidos, que tienen objetivos múltiples; por otro lado, suponer que la información se orienta hacia usuarios específicos, de los que se conocen sus objetivos concretos. El primero de estos enfoques conlleva, lógicamente, a la formulación de objetivos amplios, tratando de orientar las construcciones teóricas hacia la enumeración de principios y reglas capaces de atender a la multiplicidad de objetivos de los usuarios. Así, MOONITZ , refiriéndose a la empresa como entidad o sujeto contable, establecen los siguientes objetivos para la Contabilidad: #Medir los recursos poseídos por entidades específicas. #Reflejar las obligaciones de éstas frente a terceros interesados en las mismas. #Medir los cambios en los recursos de éstas frente a terceros interesados en éstas. #Asignar los cambios a períodos específicos de tiempo. #Expresar lo procedente en función de la moneda como denominador común. Por el contrario, el segundo de los enfoques conlleva la formulación de objetivos específicos, tratando de orientar las construcciones teóricas hacia la enunciación de principios y reglas sobre los que elaborar la información necesaria según los objetivos de usuarios específicos. {{AutoCat}} h05y24lv4dvzo1fbnwvyns3zy0bmqvf Ecuación cuadrática/Conceptos previos 0 17152 434984 430794 2026-09-29T07:07:21Z Antimundo 74354 Simplificar sintaxis wiki 434984 wikitext text/x-wiki ==¿Qué es una Ecuación?== Es una expresión algebraica que consta de dos miembros separados por un signo de igualdad. Uno o ambos miembros de la ecuación debe tener al menos una variable o letra, llamada ''incógnita''. Las ecuaciones se convierten en identidades sólo para determinados valores de la(s) incógnita(s). Estos valores particulares se llaman soluciones de la ecuación. <div style="color:#C90066;"> '''Ejemplo'''. <big>'''3x - 8 = 10'''</big> sólo se cumple para '''x = 6''', ya que si sustituimos dicho valor en la ecuación quedará la identidad: 10 = 10. Por lo tanto decimos que '''x = 6''' es la solución de la ecuación dada. De hecho, es la única solución. Si usáramos, por ejemplo, '''x = 2''', resultaría '''-2 = 10''' (un absurdo) </div> Resolver una ecuación es hallar los valores de '''x''' que la satisfacen a través de técnicas matemáticas variadas. Si la ecuación es de primer grado, un despeje es el procedimiento general. Si el grado de la ecuación es superior a uno, deben utilizarse otros métodos. ''Vease el artículo:[[w:es:ecuación|Ecuación]]'' ==Qué es una Raíz== [[Image:Racine carrée bleue.svg|thumb|150px|Representación de "raíz cuadrada de ''x''".]] En matemática, la raíz cuadrada de un número real no negativo '''x''' es el número real no negativo que, multiplicado con sí mismo, da '''x'''. La raíz cuadrada de '''x''' se denota por <math>\sqrt{x}</math>. <div style="color:#C90066;"> '''Ejemplo'''. <math>\sqrt{16} = 4</math>, ya que <math>4 \cdot 4 = 16</math> '''Ejemplo'''. <math>\sqrt{144} = 12</math> , ya que <math>12 \cdot 12 = 144</math> </div> No todos los números reales no negativos tienen una raíz cuadrada exacta. <div style="color:#C90066;"> '''Ejemplo'''. <math>\sqrt{2} = 1,41421...</math> . </div> ''Vease el artículo:[[w:es:raíz cuadrada|Raíz cuadrada]]'' ===Propiedad raíz cuadrada=== <math>Si \quad x^2=a \quad \Rightarrow \quad x= \pm \sqrt{a} \quad con \quad a > 0</math> Esto significa que <math>\sqrt{a}</math> y <math>- \sqrt{a}</math> satisfacen la ecuación. Esto es debido a que es una ecuación de segundo grado y ésta tiene a lo más dos soluciones. Ademas, la raíz tiene sentido en el conjunto de los números reales si '''a''' es no negativo. <div style="color:#C90066;"> <br>'''Ejemplo'''. Encontrar el valor de '''x''' en la ecuación: x<sup>2</sup>= 9 <br> Usando la propiedad nos queda: <math>x= \sqrt{9} \Rightarrow x= \pm 3</math>. Por lo tanto la incognita '''x''' tiene dos valores: x=3 y x=-3 <br> ''Respuesta'': Los números multiplicados dos veces a si mismos que dan como resultado '''9''' son '''3''' y '''-3''' </div> ==Propiedad Cero== <div style="color:#808080;"> ''''''Propiedad'''. El producto de dos números es cero si y solo si al menos uno de ellos es cero.'''</div><br> <math>a \cdot b = 0 \quad \iff \quad a=0 \quad \lor \quad b=0</math> <div style="color:#4EB800;"> <br>'''Ejemplo'''. Encontrar el valor de '''a''' en: <math>3 \cdot a = 0</math> <br> Por propiedad : 3=0 o a=0. La igualdad 3=0 es un absurdo y se descarta, por tanto nos queda a = 0 <br> Respuesta: <math>3 \cdot a = 0</math> si y solo si a = 0 </div> ==Productos notables== <big> *'''(a + b)<sup>2</sup>''' =a<sup>2</sup>+ 2ab + b<sup>2</sup><br> *'''(a + b)(a - b)''' = a<sup>2</sup> - b<sup>2</sup><br> *'''(x + a)(x + b)''' = x<sup>2</sup> + (a+b)x + ab </big> ''Vease el artículo:[[w:es:Productos notables|Productos notables]]'' {{navegador| |anterior= Introducción |siguiente= Ecuación cuadrática }} {{AutoCat}} oqal857p6tp0rl5kw5oh8a8yc4auurf Ecuación cuadrática 0 17153 434983 433922 2026-09-29T07:04:40Z Antimundo 74354 Retirar desarrollos 434983 wikitext text/x-wiki {{:Ecuación cuadrática/Introducción}} == Índice == * [[Ecuación cuadrática/Conceptos previos|Conceptos previos]] * [[Ecuación cuadrática/Ecuación cuadrática|Ecuación cuadrática]] * [[Ecuación cuadrática/Clasificación|Clasificación]] * [[Ecuación cuadrática/Factorización|Factorización]] * [[Ecuación cuadrática/Completación de cuadrados|Completación de cuadrados]] * [[Ecuación cuadrática/Formula general|Formula general]] * [[Ecuación cuadrática/Tipos de soluciones|Tipos de soluciones]] * [[Ecuación cuadrática/Propiedades de las raíces|Propiedades de las raíces]] * [[Ecuación cuadrática/Interpretación geométrica|Interpretación geométrica]] * [[Ecuación cuadrática/Sistemas de Ecuaciones Cuadráticas|Sistemas de Ecuaciones Cuadráticas]] * [[Ecuación cuadrática/Aplicaciones|Aplicaciones]] ** [[Ecuación cuadrática/Ecuación bicuadrática|Ecuación bicuadrática]] ** [[Ecuación cuadrática/Ecuaciones con radicales|Ecuaciones con radicales]] * [[Ecuación cuadrática/Historia|Historia]] == Herramientas == * [[/Desarrollo|Desarrollo]] * [[/Versión para imprimir|Versión para imprimir]] == Véase también == {{-wikipedia|Ecuación cuadrática}} {{Estantes|Matemática}} ofbn093ep5a4sqp6ymmsih7x24awuqd Ecuación cuadrática/Fórmula general 0 17585 434985 430800 2026-09-29T07:11:21Z Antimundo 74354 Arreglos de sintaxis wiki 434985 wikitext text/x-wiki Consideremos la ecuación general de segundo grado (ecuación cuadrática) que tiene la forma: <math>ax^2+bx+c=0</math>. Resolver esta ecuación implica encontrar el valor o los valores de <math>x</math> que cumplen con la expresión, si es que existen<ref>http://melisa3f.blogspot.mx/2014/02/formula-general-de-las-ecuaciones.html</ref> Cuando nos enfrentamos por primera vez en la vida a esta clase de problemas, la primera forma en la que se intenta dar una respuesta es probando con varios números hasta "atinarle" (ya sea por que nos sonría la buena fortuna, o por aproximación). Algunos incluso prueban número tras número hasta hallar la solución (Método de la "Fuerza Bruta") Después, conforme nos vamos enfrentando a mas problemas que involucran ecuaciones cuadráticas, descubrimos algunos métodos de solución. De los primeros que aprendemos (por simplicidad) están el "Método Gráfico" (Realizar la gráfica correspondiente a la ecuación cuadrática igualada a cero y observar en que abscisas la gráfica "toca o pasa" por el eje horizontal del plano cartesiano). Otro método que aprendemos es el "Método de Factorización" (Trabajar con la expresión cuadrática igualada a cero hasta dejarla expresada como multiplicación de otras dos expresiones algebraicas, y encontrar "por simple observación" los valores que hacen que estas últimas dos ecuaciones sean iguales a cero). Las desventajas de estos métodos es que implican trabajo excesivo, y no se garantiza que se encuentre la solución de la ecuación (al menos una solución "Real"). El último método que se estudia para resolver ecuaciones de segundo grado es la "Fórmula General". == Explicación de la Formula General == La deducción de la fórmula cuadrática viene de la fórmula de completar el cuadro: La ecuación canónica de segundo grado se puede simplificar dividiendo por el coeficiente principal, de forma que {{ecuación| <math>ax^2+bx+c=0 \ \Leftrightarrow \ x^2 + \frac{b}{a}x + \frac{c}{a} = 0</math> ||left}} Si usamos otras letras para simplificarlo de forma que <math> m = \frac{b}{a}</math> y <math> n = \frac{c}{a}</math> la demostración (que es algo más sencilla) queda como sigue: Desde la ecuación :: <math> x^2+mx+n=0 \,</math> Aislando n :: <math> x^2 + mx = -n \,</math> Sumando <math> \frac{m^2}{4}</math> a ambos términos :: <math>x^2+mx+\frac{m^2}{4}=\frac{m^2}{4}-n</math> Simplificamos el primer término a un binomio cuadrado :: <math> \left( x+\frac{m}{2} \right)^2=\frac{m^2}{4}-n</math> Extrayendo la raíz cuadrada a los dos miembros :: <math> x+\frac{m}{2} = \pm \sqrt{\frac{m^2}{4}-n}</math> Aislando <math>x\,</math> y simplificando la fracción de la raíz :: <math>x = \frac{-m}{2}\pm \sqrt{\frac{m^2 - 4n}{4}}</math> Simplificando a común denominador :: <math>x = \frac{-m \pm \sqrt{m^2-4n}}{2}</math> si deshacemos el cambio de variables, obtenemos el resultado :: <math> x = \frac{-b \pm \sqrt{b^2 - 4ac} }{ 2a } </math> La demostración sin [[cambio de variable]]s se puede ver aquí: * Partimos de nuestra ecuación simplificada: :: <math>x^2 + \frac{b}{a}x + \frac{c}{a} = 0</math> * Pasamos al otro término <math>\frac{c}{a}</math>: :: <math> x^2 + \frac{b}{a}x = -\frac{c}{a} </math> * Sumamos <math> \frac{b^2}{4 a^2}</math> para obtener un binomio desarrollado: :: <math> x^2 + \frac{b}{a}x + \frac{b^2}{4 a^2} = \frac{b^2}{4 a^2} - \frac{c}{a}</math> * El trinomio a la izquierda es un cuadrado perfecto; simplificando a común denominador el segundo miembro: :: <math> \, \left( x + \frac{b}{2a} \right)^2 = \frac{b^2 - 4ac}{4a^2}</math> Extrayendo las 2 posibles raíces cuadradas, obtenemos: :: <math> x + \frac{b}{2a} = \pm \sqrt{\frac{b^2 - 4ac}{4a^2}}</math> Moviendo <math>\frac{b}{2a}</math> y aplicando la raíz al denominador: :: <math> x = -\frac{b}{2a} \pm \frac{\sqrt{b^2 - 4ac}}{2a}</math> Simplificando a común denominador: :: <math>x = \frac{ -b \pm \sqrt{b^2 - 4ac}}{2a} </math> <math>X_1,_2 = \frac{-b \pm \sqrt{b^2-4ac}}{2a}</math> Analizando la raíz cuadrada, se llega a las siguientes conclusiones : : Si <math>b^2</math> es '''menor que''' <math>-4ac</math> los resultados de X serán dos valores con parte real y parte imaginaria. Es decir, el resultado sera un número complejo. : Si <math>b^2</math> es '''mayor que''' <math>-4ac</math> obtendremos dos valores distintos de X reales. : Y si <math>b^2</math> es '''igual que''' <math>-4ac</math> obtendremos dos valores de X reales e iguales. Otras operaciones cuadraticas utilizadas son al realizarlas ejemplo:(x+8)al cuadrado (×+8)(×+8) ×al cuadrado+8x+8x+64 SIMPLIFICADO: xal cuadrado+16x+64 : Al término <math>b^2-4ac</math> se le llama ''discriminante''. tomando en cuenta el orden de los términos: "a","b"y"c"=x²-6x+9 : Las características principales de estas son: 1. Tienen que estar igualadas a cero 2. Tienen una, dos, o ninguna solución dependiendo del problema de ecuación.. {{AutoCat}} qqq1gcmlkqol12saw8hlenhe6a47r8h Plantilla:LP 10 17843 435002 431319 2026-09-29T07:52:05Z Antimundo 74354 Simplificar sintaxis wiki y retirar subpáginas que en la mayoría de casos ni si quiera existen y sólo generan un gran número de enlaces rotos 435002 wikitext text/x-wiki <includeonly> {| class="wikitable" style="width:100%; max-width:800px; margin:auto; text-align:center;" | style="padding:1em 0;" | 📑 Esta categoría reúne todas las páginas del libro: [[{{#if:{{{1|}}} |{{{1}}} |{{#ifeq:{{#titleparts:{{PAGENAME}}|1|1}}|Libro |{{#titleparts:{{PAGENAME}}|1|2}} |{{PAGENAME}} }} }}]]. |}{{#ifeq:{{NAMESPACE}}|{{ns:14}}|[[Categoría:Libros organizados|{{{1|{{SUBPAGENAME}}}}}]]}}</includeonly><noinclude> [[Categoría:Wikilibros:Plantillas para citar libros|LP]] {{Documentación|Plantilla:Libro/uso}}</noinclude> o2zn99a1qjxds6h2jxhswq0qq5eqije 435003 435002 2026-09-29T07:53:56Z Antimundo 74354 Arreglar para páginas Libro: 435003 wikitext text/x-wiki <includeonly> {| class="wikitable" style="width:100%; max-width:800px; margin:auto; text-align:center;" | style="padding:1em 0;" | 📑 Esta categoría reúne todas las páginas del libro: [[{{#if:{{{1|}}} |{{{1}}} |{{#ifeq:{{#sub:{{PAGENAME}}|0|6}}|Libro: |{{#sub:{{PAGENAME}}|6}} |{{PAGENAME}} }} }}]]. |} {{#ifeq:{{NAMESPACE}}|{{ns:14}} |[[Categoría:Libros organizados|{{{1|{{PAGENAME}}}}}]] }}</includeonly><noinclude> [[Categoría:Wikilibros:Plantillas para citar libros|LP]] {{Documentación|Plantilla:Libro/uso}} </noinclude> ijuol212r8d51848sctzd4lb9l80yyt 435005 435003 2026-09-29T08:01:13Z Antimundo 74354 Usar móduo de lua 435005 wikitext text/x-wiki <includeonly> {| class="wikitable" style="width:100%; max-width:800px; margin:auto; text-align:center;" | style="padding:1em 0;" | 📑 Esta categoría reúne todas las páginas del libro: [[{{#invoke:Categoría de libro|nombre|{{{1|}}}}}]]. |} {{#ifeq:{{NAMESPACE}}|{{ns:14}} |[[Categoría:Libros organizados|{{#invoke:Categoría de libro|nombre|{{{1|}}}}}]] }} </includeonly><noinclude> [[Categoría:Wikilibros:Plantillas para citar libros|LP]] {{Documentación|Plantilla:Libro/uso}} </noinclude> kfz8e4j3r71re910qus1oden84kns6l Programación en Java/Apéndices/Implementación del Algoritmo de Kruskal en Java 0 19011 435014 398878 2026-09-29T08:11:00Z Antimundo 74354 Categorizar usando AutoCat 435014 wikitext text/x-wiki El '''[[w:algoritmo de Kruskal|algoritmo de Kruskal]]''' es un algoritmo de la teoría de grafos que busca encontrar un árbol recubridor mínimo de un grafo dado. Aquí encontraremos una implementación en [[lenguaje de programación Java| Java]] incluyendo una interfaz gráfica. ==Descripción del Problema== El [[Algoritmo de Kruskal| algoritmo de kruskal]], es un [[algoritmo voraz]] utilizado en la [[teoría de grafos]], con el fin de encontrar un árbol recubridor mínimo de un grafo conexo y ponderado. El [[Algoritmo de Kruskal| algoritmo de kruskal]] consiste en: * Paso 0: Iniciar el árbol T con n nodos y sin arcos T=({1, 2, …n},ø) * Paso 1: Con los arcos de G crear una lista L de arcos, en orden ascendente de peso. Los arcos con el mismo peso son ordenados arbitrariamente. * Paso 2. Seleccionar el arco (i,j) que esté al comienzo de L. Si éste forma un circuito en T no se transfiere a T y se borra de L y se repite el paso 2. Si no forma circuito en T se transfiere a T y se borra de L. * Paso 3. Si L es no vacío, volver al paso 2, de lo contrario PARAR. ==Limitaciones== Las únicas limitaciones que se presentan con el problema de la implementación del algoritmo de Kruskal es la creación de un algoritmo adicional que nos compruebe que al adicionar una arista al grafo no nos haga un ciclo. El algoritmo implementado es el siguiente: <source lang="java"> public boolean HayCiclo(Grafo g,Arco aVerificar,Nodo terminal,String N) { ArrayList<Enlace> aux=terminal.getEnlaces(); if(aux.size()==0) return false; if(terminal.existeEnlace(aVerificar.getInicial())!=-1) return true; for(int i=0;i<aux.size();i++) { Enlace nodo=aux.get(i); if(nodo.getDestino().equals(N)==false) if( HayCiclo(g,aVerificar,g.getNodo(nodo.getDestino()),terminal.getNombre())) return true; } return false; } </source> ==Solución== En la implementación del algoritmo de Kruskal en [[lenguaje de programación Java| Java]], se hizo uso de una [[estructura de datos]] adicional llamada [[grafo]] y adicionalmente se implementó una interfaz gráfica. ===Estructura Grafo=== ====Clase Enlace==== // creamos un clase llamada enlace La clase enlace se utiliza para hacer refencia al nodo terminal y al peso de un arco. <source lang="java"> public class Enlace { private String destino; private double peso; public Enlace(String desti, double peso1) { destino = desti; peso = peso1; } public Enlace(String desti) { destino = desti; peso = -1; } public void modificar(double peso1) { peso = peso1; } public String getDestino() { return destino; } public double getPeso() { return peso; } } </source> ====Clase Nodo==== Hace referencia a un nodo del grafo, guardando un nombre y una serie de enlaces a otros nodos. <source lang="java"> import java.util.ArrayList; import javax.swing.JOptionPane; public class Nodo { private String nombre; private ArrayList<Enlace> enlaces; private int enlacesExistentes; public ArrayList<Enlace> getEnlaces() { return enlaces; } public Nodo(String newName) { nombre = newName; enlacesExistentes = -1; enlaces = new ArrayList<Enlace>(); } public int getEnlacesExistentes() { return enlacesExistentes; } public String getNombre() { return nombre; } public void agregarEnlace(String enlazar,double peso) { if (enlacesExistentes == -1) { enlaces.add(new Enlace(enlazar,peso)); enlacesExistentes++; } else { int posicion; posicion = existeEnlace(enlazar); if (posicion == -1) { enlaces.add(new Enlace(enlazar,peso)); enlacesExistentes++; } } } public int existeEnlace(String enlazar) { for (int i = 0; i < enlaces.size(); i++) { Enlace miEnlace; miEnlace = enlaces.get(i); if (miEnlace.getDestino().equals(enlazar)) return i; } return -1; } public double enlacePosicion(int posi) { Enlace miEnlace; miEnlace = enlaces.get(posi); return miEnlace.getPeso(); } public String NodoPosicion(int posi) { Enlace miEnlace; miEnlace = enlaces.get(posi); return miEnlace.getDestino(); } boolean eliminarEnlace(int posicion) { if (posicion >= 0 && posicion <= enlaces.size()) { enlaces.remove(posicion); enlacesExistentes--; return true; } else JOptionPane.showMessageDialog(null, "No hay enlace en la posicion " + posicion); return false; } } </source> ====Clase Arco==== Guarda la referencia del nodo inicial, nodo terminal y peso de un determinado arco del grafo. <source lang="java"> public class Arco { private String inicial; private String terminal; private float peso; public Arco(String ini, String ter, float pes) { inicial = ini; terminal = ter; peso = pes; } public float getPeso() { return peso; } public void setPeso(float peso) { this.peso = peso; } public String getInicial() { return inicial; } public void setInicial(String inicial) { this.inicial = inicial; } public String getTerminal() { return terminal; } public void setTerminal(String terminal) { this.terminal = terminal; } public String toString() { return "(" + inicial + ", " + terminal + ", " + peso + ")"; } } </source> ====Clase Grafo==== Representa la estructura grafo, compuesta por nodos y arcos. <source lang="java"> import java.util.Hashtable; import java.util.ArrayList; public class Grafo { ArrayList <String>nombres; ArrayList <Arco>aristas; Hashtable <String,Nodo> nodos; public Grafo() { nombres=new ArrayList<String>(); nodos=new Hashtable <String,Nodo>(); aristas=new ArrayList <Arco>(); } public void ingresarNodo(String nombre) { nombres.add(nombre); nodos.put(nombre,new Nodo(nombre)); } public void adicionarEnlace(String nodoInicial,String nodoTerminal,float peso) { Arco nuevo=new Arco(nodoInicial,nodoTerminal,peso); int i=buscarIndice(nuevo.getPeso()); if(i==-1) aristas.add(nuevo); else aristas.add(i,nuevo); nodos.get(nodoInicial).agregarEnlace(nodoTerminal,peso); nodos.get(nodoTerminal).agregarEnlace(nodoInicial,peso); } public boolean busarArista(Arco arco) { for(int i=0;i<aristas.size();i++) { Arco otro=aristas.get(i); if(arco.getInicial().equals(otro.getInicial())&&arco.getTerminal().equals(otro.getTerminal())&&arco.getPeso()==otro.getPeso()) { aristas.remove(otro); return true; } } return false; } public int buscarIndice(float peso) { for(int i=0;i<aristas.size();i++) { if(peso<aristas.get(i).getPeso()) return i; } return -1; } public Hashtable getNodos() { return nodos; } public void setNodos(Hashtable<String,Nodo > muchos) { nodos=muchos; } public ArrayList<String> getNombres() { return nombres; } public Nodo getNodo(String nombre) { return (Nodo)nodos.get(nombre); } public ArrayList<Arco> getAristas() { return aristas; } public void setAristas(ArrayList<Arco> aristas) { this.aristas = aristas; } public void setNombres(ArrayList<String> nombres) { this.nombres = nombres; } } </source> ===Interfaz Gráfica=== ====Clase Lienzo==== Es el lienzo sobre el cual se dibujará el grafo. <source lang="java"> import java.awt.*; import java.util.ArrayList; import javax.swing.JComponent; public class Lienzo extends JComponent { private ArrayList<Punto> puntos; private ArrayList<Arista> aristas; private ArrayList<Arista> neo; private Point a, b; public boolean estado = false; public boolean punto = false; public Lienzo() { aristas = new ArrayList<Arista>(); puntos = new ArrayList<Punto>(); neo = new ArrayList<Arista>(); } public void paintComponent(Graphics g) { g.setColor(Color.BLUE); g.drawLine((int) a.getX() + 5, (int) a.getY() + 5, (int) b.getX() + 5, (int) b.getY() + 5); final Arista arista = (Arista) aristas.get(i); arista.pintarRecta(g); final Arista arista = (Arista) neo.get(i); arista.setColor(Color.RED); arista.pintarRecta(g); for (int i = 0; i < puntos.size(); i++) { final Punto punto = (Punto) puntos.get(i); punto.pintarPunto(g); } } public void cambiarGrafo(Grafo nuevo) { Arco aux; for (int i = 0; i < aristas.size(); i++) { aux = aristas.get(i).getArista(); if (nuevo.busarArista(aux) == true) neo.add(aristas.get(i)); } for (int i = 0; i < aristas.size(); i++) { final Arco n = aristas.get(i).getArista(); nuevo.getAristas().add(n); } estado = true; repaint(); } public ArrayList<Punto> getPuntos() { return puntos; } public void setPuntos(final ArrayList<Punto> puntos) { this.puntos = puntos; } public ArrayList<Arista> getAristas() { return aristas; } public void setAristas(final ArrayList<Arista> aristas) { this.aristas = aristas; } public ArrayList<Arista> getNeo() { return neo; } public void setNeo(final ArrayList<Arista> neo) { this.neo = neo; } public void setA(Point a) { this.a = a; } public void setB(Point b) { this.b = b; } } </source> ====Clase Punto==== Permite dibujar un punto sobre el lienzo. Hace referencia a la posición del punto sobre el lienzo. <source lang="java"> import java.awt.Color; import java.awt.Graphics; import java.awt.Point; public class Punto { private Point ubicacion; private String nombre; private Color colorPunto = Color.BLUE; private static final int RADIO = 10; public Punto(int x, int y, String nombre) { ubicacion = new Point(x, y); this.nombre = nombre; } public void pintarPunto(Graphics g) { g.setColor(Color.BLACK); g.drawString(nombre, ubicacion.x - 3, ubicacion.y - 3); g.setColor(colorPunto); g.fillOval(ubicacion.x, ubicacion.y, 10, 10); } public void pintarPunto(Graphics g, Color color) { g.setColor(Color.BLACK); g.drawString(nombre, ubicacion.x - 3, ubicacion.y - 3); g.setColor(color); g.fillOval(ubicacion.x, ubicacion.y, 10, 10); } public boolean ecuacionDeCirculo(Point punto) { return (((punto.x - ubicacion.x) * (punto.x - ubicacion.x) + (punto.y - ubicacion.y) * (punto.y - ubicacion.y)) <= (RADIO * RADIO)); } public Point getUbicacion() { return ubicacion; } public String getNombre() { return nombre; } public void setUbicacion(Point ubicacion) { this.ubicacion = ubicacion; } public Color getColorPunto() { return colorPunto; } public void setColorPunto(Color colorPunto) { this.colorPunto = colorPunto; } } </source> ====Clase Arista==== Permite dibujar una arista entre dos puntos sobre el lienzo. Hace referencia a los puntos. <source lang="java"> import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.geom.QuadCurve2D; public class Arista { private Arco arista; private Punto a, b; private Point inicial; private Point terminal, ubicacionExt; private Color color = new Color(0, 128, 128), aux = Color.RED; private int tipo; private float peso; public Arista(Punto puntoA, Punto puntoB, int tipo, float peso) { arista = new Arco(puntoA.getNombre(), puntoB.getNombre(), peso); a = puntoA; b = puntoB; this.tipo = tipo; this.peso = peso; } public void pintarRecta(Graphics ga) { inicial = a.getUbicacion(); terminal = b.getUbicacion(); Graphics2D g = (Graphics2D) ga; double a = (inicial.y - terminal.y); double b = (inicial.x - terminal.x); double m = a / b; double grado = Math.atan(m); switch (tipo) { case 0: g.setColor(color); g.drawLine(inicial.x + 5, inicial.y + 5, terminal.x + 5, terminal.y + 5); g.setColor(aux); g.drawString(peso + "", (inicial.x + terminal.x) / 2, (inicial.y + terminal.y) / 2); break; case 1: g.setColor(color); g.drawOval(inicial.x - 10, inicial.y - 30, 30, 30); g.setColor(aux); g.drawString(peso + "", inicial.x - 3, inicial.y - 30); break; case 2: Point control = null; if (grado > 0) { if (grado <= 45 && grado >= 0) control = new Point((inicial.x + terminal.x) / 2 - 10, (inicial.y + terminal.y) / 2 + 50); if (grado <= 90 && grado > 45) control = new Point((inicial.x + terminal.x) / 2 + 50, (inicial.y + terminal.y) / 2 + 10); } else { if (grado >= -45 && grado <= 0) control = new Point((inicial.x + terminal.x) / 2 - 30, (inicial.y + terminal.y) / 2 - 10); if (grado >= -90 && grado < -45) control = new Point((inicial.x + terminal.x) / 2 - 50, (inicial.y + terminal.y) / 2 - 10); } Point tempInicial = new Point(inicial.x + 5, inicial.y + 5), tempFinal = new Point(terminal.x + 5, terminal.y + 5); QuadCurve2D.Double quad = new QuadCurve2D.Double(); quad.setCurve(tempInicial, control, tempFinal); g.setColor(aux); g.drawString(peso + "", control.x, control.y); g.setColor(color); g.draw(quad); break; } } public Point getUbicacion() { return ubicacionExt; } public int getTipo() { return tipo; } public Arco getArista() { return arista; } public void setArista(Arco arista) { this.arista = arista; } public void getColor() { color = new Color(0, 128, 128); aux = Color.RED; } public void setColor(Color color) { if (color.equals(new Color(0, 128, 128))) aux = Color.RED; else aux = Color.BLUE; this.color = color; } } </source> ===Paquete Principal=== ====Clase AlgoritmoKruskal==== <source lang="java"> //Implementación del Algoritmo voraz de Kruskal. import java.util.ArrayList; public class AlgoritmoKruskal { @SuppressWarnings("unchecked") public Grafo aplicarKruskal(Grafo grafo) { Grafo árbol=new Grafo(); ArrayList<String> nodos=grafo.getNombres(); for(int j=0;j<nodos.size();j++) { árbol.ingresarNodo(nodos.get(j)); } ArrayList<Arco> L=(ArrayList<Arco>)grafo.getAristas().clone(); Arco pro=L.get(0); árbol.adicionarEnlace(pro.getInicial(), pro.getTerminal(), pro.getPeso()); L.remove(pro); while(L.size()!=0) { pro=L.get(0); if(HayCiclo(árbol, pro,árbol.getNodo(pro.getTerminal()) , pro.getTerminal())==false) árbol.adicionarEnlace(pro.getInicial(), pro.getTerminal(), pro.getPeso()); L.remove(pro); } return árbol; } public boolean HayCiclo(Grafo g,Arco aVerificar,Nodo terminal,String N) { ArrayList<Enlace> aux=terminal.getEnlaces(); if(aux.size()==0) return false; if(terminal.existeEnlace(aVerificar.getInicial())!=-1) return true; for(int i=0;i<aux.size();i++) { Enlace nodo=aux.get(i); if(nodo.getDestino().equals(N)==false) if( HayCiclo(g,aVerificar,g.getNodo(nodo.getDestino()),terminal.getNombre())) return true; } return false; } } </source> ===VENTANA=== import java.awt.Color; import java.awt.Container; import java.awt.Cursor; import java.awt.Font; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.util.ArrayList; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class Ventana implements MouseListener, ItemListener, ActionListener, MouseMotionListener { int cantidad = 0; ArrayList<Punto> puntos; ArrayList<Arista> aristas; static JFrame frame; JButton aplicar,nuevo,recuperar; Container contenedor; JRadioButton radioNodo, radioArista, radioMod; JLabel ayuda, titulo; ButtonGroup grupo; JComboBox comboOpcionesRecta,ayudaCombo; JScrollPane panel; public JTextArea area; String ayudaNod,ayudaAri,ayudaMod,ayudaRes,ayudaNue,ayudaApl; Punto pun[]; public Lienzo lienzo; Grafo grafo; int j,i; int x,y; private int contador = 0; public Ventana() { frame = new JFrame(); contenedor=frame.getContentPane(); Font font=new Font("Verdana",Font.BOLD,11); Font font1=new Font("Verdana",Font.PLAIN,12); grafo=new Grafo(); lienzo = new Lienzo(); lienzo.setBounds(0, 0, 600, 600); lienzo.setBorder(BorderFactory.createBevelBorder(1)); lienzo.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); pun = new Punto[2]; pun[0]=null; pun[1]=null; puntos = new ArrayList<Punto>(); aristas = new ArrayList<Arista>(); area=new JTextArea(); area.setFont(font1); panel=new JScrollPane(area); panel.setBounds(660, 270, 280, 250); titulo=new JLabel("Dibuje su grafo:"); titulo.setFont(font); titulo.setBounds(610, 20, 130, 20); ayuda=new JLabel("Ayuda:"); ayuda.setBounds(610, 200, 100, 20); ayuda.setFont(font); comboOpcionesRecta = new JComboBox(); comboOpcionesRecta.addItem("Arista"); comboOpcionesRecta.addItem("Arista Bucle"); comboOpcionesRecta.addItem("Arista Curva"); comboOpcionesRecta.setFont(font); ayudaCombo=new JComboBox(); ayudaCombo.addItem(">Como hacer un Nodo"); ayudaCombo.addItem(">Como hacer una Arista"); ayudaCombo.addItem(">Como modificar un Grafo"); ayudaCombo.addItem(">Boton 'Nuevo'"); ayudaCombo.addItem(">Boton 'Aplicar'"); ayudaCombo.addItem(">Boton'Reset'"); ayudaCombo.setFont(font); ayudaCombo.setSelectedIndex(-1); radioNodo = new JRadioButton("Nodo"); radioArista = new JRadioButton("Arista"); radioMod = new JRadioButton("Cambiar"); radioArista.setFont(font); radioMod.setFont(font); radioNodo.setFont(font); grupo = new ButtonGroup(); grupo.add(radioNodo); grupo.add(radioArista); grupo.add(radioMod); radioNodo.setSelected(true); radioNodo.setBounds(680, 60, 120, 20); radioArista.setBounds(680, 110, 130, 20); radioMod.setBounds(820, 60, 100, 20); aplicar=new JButton("Aplicar"); aplicar.setBounds(670,160, 80, 20); aplicar.setFont(font); nuevo=new JButton("Nuevo"); nuevo.setBounds(760,160, 80, 20); nuevo.setFont(font); recuperar=new JButton("Reset"); recuperar.setBounds(850,160, 80, 20); recuperar.setFont(font); comboOpcionesRecta.setBounds(815, 110, 100, 20); ayudaCombo.setBounds(710,240,175,20); ayudaNod = ""; ayudaAri = ""; ayudaMod = ""; ayudaRes = ""; ayudaApl = ""; ayudaNue = ""; contenedor.setLayout(null); contenedor.add(comboOpcionesRecta); contenedor.add(radioMod); contenedor.add(radioArista); contenedor.add(radioNodo); contenedor.add(ayudaCombo); contenedor.add(lienzo); contenedor.add(aplicar); contenedor.add(panel); contenedor.add(nuevo); contenedor.add(recuperar); contenedor.add(ayuda); contenedor.add(titulo); frame.setFont(font); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); frame.setSize(1000, 600); frame.setLocation(10, 20); frame.setTitle("GrafoMatic Displayer"); frame.setVisible(true); lienzo.addMouseListener(this); lienzo.addMouseMotionListener(this); aplicar.addActionListener(this); nuevo.addActionListener(this); recuperar.addActionListener(this); radioNodo.addItemListener(this); radioArista.addItemListener(this); radioMod.addItemListener(this); ayudaCombo.addItemListener(this); } public void mouseClicked(MouseEvent evento) { if (evento.getClickCount() == 2&&radioNodo.isSelected()==true) { String nombre = "hay"; do { try { nombre = JOptionPane.showInputDialog(null,"Ingrese la Etiqueta del Nodo"); nombre.length(); } catch(NullPointerException e) { return; } if(grafo.getNombres().contains(nombre)||nombre==null) { JOptionPane.showMessageDialog(null,"La Etiqueta es incorrecta, recuerde que no debe haber otra igual","Ingrese de nuevo la Etiqueta",JOptionPane.ERROR_MESSAGE ); nombre="hay"; } } while(nombre=="hay"); Punto punto = new Punto((int) evento.getPoint().getX() - 5, (int) evento.getPoint().getY() - 5, nombre); grafo.ingresarNodo(nombre); punto.pintarPunto(lienzo.getGraphics()); puntos.add(punto); lienzo.setPuntos(puntos); } } public void actionPerformed(ActionEvent e) { if(e.getSource()==aplicar) { AlgoritmoKruskal nuevo=new AlgoritmoKruskal(); Grafo kruskal= new Grafo(); kruskal=nuevo.aplicarKruskal(grafo); lienzo.cambiarGrafo(kruskal); } if(e.getSource()==nuevo) { grafo=new Grafo(); lienzo.getAristas().clear(); lienzo.getPuntos().clear(); lienzo.getNeo().clear(); aristas.clear(); lienzo.punto=false; lienzo.repaint(); } if(e.getSource()==recuperar) { for(int i=0;i<lienzo.getNeo().size();i++) { Arista arista=(Arista)lienzo.getNeo().get(i); arista.setColor(new Color(0,128,128)); } lienzo.getNeo().clear(); lienzo.estado=false; lienzo.repaint(); } } public void itemStateChanged(ItemEvent evento) { if (evento.getSource() == radioNodo) comboOpcionesRecta.setEnabled(false); else comboOpcionesRecta.setEnabled(true); if(evento.getSource()==radioNodo||radioNodo.isSelected()) lienzo.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); else lienzo.setCursor(Cursor.getDefaultCursor()); if(evento.getSource()==ayudaCombo) { if(ayudaCombo.getSelectedIndex()==0) area.setText(ayudaNod); if(ayudaCombo.getSelectedIndex()==1) area.setText(ayudaAri); if(ayudaCombo.getSelectedIndex()==2) area.setText(ayudaMod); if(ayudaCombo.getSelectedIndex()==3) area.setText(ayudaNue); if(ayudaCombo.getSelectedIndex()==4) area.setText(ayudaApl); if(ayudaCombo.getSelectedIndex()==5) area.setText(ayudaRes); } } public void mousePressed(MouseEvent arg0) { contador=0; if(radioArista.isSelected()) { for (int i = 0; i < puntos.size(); i++) { if (puntos.get(i).ecuacionDeCirculo(arg0.getPoint())) { puntos.get(i).setColorPunto(Color.RED);//pintarPunto(lienzo.getGraphics(), Color.RED); x=puntos.get(i).getUbicacion().x; y=puntos.get(i).getUbicacion().y; if(comboOpcionesRecta.getSelectedIndex()==1) { pun[contador] = puntos.get(i); contador++; } pun[contador] = puntos.get(i); break; } } } if(radioMod.isSelected()) { for (int i = 0; i < puntos.size(); i++) { if (puntos.get(i).ecuacionDeCirculo(arg0.getPoint())) { puntos.get(i).setColorPunto(Color.RED); pun[contador] = puntos.get(i); break; } } contador=0; } lienzo.repaint(); } public void mouseReleased(MouseEvent arg0) { if(radioArista.isSelected()) { if(pun[1]==null||pun[1].ecuacionDeCirculo(arg0.getPoint())==false||pun[0].getUbicacion().equals(pun[1].getUbicacion())) contador=0; if(contador==2||comboOpcionesRecta.getSelectedIndex()==1) { float peso=-1; do { try { peso = Float.parseFloat(JOptionPane.showInputDialog(null,"Ingrese el Peso de la Arista")); } catch(NumberFormatException ex) { JOptionPane.showMessageDialog(null,"El peso de la Arista debe ser un Número","Ingrese de nuevo el Peso",JOptionPane.ERROR_MESSAGE ); peso=-1; } catch(NullPointerException e) { pun[0].setColorPunto(Color.BLUE); if(pun[1]!=null) pun[1].setColorPunto(Color.BLUE); lienzo.punto=false; lienzo.repaint(); return; } } while(peso==-1); Arista arista=new Arista(pun[0], pun[1], comboOpcionesRecta.getSelectedIndex(),peso); aristas.add(arista); lienzo.setAristas(aristas); arista.pintarRecta(lienzo.getGraphics()); grafo.adicionarEnlace(pun[0].getNombre(),pun[1].getNombre(),peso); contador = 0; pun[0].setColorPunto(Color.BLUE); pun[1].setColorPunto(Color.BLUE); lienzo.punto=false; lienzo.repaint(); } } if(pun[0]!=null) pun[0].setColorPunto(Color.BLUE); lienzo.repaint(); lienzo.punto=false; contador=0; pun[0]=null; pun[1]=null; } public void mouseDragged(MouseEvent e) { if(radioArista.isSelected()) { for (int i = 0; i < puntos.size(); i++) { if (puntos.get(i).ecuacionDeCirculo(e.getPoint())) { pun[1] = puntos.get(i); pun[1].setColorPunto( Color.RED); break; } else if(pun[1]!=null&&pun[1]!=pun[0]) pun[1].setColorPunto(Color.BLUE); } if(pun[0]!=null) { lienzo.setA(new Point(x,y)); lienzo.setB(e.getPoint()); lienzo.punto=true; lienzo.repaint(); } contador=2; } if(radioMod.isSelected()&&pun[0]!=null) { Point ubicacion=new Point(e.getX()-5,e.getY()-5); pun[0].setUbicacion(ubicacion); lienzo.repaint(); } } public void mouseMoved(MouseEvent e) { if(radioMod.isSelected()) { if (puntos.size()) '''//Aquí debe tener una condición no un solo entero??''' { if (puntos.get(i).ecuacionDeCirculo(e.getPoint())) puntos.get(i).pintarPunto(linzo.getGraphics(), Color.RED); else puntos.get(i).pintarPunto(linzo.getGraphics(), Color.BLUE); } } } public Grafo getGrafo() { return grafo; } } ====Clase Aplicación==== <source lang="java"> // Esta clase es la principal y es la que permite ver corriendo el programa. public class Aplicacion { public static void main(String args[]) { Ventana mi=new Ventana(); mi.area.setEditable(false); } } </source> ==Modo de compilación y ejecución== Para poder compilar y ejecutar el programa debe tener instalado en su computador el [http://java.sun.com/javase/downloads/index_jdk5.jsp ''jdk de java 1.5''] o mejores actualizaciones y además debe tener el path de Windows configurado con el ''jdk''. [http://web.archive.org/20020205113417/www.geocities.com/chungara/configurar.html Más sobre configuración del path] Antes de comenzar tiene que copiar cada una de las clases en un bloc de notas separado y guardarlo con el mismo nombre de la clase y con extensión '''''.java'''''. Por ejemplo: al copiar la clase ''AlgoritmoKruskal'' en un bloc de notas la guarda como '''''AlgoritmoKruskal.java'''''. Para compilar abra la consola, o para Windows XP la herramienta símbolo del sistema, estando allí diríjase al directorio donde tiene todas las clases guardadas (Todas las clases deben estar en el mismo directorio para que el programa corra correctamente) y enseguida copie el siguiente comando <code>'''javac Aplicacion.java'''</code>, esto le dice a java que compile el ''main'' del programa que se encuentra en <code>Aplicacion.java</code>. Si hace esto correctamente deben haberse creado en el directorio de las clases varios archivos '''''.class''''', uno para cada clase y con el mismo nombre de la clase. Para ejecutar tiene que haber compilado primero. Nuevamente abra la consola, o símbolo del sistema, y diríjase al directorio donde se encuentran todas las clases y digite el siguiente comando <code>'''java Aplicacion'''</code>, esto le dice a java que ejecute el ''main'' del programa. Si lo hace correctamente el programa debe estar corriendo. ==Pruebas== {| class="prettytable" |----- | [[Imagen:GrafoKruskal1.PNG]] | En este primer grafo podemos ver que el algoritmo ha seleccionado las aristas con menor peso que son las de 9 y 10. El algoritmo hace una selección de la menor arista del grafo y la añade a un árbol de manera que al añadirla al árbol no forme un ciclo. En este ejemplo el árbol que es creado por el algoritmo es el representado por las líneas rojas en la figura b). |----- | [[Imagen:GrafoKruskal2.PNG]] | En este segundo ejemplo podemos observar que decisión toma el algoritmo en caso que haya varias aristas con el mismo peso. El algoritmo sigue el mismo criterio, hace una selección de la menor arista del grafo y la añade a un árbol de manera que al añadirla al árbol no forme un ciclo. En este ejemplo podemos ver claramente el criterio del que se habla. El algoritmo añadiría al árbol la arista con peso 4, luego la arista con peso 5, luego la que tiene peso 7 y al momento de añadir la arista de peso 8 se da cuenta que si añade la arista e-d forma un ciclo y la desecharía y tomaría luego a a-c, como esta no forma ciclo entonces la añade al árbol. Para la implementación de este algoritmo también influye el orden en el cual el usuario dibujo las aristas por que el algoritmo pudo haber seleccionado la arista a-c primero, esto lo veremos más claro en el siguiente ejemplo. |----- | | El algoritmo sigue el mismo criterio, hace una selección de la menor arista del grafo y la añade a un árbol de manera que al añadirla al árbol no forme un ciclo. El algoritmo toma en orden ascendente las aristas pero también tiene en cuenta el orden en el cual, el usuario, dibujo las aristas. Para este caso el usuario dibujo primero la arista b-d y luego la c-d, debido a esto el árbol que da como resultado no me toma la arista c-d por que formaría un ciclo en el árbol. |} ==Tiempo empleado == Para una implementación óptima del algoritmo haciendo uso de una interfaz grafica y una [[estructura de datos| estructura]] adicional se hicieron necesarias alrededor de 15 horas, incluyendo el tiempo que se necesitó para investigar y complementar los conceptos necesarios para lograr el resultado obtenido y deseado. ==Tiempo de Ejecución T(n)== Sea T(n) el número de nodos que posee el grafo. Dado que se trata de un grafo denso podemos afirmar que la longitud del camino máximo será n. Igualmente cada llamada recursiva supondrá una disminución del problema en exactamente la unidad. De forma similar, puede afirmarse que el número de llamadas recursivas irá disminuyendo en uno puesto que en cada nivel hay un nodo adyacente más que ya ha sido visitado. Por último puede observarse que dentro del ciclo se realizan al menos n comparaciones. Con los hechos nombrados con anterioridad es posible establecer la siguiente relación de recurrencia: T(n) = (n-1) T(n-1) + n Siendo esta recurrencia no homogénea, es decir, en este caso la combinación lineal no es igual a cero, tal como puede verse en la siguiente expresión: A<sub>0</sub>t<sub>n</sub> +a<sub>1</sub>t<sub>n-1</sub> +…..+ a<sub>k</sub>t<sub>n-k</sub> = b<sub>n</sub>p(n) Se procede ahora a definir el valor de b=2 y p(n)=n Obteniendo que el polinomio característico es: (x-(n-1)) (x-1)² con raíces (n-1) (de multiplicidad 1) y 1 (de multiplicidad 2). Por lo tanto todas las soluciones son de la forma t<sub>n</sub>= c<sub>1</sub>(n-1)<sup>n</sup> +c<sub>2</sub>1<sup>n</sup>+c<sub>3</sub>n1<sup>n</sup> Siempre y cuando t0 >=0 para todo n, se concluye inmediatamente que t pertenece a O (n-1)<sup>n</sup> ==Conclusiones== * El algoritmo de kruskal es sencillo de implementar con las herramientas adecuadas. * El algoritmo de kruskal, al momento de implementarlo en algún lenguaje de programación, no es tan óptimo con respecto a otros algoritmos que cumplen el mismo objetivo, como el de [[algoritmo de Prim| Prim]], debido que al momento de implementarlo se tiene la limitante de diseñar un algoritmo adicional que encuentre ciclos que en este caso no es el más óptimo. * Al momento de implementar el algoritmo es más óptimo ordenar a medida que el usuario ingresa aristas que ordenar después de terminado el grafo. También sería bueno añadir las aristas en una [[cola (programación)| cola de prioridad]], ya que se evita igualmente la búsqueda de la arista menor. ==Véase también== * [[w:Algoritmo de Prim|Algoritmo de Prim]] * [[w:Algoritmo de Kruskal|Algoritmo de Kruskal]] * [[Teoría de grafos]] * [[w:Algoritmo voraz|Algoritmo voraz]] ==Enlaces externos== * [http://students.ceid.upatras.gr/~papagel/project/kruskal.htm Animación del algoritmo de Kruskal] * [http://www.cut-the-knot.org/Curriculum/Games/Mazes.shtml Creación y solución de laberintos por los algoritmos de Kruskal y Prim] * [http://www-b2.is.tokushima-u.ac.jp/~ikeda/suuri/kruskal/Kruskal.shtml Otra Animación (incluye código en JAVA)] {{AutoCat}} cqdgxo1qzw90drg0jeyo9zuinhfymlp Programación en Java/Ejemplos de Implementación 0 20174 435015 277685 2026-09-29T08:11:09Z Antimundo 74354 Categorizar usando AutoCat 435015 wikitext text/x-wiki ''//Inicialización de la clase'' public class Persona{ ''// Inicio de los atributos de la clase'' String Nombre; int Edad; '''//Inicio de la declaración de los métodos de la clase''' public int MostrarEdad (){ System.out.println("La edad es: "+Edad); return Edad; } } {{AutoCat}} 672znv8gtlbq9fspv7tia35q2hsjsl5 Programación en Java/Applets 0 21550 435010 277700 2026-09-29T08:10:31Z Antimundo 74354 Categorizar usando AutoCat 435010 wikitext text/x-wiki import java.io.*; import java.util.*; class CascaronIO { public static void main(String[] args) throws IOException,NumberFormatException { BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in)); PrintStream pantalla=System.out; //acá va nuestro programa a partir de esta linea } } {{AutoCat}} p6kbjxaesqr6bfag2qnfwrtmdzlsslk Programación en Java/Ejercicios Prácticos 0 22798 435016 277686 2026-09-29T08:11:20Z Antimundo 74354 Categorizar usando AutoCat 435016 wikitext text/x-wiki public class array1{ public static void main (String []args){ String nombre[]; // Todas estas sentencias se resumen nombre=new String[3]; // como la de abajo: nombre[0]="Ana"; // nombre[1]="Elisa"; // String nombre[]={"Ana", "Elisa", "Juan"}; nombre[2]="Juan"; // for (int i=0; i<nombre.length; i++){ System.out.println(nombre[i]); } } } {{AutoCat}} duf7dvvwxo37b7z41k5ee9u1dals9w9 Programación en Java/Apéndices/Implementación del algoritmo de Floyd en Java 0 35224 435013 418430 2026-09-29T08:10:54Z Antimundo 74354 Categorizar usando AutoCat 435013 wikitext text/x-wiki El [[algoritmo de Floyd]] intenta resolver el problema de encontrar el camino más corto entre todos los pares de nodos o vértices de un [[grafo]]. Esto es similar a construir una tabla con todas las distancias mínimas entre pares de ciudades de un mapa, indicando la ruta a seguir para ir de la primera ciudad a la segunda. Esto puede verse de la siguiente manera: *Sea G= (V, A) un digrafo en el cual cada arco tiene asociado un costo no negativo. El problema es hallar para cualquier par de vértices (v, w) el camino más corto de v a w. *G= (V, A), V= {1,...,n} y C[i, j] es el costo del arco que va de i a j. *El algoritmo calcula la serie de matrices *Ak[i, j] significa el costo del camino más corto que va de i a j y que no pasa por algún vértice mayor que k. *El objetivo es calcular An[i, j] Además de eso, se busca hallar también el camino más corto entre cada par de nodos, imprimiendo así en el programa no solo la matriz final sino también dichos caminos. == Solución al problema == La solución al problema se puede dar aplicando el algoritmo de Floyd para encontrar las distancias y caminos mínimos entre nodos. Una forma de implementar el algoritmo de Floyd en java es como se muestra en el siguiente fragmento de código. Se utilizó un enfoque dinámico, ya que se guardan valores en una matriz para luego reutilizarlos y no repetir operaciones. <source lang="java"> public String floyd(long[][] adyacencia) { int n=adyacencia.length; long D[][]=adyacencia; String enlaces[][]=new String [n][n]; String[][] aux_enlaces=new String[adyacencia.length][adyacencia.length]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { enlaces[i][j]=""; aux_enlaces[i][j]=""; } } String enl_rec=""; for (int k = 0; k < n; k++) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { float aux=D[i][j]; float aux2=D[i][k]; float aux3=D[k][j]; float aux4=aux2+aux3; float res=Math.min(aux,aux4); if(aux!=aux4) { if(res==aux4) { enl_rec=""; aux_enlaces[i][j]=k+""; enlaces[i][j]=enlaces(i,k,aux_enlaces,enl_rec)+(k+1); } } D[i][j]=(long) res; } } } String cadena=""; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cadena+=D[i][j]+" "; } cadena+="\n"; } String enlacesres=""; for (int i = 0; i <n; i++) { for (int j = 0; j < n; j++) { if(i!=j) { if(enlaces[i][j].equals("")==true) { enlacesres+=" De ( "+(i+1)+" a "+(j+1)+" ) = "+"( "+(i+1)+" , "+(j+1)+" )"+"\n"; } else enlacesres+=" De ( "+(i+1)+" a "+(j+1)+" ) = ( "+(i+1)+" , "+enlaces[i][j]+" , "+(j+1)+")\n"; } } } return "las distancias minimas entre nodos son: \n"+cadena+"\nlos caminos minimos entre nodosson:\n"+enlacesres; } public String enlaces(int i,int k,String[][] aux_enlaces,String enl_rec) { if(aux_enlaces[i][k].equals("")==true) { return ""; } else { enl_rec+=enlaces(i,Integer.parseInt(aux_enlaces[i][k].toString()),aux_enlaces,enl_rec)+(Integer.parseInt(aux_enlaces[i][k].toString())+1)+" , "; return enl_rec; } } </source> El método recibe una matriz, en este caso la matriz de adyacencia del grafo. Para calcular las distancias mínimas se crea una matriz D[][], la cual irá guardando los resultados que arroja el algoritmo de Floyd, y otra matriz que guardará los caminos mínimos llamada enlaces[][]. Los caminos mínimos se calculan, utilizando el los diferentes k, que son guardados en la matriz enl_aux[][], y utilizada en el método enlaces(). El método enlaces, utiliza una llamada recursiva para recorrer la matriz de enlaces y arrojar el camino mínimo entre los nodos. Este resultado será guardado en la matriz enlaces[i][j]. == Limitaciones == Las limitaciones que se encontraron con el algoritmo no son muchas, mejor dicho, no se encontraron, a excepción que cuando se va a resolver un grafo muy grande, éste no halla la respuesta porque se presenta un desborde de memoria, ya que debe iterar y almacenar demasiados valores. == Complejidad temporal == Este es el método principal, es decir, el que halla la solución del problema que se le plantee (la matriz de adyacencia): {| {{tablabonita}} |+ '''TABLA 1. Calculo del T (n)''' |- ! Instrucción!! Tiempo |- |long[][] adyacencia||1 |- |int n=adyacencia.length||1 |- |long D[][]=adyacencia || 1 |- |String enlaces[][]=new String [n][n]|| 1 |- |String[][] aux_enlaces=new String[adyacencia.length][adyacencia.length]|| 1 |- | (1)for concatenados||<math>4n^2+4n+2</math> |- | String enl_rec=""|| 1 |- |(2)for concatenados|| <math>bn^4 +an^3+12n^3+4n^2+4n+2</math> |- |enlaces (int i, int k, String[][] aux_enlaces,String enl_rec)|| 1 |- |if(aux_enlaces[i][k].equals("")==true) || 1 |- |return " ||1 |- |enl_rec+=enlaces (i, Integer.parseInt(aux_enlaces[i][k].toString()),aux_enlaces,enl_rec)+(Integer.parseInt(aux_enlaces[i][k].toString())+1)+" , " ||an+b |- |T (n)=<math> bn^4 +an^3+12n^3+8n^2+8n+13</math> y <math>O(n^4)</math> || |} == Código fuente == === Clase Aplicación === <source lang="java"> import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class Aplicacion { public static void main(String args[]) { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); } Ventana miVentana; Logica logica; miVentana=new Ventana(); logica=new Logica(); } } </source> === Clase Lógica === <source lang="Java"> import javax.swing.JOptionPane; public class Logica { public void setVentana(Ventana miVentana){} public String floyd(long[][] adyacencia) { int n=adyacencia.length; long D[][]=adyacencia; String enlaces[][]=new String [n][n]; String[][] aux_enlaces=new String[adyacencia.length][adyacencia.length]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { enlaces[i][j]=""; aux_enlaces[i][j]=""; } } String enl_rec=""; for (int k = 0; k < n; k++) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { float aux=D[i][j]; float aux2=D[i][k]; float aux3=D[k][j]; float aux4=aux2+aux3; float res=Math.min(aux,aux4); if(aux!=aux4) { if(res==aux4) { enl_rec=""; aux_enlaces[i][j]=k+""; enlaces[i][j]=enlaces(i,k,aux_enlaces,enl_rec)+(k+1); } } D[i][j]=(long) res; } } } String cadena=""; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cadena+=D[i][j]+" "; } cadena+="\n"; } String enlacesres=""; for (int i = 0; i <n; i++) { for (int j = 0; j < n; j++) { if(i!=j) { if(enlaces[i][j].equals("")==true) { enlacesres+=" De ( "+(i+1)+" a "+(j+1)+" ) = "+"( "+(i+1)+" , "+(j+1)+" )"+"\n"; } else enlacesres+=" De ( "+(i+1)+" a "+(j+1)+" ) = ( "+(i+1)+" , "+enlaces[i][j]+" , "+(j+1)+")\n"; } } } return "las distancias minimas entre nodos son: \n"+cadena+"\nlos caminos minimos entre nodosson:\n"+enlacesres; } public String enlaces(int i,int k,String[][] aux_enlaces,String enl_rec) { if(aux_enlaces[i][k].equals("")==true) { return ""; } else { enl_rec+=enlaces(i,Integer.parseInt(aux_enlaces[i][k].toString()),aux_enlaces,enl_rec)+(Integer.parseInt(aux_enlaces[i][k].toString())+1)+" , "; return enl_rec; } } } </source> === Clase Ventana === <source lang="java"> import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JOptionPane; import javax.swing.JTextField; public class Ventana extends JFrame implements ActionListener { int a=ingreso("Ingrese el numero de nodos"); Container contenedor; JLabel[] etiqueta1; JLabel[] etiqueta2; JTextField[][] matriz; JTextArea mensaje; JTextArea mayor; JScrollPane scrollpane; JScrollPane scrollpanemayor; JButton aceptar; public Ventana() { matriz=new JTextField[a][a]; etiqueta1=new JLabel[a]; etiqueta2=new JLabel[a]; contenedor=getContentPane(); contenedor.setLayout(null); mayor=new JTextArea(); scrollpanemayor=new JScrollPane(mayor); scrollpanemayor.setBounds(0,0,600,474); scrollpanemayor.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); scrollpanemayor.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); for(int i=0;i<a;i++) { etiqueta1[i]=new JLabel(""+(i+1)); etiqueta2[i]=new JLabel(""+(i+1)); etiqueta1[i].setBounds((int) ((i+2.4)*25),25,25,25); etiqueta2[i].setBounds(21,(i+2)*25,25,25); mayor.add(etiqueta1[i]); mayor.add(etiqueta2[i]); } for (int i=0;i<matriz.length;i++) { for(int j=0;j<matriz.length;j++) { matriz[i][j]=new JTextField(); matriz[i][j].setBounds((j+2)*25,(i+2)*25,25,25); mayor.add(matriz[i][j]); matriz[i][j].addActionListener( this ); } } int p=matriz[a-1][a-1].getX(); int w=matriz[a-1][a-1].getY(); aceptar=new JButton("Aceptar"); aceptar.setBounds ( p+80, 40, 100, 30 ); aceptar.addActionListener( this ); mensaje=new JTextArea(); scrollpane=new JScrollPane(mensaje); scrollpane.setBounds(p+80,80,300,300); String cadena=new String(""); for(int c=0;c<(p/2.9);c++) { cadena+=" "; } mayor.setText(cadena); String cadena1=new String(""); for(int d=0;d<(w/14);d++) { cadena1+="\n"; } mayor.setText(cadena+cadena1); mensaje.setEditable(false); mayor.add(aceptar); mayor.add(scrollpane); mayor.setEditable(false); contenedor.add(scrollpanemayor); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("INGRESO DE MATRIZ DE ADYACENCIA"); setSize(607,507); setLocationRelativeTo(null); show (); matriz[0][0].grabFocus(); } public int ingreso(String men) { boolean ban=true; int a=0; int contador=0; do { try { a=Integer.parseInt(JOptionPane.showInputDialog(null,men,"Entrada de datos",JOptionPane.QUESTION_MESSAGE)); ban=true; if(a<=1||a>148) throw new Exception("Tamaño inválido"); } catch(NumberFormatException e) { contador++; JOptionPane.showMessageDialog(null,"Solo ingrese números enteros","Error",JOptionPane.ERROR_MESSAGE); ban=false; } catch(Exception e) { contador++; JOptionPane.showMessageDialog(null,e.getMessage(),"Error",JOptionPane.ERROR_MESSAGE); ban=false; } if(contador==3) System.exit(0); } while(ban==false); return a; } public void actionPerformed(ActionEvent evento) { if(evento.getSource()==aceptar) { long adyacencia[][]=new long[a][a]; try { for (int i=0;i<a;i++) for(int j=0;j<a;j++) { if((matriz[i][j].getText()).equals("")) throw new Exception("Faltaron valores por ingresar"); else if(matriz[i][j].getText().contains("-")) { throw new Exception("Los enlaces no pueden tener distancias negativas\n"); } else if(matriz[i][j].getText().equals("i")) adyacencia[i][j]=999999999; else { if(((matriz[j][j].getText()).contains("i"))) throw new Exception(" Los bucles no pueden ser infinitos\n"); else if((matriz[i][j].getText()).contains("1")||(matriz[i][j].getText()).contains("2")||(matriz[i][j].getText()).contains("3")||(matriz[i][j].getText()).contains("4")||(matriz[i][j].getText()).contains("5")||(matriz[i][j].getText()).contains("6")||(matriz[i][j].getText()).contains("7")||(matriz[i][j].getText()).contains("8")||(matriz[i][j].getText()).contains("9")||(matriz[i][j].getText()).contains("i")) adyacencia[i][j]=Long.parseLong(matriz[i][j].getText()); else if(i==j&&((matriz[i][j].getText()).contains("0"))) adyacencia[i][j]=Long.parseLong(matriz[i][j].getText()); else throw new Exception("Si va a ingresar letras, ingrese sólo la i\nLa i representa Infinito\nCeros solo en la diagonal principal"); } } } catch(Exception e) { for (int k=0;k<a;k++) for(int l=0;l<a;l++) adyacencia[k][l]=0; JOptionPane.showMessageDialog(null,e.getMessage(),"Error",JOptionPane.ERROR_MESSAGE); matriz[0][0].grabFocus(); } Logica x=new Logica(); Long t,t2; t=System.nanoTime(); String resultado=x.floyd(adyacencia); t2=System.nanoTime(); resultado+="\nEl tiempo de ejecución es:\n"+(t2-t)+" nanosegundos"; mensaje.setText(resultado); } } } </source> == Forma de compilar y ejecutar == Para poder compilar y ejecutar el programa debe tener instalado en su computador el jdk de java 1.5 o una actualización más reciente y además debe tener el path de Windows configurado con el jdk. Este programa está hecho en lenguaje java, por lo que se puede compilar y ejecutar en cualquier IDE que tenga soporte JAVA ; si usa Netbeans o Java Eclipse, debe primero crear un proyecto con el nombre que quiera, y crea tres clases con los correspondientes nombres usados en el código fuente y lógicamente pega dicho código en la clase. Si usa JCreator, puede bien sea, crear una única clase con el nombre de Aplicación y pega ahí todo el código fuente, o crea las tres clases con los nombres que son y pega el código fuente correspondiente en cada clase. == Tiempo empleado == El tiempo que nos tardo desarrollar el programa fue aproximadamente 3 días, el primer día desarrollando el algoritmo de solución, el segundo día desarrollando la interfaz grafica, y el tercero corrigiendo las excepciones que se pudieran presentar. == Pruebas == Esta es la matriz de adyacencia de un grafo que puede ser utilizada para probar la efectividad del algoritmo: '' La i representa infinito.'' {| {{tablabonita}} |+ '''Matriz de adyacencia''' |- | ||1|| 2||3||4 |- |1||0||5||i||i |- |2||50||0||15||5 |- |3 || 30||i||0||15 |- |4||15||i||5||0 |} La respuesta es: Los caminos mínimos entre nodos son: De ( 1 a 2 ) = ( 1 , 2 ) De ( 1 a 3 ) = ( 1 , 2 , 4 , 3 ) De ( 1 a 4 ) = ( 1 , 2 , 4 ) De ( 2 a 1 ) = ( 2 , 4 , 1 ) De ( 2 a 3 ) = ( 2 , 4 , 3 ) De ( 2 a 4 ) = ( 2 , 4 ) De ( 3 a 1 ) = ( 3 , 1 ) De ( 3 a 2 ) = ( 3 , 1 , 2 ) De ( 3 a 4 ) = ( 3 , 4 ) De ( 4 a 1 ) = ( 4 , 1 ) De ( 4 a 2 ) = ( 4 , 1 , 2 ) De ( 4 a 3 ) = ( 4 , 3 ) == Conclusiones == *Con las herramientas adecuadas y unos buenos fundamentos en programación, además de tener un conocimiento en grafos, se podría concluir que el algoritmo es fácil de implementar. *Para hallar mejor la solución, es decir, la óptima, es mucho mejor usar el enfoque dinámico, ya que éste no repite operaciones y acelera un poco el proceso de solución. *Cuando se implementa el algoritmo tiene una pequeña desventaja, y es que, debido a su enfoque dinámico, realiza un uso masivo de memoria, lo cual puede no ser muy conveniente si se están usando otras aplicaciones que requieran usar buena parte de la memoria. {{AutoCat}} 1pona683133142sj2citowgyuchq9af Programación en Java 0 51704 435017 432781 2026-09-29T08:11:50Z Antimundo 74354 Trasladar desde info 435017 wikitext text/x-wiki [[Archivo:Duke (Java mascot) waving.svg|120px|miniaturadeimagen]] [[w:es:Plataforma Tecnológica Java|Java]] no es solo un lenguaje de programación, sino toda una plataforma; sin embargo en este material, salvo indicación expresa, se estará haciendo referencia al lenguaje de programación como tal. Desarrollado por [[w:es:Sun Microsystems|Sun Microsystems]] (actualmente propiedad de [[w:es:Oracle|Oracle]]), [[w:es:Lenguaje de programación Java|Java]] es un lenguaje de programación orientado a objetos (P.O.O) y es considerado de propósito general. == Índice == <noinclude>[[/Índice|Índice detallado de este curso]] • [[/Versión Para Imprimir|Versión para imprimir]]</noinclude> # [[/Introducción|Introducción]] # [[/Historia|Historia]] # [[/Instalación JDK|Instalación JDK]] # [[/Maven|Gestión de librerías y dependencias con Maven]] # [[/Características del lenguaje|Características del lenguaje]] # [[/Primer programa|Primer programa]] # [[/Variables|Variables]] # [[/Operadores|Operadores]] # [[/Estructuras de control|Estructuras de control]] # [[/Funciones|Funciones]] # [[/Programación Orientada a Objetos|Programación Orientada a Objetos]] # [[/Manejo de Excepciones|Manejo de Excepciones]] # [[/Almacenamiento en Java|Almacenamiento en Java]] # [[/Entrada y Salida|Entrada y Salida]] # [[/Interfaz Gráfica|Interfaz Gráfica]] # [[/Threads|Threads]] # [[/Red IP|Comunicaciones mediante redes IP]] # [[/BasesDeDatos|Acceso a bases de datos]] # [[/OffScope|OffScope]] # [[/Apéndices|Apéndices]] # [[/Prácticas|Prácticas]] [[Categoría:Lenguaje de programación Java]] e2ob3qjtzym5fhclnpuun3kln0t3fpt 435018 435017 2026-09-29T08:13:55Z Antimundo 74354 Categorizar usando estantes 435018 wikitext text/x-wiki [[Archivo:Duke (Java mascot) waving.svg|120px|miniaturadeimagen]] [[w:es:Plataforma Tecnológica Java|Java]] no es solo un lenguaje de programación, sino toda una plataforma; sin embargo en este material, salvo indicación expresa, se estará haciendo referencia al lenguaje de programación como tal. Desarrollado por [[w:es:Sun Microsystems|Sun Microsystems]] (actualmente propiedad de [[w:es:Oracle|Oracle]]), [[w:es:Lenguaje de programación Java|Java]] es un lenguaje de programación orientado a objetos (P.O.O) y es considerado de propósito general. == Índice == <noinclude>[[/Índice|Índice detallado de este curso]] • [[/Versión Para Imprimir|Versión para imprimir]]</noinclude> # [[/Introducción|Introducción]] # [[/Historia|Historia]] # [[/Instalación JDK|Instalación JDK]] # [[/Maven|Gestión de librerías y dependencias con Maven]] # [[/Características del lenguaje|Características del lenguaje]] # [[/Primer programa|Primer programa]] # [[/Variables|Variables]] # [[/Operadores|Operadores]] # [[/Estructuras de control|Estructuras de control]] # [[/Funciones|Funciones]] # [[/Programación Orientada a Objetos|Programación Orientada a Objetos]] # [[/Manejo de Excepciones|Manejo de Excepciones]] # [[/Almacenamiento en Java|Almacenamiento en Java]] # [[/Entrada y Salida|Entrada y Salida]] # [[/Interfaz Gráfica|Interfaz Gráfica]] # [[/Threads|Threads]] # [[/Red IP|Comunicaciones mediante redes IP]] # [[/BasesDeDatos|Acceso a bases de datos]] # [[/OffScope|OffScope]] # [[/Apéndices|Apéndices]] # [[/Prácticas|Prácticas]] {{Estantes|Java}} fcmov1w953ouvqex7zxa5jx8ji6q364 Programación en Java/Enlaces 0 51706 435009 277627 2026-09-29T08:10:23Z Antimundo 74354 Categorizar usando AutoCat 435009 wikitext text/x-wiki {{-wikipedia|Máquina virtual Java}} {{-wikipedia|Java (lenguaje de programación)}} {{-wikipedia|Applet Java}} {{-wikipedia|API Java}} {{-wikipedia|Plataforma Java}} {{-wikipedia|Java Runtime Environment}} {{-wikilibros|Fundamentos de programación}} {{-wikilibros|Programación Orientada a Objetos}} <noinclude> {{AutoCat}} </noinclude> azgol4qw40w3ktk97b0afon8s82hey2 Ecuación cuadrática/Propiedades de las raíces 0 52919 434986 430802 2026-09-29T07:13:02Z Antimundo 74354 Indentar títulos correctamente 434986 wikitext text/x-wiki == Partes de la Raíz == En el caso de una ecuaciòn cuadràtica, al ser de segundo grado,entonces tendremos soluciones que pueden ser raices cuadradas Una raìz es la busqueda de una expresión que al mulitiplicarse por sí mismo nos da una o la solución a la ecuación. El indice del radical en caso de no tener automàticamente es indice 2 o al cuadrado La '''radicación''' de orden ''n'' de un número ''a'' es cualquier número ''b'' tal que <math>\scriptstyle b^n = a</math>, donde ''n'' se llama índice u orden, ''a'' se denomina radicando, y ''b'' es una '''raíz enésima''', por lo que se suele conocer también con ese nombre.<ref>Taylor- Wade. ''Matemáticas básicas con vectores y matrices'' Editorial Limusa- Wiley, S.A. México</ref> La notación a seguir tiene varias formas: {{ecuación|<math>\sqrt[n]{x} = x^{1/n}</math>.|1}} Para todo ''n'' natural, ''a'' y ''b'' reales positivos, se tiene la equivalencia:<ref name="Hasser">Haaser-La Salle-Sullivan, ''Análisis matemático 1. Curso de introducción'', Editorial Trillas ,México D. F. (1980),pg. 29 </ref> {{ecuación|<math>a = b^n \iff b = \sqrt[n]{a}</math>.|2}} La raíz de orden dos se llama raíz cuadrada y, por ser la más frecuente, se escribe sin superíndice: <math>\sqrt{x}</math> en vez de <math>\sqrt[2]{x}</math>. == Raíz cómo Potencia == === Propiedades === Como se indica con la igualdad de la raíz <math>\sqrt[n]{x} = x^{\frac{1}{n}}</math>, la radicación es en realidad otra forma de expresar una [[potenciación]]: la raíz de cierto orden de un número es equivalente a elevar dicho número a la potencia inversa. Por esto, las [[Potenciación#Propiedades de la potenciación|propiedades]] de la potenciación se cumplen también con la radicación. Para que estas propiedades se cumplan, se exige que el radicando de las raíces sea positivo. ==== Raíz de un producto ==== La raíz de un producto es igual al producto de las raíces de los factores nombrados anteriormente. :<math>\sqrt[n]{{a} \cdot {b}} = \sqrt[n]{a} \cdot \sqrt[n]{b}</math> ;Ejemplo: *<math>\sqrt{3^2 \cdot 2^4}</math> = <math>\sqrt{3^2} \cdot \sqrt{2^4}</math> = <math>\sqrt{9} \cdot \sqrt{16} = 3\cdot 4 = 12.</math> Se llega a igual resultado de la siguiente manera: :<math>\sqrt{3^2 \cdot 2^4} = \sqrt{9 \cdot 16} = \sqrt{144} = 12.</math> ==== Raíz de un cociente ==== La raíz de una fracción es igual al cociente de la raíz del numerador entre la raíz del denominador. :<math>\sqrt[n]{\frac{a}{b}} = \frac{a^{1/n}}{b^{1/n}}</math> = <math>\frac{\sqrt[n]{a}}{\sqrt[n]{b}}</math> ;Ejemplo *<math>\sqrt{\frac{9}{4}} = \frac{\sqrt{9}}{\sqrt{4}}</math> = <math>\frac{3}{2}.</math> Cuando esta propiedad se aplica a números, no hace falta pasar la raíz a potencia de exponente racional, aunque sí cuando se hace con variables. ;Ejemplos *<math>\sqrt[3]{\frac{x^3}{y^9}} = \frac{x^{3/3}}{y^{9/3}}</math> = <math>\frac{x}{y^3}.</math> *<math>(\sqrt[4]{a^2})^8 = (\ a^{2/4})^8</math> = <math>\sqrt[4]{a^{16}}.</math> ==== Raíz de una raíz ==== Para calcular la raíz de una raíz se multiplican los índices de las raíces y se conserva el radicando. :<math>\sqrt[n]{\sqrt[m]{a}}</math> = <math>\sqrt[n \cdot m]{a}.</math> ;Ejemplo : <math> \sqrt[9]{\sqrt[3]{5}} = \sqrt[9 \cdot 3]{5} = \sqrt[27]{5} </math> ==== Potencia de una raíz ==== Para calcular la potencia de una raíz se eleva el radicando a esa potencia. :<math>\left(\sqrt[n]{a} \right)^m =\sqrt[n]{a^m} = a^{\frac{m}{n}}</math> ;Ejemplo: si ''m'' = 3 y ''n'' = 4: : <math> \left(\sqrt[4]{x} \right)^3 = \sqrt[4]{x^3} = x^{\frac{3}{4}} </math> ==== Otras propiedades ==== Utilizando las propiedades fundamentales, se pueden obtener otras propiedades, como por ejemplo, el cálculo de la raíz de un producto con el mismo radicando y distintos índices, que se obtiene multiplicando los índices de las raíces y conservando el radicando elevado a la suma de los índices. :<math> \sqrt[m]{a} \cdot \sqrt[n]{a} = a^{\frac{1}{m}+\frac{1}{n}} = a^{\frac{m+n}{mn}} = \sqrt[m \cdot n]{{a}^{m +n}}</math>. == Suma y Resta de Raíces == Todo número radical con indice y base igual (radicando) se puede reducir Ejemplos <math>6 \sqrt{3} + 7 \sqrt{3} = (6+7) \sqrt{3} = 13 \sqrt{3}</math> <math>5 \sqrt{2} - 3 \sqrt{2} = (5-3) \sqrt{2} = 2 \sqrt{2}</math> Cuando tenemos números de diferente base se hace una conversión de base y despues una factorización en caso de que tengan números primos,de no suscitarse se procede a dejar reducido el problema <math>a \sqrt{b} = \sqrt{a \cdot a \cdot b} </math> Ejemplos <math>5 \sqrt{3} + 3 \sqrt{2} </math> no se puede factorizar <math>\sqrt{28} + \sqrt{8} = \sqrt{7 \cdot 2 \cdot 2} + \sqrt{2 \cdot 2 \cdot 2} = 2 \sqrt{7} + 2 \sqrt{2}</math> no comparten una base prima,no se pueden reducir <math>\sqrt{18} + \sqrt{50} = \sqrt{3 \cdot 3 \cdot 2} + \sqrt{5 \cdot 5 \cdot 2} = 3 \sqrt{2} + 5 \sqrt{2}</math> Cómo comparten la misma base se pueden reducir <math> 3 \sqrt{2} + 5 \sqrt{2} = (3+5) \sqrt{2} = 8 \sqrt{2} </math> == Multiplicación de Raíces == En este caso lo que "está afuera se multiplica con los de afuera,y los de adentro con los de adentro <math>a \sqrt {b} \cdot c \sqrt {d} =(a \cdot b) \sqrt {c \cdot d} </math> == División de Raíces == <math> \sqrt {a} \div \sqrt {b} =\sqrt{\frac{a}{b}} </math> == Fuentes == http://www.profesorenlinea.com.mx/matematica/Raices_Propiedades.html http://www.portaleducativo.net/segundo-medio/5/raices-propiedades {{AutoCat}} bi6k4ca3xp1zdbvdnabgy9l21447p94 Cursos/F P B 0 52958 434974 405280 2026-09-28T16:22:24Z Antimundo 74354 Borrar 434974 wikitext text/x-wiki {{Borrar|[[WL:BR#L1]]}} * [[Cursos/F P B/F P B Audiovisual|F P B Audiovisual]] * [[Cursos/F P B/F P B Artes Gráficas|F P B Artes Gráficas]] * [[Cursos/F P B/F P B Capilar|F P B Capilar]] * [[Cursos/F P B/F P B Construcción|F P B Construcción]] * [[Cursos/F P B/F P B Gastronomía|F P B Gastronomía]] * [[Cursos/F P B/F P B Informática|F P B Informática]] * [[Cursos/F P B/F P B Inst. Sanitarias|F P B Inst. Sanitarias]] * [[Cursos/F P B/F P B Panadería|F P B Panadería]] <noinclude> {{Renglóndoble|[[Cursos/F P B/Texto completo|'''Texto completo de este capítulo''']]|Esta página contiene todo el texto del capítulo de '''«F P B»'''}} q56bpbfqz0s6yzo9fzlgys4em5z8ewx Programación en Java/Apéndices/Convenciones 0 57953 435011 418424 2026-09-29T08:10:40Z Antimundo 74354 Categorizar usando AutoCat 435011 wikitext text/x-wiki == Convenciones de nomenclatura == Las convenciones de nomenclatura en Java fueron establecidas por Oracle en su documento sobre [http://www.oracle.com/technetwork/java/codeconventions-150003.pdf convenciones para codificación]. Estas convenciones precisan que el usuario utilice [[w:es:camelCase|camel case]] al definir clases, métodos y variables. Para los nombres de clases se recomienda utilizar sustantivos con la primera letra en mayúscula, como en <code>CalendarDialogView</code>. Para los métodos, en cambio, se utilizarán verbos con la primera letra en minúscula. En inglés, se utiliza la forma imperativa del verbo, como en <code>getBrakeSystemType</code>, mientras en español se prefiere el infinitivo (<code>retornarTipoDeFreno</code>) o el presente de indicativo en tercera persona singular (<code>retornaTipoDeFreno</code>). Es importante familiarizarse y respetar las convenciones de codificación para que cualquier código escrito por distintos programadores se vea uniforme. No obstante, en un proyecto se pueden redefinir las convenciones estándares a fin de ajustarlas según sus necesidades. Por ejemplo, es posible incluir una lista de abreviaturas permitidas, pues con frecuencia dificultan la lectura del código a otros diseñadores. El código siempre debe estar acompañado de su documentación. Otro ejemplo de estas convenciones de nomenclatura es la forma de definir una constante. Estas se escriben con letras mayúsculas, separando las palabras con un guión bajo («_»). En Java, una constante es un campo <code>static final</code> de una clase. El motivo de estas distinciones es que Java no es un lenguaje puramente orientado a objetos y distingue tipos «simples» de «compuestos». Esto se verá en detalle en las siguientes secciones. Un ejemplo de tipo «simple» es el tipo <code>byte</code>. Un ejemplo de tipo «complejo» es una clase. Un subconjunto de los tipos «complejos» son las clases inmutables, como un <code>String</code>, que consiste en una concatenación de carácteres. A modo de ejemplo, considere las siguientes constantes: <syntaxhighlight lang="Java5" line start="1"> public class Vehiculo { /** Cantidad de motores */ private static final int MOTORES = 1; /** Nombre del motor */ private static final String NOMBRE_MOTOR = "Mercedes V8"; /** Objeto «el motor» */ private static final Motor EL_MOTOR = new MercedesMotor(); /** * Constructor */ public Vehiculo (){ MOTORES = 2; // Genera un error de sintaxis pues ya se asignó un valor a MOTORES. EL_MOTOR = new ToshibaMotor(); // Genera un error de sintaxis pues ya se asignó un valor a EL_MOTOR. NOMBRE_MOTOR.toLowercase(); // No produce errores de sintaxis porque retorna un nuevo String en lugar de modificar la variable EL_MOTOR. EL_MOTOR.cargarCombustible(20.5); // No produce errores de sintaxis porque modifica una variable del objeto motor, no la variable en sí. } } </syntaxhighlight> <noinclude> {{AutoCat}} </noinclude> lh1ujs36hljis5ogsgfqktxi9k984b9 Cursos/E M S/3º grado E M S/Matemáticas C T 1/Número Real 0 63418 434979 421804 2026-09-28T16:23:59Z Antimundo 74354 Borrar 434979 wikitext text/x-wiki {{Borrar|[[WL:BR#L1]]}} * Número Real. * Valor Absoluto. * Cotas y extremos de un conjunto de números reales. luhwrxyxhw5f1wfe1ecbawav7ci29mc Cursos/E M S/3º grado E M S/Matemáticas C T 1/Funciones Reales 0 63420 434978 421807 2026-09-28T16:23:47Z Antimundo 74354 Borrar 434978 wikitext text/x-wiki {{Borrar|[[WL:BR#L1]]}} * Funciones reales. * Estudio de Funciones. * Función compuesta. rpsi3nn7mgbeqm77vujy3e8d1bstvlt Cursos/E M S/3º grado E M S/Matemáticas C T 1/Límites y Continuidad 0 63421 434977 421808 2026-09-28T16:23:39Z Antimundo 74354 Borrar 434977 wikitext text/x-wiki {{Borrar|[[WL:BR#L1]]}} * Límite y Continuidad. * Límite de funciones reales. * Continuidad en intervalos. qvt8uzzw5yf0lf96nxagzxy5pp640qe Cursos/E M S/3º grado E M S/Matemáticas C T 1/Integrales 0 63423 434975 421810 2026-09-28T16:23:23Z Antimundo 74354 Borrar 434975 wikitext text/x-wiki {{Borrar|[[WL:BR#L1]]}} * Integrales. * Primitiva de una función. * Integral de una función. 8yq78fr230obtrueq2um5zghz4nwk8h Usuario:Antimundo/Taller/El estado actual de Wikilibros 2 64056 434972 428479 2026-09-28T16:16:57Z Antimundo 74354 434972 wikitext text/x-wiki Escrito el 12 de julio de 2026 Hace algo más de un mes que empecé a editar Wikilibros, y desde entonces algunos usuarios habrán notado que he realizado bastantes ediciones. Escribo esta entrada por transparencia, para que los demás usuarios me conozcáis a mí, a mis pensamientos sobre el estado actual de Wikilibros, y cómo me gustaría contribuir al proyecto. == Sobre mí == Soy el usuario [[Usuario:Antimundo|Antimundo]]. En mi tiempo libre, mi mayor afición, es contribuir a proyectos de software libre, y proyectos como OpenStreetMap. Desde 2011 contribuyo de vez en cuando en proyectos de Wikimedia, especialmente la Wikipedia en español. El 3 de junio de 2026 descubrí Wikilibros, me pareció una iniciativa fantástica, me emocionó mucho leer los comentarios en la discusión del libro de [[Discusión:Mantenimiento y Montaje de Equipos Informáticos|Mantenimiento y Montaje de Equipos Informáticos]], donde varios profesores de instituto señalaban que estaban usando ese libro para dar clases. ¡Esto me pareció muy emocionante! poder dar material libre para que los docentes den clases, y que los alumnos puedan estudiar sin tener que pagar libros carísimos, me pareció una idea fantástica. Y desde entonces, estoy muy interesado en contribuir a Wikilibros. == El estado actual de Wikilibros == Wikilibros actualmente cuenta con una comunidad de usuarios muy reducida. Según el portal de estadísticas de Wikimedia [https://stats.wikimedia.org/#/es.wikibooks.org/contributing/active-editors/normal|line|2-year|(page_type)~content*non-content|monthly el último mes (junio de 2026) tan solo hubo 4 editores activos], mientras que [https://stats.wikimedia.org/#/es.wikipedia.org en la Wikipedia en español ha habido 4000]. La diferencia es abismal. Creo que hay varios motivos para que no haya muchos usuarios activos en Wikilibros, pero hoy quiero hablar sobre uno en particular que quiero ayudar a mejorar, que es la dificultad de entrada para nuevos usuarios, debido a una experiencia de bienvenida confusa, un gran desorden en el contenido, y problemas de accesibilidad en el diseño de la web. == La experiencia de bienvenida == Cuando entré por primera vez en Wikilibros en español, mi experiencia fue muy confusa. Me costó encontrar información sobre qué era este proyecto exactamente, sus motivaciones específicas, y en particular era especialmente difícil navegar por todas estas páginas de bienvenida y ayuda y encontrar los enlaces relevantes. Por ello una de las primeras cosas en las que trabajé en Wikilibros, fue en mejorar las páginas de [[Wikilibros:Bienvenida|bienvenida]] y [[Wikilibros:Ayuda|ayuda]], [[Ayuda:Preguntas frecuentes|preguntas frecuentes]], el [[Wikilibros:Libro de visitas|libro de visitas]], y completar el libro de [[Manual de Wikilibros]]. Algunas de estas páginas se encontraban en un estado nefasto. Había (y sigue habiendo) mucho por hacer en mejorar la experiencia de bienvenida. Otro asunto que dificulta la bienvenida, es el hecho de que '''muchísimas''' plantillas de Wikilibros no tienen ninguna clase de documentación, o esta es muy deficiente. Muchísimas decisiones históricamente tomadas en Wikilibros no se han hecho por consenso si no porque algún usuario así lo decidió hace 10 o 20 años sin comunicarlo en el café o documentarlo en ningún lado e incluso sin ni si quiera dejar ninguna información en los resumenes en sus ediciones, y esta opacidad dificulta enormemente el entender cuáles fueron las motivaciones de sus autores originales. No me explayaré más en este asunto de la bienvenida, pues da para escribir un artículo a parte, y creo que se va a ir entendiendo mejor en los siguientes apartados. == Falta de limpieza == Existen muchísimas páginas que deberían ser borradas o trasladadas; desde plantillas que no se usan en ningún lado o son redundantes e innecesarias, hasta muchísimas páginas que incumplen claramente [[Wikilibros:Lo que Wikilibros no es|lo que que Wikilibros no es]] por ser textos originales firmados con la obra y seña de su autor, o que son un diccionario, etc. Por no hablar de que hay muchísimas páginas que son infraesbozos, páginas que incumplen las normas de estilo o nombrado, etc. Esto es un problema, porque un usuario que entre a Wikilibros encontrará una gran contradicción entre el contenido que las políticas de Wikilibros dicen admitir, y el contenido que realmente se aloja. Para mí, tiene mucho sentido que las políticas de Wikilibros como «''Lo que Wikilibros no es''» intenten acotar el alcanze del proyecto. Además en Wikimedia ya tenemos Wikipedia, Wikisource, o Wikcionario para almacenar otra clase de obras, por lo que me parece más razón aún para aplicarlas de manera efectiva. No hay una solución sencilla a este problema, más allá de tomarse el arduo esfuerzo de ir analizando y catalogando miles de páginas y plantillas, arreglando las que sean salvables pero tengan problemas, migrando a otros proyectos de Wikimedia las que tengan cabida en ellas, y eliminando las que no tengan redención posible. Pero esto es un gran trabajo que hay que hacer poco a poco. == Problemas de accesibilidad == Muchísimas de las páginas de Wikilibros se hicieron hace 20 años, y esto se nota en que no cumple muchos estándares modernos de accesibilidad. La gran importancia de la accesibilidad es un asunto que está mas que consensuado por la Fundación Wikimedia, y lamentablemente Wikilibros no cumple con muchos estándares actuales en este frente. === Muchas páginas no tienen un formato adecuado === Wikilibros es distinto a la Wikipedia, en que en la Wikipedia se debe seguir una estructura de «''Introducción, secciones del artículo, véase también, referencias, enlaces externos''» en ese orden en particular, y estos deben seguir una guía de estilo muy concreta. Mientras que en Wikilibros se es mucho mas flexible y permisivo, no solo con la organización interna de los libros, si no también con su estilo. Esto me parece totalmente razonable, ya que en Wikilibros hay libros didácticos, y puede haber muchas maneras de organizar o formatear un libro. Pero hay ciertos estándares que deberían establecerse, porque son necesarios para la accesibilidad y el correcto mantenimiento del sitio web. ==== Las etiquetas HTML tienen un significado específico ==== No es aceptable que para hacer un título uno haga <code><nowiki><big><b>Título</b></big></nowiki></code>, es importante usar las etiquetas <code><nowiki>==Título==</nowiki></code> para hacer un título, porque estas etiquetas son necesarias para una persona invidente que usa un lector de pantalla. Además es necesario etiquetar correctamente las páginas para una indexación precisa y que cualquier software pueda tratar correctamente el contenido. Por ejemplo, algunos navegadores incluyen un «modo lectura» que requiere que la web esté usando las etiquetas HTML correctas. ==== Las etiquetas HTML obsoletas deben retirarse ==== Además en Wikilibros muchas páginas usan estilos y etiquetas obsoletos, fruto de que se hicieron hace 20 años con HTML4. Estas etiquetas deben retirarse o sustituirse. Este punto y el anterior que he marcado, no son solo opiniones mías, cuando se usan mal estas etiquetas, se marca, de hecho, como errores de sintaxis por el propio software de Wikilibros: [[Especial:Errores_de_sintaxis]]. ==== Los estilos CSS personalizados deben usarse con moderación ==== También hay muchas páginas que se toman la libertad de añadir CSS personalizado a algunos elementos, como añadirle estilos personalizados a los títulos de una página como <code><nowiki><h2><center style="color:blue; border: 2px solid grey;">Título</center></h2></nowiki></code>. Esto es un problema por varios motivos: * '''Rompe la uniformidad visual de la plataforma''', si cada libro tiene un estilo distinto puede hacer la página difícil de navegar. Por ejemplo, puede ser muy confuso si decido que mis enlaces van a ser verdes en vez de azules, o si pongo mis títulos de color azul porque hay usuarios que se pueden pensar que ese título es un enlace. * '''Invalida el modo oscuro en los navegadores, y los estilos personalizados''' que pueda añadir alguien en su navegador o en sus preferencias de estilo de Wikilibros. Los colores personalizados ignoran las configuraciones de accesibilidad del usuario, como el contraste alto o el modo oscuro nativo, volviendo el texto invisible o ilegible. * '''Complica el mantenimiento del código a futuro'''. Si en el futuro se decide cambiar el diseño general de Wikilibros, modificar estos estilos incrustados «a mano» en miles de páginas se vuelve una tarea titánica e imposible de automatizar. ==== Problemas de diseño web adaptable ==== Muchísimas páginas de Wikilibros no tienen un diseño adaptable, por lo que no se adaptan correctamente para verse en dispositivos móviles a pesar de que la mayor parte del tráfico de los proyectos de la fundación Wikimedia provienen de dispositivos móviles: https://meta.wikimedia.org/wiki/Product_and_Technology_Advisory_Council/February_2025_draft_PTAC_recommendation_for_feedback/Mobile_experiences Todos estos problemas, también causan que haya muy pocos libros en Wikilibros que realmente se impriman correctamente y sin errores de formato. Para mí, es muy importante poder imprimir los libros. ==== Problemas de consistencia ==== Personalmente considero que debería haber unas normas generales de estilo mínimas, como que [[:w:Wikipedia:Manual_de_estilo#Secciones|los títulos de las secciones deberían seguir un estilo común]]. No considero que exista ninguna ventaja técnica ni pedagógica en que cada libro o sección aplique sus propias reglas de formato. Al contrario, que estos sean distintos de un libro a otro, fragmenta la maquetación y complica innecesariamente la experiencia del usuario, tanto al pasar de editar un documento a otro como al navegar y leer el contenido. Por aclarar este punto, lo que quiero decir es que veo problemático que nuestro [[Wikilibros:Manual de estilo|manual de estilo]] no impida que distintos libros escriban, por ejemplo, el título de sus secciones de distintas formas: * <code><nowiki>== Título De Una Sección ==</nowiki></code> * <code><nowiki>== '''Título de una sección''' ==</nowiki></code> * <code><nowiki>== <big>TÍTULO DE UNA SECCIÓN</big> ==</nowiki></code> === En conclusión sobre el formato y la accesibilidad === Estos problemas no son una preferencia personal de estilo mía, es que causan problemas de accesibilidad, problemas para que el software pueda tratar correctamente las páginas, y problemas de mantenimiento del propio sitio web. Considero que debería expandirse un poco la guía de estilo para indicar que: * El formato del código en Wikilibros debe seguir los estándares de uso de MediaWiki de la Fundación Wikimediade, y siguiendo el estándar HTML de la W3C que he mencionado. * Deberían existir unas mínimas normas generales de estilo y formato. == Problemas de organización == Uno de problemas de Wikilibros es la falta de un sistema claro para catalogar los libros. Si un usuario quiere explorar un listado completo y organizado de todos los libros, la pregunta es sencilla: ¿a dónde va? La respuesta, sorprendentemente, es que no existe un único lugar donde estén todos los libros. Esto hace que navegar por el contenido y descubrir nuevos libros resulte mucho más difícil de lo que debería. En mi opinión, el sistema de categorización y organización de los libros tiene un enorme margen de mejora. === Causas === Considero un gran error que existan tantos listados de libros mantenidos manualmente. En lugar de apoyarnos en un sistema de categorías bien diseñado, hemos acabado acumulando innumerables páginas para listar libros, que se solapan entre sí o directamente duplican información. Los siguientes, son algunas de las muchas páginas donde existen listados de libros que deben actualizarse manualmente. Algunos los he ido corrigiendo levemente, pero aún queda muchísimo por hacer: * [[Wikilibros:Estadísticas]]: página donde se listan ''manualmente'' todos libros por orden alfabético. * [[Wikilibros:Libros por temática]]: página donde se listan ''manualmente'' todos los libros ordenados por temática, pero no confundir con [[Plantilla:Portada/Estante por categorías]] que es otro listado donde se listan ''manualmente'' los libros por categorías para ponerlos en la portada, pero no confundir con [[Wikilibros:Proyecto organizar por temas]] donde existe un tercer listado donde se listan ''manualmente'' libros organizados por temas. * [[Wikilibros:Libros nuevos]]: página donde se listan ''manualmente'' todos los «libros nuevos». * [[Wikilibros:Wikilibros por mejorar]]: página donde se listan ''manualmente'' todos los libros que requieren mantenimiento, lo cual es un esfuerzo en vano porque ya existen las categoría de mantenimiento precisamente para este propósito (esto estoy en proceso de arreglarlo). * [[Wikilibros:Libro del mes]]: página para elegir ''manualmente'' el «libro del mes» totalmente abandonado y sin uso. Pero no confundir con [[Plantilla:Portada/Libros destacados]] que es básicamente un duplicado de esta última, aunque también está abandonada. Pero no confundir tampoco con [[Wikilibros:Libros destacados]] donde también se listan ''manualmente'' los libros mismos libros del mes (porque no es una lista transcluida están duplicados ahí a mano), supuestamente cuando se elijan nuevos libros del mes habría que acordarse de añadirlos también en esta página (digo supuestamente porque lleva nada menos que desde 2010 sin actualizarse este listado). Pero cuidado porque tampoco debe confundirse con un cuarto listado idéntico y también abandonado llamado [[:Categoría:Libros destacados]]. * Algunos listados como [[Wikilibros:Wikilibros solicitados]] al menos tienen un propósito original. Y ojo, al dato, porque muchos de estos listados manuales, son además duplicados del mismo propósito que ya cumplen varias categorías, las cuales a su vez presentan duplicidades entre ellas: * [[:Categoría:Libros]] categoría raíz que pretende listar TODOS los libros, organizada por temas. * [[:Categoría:Libros organizados]] otra categoría para listar TODOS los libros, como esta no tiene descripción no se sabe muy bien cuál es su propósito, aunque tiene cierta utilidad porque tiene un listado bastante completo de todos los libros de Wikilibros. Curiosamente hay una página [[Plantilla:NUMBEROFBOOKS]] que sirve para decir cuántos libros hay en total en Wikilibros, y que también se mantiene manualmente pero no tiene ninguna documentación, aunque mi teoría es que tiene pinta de que esta plantilla solo es el número de «libros organizados» copiado y pegado. * [[:Categoría:Libro:Pilas de Wikilibros]] un intento a medias que alguien creó para intentar usar el mismo sistema de catalogación que usan en enWikibooks. * [[:Categoría:Catalogación]] Esta plantilla parece que existe con el propósito de ser la categoría raíz del resto de listas y categorías de catalogación, pero como se puede observar está muy incompleta. Bueno, no voy a seguir porque hay muchísimas más páginas, y creo que se va entendiendo cuál es el problema. === Soluciones === {| class="wikitable" |- | '''Actualización del 2026-07-20''': Hablé de este asunto en el Café, y hemos llegado al consenso de arreglar este asunto usando un sistema de [[:Categoría:Estantes|estantes]] similar al que usan en enWikibooks. Por lo que poco a poco los múltiples sistemas distintos, complejos, y tediosos de mantener listados de libros, van a ir unificándose poco a poco en este único sistema de estantes. Esto no arregla ''todos'' los problemas que mencioné en este escrito, pero arregla varios de los más importantes. |} Propongo las siguientes medidas. Estas no pueden realizarse de la noche a la mañana, pues suponen un gran trabajo y conviene hacer las cosas despacio y con buena letra, pero poco a poco iré trabajando en ellas: # '''Fusionar listados y categorías con el mismo propósito''': Cuando existan varias páginas o categorías destinadas a realizar la misma función de catalogación, conviene unificarlas para evitar duplicidades y concentrar los esfuerzos de mantenimiento en un único sistema. # '''Completar categorías faltantes''': Algunas categorías de catalogación se encuentran incompletas o no desarrolladas. Por ejemplo, si existe [[:Categoría:Catalogación]], esta debería estar completa para resultar útil. # '''Documentar las páginas y categorías de catalogación''': La mayoría de estas páginas no cuentan con ninguna explicación sobre su propósito, lo que dificulta entender para qué sirven o cuándo deben utilizarse. Por ejemplo, [[:Categoría:Libros organizados]] no incluye ninguna descripción que explique qué es exactamente esta categoría ni qué criterios deben seguirse para añadir un libro a ella. Añadir una breve explicación permitiría aclarar el objetivo de cada categoría y facilitar su uso correcto. # '''Retirar los listados que se actualicen manualmente cuando sea razonablemente posible''': Muchos listados de libros requieren actualizarse manualmente de forma constante, aunque la información ya pueda obtenerse mediante las categorías. Por ejemplo, en lugar de mantener manualmente [[Wikilibros:Libros por temática]], podría utilizarse directamente la estructura de categorías existente en [[:Categoría:Libros]]. Mantener listados manuales supone un esfuerzo innecesario, especialmente cuando somos tan pocos usuarios activos, y provoca que la mayoría de estos listados queden desactualizados durante años o incluso décadas. El objetivo debería ser que cualquier libro pudiera localizarse mediante una única estructura de categorías. Los listados manuales quedarían reservados únicamente para selecciones editoriales (por ejemplo, libros destacados), mientras que todos los listados generales se generarían a partir de la categorización. Así, añadir un nuevo libro consistiría simplemente en asignarle las categorías adecuadas, sin necesidad de actualizar múltiples páginas. psmgyawdexj8e9r4hqf9sfz3in06tok Libro Abierto de Circo/Referencias/Bibliografía General 0 64562 434981 434722 2026-09-28T23:12:17Z MABot 20834 Robot: corrección de redirección doble a [[Libro abierto de circo/Referencias/Bibliografía general]] 434981 wikitext text/x-wiki #REDIRECCIÓN [[Libro abierto de circo/Referencias/Bibliografía general]] 1n7q25jbyzqg49gvdbnrpz4xalazfra Libro Abierto de Circo/Malabarismos/Bastón del Diablo 0 64580 434980 434758 2026-09-28T23:12:07Z MABot 20834 Robot: corrección de redirección doble a [[Libro abierto de circo/Malabarismos/Bastón del diablo]] 434980 wikitext text/x-wiki #REDIRECCIÓN [[Libro abierto de circo/Malabarismos/Bastón del diablo]] pbqe6m8ht14tmxr5oznmzbhxr35ynf1 Contabilidad Financiera 0 64651 434992 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera]] a [[Contabilidad financiera]]: Título mal escrito: Política de nombrado 434992 wikitext text/x-wiki #REDIRECCIÓN [[Contabilidad financiera]] 5aflh0n01wt8x1uc4yyua5whyk8v73r Contabilidad Financiera/Capítulo 1 0 64652 434994 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera/Capítulo 1]] a [[Contabilidad financiera/Capítulo 1]]: Título mal escrito: Política de nombrado 434994 wikitext text/x-wiki #REDIRECCIÓN [[Contabilidad financiera/Capítulo 1]] 3blpbd81g8hjbgu0rwxou2yjwpwo0bm Contabilidad Financiera/El objeto material de la contabilidad 0 64653 434996 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera/El objeto material de la contabilidad]] a [[Contabilidad financiera/El objeto material de la contabilidad]]: Título mal escrito: Política de nombrado 434996 wikitext text/x-wiki #REDIRECCIÓN [[Contabilidad financiera/El objeto material de la contabilidad]] ld68ttsc4grotm71uh39hvukmhpxiya Contabilidad Financiera/Introducción 0 64654 434998 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera/Introducción]] a [[Contabilidad financiera/Introducción]]: Título mal escrito: Política de nombrado 434998 wikitext text/x-wiki #REDIRECCIÓN [[Contabilidad financiera/Introducción]] 667uldg23f43zo6vzj0wqybluqul1d2 Contabilidad Financiera/Los fines y objetivos de la ciencia contable 0 64655 435000 2026-09-29T07:35:30Z Antimundo 74354 Antimundo trasladó la página [[Contabilidad Financiera/Los fines y objetivos de la ciencia contable]] a [[Contabilidad financiera/Los fines y objetivos de la ciencia contable]]: Título mal escrito: Política de nombrado 435000 wikitext text/x-wiki #REDIRECCIÓN [[Contabilidad financiera/Los fines y objetivos de la ciencia contable]] j0fkopirnms7ud45tpqima1kexkphy7 Módulo:Categoría de libro 828 64656 435004 2026-09-29T08:00:27Z Antimundo 74354 Crear módulo 435004 Scribunto text/plain local p = {} function p.nombre(frame) local nombre = frame.args[1] if not nombre or nombre == "" then nombre = mw.title.getCurrentTitle().text end if nombre:sub(1, 6) == "Libro:" then nombre = nombre:sub(7) end return nombre end return p ahn0ne34l47evk9f2w1n7mhd2jk29ed Categoría:Libro:Contabilidad financiera 14 64657 435006 2026-09-29T08:01:23Z Antimundo 74354 Crear categoría de libro 435006 wikitext text/x-wiki {{LP}} [[Categoría:Estantes|Economía]] r1xx1n9b158iaqfiil5qvo7skefc9tl 435007 435006 2026-09-29T08:02:23Z Antimundo 74354 Arreglar categorización 435007 wikitext text/x-wiki {{LP}} [[Categoría:Estante:Economía]] ic4gb8iyv7ymrtza7mcsl1x7g2igxds Usuario discusión:Aidonee 3 64658 435008 2026-09-29T08:05:25Z Antimundo 74354 Sección nueva: /* Bienvenida */ 435008 wikitext text/x-wiki == Bienvenida == {{Bienvenida}} [[Usuario:Antimundo|Antimundo]] ([[Usuario discusión:Antimundo|discusión]]) 08:05 29 sep 2026 (UTC) 2zbfl737ht9dqg2ulgczvnjlvpmwg8q Categoría:Libro:Programación en Java 14 64659 435019 2026-09-29T08:14:43Z Antimundo 74354 Crear categoría de libro 435019 wikitext text/x-wiki {{LP}} [[Categoría:Estante:Java]] nlgpr0vz0s06qhljw9p88matdaggacx