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

Bucle for

El bucle for es una estructura de control en programación en la que se puede indicar de antemano el número máximo de iteraciones

Elementos del bucle

  • Variable de control: prácticamente un mandato impuesto por el uso habitual es utilizar la letra i Iterador como variable de control, o bien sus sucesoras en caso de bucles anidados. El uso de esta letra críptica quizás a primera vista es sin embargo una excelente forma de aportar agilidad de lectura al código por su uso tan extensivo. Como raras veces los bucles anidados superan las tres dimensiones (por una sencilla cuestión de explosión exponencial), las letras i, j y k suelen ser las únicas relacionadas con este uso. En C se define en el primer parámetro de la instrucción junto con la inicialización (opcional).
  • Inicialización de la variable de control: en pseudolenguaje se pide explicitarlo (es la sección := ValorInicial), sin embargo, otros lenguajes más permisivos como C no lo requieren de forma obligatoria. De todos modos, la práctica de utilizar variables de control que no se inicializan en el bucle no es recomendada para la legibilidad del código. En C se define en el primer parámetro del bucle junto con la variable de control.
  • Condición de control: en pseudolenguaje se ve representado por el valor final que puede tomar la variable de control (la sección A ValorFinal). En C es el segundo parámetro y puede ser cualquier condición (ni siquiera es obligación que esté la variable de control, aunque una vez más, esto no se considera una buena práctica).
  • Incremento: en pseudolenguaje se toma por defecto el valor 1, aunque puede explicitarse por medio de la sentencia PASO = ValorPaso cualquier número entero (léase bien entero, o sea que técnicamente podemos decrementar). En C es el último parámetro.
  • Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. En pseudolenguaje pesa la restricción de no poder alterar el valor de la variable de control; esto no es requerido en C, pero no se considera una buena práctica.

Usos

Su uso principal se orienta a los vectores, pudiendo modificar, agregar, eliminar o consultar datos que se encuentren según el índice. Por esto último, una condición mínima del vector es que debe ser ordenado, porque si se intenta leer un dato inexistente, esto genera un error de programación.

En pseudolenguaje

La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS Y REPETIR, es que puede determinarse al comienzo del bucle cuántas veces se iterará el mismo, lo cual muchas veces puede redundar en una optimización del código por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares de la programación estructurada, y su uso es una evolución de una sentencia de lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.

El bucle PARA se ha convertido en el bucle más ampliamente utilizado en la programación, ya que con la evolución de los lenguajes la mayoría de las condiciones de fin


Es lo mismo decir:

PARA i=0 a CantidadRegistros(tabla) - 1, PASO = 1
 PróximoRegistro(tabla)
 HacerAlgo(ElementoActual(tabla))
FIN PARA

Otro uso común es utilizar los bucles PARA para recorrer vectores de dos o más dimensiones, en cuyo caso se anidan estas iteraciones.

PSEUDOLENGUAJE

Vector a[3][4][2]. // Estamos indicando un vector de 3 dimensiones y 24 elementos en total.
PARA i:= 0 A 2 HACER
  PARA j:= 0 A 3 HACER
    PARA k:= 0 A 1 HACER
      HacerAlgo(a[i][j][k])
    FIN PARA
  FIN PARA
FIN PARA

Ejemplo en pseudocódigo

For VariableControl := ValorInicial A ValorFinal, PASO = Incremento

  Instrucciones
FIN For

donde VariableControl, ValorInicial, ValorFinal y Paso son enteros. La(s) instrucción(es) del cuerpo se ejecutará(n) (ValorFinal - ValorInicial + 1) veces, o sea que va desde ValorInicial a ValorFinal inclusive.

Ejemplo en C++

#include <iostream>
#include <conio.h>
using namespace std;

int main(){
   int vector[10];
   for(int i=0; i<10; i++){
      vector[i] = i;
      cout<< i<<endl;
   }  
   system ("PAUSE"); 
   return 0;
}

En la definición del for, tenemos que la variable de control i se inicializa en un valor 0, luego se entrega la condición de control que debe ser falsa durante su ejecución, para completar el ciclo; y por último, tenemos el incrementador en una unidad.

Si por ejemplo en la condición colocamos i < 11, entonces el ciclo for se ejecutará desde [0...10], lo cual, al intentar acceder al elemento vector[10], esto generará error, ya que el vector (por definición) va desde [0..(n-1)].

Cualquiera de los componentes en el paréntesis se puede omitir, pero los separadores punto y coma deben aparecer siempre. El resultado es un bucle infinito.

Ejemplo anterior escrito en léxico

tarea
{
los objetos vector[10], i son cantidades
variando i desde 0 hasta 9 haga
         copie i en vector[i]
}

Bucle Por Cada (For Each)

Este bucle es una evolución del concepto del bucle Para en algunos lenguajes. Se utiliza para recorrer estructuras repetitivas de datos de forma más simple y ágil. El bucle For Each puede describirse genéricamente (en pseudolenguaje) de la siguiente manera:

POR CADA elemento DE tipo EN conjunto HACER
  Cuerpo
FIN FOR EACH
  • Elemento: es el nombre de la variable u objeto que toma el elemento iterado en el cuerpo del bucle.
  • Tipo de Dato: es el tipo de variable o la clase a la que pertenece el objeto que se quiere iterar.
  • Conjunto: es la estructura de datos que se quiere iterar. El uso más típico es con vectores o -en programación orientada a objetos- clases del tipo Colección.
  • Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. Si bien no se impone una obligación al respecto, lo más común es que en este Cuerpo exista alguna operación sobre el elemento iterado.

Una de las características importantes que se pueden aprovechar de las computadoras es precisamente su capacidad de repetir la ejecución de secuencias de instrucciones a una gran velocidad y con alto grado de confiabilidad. Para estos fines, precisamente se definen en los lenguajes de programación las estructuras de control iterativas. El objetivo de estas estructuras es permitir la expresión de la repetición de una secuencia de instrucciones, a estas estructuras se les denomina ciclo, lazo o bucle.

Sumario 1 Estructuras de Control Iterativas 2 La instrucción while 3 La instrucción do/while 4 La estructura de control for 5 Caso de Estudio 5.1 MCD() 5.2 CantDigitos() 5.3 Factorial() 6 Ciclos Anidados 7 Fuentes Estructuras de Control Iterativas En la vida diaria existen situaciones que frecuentemente se resuelven realizando una determinada secuencia de pasos que puede repetirse muchas veces, ejemplo:

El proceso que seguimos para comer, mientras no se termine la comida. El proceso de insertar monedas, hasta que se abone la cantidad necesaria. Las operaciones que realizamos para llamar por teléfono, mientras no se logre la comunicación. Como se puede observar estos son algoritmos que se hacen cotidianamente, pero tienen la particularidad de que la ejecución de alguno de sus pasos puede repetirse muchas veces, mientras no se logre la meta trazada. A este tipo de algoritmo se le conoce como algoritmos iterativos o repetitivos. En C#, las instrucciones while, do/while, y for, permiten ejecutar iteraciones, bucles o ciclos. En cada caso se ejecuta un bloque de instrucciones mientras la condición que se evalúa tome valor verdadero. Se resalta que cualquiera de las 3 instrucciones cumple con el mismo objetivo que es el de ejecutar una secuencia de pasos, más de una vez.

La instrucción while La instrucción while tiene la siguiente sintaxis:

InstruccionWhile.JPG

La semántica de la instrucción es la siguiente:

<condición>. Está representada por una expresión booleana y mientras se cumpla se ejecutará el ciclo. [Bloque de Instrucciones] El bloque de instrucciones puede estar formado por una o varias instrucciones y es el conjunto de pasos que se van ejecutar en cada iteración del ciclo. Para una mayor comprensión se muestra su representación en un diagrama de actividad.

DiagramaWhile.JPG

Esta estructura de control permite repetir o iterar el [Bloque de Instrucciones] mientras la condición sea verdadera o dicho de otra manera, estas iteraciones terminarán cuando la condición sea falsa y entonces se podrá ejecutar la siguiente instrucción después del while.

Es válido señalar que en esta instrucción la condición se evalúa al inicio del ciclo por lo que si la primera vez que se evalúa la condición esta es falsa, el ciclo no llegará a realizarse.

La instrucción do/while La estructura de control do/while es otra sentencia de iteración en la que la condición se evalúa por primera vez una vez que se haya ejecutado el [Bloque de Instrucciones] y tienen la siguiente sintaxis:

InstruccionDoWhile.JPG

Su semántica es la misma que la de la instrucción while y su representación en un diagrama de actividad es la siguiente:

DiagramaDoWhile.JPG

En esta estructura repetitiva el bloque de instrucciones siempre se ejecuta al menos una vez pues la condición se evalúa al final. Una vez realizada la evaluación si el resultado es true, se vuelve a ejecutar el [Bloque de Instrucciones], en caso contrario se ejecutan las instrucciones que sigan a continuación saliendo del ciclo. La funcionalidad de este método será la misma que en el ejemplo con while. La única diferencia es la forma en que se controla el bucle. En la práctica, verá que la instrucción while se utiliza más a menudo que la instrucción do – while. El elegir una instrucción en lugar de la otra es una elección personal. Un aspecto muy importante a tener presente en los ciclos condicionales es la necesidad de contemplar dentro del bloque de instrucciones al menos una que, de alguna manera, altere –en algún momento- el resultado de la expresión booleana. La explicación sencillamente está dada por el hecho que de no existir esta instrucción una vez entrada al ciclo este nunca terminaría por lo que se caería en un ciclo infinito.

La estructura de control for Los procesos iterativos que se han visto hasta ahora terminan por una condición. En muchas situaciones las iteraciones se realizan un número determinado de veces, muchos autores les llaman ciclos por conteo pues se conoce de antemano cuántas veces se hará el proceso que se repite. En este tipo de iteración, siempre se necesita una variable que lleve el control de las veces que se repite el proceso por esto se les conoce también como ciclos con variable de control. Uno de los ciclos más conocidos y usados en la mayoría de los lenguajes de programación es el de la instrucción for que suele estar controlado por un contador o variable de control y tiene la siguiente sintaxis:

InstruccionFor.JPG

La semántica de la instrucción es la siguiente:

<instrucciones 1>. Se ejecutará una sola vez al inicio del ciclo, generalmente se realizan inicializaciones y declaraciones de variables puesto que como se dijo con anterioridad, esta solo se ejecuta una vez. En caso de que se quiera realizar o ejecutar más de una instrucción en este momento, dichas instrucciones se deben separar por comas (“,”). <expresión>. Es evaluada en cada iteración y en dependencia del valor que devuelva, dependerá que el ciclo continúe ejecutándose (valor de la expresión true) o no (false). Destacar que de no colocarse nada en esta parte, el ciclo tomará como true el valor de la expresión por lo que en principio, el ciclo puede estar repitiéndose infinitamente. <instrucciones 2>. Es ejecutado siempre en cada ciclo al terminar de ejecutar todas las instrucciones que pertenecen al bucle for en cuestión. Por lo general puede contener alguna actualización para las variables de control. Análogamente a <instrucciones 1> en caso de querer ejecutar en este momento más de una instrucción se deben separar por comas. Observe que es obligatorio para separar cada término que compone la instrucción for utilizar un punto y coma (;) de lo contrario el compilador mostrará un error de tipo semántico. Reiterar que la <instrucción 1> se ejecuta una sola vez al comienzo, que la <instrucción 2> es la que generalmente se utiliza para modificar la variable de control aunque en el ciclo esta puede modificarse también, y que <expresión>, es la que garantiza la finitud del ciclo, el for se estará ejecutando siempre y cuando <expresión> sea evaluada y tome valor true.

Véase también

Referencias

Enlaces externos

Read other articles:

Olahraga di Korea adalah berbagai jenis olahraga yang berasal dari Korea dan diperkenalkan dari negara lain dan populer dimainkan di Korea.[1] Dalam bahasa Korea istilah olahraga disebut 스포츠 (Seupocheu;sport), yang mana belum lama muncul, dan baru dimasukkan sebagai kosakata Bahasa Korea pada abad ke-21.[1] Namun sebenarnya, konsep olahraga telah digunakan sejak awal mula sejarah rakyat Korea.[1] Sejak masa prasejarah, masyarakat Korea sudah melakukan berbagai ma...

 

Portretbüste van prinses Maria de Las Mercedes Maria de las Mercedes van Bourbon, prinses van Bourbon (Spaans: María de las Mercedes de Borbón y Orleans) (Madrid, 23 december 1910 — Lanzarote, 2 januari 2000), gravin van Barcelona, was de dochter van Karel Maria van Bourbon-Sicilië. Ze trouwde met Juan de Borbón, de zoon van koning Alfons XIII van Spanje. Maria was de moeder van de Spaanse koning Juan Carlos. Afstamming Maria was de dochter van Karel van Bourbon-Sicilië en diens tweed...

 

Matisse Datos generalesOrigen Mexicali, Baja California, MéxicoInformación artísticaGénero(s) PopInstrumento(s) Voz Guitarra Ukulele PianoPeríodo de actividad 2014 - presenteDiscográfica(s) Sony Music LatinArtistas relacionados Ha*Ash, Carlos Rivera, Leonel García, Reik, CamiloWebSitio web www.matissemx.comMiembros Román Torres Pablo PreciadoMelissa Robles [editar datos en Wikidata] Matisse es un grupo musical mexicano integrado por Pablo Preciado (11 de abril de 1...

Municipio de Dale Municipio Municipio de DaleUbicación en el condado de Atchison en Misuri Ubicación de Misuri en EE. UU.Coordenadas 40°19′17″N 95°14′54″O / 40.321388888889, -95.248333333333Entidad Municipio • País  Estados Unidos • Estado  Misuri • Condado AtchisonSuperficie   • Total 211.39 km² • Tierra 211.35 km² • Agua (0.02 %) 0.03 km²Altitud   • Media 296 m s. n. m.Población&#...

 

A tradução deste artigo está abaixo da qualidade média aceitável. Talvez tenha sido feita por um computador ou alguém que não conhece bem o português ou a língua original. Caso queira colaborar com a Wikipédia, tente encontrar a página original e melhore este verbete conforme o guia de tradução. (Setembro de 2021) Christopher Minko Informação geral Nome completo Christopher Julian Minko Nascimento 23 de setembro de 1956 (67 anos) Origem Myrtleford, Victoria, Austráli...

 

Сімода Такасі Особисті дані Повне ім'я Сімода Такасі Народження 28 листопада 1975(1975-11-28) (48 років)   Хіросіма, Японія Зріст 183 см Вага 80 кг Громадянство  Японія Позиція Воротар Професіональні клуби* Роки Клуб Ігри (голи) 1994-2010 «Санфрече Хіросіма» Національна збірн...

Aeropuerto Regional de Pocatello Pocatello Regional Airport IATA: PIH OACI: KPIH FAA: PIH LocalizaciónUbicación Condado de Power, Estados UnidosElevación 1357Sirve a Pocatello, IdahoDetalles del aeropuertoTipo PúblicoOperador Ciudad de PocatelloPistas DirecciónLargoSuperficie3/212,761Asfalto17/352,179AsfaltoSitio web https://www.iflypocatello.com/[editar datos en Wikidata] El Aeropuerto Regional de Pocatello o el Pocatello Regional Airport (IATA: PIH, OACI: KPIH) es un aer...

 

Ця стаття не містить посилань на джерела. Ви можете допомогти поліпшити цю статтю, додавши посилання на надійні (авторитетні) джерела. Матеріал без джерел може бути піддано сумніву та вилучено. (листопад 2018) «Чотири пори життя»[ISBN відсутній] — психологічно-філософсь�...

 

المدرسة القبلية معلومات التأسيس 1950 تكاليف الدراسة مجاناً الموقع الجغرافي المدينة مدينة الكويت القبلة البلد  الكويت إحصاءات الأساتذة سعاد سيد رجب الرفاعي منيرة حمود الجراح الصباح غنيمة الغربللي أمل جعفر لولوة عبدالمحسن الصقر حياة عدنان النقيب تعديل مصدري - تعديل   ا�...

2005 single by Montgomery GentryShe Don't Tell Me ToSingle by Montgomery Gentryfrom the album Something to Be Proud Of: The Best of 1999-2005 ReleasedOctober 25, 2005Recorded2005GenreCountryLength3:08LabelColumbia NashvilleSongwriter(s)Bob DiPieroTom ShapiroRivers RutherfordProducer(s)Rivers RutherfordMark WrightMontgomery Gentry singles chronology Something to Be Proud Of (2005) She Don't Tell Me To (2005) Some People Change (2006) She Don't Tell Me To is a song written by Tom Shapiro, Bob D...

 

Log house in Pennsylvania, USA Walker-Ewing-Glass Log HouseLocationPinkerton Run Road in Settler's Cabin Park, North Fayette Township, Pennsylvania, USACoordinates40°25′4.85″N 80°10′9.41″W / 40.4180139°N 80.1692806°W / 40.4180139; -80.1692806Builtcirca 1780s (?)Architecta man named John Henry (?)Governing bodylocal Pittsburgh Landmark – PHLFDesignated1970[1] Location of the Walker-Ewing-Glass Log House in Allegheny County, PennsylvaniaShow map of ...

 

Presiden ZanzibarBendera NegaraPetahanaHussein Mwinyisejak 3 November 2020Masa jabatanLima tahun, dapat diulang sekailPejabat perdanaSheikh Abeid Amani KarumeDibentuk12 Januari 1964 Artikel ini tidak memiliki bagian pembuka yang sesuai dengan standar Wikipedia. Mohon tulis paragraf pembuka yang informatif sehingga pembaca dapat memahami maksud dari Daftar Presiden Zanzibar. Contoh paragraf pembuka Daftar Presiden Zanzibar adalah .... (Pelajari cara dan kapan saatnya untuk menghapus pesan...

إرنيستو مومبيلي (بالإيطالية: Ernesto Mombelli)‏  حاكم برقة الإيطالي في المنصب16 يونيو 1924 – 2 ديسمبر 1926 لويجي بونجيوفاني أتيليو تيروتسي معلومات شخصية الميلاد 12 يونيو 1867تورينو الوفاة 1932 (العمر 64–65)فلورنسا  مواطنة مملكة إيطاليا  الحياة العملية المهنة سياسي  اللغات الإيط...

 

此條目或章節為有关籌備中,拍攝中或待播的電視節目。未有可靠来源的臆測內容可能會被移除。目前記載或許與實際節目播出之內容有所出入,亦可能會隨節目的播出而變化並增添更多有效信息。 莫斯科紳士A Gentleman in Moscow原作《莫斯科紳士(英语:A Gentleman in Moscow)》亞莫爾·托歐斯作品开创班·范斯通(Ben Vanstone)导演山姆·米勒(英语:Sam Miller)主演 伊旺·麥奎格 �...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أكتوبر 2019) دوروثي كلارك ويلسون   معلومات شخصية الميلاد سنة 1904  غاردينر  الوفاة سنة 2003 (98–99 سنة)  أورونو  مواطنة الولايات المتحدة  عضوة في فاي بيتا كابا...

Some bubble tea for you! Great you could join us! Stinglehammer (talk) 13:22, 12 November 2019 (UTC)Reply[reply] A goat for you! A goat for you to say thank you for joining us! V.madden25 (talk) 13:26, 12 November 2019 (UTC)Reply[reply] Welcome Hello, Cardillac2019, and Welcome to Wikipedia!    Welcome to Wikipedia! I hope you enjoy the encyclopedia and want to stay. As a first step, you may wish to read the Introduction. If you have any questions, feel free to ask me at my talk page – I...

 

Dony Eko WicaksonoKanit 5 Subdit IV Dittipidnarkoba Bareskrim Polri Informasi pribadiLahir15 Agustus 1985 (umur 38)Jakarta, DKI JakartaAlma materAkademi Kepolisian (2006)Karier militerPihak IndonesiaDinas/cabang Kepolisian Negara Republik IndonesiaMasa dinas2006—sekarangPangkat Komisaris PolisiSunting kotak info • L • B Kompol. Dony Eko Wicaksono, S.H., S.I.K., M.H. (lahir 15 Agustus 1985) adalah seorang Perwira Menengah Polri Lulusan Akpol 2006 Batalyon 38 Seti...

 

25th Miss Polski pageant Miss Polski 2014Ewa Mielnicka, Miss Polski 2014DateDecember 7, 2014PresentersPaulina Sykut-JeżynaZygmunt ChajzerAgnieszka PopielewiczKrzysztof IbiszEntertainmentStanisław Karpiel-BułeckaFuture FolkMarek KaliszukTomasz SzczepaniakPiotr CugowskiVenueMunicipal Sports and Recreation Center (MOSIR), Krynica-ZdrójBroadcasterPolsatEntrants25Placements10WinnerEwa Mielnicka Masovia← 20132015 → Miss Polski 2014 was the 25th Miss Polski pageant, held on...

 MR9 Stasiun Monorel Medan TuankuStasiun Monorel Rute KL Sentral-TitiwangsaBagian luar stasiun Medan Tuanku dilihat dari tenggara.LokasiJalan Sultan Ismail, Medan Tuanku, Kuala Lumpur, Malaysia.Koordinat3°9′33″N 101°41′55″E / 3.15917°N 101.69861°E / 3.15917; 101.69861PemilikKL Infrastructure Group Limited (KL Infra)JalurKuala Lumpur Monorail (2003 hingga sekarang)Jumlah peron2 peron sisiJumlah jalur2KonstruksiParkirTidak adaSejarahDibuka31 Agustus...

 

1995 filmPostmanTraditional Chinese郵差Simplified Chinese邮差Hanyu PinyinYóuchāi Directed byHe JianjunWritten byHe JianjunYou NiProduced byTian YanShu KeiStarringFeng YuanzhengLiang DanniPu QuanxinHuang XingCinematographyWu DiEdited byLiu XiaojingMusic byOtomo YoshihideRelease date March 21, 1995 (1995-03-21) (United States) Running time102 minutesLanguageMandarin Postman (Original title: Yóuchāi) is a 1995 Chinese Mandarin drama film directed by He Jianjun and...

 
Kembali kehalaman sebelumnya