• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Szczególna wersja pętli dopóki(while)

Object Storage Arubacloud
0 głosów
330 wizyt
pytanie zadane 4 kwietnia 2023 w Algorytmy przez maxkolanko1998 Gaduła (3,230 p.)
zmienione kategorie 4 kwietnia 2023 przez ScriptyChris
Robię jakby wstęp do strukturalnego programowania ćwicząc różne scenariusze na schematach blokowych. I mam do czynienia z czymś co nazywa się szczególna wersja pętli dopóki. Jest coś takiego w programowaniu?

5 odpowiedzi

+1 głos
odpowiedź 4 kwietnia 2023 przez kozacko Obywatel (1,580 p.)
wybrane 4 kwietnia 2023 przez maxkolanko1998
 
Najlepsza

Cześć,

Szczególna wersją pętli while możemy nazwać " do- while", która jest podobna do pętli while, ale wykona się co najmniej raz, niezależnie od tego, czy warunek jest prawdziwy czy fałszywy na początku.

 

Łap prosty przykład w C++

 

int x = 1;
do {
  cout << "Wartość x wynosi: " << x << endl;
  x++;
} while (x <= 5);

Tutaj pętla wykonuje się przynajmniej raz, ponieważ warunek x <= 5 nie jest sprawdzany przed pierwszym wykonaniem pętli. W każdym kolejnym wykonaniu, warunek jest sprawdzany i pętla wykonuje się tylko wtedy, gdy warunek jest prawdziwy. W tym przypadku pętla wyświetla wartość zmiennej x i zwiększa ją o 1, aż osiągnie wartość 6, która przerywa pętlę.

 

+1 głos
odpowiedź 4 kwietnia 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
Jeśli chodzi o c++, to może for?

for (int i =0; i < n; ++i)

1* deklarujesz zmienną pomocniczą i, 2* jakiś warunek dopóki (czyli środkowy) 3* co robisz po każdym obiegu pętli.

Co ciekawe warunek dopóki robisz, albo co zwiększasz nie musi być związany z zmienną pomocniczą.

Zmiennej pomocniczej też nie musisz deklarować ( for(;n < m; ++abc), tylko musisz zostawić średnik,n,m,abc to jakieś zmienne globalne). To się stosunkowo często przydaje np jak się pisze algorytm na cykl / ściężkę Eulera, to można robić coś takiego: (; ile[v] < x; ++ile[v]), gdzie ile to jakaś tablica, a X, to jakaś inna zmienna.

Można zamiast ++i pisać i++, kiedyś się zastanawiałem co lepsze, i nowoczesne kompilatory przyśpieszają i++ do ++i(które bez przyśpieszenia robi się delikatnie szybciej)
+1 głos
odpowiedź 4 kwietnia 2023 przez LinosiK Obywatel (1,920 p.)

Jest w programowaniu coś takiego jak pętla While, określamy warunek pętli dzięki, któremu będzie się wykonywała tak długo, dopóki nie spełni się jej warunek.

 

Tak wygląda zapis pętli While:

while(warunek){
  instrukcje do wykonania
}

możemy też używać pętli do ... while, pętla ta różni się od poprzedniej tym, że zawsze wykona się przynajmniej raz, ponieważ jej warunek sprawdzany jest dopiero na końcu po wykonaniu się pętli.

do{
  instrukcje do wykonania
}
while(warunek);

 

0 głosów
odpowiedź 5 kwietnia 2023 przez maxkolanko1998 Gaduła (3,230 p.)

Przepraszam, a jeśli miałbym to przenieść na grunt schematów blokowych. Trochę się uczę strukturalizacji schematów blokowych jako wstęp do programowania struktualnego. Za pomocą struktualizacji schematów blokowych mogę zapisać instrukcje programowania takie jak (if, if else, while, do while) w taki sposób jak za pomocą języka programowania. To powyższe pytanie zadałem właśnie w kontekście tych strukturalnych schematów blokowych. Tak np. wygląda strukturalna pętla do..while

a tak pętla while:

a tu schemat blokowy, który jest jakby połączeniem tych dwóch pętli

i ten schemat nazywa się schematem blokowym niestrukturalnego zachodzenia pętli i w konsekwencji prowadzi do takiego schematu

nazywanego strukturalnym rodzieleniem zachodzących pętli lub inaczej(szczególna wersja pętli dopóki(while)). Czy ten powyższy schemat blokowy nazywany szczególnyą wersją pętli while może byc wyrażony w formie kodu jaki tu został przez was podany czyli:

do{
  instrukcje do wykonania
}
while(warunek);

bo mam też podany pseudokod do tej szczególnej wersji pętli while, który wygląda tak:

blok pierwszy;
while warunek do
    blok drugi;
    blok pierwszy;
    od;

Innymi słowy czy to:

do{
  instrukcje do wykonania
}
while(warunek);

to to samo co to:

blok pierwszy;
while warunek do
    blok drugi;
    blok pierwszy;
    od;
komentarz 5 kwietnia 2023 przez Oscar Nałogowiec (29,320 p.)
To co narysowałeś jest najbliższe pętli for.
0 głosów
odpowiedź 5 kwietnia 2023 przez maxkolanko1998 Gaduła (3,230 p.)

Dobra to może inaczej. Dlaczego ten schemat

jest niestrukturalny. Jak to rozumieć? Przykład znalazłem w książce https://www.empik.com/wyklady-z-informatyki-wstep-do-informatyki-kawa-rafal-lembas-jacek,p1169734687,ebooki-i-mp3-p

1
komentarz 5 kwietnia 2023 przez TOWaD Mądrala (6,000 p.)

Schematy blokowe umożliwiają budowanie algorytmów niezgodnych z zasamami programowania sktrukturalnego (tzn. niestrukturalnych). Możliwe jest przykładowo przejście pomiędzy oddalonymi obszarami algorytmu

online

#include <iostream>

using namespace std;

int main()
{
    int i=0;
    pentlaGoto: cout<<"blok 1: i="<<i<<'\n';
    if(i++<5){
      cout<<"blok 2: i="<<i<<'\n';
      goto pentlaGoto;
    }
    cout<<endl;
    return 0;
}

Takie wyszukanie w Google

komentarz 5 kwietnia 2023 przez maxkolanko1998 Gaduła (3,230 p.)
dobra dzięki

Podobne pytania

0 głosów
2 odpowiedzi 439 wizyt
0 głosów
1 odpowiedź 540 wizyt
+1 głos
1 odpowiedź 360 wizyt
pytanie zadane 5 stycznia 2021 w Algorytmy przez monia79wawa Nowicjusz (190 p.)

92,669 zapytań

141,567 odpowiedzi

320,033 komentarzy

62,034 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...