Program WHILE to jedno z narzędzi teorii obliczalności służące do ustanowienia, czy dana funkcja jest obliczalna.

Cechy

edytuj
  • Klasa funkcji obliczalnych za pomocą WHILE odpowiada klasie funkcji obliczalnych za pomocą maszyny Turinga lub programów GOTO.
  • Programy WHILE bazują syntaktycznie i semantycznie, z wyjątkiem pętli WHILE, na programach LOOP.

Formalna definicja

edytuj

Składnia

edytuj

Programy WHILE składają się z symboli: WHILE, DO, END, +, -, :=, ;, oraz dowolnej liczby zmiennych i stałych, przy czym stałe są elementami zbioru liczb naturalnych.

Program P jest syntaktycznie zdefiniowany w notacji BNF jako:

gdzie:

  • jest stałą,
  • są zmiennymi
  • to programy WHILE

Semantyka

edytuj

Wszystkie użyte w danym programie zmienne zostają zainicjalizowane przed wykonaniem programu. Zmienne nie zainicjalizowane bezpośrednio otrzymują domyślną wartość 0.

Wyrażenie postaci

xi := xj + c

oznacza przyznanie zmiennej wartości otrzymanej poprzez dodanie zmiennej i stałej Specjalnym przypadkiem jest tutaj sytuacja, gdzie wartość stałej jest równa zeru. Wtedy wartość zmiennej zostaje bezpośrednio przyznana zmiennej

xi := xj + 0

Wyrażenie postaci

xi := xj – c

oznacza przyznanie zmiennej wartości otrzymanej poprzez odjęcie stałej od zmiennej w przypadku gdy wartość stałej jest wyższa niż wartość zmiennej wynikiem odejmowania jest 0.

Kompozycja dwóch programów WHILE ma postać

 

i oznacza, że program zostanie wykonany przed programem

Pętla WHILE ma postać

WHILE  DO  END

przy czym liczba przebiegów programu, w przeciwieństwie do programów LOOP, nie jest z góry ustalona w zmiennej lecz może ulegać zmianom dynamicznie podczas wykonywania programu.

Przykładowa implementacja

edytuj

Dodawanie

edytuj

Następujący program WHILE przyznaje zmiennej x0 sumę zmiennych x1 i x2:

x0 := x1 + 0;
y := x2 + 0;
WHILE  DO
        = 
        =  + 1
END

Symulacja pętli WHILE za pomocą programu GOTO

edytuj

Pętlę postaci

WHILE x  0 DO P END

można przedstawić za pomocą następującego programu GOTO:

M1: IF x = 0 THEN GOTO M2;
    P;
    GOTO M1;
M2: ...

gdzie instrukcje za znacznikiem M2 są dowolne.

Zobacz też

edytuj

Bibliografia

edytuj
  • Uwe Schöning: Theoretische Informatik – kurzgefasst. Spektrum Akademischer Verlag. ISBN 3-8274-1099-1.

📚 Artikel Terkait di Wikipedia

Program GOTO

maszyny Turinga lub programów WHILE. Program GOTO, podobnie jak program WHILE, może popaść w pętlę nieskończoną. Za pomocą programu GOTO dają się przedstawić

Program LOOP

Każdy program LOOP postaci LOOP x {\displaystyle x} DO P {\displaystyle P} END może zostać zastąpiony odpowiednim programem WHILE: y := x + 0; WHILE y {\displaystyle

Kapitan Nemo (wokalista)

przyjęty pozytywnie, jak poprzedni, a także jego angielska wersja, In a Little While. Obie płyty wydała wytwórnia Polskie Nagrania „Muza”. Na listach przebojów

Spaghetti code

bloków są obsługiwane przez zaimplementowane konstrukcje (np. for, while, do while czy if else). Eric S.: The New Hacker's Dictionary, third edition.

Ocamlyacc

IF ELSE WHILE %token SEMI %token EOF %token PRINT %token EQ %token PROC CALL GET %start program %type <Program.stree list> program %% program: decls_and_stmts

Zmienna ulotna

zmienną foo na 0 i wykonuje pętlę while dopóki foo nie jest równe 255: static int foo; void var(void) { foo = 0; while (foo != 255){ /* ... */ } } Kompilator

The Osbournes

2010 [dostęp 2025-09-24] . RickR. Fulton RickR., I was stoned every day while filming The Osbournes, admits Ozzy Osbourne [online], Daily Record, 1 lipca

Pascal (język programowania)

edukacyjnym. begin writeln('Hello World'); end. Program oblicza n–ty wyraz ciągu Fibonacciego. program fibonacci; var i, liczba: word; a, b, c: longint;