Do-while文

do-while文 (: do-while statement) は、C言語および類似のプログラミング言語において繰り返し(ループ)の制御構造を記述するための (statement) のひとつである。C言語の規格では「do文」と呼ばれる[1]。ループ本体 (loop body) [2]の処理を一度実行した後、さらに継続条件として指定された(制御式)を評価した値が真である間、ループ本体を繰り返し実行する。while文との違いは、ループに入る前の条件の評価が無く最初に必ず1回はループ本体が実行されることである。

なお、C言語およびC++ではゼロに等しい値を偽、ゼロ以外を真とみなす。したがって、整数型だけでなく、任意のポインタ型や浮動小数点数型の式も制御式として記述可能である[注釈 1]。C/C++以外のブーリアン型をサポートするほとんどの言語では通例、制御式にはブーリアン型の式のみを記述できる。

構文

C言語および類似の言語では以下のような構文である。

do
     /* ここの部分を「ループ本体」と呼ぶ */
while (条件);

このループの実行は、次のような手順となる。

  1. 「文」を実行する。
  2. 「条件」を評価する。
  3. 「条件」がならば、手順の最初に戻る。「条件」がならば、ループを終了する。

「条件」がはじめから偽の場合も、「文」は一度実行される。

ループ本体が複数の文からなる場合、ブロック(複文)を使う。

do {
    ...
} while (条件);

C言語のプログラム例:

int x = 0;
do {
    x += 1;
} while (x < 3);

この例では、最初に x += 1 を実行し x == 1 となる。次に条件の x < 3 をチェックする。条件は真であり、コードブロックを再度実行する。変数 x がループ脱出条件に合致する(x >= 3 になる)まで、コードの実行と条件のチェックを繰り返す。

C言語に似ていない言語では、異なった構文で同様の機能を持つものもある(while文の記事も参照)。例えばPascalでは、"repeat-until" 文である。ただし、制御式として継続条件ではなく終了条件(真のときループを終了)を記述する。

なお、Fortran (Fortran 90以降) にもdo-while文はあるが、これはC言語のwhile文と同等であり、制御式を前置する。以下の例では、ループ本体は一度も実行されない。

program TEST
    integer x
    data x /0/
    do while (x > 0)
        print *, x
        x = x - 1
    end do
    print "('Finished. x = ', i0)", x
end

分岐文

while文と同様、do-while文においてもbreak文などの分岐文を使用できる。なお、continue文はループの途中から、ループ本体の最後に飛び[3]、do-while文の場合には条件の評価となる。

以下の、各言語によるdo-while文あるいは同様の制御を利用したプログラムは、与えられた数の階乗を計算する。

Ada

Adaの例。

with Ada.Integer_Text_IO;

procedure Factorial is
   Counter   : Integer := 5;
   Factorial : Integer := 1;
begin
   loop
      Factorial := Factorial * Counter;
      Counter   := Counter - 1;
      exit when Counter = 0;
   end loop;

   Ada.Integer_Text_IO.Put(Factorial);
end Main;

Visual Basic .NET

Visual Basic .NETの例。

Dim counter As UInteger = 5
Dim factorial as ULong = 1
Do
  factorial *= counter ' multiply
  counter -= 1 ' decrement
Loop While counter > 0
System.Console.WriteLine(factorial)

C言語とC++

C言語C++の例。

unsigned int counter = 5;
unsigned long factorial = 1;
do {
  factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
printf("%lu\n", factorial);

C#

C#の例。

uint counter = 5;
ulong factorial = 1;
do
{
    factorial *= counter--;
}
while (counter > 0);
System.Console.WriteLine(factorial);

D言語

D言語の例。

uint counter = 5;
ulong factorial = 1;
do {
    factorial *= counter--;
} while (counter > 0);
writeln(factorial);

Java

Javaの例。

int counter = 5;
long factorial = 1;
do {
  factorial *= counter--; // Multiply, then decrement.
} while (counter > 0);
System.out.println(factorial);

Pascal

Pascalの例。

program FactorialProgram;
var
  counter, factorial: Integer;
begin
  counter := 5;
  factorial := 1;

  repeat
    factorial := factorial * counter;
    counter := counter - 1;
  until counter = 0;

  Write(factorial);
end.

C/C++のマクロにおける利用

C/C++におけるdo-while文の特殊な用法に、最後にセミコロンが付く構文であることを利用し、展開結果にブロックを含むマクロの呼び出しを関数のように見えるものにする、というイディオムがある。

/* 2つの値 x, y を入れ替えるマクロ。 */
#define SWAP(x, y, tmp) do { (tmp) = (x); (x) = (y); (y) = (tmp); } while (0)

/* 以下のように書いてしまうと、セミコロンを付けた場合にコンパイルが通らなくなるケースがある。 */
/*
#define SWAP(x, y, tmp) { (tmp) = (x); (x) = (y); (y) = (tmp); }
*/

void some_function()
{
    int x, y, tmp;
...
    if (x > y)
        SWAP(x, y, tmp);
    else
        puts("Not swapped.");
...
}

これを利用することで、「セミコロンを付けてはいけないマクロ」という、扱いが面倒なものを作らずにすむ[4]

脚注

注釈

  1. ^ C言語では論理演算の結果の型はintである。C99規格よりも前のC言語にはブーリアン型は無かったからである。一方、C++では論理演算の結果の型はboolである。しかしC言語との互換性維持のため、制御式にはbool以外の型の式も使えるようになっている。

出典

  1. ^ JIS X 3010:2003「プログラム言語C」§6.8.5.2「do文」
  2. ^ JIS X 3010:2003「プログラム言語C」§6.8.5「繰返し文」
  3. ^ JIS X 3010:2003「プログラム言語C」§6.8.6.2「continue文」
  4. ^ PRE10-C. 複数の文からなるマクロは do-while ループで包む

関連項目

外部リンク

Read other articles:

For other uses, see Ichhapur (disambiguation). Census Town in West Bengal, IndiaIchhapurCensus TownIchhapurLocation in West Bengal, IndiaShow map of West BengalIchhapurIchhapur (India)Show map of IndiaCoordinates: 23°36′43″N 87°16′29″E / 23.611806°N 87.274611°E / 23.611806; 87.274611Country IndiaStateWest BengalDistrictPaschim BardhamanPopulation (2011) • Total5,795Languages* • OfficialBengali, Hindi, EnglishTime zoneUTC+5:...

 

Untuk kegunaan lain, lihat Get Married (disambiguasi). Get Married 2Sutradara Hanung Bramantyo Produser Chand Parwez Servia Ditulis oleh Cassandra Massardi PemeranNirina ZubirNino FernandezAmingRinggo Agus RahmanDeddy Mahendra DestaJaja MihardjaMeriam BellinaIra WibowoMarissa NasutionHengky SolaimanRuhut SitompulPenata musikSlankSinematograferFaozan RizalPenyuntingCesa David LuckmansyahDistributorKharisma StarVision PlusTanggal rilisNegara Indonesia Bahasa Indonesia PrekuelGet MarriedSe...

 

Patung Marguerite di atas makamnya di Nantes Marguerite dari Foix, (sekitar 1453 [1] – 15 Mei 1486, Nantes), merupakan, melalui pernikahannya menjadi adipati Bretagne dari tahun 1474 sampai 1486. Ia adalah putri Ratu Leonor dari Navarra (1425-1479) dan Gaston IV dari Foix (1425-1472). Pada tanggal 27 Juni 1474, di Clisson, ia menikah dengan Frañsez II dari Bretagne (1435-1488), putra Richard d'Étampes (1395-1438), Comte Étampes (1421-1438), dan Margaret d'Orléans (1406-1466), Co...

De Dion-Bouton Logo Rechtsform Société Gründung 1882 Auflösung 1956 Sitz Puteaux, Frankreich Branche Automobilindustrie Aktie des Unternehmens von 1930 De Dion-Bouton war ein französischer Industriebetrieb, der hauptsächlich als Fahrzeughersteller aktiv war. Zu Beginn des 20. Jahrhunderts war De Dion-Bouton der größte Automobilhersteller der Welt und Weltmarktführer für Verbrennungsmotoren. Inhaltsverzeichnis 1 Vorgeschichte 2 Unternehmensgeschichte 2.1 Trépardoux et Cie, ingénieu...

 

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: Refrigerated container – news · newspapers · books · scholar · JSTOR (December 2009) (Learn how and when to remove this template message) A Maersk Line reefer container on a semi-trailer truck Containers loaded on a container ship with the refrigeration units v...

 

Shire of Busselton Local Government Area van Australië Locatie van Shire of Busselton in West-Australië Situering Staat West-Australië Hoofdplaats Busselton Algemene informatie Oppervlakte 1454,8 km² Inwoners 27.500 (juni 2007)[1] Overig Wards 6 Portaal    Australië Shire of Busselton was een Local Government Area (LGA) in Australië in de staat West-Australië. Shire of Busselton telde 27.500 inwoners in 2007. De hoofdplaats was Busselton. Op 21 januari 2012 werd de Sh...

River-class torpedo-boat destroyer of the Royal Australian Navy For other ships with the same name, see HMAS Swan. HMAS Swan during World War I (1914–1918) History Australia NamesakeSwan River BuilderCockatoo Docks and Engineering Company at Sydney Laid down22 January 1913 Launched11 December 1915 Commissioned16 August 1916 Decommissioned15 May 1928 Honours andawards Battle honour: Adriatic 1917–18 FateSunk under tow in 1934 General characteristics Class and typeRiver-class torpedo-boat d...

 

هذه مقالة غير مراجعة. ينبغي أن يزال هذا القالب بعد أن يراجعها محرر مغاير للذي أنشأها؛ إذا لزم الأمر فيجب أن توسم المقالة بقوالب الصيانة المناسبة. يمكن أيضاً تقديم طلب لمراجعة المقالة في الصفحة المخصصة لذلك. (أغسطس 2023) الحصاة القصوى مركز موقع محافظة الرين تقسيم إداري  قائم...

 

Radio Rebel Título Radio Rebelde (España)Ficha técnicaDirección Peter HowittProducción Kim ArnottGuion Erik PattersonJessica ScottBasada en novela Shrinking Violet de Danielle JosephMúsica James JandrischFotografía Kamal DerkaouiMontaje Richard SchwadelProtagonistas Debby RyanAdam DiMarco Ver todos los créditos (IMDb)Datos y cifrasPaís  Estados UnidosAño 2012Estreno 17 de febrero de 2012Género Drama y cine adolescenteDuración 89 minutosIdioma(s) InglésCompañíasProductora M...

41°43′55″N 49°56′45″W / 41.73194°N 49.94583°W / 41.73194; -49.94583  «تيتانيك» تُحوِّل إلى هنا. للمقالة عن حادثة غرق تيتانيك، طالع غرق آر إم إس تيتانيك. لthe film by James Cameron، طالع Titanic (1997 film). لother uses، طالع تيتانيك (توضيح).  ميّز عن تيتانيك (فيلم 1997) وتيتانيك (توضيح). آر إم إس تيتانيك ...

 

Палата представників СШАангл. The United States House of Representatives     Загальна інформація: Юрисдикція:  США Тип: двопалатний парламент Палати: нижня палата Дата заснування: 1 квітня 1789 Адреса: Адреса: Капітолій. Вашингтон, округ Колумбія. Офіційний вебсайт: www.house.gov Вікісховище м...

 

Édouard Thouvenel (1818-1866). Édouard Antoine de Thouvenel (11 November 1818, Verdun, Meuse – 18 October 1866) was ambassador to the Ottoman Empire from 1855 to 1860, and French Minister of Foreign Affairs from 1860 to 1862.[1][2] Career After studying law and travelling throughout Europe, in 1840 Thouvenel published an account of his travels which first appeared in the Revue des Deux Mondes (la Hongrie et la Valachie. Souvenirs de voyages et notices historiques).[3&#...

Keuskupan AlmeríaDioecesis AlmeriensisDiócesis de AlmeríaKatedral AlmeríaLokasiNegara SpanyolProvinsi gerejawiGranadaMetropolitGranadaStatistikLuas8.774 km2 (3.388 sq mi)Populasi- Total- Katolik(per 2006)702.819604,424 (86%)Paroki213InformasiRitusRitus LatinPendirian21 Mei 1492KatedralKatedral Bunda dari Dukacita di AlmeríaKepemimpinan kiniPausFransiskusUskupAdolfo González MontesUskup agungFrancisco Javier Martínez FernándezSitus webSitus Web K...

 

1999 studio album by NasI Am...Studio album by NasReleasedApril 6, 1999 (1999-04-06)Recorded1998–1999GenreHip hopLength64:54LabelColumbiaProducerL.E.S.DJ PremierTrackmastersTimbalandAlvin WestDame GreaseNashiem MyrickCarlos Six July BroadyNas chronology The Album(1997) I Am...(1999) Nastradamus(1999) Singles from I Am... Nas Is LikeReleased: March 2, 1999[1] Hate Me NowReleased: April 6, 1999 I Am... is the third studio album by American rapper Nas, released o...

 

Priests in Zoroastrianism For other uses, see Magi (disambiguation). Magus redirects here. For other uses, see Magus (disambiguation). Zoroastrian priests (Magi) carrying barsoms. Statuettes from the Oxus Treasure of the Achaemenid Empire, 4th century BC Magi (/ˈmeɪdʒaɪ/; singular magus /ˈmeɪɡəs/; from Latin magus, cf. Persian: مغ pronounced [moɣ]) are priests in Zoroastrianism and the earlier religions of the western Iranians. The earliest known use of the word magi is in ...

Suède au Concours Eurovision Pays  Suède Radiodiffuseur Sveriges Radiotjänst (1958) Sveriges Radio (1959 à 1979) Sveriges Television (1980-) Émission de présélection Melodifestivalen Participations 1re participation Eurovision 1958 Participations 62 (en 2023) Meilleure place 1er (en 1974, 1984, 1991, 1999, 2012, 2015, 2023) Moins bonne place Dernier (en 1963 et 1977) Liens externes Page officielle du diffuseur Page sur Eurovision.tv Pour la participation la plus récente, voir...

 

2023 Indian filmMusandiTheatrical release posterDirected byShhivaji DoltadeWritten byGovardhan DoltadeProduced byGovardhan DoltadeKartik DoltadeStarringRohan PatilGayatri JadhavSuresh WishwakarmaCinematographyM B AllikattiMusic bySachin AwaghadeProductioncompanySonai Films CreationRelease date9 June 2023CountryIndiaLanguageMarathi Musandi is a 2023 Marathi-language romantic drama film was released on June 9, 2023. The film is directed by Shhivaji Doltade and produced by Govardhan Doltade. The...

 

1945 film by Gregory Ratoff Paris UndergroundDirected byGregory RatoffWritten byBoris IngsterGertrude PurcellProduced byConstance BennettStarringConstance BennettGracie FieldsCinematographyLee GarmesEdward CronjagerEdited byJames E. NewcomMusic byAlexander TansmanProductioncompanyConstance Bennett ProductionsDistributed byUnited ArtistsRelease date October 19, 1945 (1945-10-19) Running time97 minutesCountryUnited StatesLanguageEnglishBudget$1 million[1] Paris Undergroun...

1991 film by Terry Gilliam This article is about the film. For the figure in Arthurian legend, see Fisher King. The Fisher KingTheatrical release posterDirected byTerry GilliamWritten byRichard LaGraveneseProduced byDebra HillLynda ObstStarring Robin Williams Jeff Bridges Amanda Plummer Mercedes Ruehl CinematographyRoger PrattEdited byLesley WalkerMusic byGeorge FentonProductioncompanyHill/Obst ProductionsDistributed byTri-Star Pictures[1]Release date September 20, 1991 ...

 

Sex toy, often phallic Artificial penis redirects here. For the construction or reconstruction of a penis, see Phalloplasty. For other uses, see Dildo (disambiguation). A 5.5-inch (14 cm) clear thermoplastic elastomer (jelly) dildo A dildo is a sex toy, often explicitly phallic in appearance, intended for sexual penetration or other sexual activity during masturbation or with sex partners. Dildos can be made from a number of materials and shaped like an erect human penis. They are typica...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!