Share to: share facebook share twitter share wa share telegram print page

Programación estructurada

La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora recurriendo únicamente a subrutinas y a tres estructuras de control básicas: secuencia, selección (if y switch) e iteración (bucles for y while); asimismo, se considera innecesario y contraproducente el uso de la transferencia incondicional (GOTO); esta instrucción suele acabar generando el llamado código espagueti, mucho más difícil de seguir y de mantener, además de originar numerosos errores de programación.

Surgió en la década de 1960, particularmente del trabajo de Corrado Böhm y Giuseppe Jacopini,[1]​ y un famoso escrito de 1968: «La sentencia goto, considerada perjudicial», de Edsger Dijkstra.[2]​ Sus postulados se verían reforzados, a nivel teórico, por el teorema del programa estructurado y, a nivel práctico, por la aparición de lenguajes como ALGOL, dotado de estructuras de control consistentes y bien formadas.[3]

Elementos

Estructuras de control

Siguiendo el teorema del programa estructurado, todos los programas se ven como compuestos de estructuras de control:

  • Sequence: declaraciones ordenadas o subrutinas ejecutadas en secuencia.
  • Selection: una o varias instrucciones se ejecutan dependiendo del estado del programa. Esto generalmente se expresa con la palabra clave como if..then..else..endif. La declaración condicional debe tener al menos una condición verdadera y cada condición debe tener un punto de salida como máximo.
  • Iteration: una instrucción o bloque se ejecuta hasta que el programa alcanza un cierto estado, o se han aplicado operaciones a cada elemento de una colección. Esto generalmente se expresa con palabras clave como while, repeat, for o do..until. A menudo, se recomienda que cada bucle solo tenga un punto de entrada (y en la programación estructural original, también solo un punto de salida, y algunos lenguajes lo imponen).
  • Recursion: una declaración se ejecuta llamándose repetidamente a sí misma hasta que se cumplen las condiciones de terminación. Si bien en la práctica son similares a los bucles iterativos, los bucles recursivos pueden ser más eficientes desde el punto de vista computacional y se implementan de manera diferente como una pila en cascada.
Representación gráfica de los tres patrones básicos (secuencia, selección y repetición) utilizando diagramas NS (azul) y diagramas de flujo (verde).

Subrutinas

Subrutinas son las unidades a las que se puede llamar, como procedimientos, funciones, métodos o subprogramas. Se utilizan para permitir que una sola declaración haga referencia a una secuencia.

Bloques

Los bloques se utilizan para permitir que grupos de declaraciones se traten como si fueran una sola declaración. Los lenguajes "estructurados en bloques" tienen una sintaxis para encerrar estructuras de alguna manera formal, como una declaración if entre paréntesis. if..fi como en ALGOL 68, o una sección de código entre corchetes BEGIN..END, como en PL/I y Pascal, sangría de espacio en blanco como en Python, o las llaves {...} de C y relacionados de muchos lenguajes posteriores.

Orígenes de la programación estructurada

A finales de los años 1970 surgió una nueva forma de programar que no solamente permitía desarrollar programas fiables y eficientes, sino que además estos estaban escritos de manera que se facilitaba su comprensión en fases de mejora posteriores.

El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:

  • Secuencia.
  • Instrucción condicional.
  • Iteración (bucle de instrucciones) con condición inicial.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, estas pueden ser construidas mediante las tres básicas citadas.


Historia

Fundamentación teórica

El teorema del programa estructurado proporciona la base teórica de la programación estructurada. Señala que la combinación de las tres estructuras básicas, secuencia, selección e iteración, son suficientes para expresar cualquier función computable. Esta observación no se originó con el movimiento de la programación estructurada. Estas estructuras son suficientes para describir el ciclo de instrucción de una unidad central de procesamiento, así como el funcionamiento de una máquina de Turing. Por lo tanto, un procesador siempre está ejecutando un «programa estructurado» en este sentido, incluso si las instrucciones que lee de la memoria no son parte de un programa estructurado. Sin embargo, los autores usualmente acreditan el resultado a un documento escrito en 1966 por Böhm y Jacopini, posiblemente porque Dijkstra había citado este escrito.[4]​ El teorema del programa estructurado no responde a cómo escribir y analizar un programa estructurado de manera útil. Estos temas fueron abordados durante la década de 1960 y principio de los años 1970, con importantes contribuciones de Dijkstra, Robert W. Floyd, Tony Hoarey y David Gries.

Debate

El programador norteamericano P. J. Plauger (1944- ), uno de los primeros en adoptar la programación estructurada, describió su reacción con el teorema del programa estructurado:

Nosotros los conversos ondeamos esta interesante pizca de noticias bajo las narices de los recalcitrantes programadores de lenguaje ensamblador que mantuvieron trotando adelante retorcidos bits de lógica y diciendo, 'Te apuesto que no puedes estructurar esto'. Ni la prueba por Böhm y Jacopini, ni nuestros repetidos éxitos en escribir código estructurado, los llevaron un día antes de lo que estaban listos para convencerse.[5]

Donald Knuth aceptó el principio de que los programas deben adaptarse con asertividad, pero no estaba de acuerdo (y aún está en desacuerdo)[cita requerida] con la supresión de la sentencia GOTO. En su escrito de 1974 «Programación estructurada con sentencias Goto», dio ejemplos donde creía que un salto directo conduce a código más claro y más eficiente sin sacrificar demostratividad. Knuth propuso una restricción estructural más flexible: debe ser posible establecer un diagrama de flujo del programa con todas las bifurcaciones hacia adelante a la izquierda, todas las bifurcaciones hacia atrás a la derecha, y sin bifurcaciones que se crucen entre sí. Muchos de los expertos en teoría de grafos y compiladores han abogado por permitir solo grafos de flujo reducible[¿quién?][¿cuándo?].

Los teóricos de la programación estructurada se ganaron un aliado importante en la década de 1970 después de que el investigador de IBM Harlan Mills aplicara su interpretación de la teoría de la programación estructurada para el desarrollo de un sistema de indexación para el archivo de investigación del New York Times. El proyecto fue un gran éxito de la ingeniería, y los directivos de otras empresas lo citaron en apoyo de la adopción de la programación estructurada, aunque Dijkstra criticó las maneras en que la interpretación de Mills difería de la obra publicada.[6]

Habría que esperar a 1987 para que la cuestión de la programación estructurada llamara la atención de una revista de ciencia de la computación. Frank Rubin lo hizo en ese año, con el escrito: «¿“La sentencia GOTO considerada dañina” se considera dañina?».[7]​ A este le siguieron numerosas objeciones, como una respuesta del propio Dijkstra que criticaba duramente a Rubin y las concesiones que otros autores hicieron cuando le respondieron.

Resultado

A finales del siglo XX, casi todos los científicos están convencidos de que es útil aprender y aplicar los conceptos de programación estructurada. Los lenguajes de programación de alto nivel que originalmente carecían de estructuras de programación, como FORTRAN, COBOL y BASIC, ahora las tienen.

Ventajas de la programación estructurada

Entre las ventajas de la programación estructurada sobre el modelo anterior (hoy llamado despectivamente código espagueti), cabe citar las siguientes:

  • Los programas son más fáciles de entender, pueden ser leídos de forma secuencial y no hay necesidad de tener que rastrear saltos de líneas (GOTO) dentro de los bloques de código para intentar entender la lógica interna.
  • La estructura de los programas es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.
  • Se optimiza el esfuerzo en las fases de pruebas y depuración. El seguimiento de los fallos o errores del programa (debugging), y con él su detección y corrección, se facilita enormemente.
  • Se reducen los costos de mantenimiento. Análogamente a la depuración, durante la fase de mantenimiento, modificar o extender los programas resulta más fácil.
  • Los programas son más sencillos y más rápidos de confeccionar.
  • Se incrementa el rendimiento de los programadores.

Lenguajes de programación estructurada

Si bien es posible desarrollar la programación estructurada en cualquier lenguaje de programación, resulta más idóneo un lenguaje de programación procedimental. Algunos de los lenguajes utilizados inicialmente para programación estructurada incluyen ALGOL, Pascal, PL/I y Ada, pero la mayoría de los nuevos lenguajes de programación procedimentales desde entonces han incluido características para fomentar la programación estructurada y a veces, deliberadamente, omiten características[8]​ en un esfuerzo para hacer más difícil la programación no estructurada.

Nuevos paradigmas

Con posterioridad a la programación estructurada se han creado nuevos paradigmas tales como la programación modular, la programación orientada a objetos, la programación por capas y otras, así como nuevos entornos de programación que facilitan la programación de grandes aplicaciones y sistemas.

Desviaciones habituales

Aunque goto ha sido sustituido en gran medida por las construcciones estructuradas de selección (if/then/else) y repetición (while y for), pocos lenguajes son puramente estructurados. La desviación más común, encontrada en muchos lenguajes, es el uso de una sentencia return para la salida temprana de una subrutina. Esto resulta en múltiples puntos de salida, en lugar del único punto de salida requerido por la programación estructurada. Hay otras construcciones para manejar casos que son incómodos en la programación puramente estructurada.

Salida temprana

La desviación más común de la programación estructurada es la salida temprana de una función o bucle. A nivel de funciones, esto es una declaración de return. A nivel de bucles, esto es una declaración de break (terminar el bucle) o una declaración de continue (terminar la iteración actual y proceder con la siguiente). En la programación estructurada, estos se pueden replicar añadiendo ramas o pruebas adicionales, pero para retornos desde código anidado, esto puede agregar una complejidad significativa. C es un ejemplo temprano y prominente de estos constructos. Algunos lenguajes más nuevos también tienen «breaks etiquetados», que permiten salir de más que solo el bucle más interno. Las excepciones también permiten la salida temprana, pero tienen consecuencias adicionales, y por lo tanto se tratan a continuación.

Las salidas múltiples pueden surgir por una variedad de razones, la mayoría de las veces porque la subrutina no tiene más trabajo que hacer (si devuelve un valor, ha completado el cálculo), o se ha encontrado con circunstancias «excepcionales» que le impiden continuar, por lo que necesita un manejo de excepciones.

El problema más común en la salida anticipada es que las sentencias de limpieza o finales no se ejecutan - por ejemplo, la memoria asignada no se desasigna, o los archivos abiertos no se cierran, causando fugas de memorias o fugas de recursoss. Esto debe hacerse en cada lugar de retorno. Esto debe hacerse en cada sitio de retorno, lo que es frágil y puede dar lugar fácilmente a errores. Por ejemplo, en un desarrollo posterior, una sentencia return podría ser pasada por alto por un desarrollador, y una acción que debería realizarse al final de una subrutina (por ejemplo, una sentencia trace) podría no realizarse en todos los casos. Los lenguajes sin sentencia return, como Pascal estándar y Seed7, no tienen este problema.

La mayoría de los lenguajes modernos proporcionan soporte a nivel de lenguaje para prevenir tales fugas;[9]​ consulta la discusión detallada en gestión de recursos. Esto se hace comúnmente a través de la protección de desanudado, que asegura que cierto código se ejecute garantizado al salir de un bloque; esta es una alternativa estructurada a tener un bloque de limpieza y un goto. Esto se conoce más frecuentemente como try...finally, y se considera parte de manejadores de excepciones. En el caso de múltiples declaraciones de return, introducir try...finally sin excepciones puede parecer extraño. Existen varias técnicas para encapsular la gestión de recursos. Un enfoque alternativo, encontrado principalmente en C++, es Resource Acquisition Is Initialization, que utiliza el desanudado normal de la pila (desasignación de variables) al salir de la función para llamar a destructores en variables locales y desasignar recursos.

Kent Beck, Martin Fowler y coautores han argumentado en sus libros sobre refactorización que los condicionales anidados pueden ser más difíciles de entender que un cierto tipo de estructura más plana utilizando múltiples salidas predicadas por cláusulas de guardia. Su libro de 2009 establece rotundamente que "un punto de salida realmente no es una regla útil. La claridad es el principio clave: si el método es más claro con un punto de salida, utiliza un punto de salida; de lo contrario, no lo hagas". Ofrecen una solución tipo "recetario" para transformar una función que consiste solo en condicionales anidados en una secuencia de declaraciones de retorno (o lanzamiento) protegidas, seguida de un bloque sin protección, que está destinado a contener el código para el caso común, mientras que las declaraciones protegidas deben tratar con los casos menos comunes (o con errores).[10]Herb Sutter y Andrei Alexandrescu también argumentan en su libro de consejos de C++ de 2004 que el punto de salida único es un requisito obsoleto.[11]

En su libro de texto de 2004, David Watt escribe que "los flujos de control de entrada única y múltiples salidas son a menudo deseables". Usando la noción del marco de Tennent de secuenciador, Watt describe uniformemente los constructos de flujo de control encontrados en los lenguajes de programación contemporáneos y intenta explicar por qué ciertos tipos de secuenciadores son preferibles a otros en el contexto de flujos de control de múltiples salidas. Watt escribe que los gotos sin restricciones (secuenciadores de salto) son malos porque el destino del salto no es autoexplicativo para el lector de un programa hasta que el lector encuentra y examina la etiqueta o dirección real que es el objetivo del salto. En contraste, Watt argumenta que la intención conceptual de un secuenciador de retorno es clara desde su propio contexto, sin necesidad de examinar su destino. Watt escribe que una clase de secuenciadores conocidos como secuenciadores de escape, definidos como "secuenciador que termina la ejecución de un comando o procedimiento que lo envuelve textualmente", abarca tanto los saltos de bucles (incluyendo saltos de múltiples niveles) como las declaraciones de retorno. Watt también señala que, aunque los secuenciadores de salto (gotoss) han sido algo restringidos en lenguajes como C, donde el objetivo debe estar dentro del bloque local o de un bloque exterior que lo envuelva, esa restricción por sí sola no es suficiente para hacer que la intención de los gotos en C sea auto-descriptiva y, por lo tanto, aún pueden producir "código espagueti". Watt también examina cómo los secuenciadores de excepciones difieren de los secuenciadores de escape y de salto; esto se explica en la siguiente sección de este artículo.[12]

En contraste con lo anterior, Bertrand Meyer escribió en su libro de texto de 2009 que instrucciones como break y continue "son solo el viejo goto disfrazado" y aconsejó enérgicamente en contra de su uso.[13]

Referencias

  1. Böhm, Jacopini. "Flow diagrams, turing machines and languages with only two formation rules" Comm. ACM, 9(5):366-371, May 1966, doi=10.1145/355592.365646
  2. Edsger Dijkstra (marzo de 1968). «Go To Statement Considered Harmful». Communications of the ACM (PDF) 11 (3): 147-148. doi:10.1145/362929.362947. «"The unbridled use of the go to statement has as an immediate consequence that it becomes terribly hard to find a meaningful set of coordinates in which to describe the process progress. ... The go to statement as it stands is just too primitive, it is too much an invitation to make a mess of one's program". (El uso desenfrenado de la instrucción go to tiene como consecuencia inmediata que se vuelve terriblemente difícil encontrar un conjunto significativo de coordenadas para describir el progreso del proceso. ... La instrucción go to tal como está es simplemente demasiado primitiva, es una invitación demasiado grande a arruinar el propio programa.)». 
  3. Clark, Leslie B. Wilson, Robert G.; Robert, Clark (2000). Comparative programming languages (3rd edición). Harlow, England: Addison-Wesley. p. 20. ISBN 9780201710120. Archivado desde el original el 26 de noviembre de 2015. Consultado el 25 de noviembre de 2015. 
  4. Dijkstra, 1968.
  5. P. J. Plauger (1993). Programming on Purpose (en inglés). PTR Prentice Hall. p. 20. ISBN 978-013-721-374-0. 
  6. In EWD1308, «What led to "Notes on Structured Programming"». , dated 10 June 2001, Dijkstra writes, "Apparently, IBM did not like the popularity of my text; it stole the term "Structured Programming" and under its auspices Harlan D. Mills trivialized the original concept to the abolishment of the goto statement."
  7. Frank Rubin (March 1987). «"GOTO Considered Harmful" Considered Harmful». Communications of the ACM 30 (3): 195-196. S2CID 6853038. doi:10.1145/214748.315722. Archivado desde el original el 20 de marzo de 2009. 
  8. GOTO for example
  9. Elder, Matt; Jackson, Steve; Liblit, Ben (octubre 2008), Code Sandwiches, Universidad de Wisconsin–Madison, 1647 .
  10. Jay Fields; Shane Harvie; Martin Fowler; Kent Beck (2009). Refactoring: Ruby Edition. Pearson Education. pp. 274-279. ISBN 978-0-321-60350-0. 
  11. Herb Sutter; Andrei Alexandrescu (2004). C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Pearson Education. ISBN 978-0-13-265442-5. «Ejemplo 4: Entrada única, salida única ("SESE"). Históricamente, algunos estándares de codificación han requerido que cada función tenga exactamente una salida, es decir, una declaración de retorno. Tal requisito es obsoleto en lenguajes que soportan excepciones y destructores, donde las funciones típicamente tienen numerosas salidas implícitas.» 
  12. Watt y Findlay, 2004, pp. 215–221.
  13. Bertrand Meyer (2009). Touch of Class: Learning to Program Well with Objects and Contracts. Springer Science & Business Media. p. 189. ISBN 978-3-540-92144-8. 

Bibliografía

Véase también

Enlaces externos

Read other articles:

This article is about the 2011 American film. For the 2003 Swedish film, see Details (film). 2011 American filmThe DetailsTheatrical release posterDirected byJacob Aaron EstesWritten byJacob Aaron EstesProduced byMark GordonBryan ZuriffHagai ShahamStarringTobey MaguireElizabeth BanksDennis HaysbertRay LiottaKerry WashingtonLaura LinneyNarrated byJonah HillCinematographySharone MeirEdited byMadeleine GavinMusic bytomandandyProductioncompanyLD EntertainmentDistributed byRADiUS-TWCRelease dates Jan…

Bangkalit Hesperoptenus TaksonomiKerajaanAnimaliaFilumChordataKelasMammaliaOrdoChiropteraFamiliVespertilionidaeGenusHesperoptenus Peters, 1868 lbs Hesperoptenus adalah genus kelelawar dalam keluarga Vespertilionidae atau kelelawar vesper yang dikenal dengan nama bangkalit.[1] Spesies dalam genus ini adalah: [2] Bangkalit Blanford ( Hesperoptenus blanfordi ) Bangkalit doria ( Hesperoptenus doriae ) Bangkalit Sulawesi ( Hesperoptenus gaskelli ) Bangkalit Tickell ( Hesperoptenus tic…

Dinkelland, adalah sebuah gemeente Belanda yang terletak di provinsi Overijssel. Pada tahun 2006 daerah ini memiliki penduduk sebesar 26.064 jiwa. Lihat pula Daftar Kota Belanda lbsMunisipalitas di provinsi Overijssel Almelo Borne Dalfsen Deventer Dinkelland Enschede Haaksbergen Hardenberg Hellendoorn Hengelo Hof van Twente Kampen Losser Oldenzaal Olst-Wijhe Ommen Raalte Rijssen-Holten Staphorst Steenwijkerland Tubbergen Twenterand Wierden Zwartewaterland Zwolle Artikel bertopik geografi atau te…

Haul truck Haul truck adalah truk yang digunakan untuk dalam pertambangan terbuka dan konstruksi.[1] Truk ini dicirikan dengan ukurannya yang sangat besar karena ditujukan untuk mengangkut bahan curah dalam jumlah yang banyak antara 30 hingga 300 ton. Sebagian besar haul truck memiliki dua as roda, hanya sedikit sekali yang memiliki tiga.[2] [3] Hingga 2013, truk BelAZ 75710 memiliki kapasitas terbesar yang mencapai 450 metrik ton.[4] Haul truck umumnya digerakkan…

Verizon Logo Verizon High Speed Internet is a digital subscriber line (DSL) Internet service offered by Verizon. It allows consumers to use their telephone and Internet service simultaneously over the same telephone line while benefiting from Internet connection speeds significantly faster than dial-up.[1] This service was launched in 1998 in the North Jersey, Philadelphia, Pittsburgh and Washington D.C. areas, when Verizon was Bell Atlantic. Today, this service is available in all of Ve…

دوري هونغ كونغ لكرة القدم 2010–11 تفاصيل الموسم دوري هونغ كونغ الدرجة الأولى  [لغات أخرى]‏  النسخة 66  البلد الصين  البطل نادي كيتشي  عدد المشاركين 10   دوري هونغ كونغ لكرة القدم 2009–10  دوري هونغ كونغ لكرة القدم 2011–12  تعديل مصدري - تعديل   دوري هونغ كونغ ل…

W Series 2021 Pembalap juara: Jamie Chadwick Sebelum: 20192020 Sesudah: 2022 Seri induk:Kejuaraan dunia Formula Satu Jamie Chadwick memenangkan kejuaraan untuk kedua kalinya. W Series 2021 adalah musim kedua kejuaraan W Series, menggantikan musim 2020 setelah musim tersebut dibatalkan akibat pandemi Covid-19.[1] Kejuaraan ini terbuka khusus untuk pembalap wanita sebagai seri balapan setingkat Formula 3, dan sebagai seri pendukung Formula Satu musim 2021.[2] Jamie Chadwick memasuk…

Government of the United Kingdom from 1990 to 1992 This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (June 2017) (Learn how and when to remove this template message) This article is about the people in John Major’s administration. For the events of John Major's tenure as prime minister, see Premiership of John Major. First Major ministryCabinet of the United King…

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: List of statutory instruments of Scotland, 2016 – news · newspapers · books · scholar · JSTOR (January 2023) (Learn how and when to remove this template message) Part of a series onBritish law Acts of Parliament of the United Kingdom Year      1801 1802 1803 1804 1805 1806 1807 1808 18…

TeluknagaKecamatanPeta lokasi Kecamatan TeluknagaNegara IndonesiaProvinsiBantenKabupatenTangerangPemerintahan • CamatZamzam Manohara, S.STPPopulasi • Total138 330 Jiwa (sensus 2.010) [1] jiwaKode Kemendagri36.03.13 Kode BPS3603200 Desa/kelurahan13 desa Teluknaga adalah sebuah kecamatan di Kabupaten Tangerang, Provinsi Banten, Indonesia. Objek wisata Di kecamatan ini memiliki beberapa tempat pemancingan dan akses menuju Pantai Tanjung Pasir. Sebagian wilayah PIK 2 jug…

NFL team season 1997 Minnesota Vikings seasonHead coachDennis GreenHome fieldHubert H. Humphrey MetrodomeResultsRecord9–7Division place4th NFC CentralPlayoff finishWon Wild Card Playoffs(at Giants) 23–22Lost Divisional Playoffs(at 49ers) 22–38Uniform ← 1996 Vikings seasons 1998 → The 1997 season was the Minnesota Vikings' 37th in the National Football League (NFL) and their sixth under head coach Dennis Green. The team finished with a 9–7 record and qualified f…

Примо́рские прови́нции (англ. Maritime provinces, the Maritimes; фр. Provinces maritimes) — собирательное название трёх провинций на востоке Канады: Нью-Брансуик Новая Шотландия и Остров Принца Эдуарда. Приморские провинции Канады (выделены красным) На атлантическом побережье приморские …

American baseball player, manager, and broadcaster Baseball player Buck MartinezMartinez in 2009Catcher / ManagerBorn: (1948-11-07) November 7, 1948 (age 75)Redding, California, U.S.Batted: RightThrew: RightMLB debutJune 18, 1969, for the Kansas City RoyalsLast MLB appearanceOctober 3, 1986, for the Toronto Blue JaysMLB statisticsBatting average.225Home runs58Runs batted in321Managerial record100–115Winning %.465 TeamsAs player Kansas City Royals (1969…

حسين نصار معلومات شخصية الميلاد 25 أكتوبر 1925   أسيوط  تاريخ الوفاة 29 نوفمبر 2017 (92 سنة)   مواطنة مصر  عضو في مجمع اللغة العربية بدمشق  الحياة العملية المدرسة الأم جامعة القاهرة  المهنة أديب،  ومحقق،  ومترجم،  وكاتب  اللغات العربية،  والإنجليزية  أعم…

Skyscraper in the Loop area of Chicago, Illinois This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Two Prudential Plaza – news · newspapers · books · scholar · JSTOR (May 2016) (Learn how and when to remove this message) Two Prudential PlazaTwo Prudential Plaza in May 2016Location within Chicago metropolitan area…

TimavoIl Timavo poco dopo le risorgive; sullo sfondo la chiesa di San Giovanni in TubaStati Slovenia Croazia Italia Suddivisioni Friuli-Venezia Giulia Lunghezza89 km Bacino idrografico480 km²[1] Altitudine sorgente720 m s.l.m. NasceMonte Nevoso Turkove škulje 45°28′51.22″N 14°23′56.07″E / 45.480893°N 14.398909°E45.480893; 14.398909 SfociaSan Giovanni di Duino, Golfo di Trieste a Duino Aurisina 45°46′51.72″N 13°34′51.81″E…

PausPius IIIAwal masa kepausan22 September 1503Akhir masa kepausan18 Oktober 1503PendahuluAleksander VIPenerusYulius IIInformasi pribadiNama lahirFrancesco Todeschini PiccolominiLahir29 Mei 1439Siena, ItaliaWafat18 Oktober 1503Roma, Italia Pius III (29 Mei 1439 – 18 Oktober 1503) adalah Paus yang menjabat sejak 22 September 1503 sampai 18 Oktober 1503. lbs Paus Gereja Katolik Daftar paus grafik masa jabatan orang kudus Nama Paus Abdikasi Paus Paus emeritus Antipaus Paus terpilih …

Salamander punggung merah Status konservasi Risiko Rendah  (IUCN 3.1) Klasifikasi ilmiah Kerajaan: Animalia Filum: Chordata Kelas: Amphibia Ordo: Caudata Famili: Plethodontidae Genus: Plethodon Spesies: P. cinereus Nama binomial Plethodon cinereus(Hijau, 1818) Salamander punggung merah (Plethodon cinereus) adalah salamander hutan kecil. Hewan ini mendiami lereng berhutan di Amerika Utara sisi timur; yaitu ke barat hingga Missouri; selatan hingga Carolina Utara; dan utara dari Quebec ba…

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: コルク – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2017年4月) コルクを打ち抜いて作った瓶の栓 コルク(木栓、蘭&…

Amusement park in Seguin, Texas ZDT's Amusement ParkPreviously known as ZDT's Amusement CenterLocationSeguin, Texas, United StatesCoordinates29°34′48″N 97°58′1.2″W / 29.58000°N 97.967000°W / 29.58000; -97.967000StatusOperatingOpenedMarch 2007OwnerDanny DonhauserOperating seasonAll yearArea10 acres (4.0 ha)AttractionsTotal13Roller coasters1Water rides3Websitewww.zdtamusement.com ZDT's Amusement Park is a 10-acre (4.0 ha) family amusement park located …

Kembali kehalaman sebelumnya