• §9 Instrukcja pętli z parametrem for. zakres oparty na pętli for

    Operator pętli z parametrem stosuje się właśnie w takich przypadkach, gdy konieczne jest zorganizowanie pętli o zadanej liczbie powtórzeń

    Do <параметр_цикла>:=<начальное_знач> Do <конечное_знач> Do <оператор>;

    Do <параметр_цикла>:=<конечное_знач> aż do <начальное_зна.> Do <оператор>;

    Instrukcja będąca ciałem pętli może być prosta lub złożona.

    Parametr pętli, jak również zakres jego zmiany, może być wyłącznie typu całkowitego lub wyliczeniowego.

    Parametr opisywany jest łącznie z innymi zmiennymi.

    Krok pętli for jest zawsze stały i równy „1” lub „-1”.

    Wyświetl pierwsze dziesięć dodatnich liczb całkowitych

    var i: liczba całkowita; //wprowadzono licznik

    fori:=1to10do//podczas gdy wartość licznika wynosi od 1 do 10, wykonaj następujące czynności

    napiszln(i); //wyjście wartości licznika

    zmienna,suma:liczba całkowita;

    suma:=0; //zerowanie wartości zmiennej

    fori:=10to99do//wyliczenie dwucyfrowych liczb dodatnich

    jeśli mod 3 = 0, to //wielokrotność 3

    suma:=suma+i; //suma poprzedniej wartości zmiennej i liczby odpowiadającej warunkowi

    Wyświetl iloczyn pierwszych dziesięciu dodatnich liczb parzystych

    zmienna,pr:liczba całkowita;

    pr:=1; //przy znalezieniu produktu początkowa wartość zmiennej nie wynosi 0, ale 1

    dla i:=1 do 10 zrobić

    jeśli mod 2=0, to //określ parzystość

    Mając dwie liczby całkowite A i B (A< B). Вывести в порядке возрастания все целые числа, расположенные между A и B (в том числе A и B), a также количество N этих чисел .

    var i,pr: liczba całkowita;

    k:=0; //zero wartości zmiennej, czyli liczby

    fori:=AtoBdo//wyliczenie liczb z podanego zakresu

    napiszln(i); //wyjście w kolejności rosnącej

    k:=k+1; // zliczanie liczb

    writeln(k); //wyjście kwoty następuje poza pętlą, ponieważ wydany raz

    Wprowadź N różnych liczb. Znajdź średnią arytmetyczną wszystkich liczb.

    Varn,i,a:liczba całkowita;

    Dla i:=1 do N wykonaj

    Writeln("średnia arytmetyczna= ",s/n:4:2);

    Instrukcja pętli z while... Wykonaj warunek wstępny

    Instrukcja while...do służy do implementowania pętli z warunkiem wstępnym.

    Przed rozpoczęciem każdego kroku sprawdzany jest stan treści pętli while. Dlatego też, jeśli warunek nie zostanie natychmiast spełniony, treść pętli jest ignorowana, a sterowanie przekazywane jest operatorowi bezpośrednio po treści pętli.

    Kontakt z operatorempodczas gdy... zrób to tłumaczy się jako „cześć… do zrobienia” i wygląda tak:

    chwila <условие> Do <оператор>

    Z pętli while wynika następujący algorytm: gdy warunek jest spełniony, wykonywane są instrukcje treści pętli.

    Sam warunek może być stałą boolowską, zmienną lub wyrażeniem boolowskim.

    Podczas pisania pętli z warunkiem wstępnym należy pamiętać o następujących kwestiach.

      aby pętla kiedykolwiek miała szansę się zakończyć, zawartość jej treści musi koniecznie wpływać na stan pętli.

      warunek musi składać się z prawidłowych wyrażeń i wartości zdefiniowanych przed pierwszym wykonaniem treści pętli.

    Jeśli warunek pętli jest fałszywy, pętla nigdy nie zostanie wykonana!

    wyrażenie1 i w wyrażenie2- wartość początkowa i końcowa parametru cyklu.

    Akcja operatora pętli typu to (zliczanie bezpośrednie):

    2. Sprawdzany jest warunek: czy wartość zmiennej jest większa od wartości wyrażenia2?

    3. jeśli tak, cykl się zatrzymuje; jeśli nie, to instrukcja jest wykonywana, wartość zmiennej zwiększa się o jeden, po czym czynność się powtarza, zaczynając od punktu 2.

    Akcja operatora pętli typu downto (odliczanie):

    1. zmiennej przypisuje się wartość wyrażenia1;

    2. Sprawdzany jest warunek: czy wartość zmiennej jest mniejsza od wartości wyrażenia2?

    3. jeśli tak, cykl się zatrzymuje; jeżeli nie, to instrukcja jest wykonywana, wartość zmiennej zmniejsza się o jeden, po czym czynność się powtarza, zaczynając od punktu 2.

    Zasady:

    1. Parametr pętli może być tylko zmienną całkowitą.

    2. Parametr cyklu nie można jawnie zmienić w treści pętli.

    Na przykład:

    dla i:=1 do 10 zrobić

    ja:=i+1; (zło)

    3. Krok pętli może wynosić tylko +1 (pętla z to) lub -1 (pętla z downto).

    4. Zgodnie z ogólnym poglądem ciało pętli powinno składać się z jednego operatora, jeżeli operatorów jest kilka stosujemy operator złożony i operator zaczyna się od nawiasu..end;.

    5. Pętla nie może zostać wykonana ani razu.

    Ćwiczenia: Napisz schemat blokowy i program obliczający średnią wartość n liczb wprowadzonych z klawiatury.

    var i,n: liczba całkowita; x, s: rzeczywiste;

    write('Wpisz liczbę cyfr');

    dla i:=1 do n wykonaj

    write('Podaj numer numer',i);

    writeln('Średnia =',s/n);

    Instrukcja pętli z warunkiem wstępnym (while)

    instrukcja pętli while jest operatorem pętli z nieznaną wcześniej liczbą powtórzeń.

    Formularz ogólny:

    while wyrażenie logiczne do instrukcji;

    Wyrażenie logiczne jest warunkiem kontynuacji pętli.

    operator

    Działanie operatora:

    1. obliczane jest wyrażenie logiczne;

    2. jeżeli jest prawdziwy, to instrukcja jest wykonywana, po czym powtarzane są wszystkie czynności, zaczynając od punktu 1;

    3. jeśli wyrażenie logiczne jest fałszywe, pętla zostaje zakończona.

    Zasady:

    1. Treść cyklu powinna składać się tylko z jednej instrukcji, jeżeli jest ich kilka stosujemy instrukcję złożoną.

    2. Ponieważ warunek jest sprawdzany na początku pętli, pętla nie może zostać wykonana ani razu.

    3. Aby cykl nie stał się nieskończony, wartości zawarte w wyrażeniu logicznym muszą zmienić się w treści cyklu.

    Na przykład:

    podczas<100 do

    Ćwiczenia. Napisz schemat blokowy oraz program obliczający i wyświetlający tabelę wartości funkcji.

    var x,xn,xk,y,h: rzeczywiste;

    writeln("Podaj wartość początkową, końcową x i zmień krok x");

    writeln("| x | y |");

    podczas gdy x<=xk do

    writeln("|",x:7:2,|",y:7:2,"|");

    Operator pętli z warunkiem końcowym (powtarzanie pętli..until).

    operator pętli powtórz..aż jest instrukcją pętli z określoną liczbą powtórzeń.

    Formularz ogólny:

    operatorzy;

    aż do wyrażenia logicznego;


    Akcja operatora pętli powtarzaj..aż do:

    Instrukcje w treści pętli są wykonywane tak długo, jak wartość wyrażenia logicznego jest FALSE; gdy tylko wyrażenie logiczne osiągnie wartość TRUE, wykonywanie instrukcji pętli zostanie zatrzymane.

    Zasady:

    1. Treść pętli jest zawsze wykonywana co najmniej raz, ponieważ warunek znajduje się na końcu pętli.

    2. W tej instrukcji pętli nie ma potrzeby stosowania instrukcji złożonej, wszystkie instrukcje w treści pętli ograniczają się do słów kluczowych powtarzaj..until.

    Ćwiczenia. Napisz schemat blokowy i program do obliczeń .

    program rep_unt;

    varn,k,s: liczba całkowita;

    write("Wpisz k");

    write("Suma równa ",s);

    Tablice danych

    szyk to zbiór uporządkowanych danych, które mają tę samą nazwę i typ oraz różnią się między sobą liczbą (indeksem). Tablice są jednowymiarowe i wielowymiarowe. Przykłady tablic:

    2 5 –15 10 20 – tablica typu integer składająca się z 6 elementów;

    2,3 9 2,45 4,78 5,32 – tablica typu rzeczywistego z 5 elementami;

    Iwanow Iwan Iwanowicz - tablica znaków złożona z 20 elementów;

    Ogólny widok opisu tablic jednowymiarowych:

    var nazwa tablicy: tablica[wartość początkowa indeksu.. wartość końcowa indeksu] typu;

    Gdzie początkowa wartość indeksu I wartość końcowa indeksu- wartości całkowite określające zakres indeksu tablicy.

    Na przykład:

    wektor var: tablica liczb rzeczywistych;

    Ogólny opis tablic wielowymiarowych:

    var nazwa tablicy: tablica[wartość początkowa indeksu.. wartość końcowa indeksu, ... , ...] z<тип>;

    Na przykład:

    varmatrix: tablica liczb całkowitych; - opis macierzy 3'5.

    Dostęp do elementów tablicy.

    Dostęp do elementów tablicy można uzyskać podając jej nazwę i podając w nawiasach kwadratowych (w tablicach wielowymiarowych oddzielonych przecinkami) wartości jej indeksu.

    Jako takie indeksy można używać wyłącznie stałych wartości całkowitych.

    Na przykład:

    a[i], b, v1, a

    BAZA DANYCH

    Koncepcja bazy danych

    Komputery zostały pierwotnie zaprojektowane do rozwiązywania problemów zadania obliczeniowe jednak z biegiem czasu zaczęto je coraz częściej wykorzystywać do budowy systemy przetwarzania dokumentów lub raczej informacje, które zawierają. Takie systemy nazywane są informacyjny. Przykładem są systemy rozliczanie wielkości pracy wykonanej w przedsiębiorstwie, lista płac, rozliczanie produktów znajdujących się na magazynie, księgi rachunkowe w bibliotece itp.

    Tego rodzaju System informacyjny wymaga utworzenia w pamięci komputera aktualizowane dynamicznie rozważany model Tematyka korzystanie z jednego repozytorium - Baza danych (DB). Tematyka - część realnego świata, którą należy zbadać w celu zorganizowania sterowania, a ostatecznie automatyzacji. Każdy Tematyka zawiera kombinację obiekty. Grupy tych obiekty, zjednoczeni przez niektórych funkcja grupowania, powszechnie tzw podmioty . Przykładowo, jeśli mówimy o rozliczaniu produktów w magazynie, to możemy wybrać podmioty „ produkt", "kupujący", "list przewozowy„. Obiektami będą ich konkretne reprezentacje, np. cukier, Spółka z ograniczoną odpowiedzialnością „Gefest”, faktura nr 252.

    Baza danych - to zbiór informacji o rzeczywistości obiekty, procesy Lub zjawiska związany z pewnym Tematyka, zorganizowane w sposób zapewniający wygodną reprezentację (dostęp, ekspozycję) tego zbioru, zarówno jako całości, jak i dowolnej jego części.

    Repozytoria informacji w Baza danych Czy stoły , z których każdy zawiera informacje o tym samym typie obiekty(łączny znak grupowania) formowanie istota. Każdy linia stoły zawiera informacje o jednym obiekt, instancja podmioty(Na przykład, dobra, kupujący, nad głową), A kolumny stoły zawierają różne cechy tych obiektów - atrybuty (Na przykład, nazwy produktów, nazwy kupujących I numery faktur).

    Jeśli chodzi o bazy danych linie nazywają się tabele dokumentacja , i jej kolumnypola . Wszystko dokumentacja mają tę samą strukturę - składają się z tego samego pola , które przechowują różne wartości atrybuty obiekt. Każdy pole rekordu zawiera jedną cechę obiekt i ma ściśle określony typ danych(np. ciąg tekstowy, liczba, data). Wszystkie rekordy w jednej tabeli mają takie same wartości pola, tylko zawierają różne wartości atrybuty.

    Przed wprowadzeniem danych stoły, należy ustalić Struktura te stoły. To jest opis rzeczy I typy pól oraz szereg innych cech (np. rozmiar pola, kryteria walidacji danych wejściowych). Przykład zdefiniowania struktury tabeli klientów pokazano na rysunku 8.1.

    Struktura tabeli „Klient”.

    Poza opisem Struktury tabele w dość skomplikowanym wydaniu Baza danych do ustalenia znajomości między stołami. Połączenie jest połączeniem dwóch stoły. Przykładowo informacje o kliencie z poprzedniej tabeli można uzupełnić kolejną tabelą „Wydanie towaru”

    Taki Baza danych zwany relacyjny(z relacja połączenie, związek). Relacyjna baza danych jest zbiorem wzajemnie powiązanych stoły, z których każdy zawiera informacje o obiekty pewien typ.

    Linki w relacyjne bazy danych są określane przez zbieżność wartości pola w różnych tabelach. Pola, za pomocą których ustanawiana jest relacja między tabelami, nazywane są pola komunikacyjne . W podanym przykładzie to pole"Imię kupującego".

    W zależności od rodzaju informacji zawartych w stoły baz danych, mogą istnieć trzy główne typy powiązań pomiędzy nimi: jeden za dużo, Jeden na jednego, wiele do wielu.

    Postawa jeden za dużo jest ustawiany pomiędzy tabelami w przypadku, gdy wprowadzono jeden rekord rodzicielski pomocniczy tabela. W powyższym przykładzie relacja tego typu została utworzona pomiędzy tabelami „Klient” i „Wydanie towaru”.

    Postawa Jeden na jednego następuje po jednym wejściu rodzicielski tabela odpowiada co najwyżej jednemu rekordowi w pomocniczy tabela.

    W przypadku związku wiele do wielu jeden wpis w rodzicielski Tabela może zawierać dowolną liczbę wpisów. pomocniczy stole i odwrotnie.

    Relacje stoły współdziałać według dom(gospodarz)- podrzędny(Szczegół). W naszym przykładzie tabela „Klient” − dom, oraz tabela „Towary wydane” - podrzędny. Dom stół jest również często nazywany rodzicielski, A podrzędnypomocniczy. To samo tabela Może główny w stosunku do jednego tabela bazy danych i pomocniczy w stosunku do drugiego.

    Systemy zarządzania bazami danych (DBMS). Klasyfikacja

    Używany do pracy z danymi systemy zarządzania bazami danych (DBMS). DBMS - są to narzędzia programowe przeznaczone do definiowania danych (opisywania struktury baz danych - tabele, relacje), przetwarzania i zarządzania danymi. Przykłady DBMS - FoxPro, Oracle, SQL-Server, Delphi, dBase, Clipper, MS Access itp.

    Istnieją trzy główne typy DBMS: uniwersalny cel przemysłowy, specjalnego przeznaczenia przemysłowego I opracowane pod konkretnego klienta (niestandardowe).

    Specjalistyczny system DBMS tworzone są z myślą o zarządzaniu bazami danych w konkretnym celu – księgowym, magazynowym, bankowym itp.

    UniwersalnyDBMS nie mają jasno określonego zakresu zastosowania, są przeznaczone „na każdą okazję”, przez co są dość skomplikowane i wymagają od użytkownika specjalnej wiedzy.

    w odróżnieniu przemysłowyDBMSniestandardowy w maksymalnym stopniu uwzględniają specyfikę pracy klienta (konkretnego przedsiębiorstwa), ich interfejs jest zazwyczaj intuicyjny dla użytkowników i nie wymaga od nich specjalnej wiedzy. Z drugiej strony, wyspecjalizowane I uniwersalnyprzemysłowyDBMS są stosunkowo tanie, wystarczająco niezawodne (debugowane) i gotowe do natychmiastowego działania, a jednocześnie niestandardowy system DBMS wymagają znacznych kosztów, a ich przygotowanie do eksploatacji i debugowanie zajmuje znaczny okres czasu (od kilku miesięcy do kilku lat).

    W zależności od lokalizacji DBMS, istnieją lokalny I Rozpowszechniane(klient-serwer) DBMS. Wszystkie części lokalny system DBMS hostowane na komputerze użytkownika bazy danych. Jeśli kilku użytkowników jednocześnie uzyskuje dostęp do tej samej bazy danych za pośrednictwem sieci komputerowej, każdy komputer użytkownika musi mieć własną kopię lokalnego systemu DBMS. Natomiast znaczna część oprogramowania i sprzętu rozproszony system zarządzania bazą danych scentralizowane i zlokalizowane na jednym wystarczająco wydajnym komputerze (serwer) podczas gdy komputery użytkowników przenoszą stosunkowo niewielką część systemu DBMS tzw klient. Lokalny Systemy DBMS mogą, ale nie muszą, korzystać z sieci, podczas gdy Rozpowszechniane DBMS musi działać śieć komputerowa.

    Należy pamiętać, że lokalizacja Baza danych nie wpływa w żaden sposób na specyfikę SZBD: w lokalny Sam DBMS Baza danych może znajdować się zarówno na komputerze użytkownika, jak i na zdalnym komputerze sieciowym (serwerze plików).

    Bezwarunkowa godność systemy klient-serwer jest możliwość scentralizowania kontrola dostępu Do Baza danych. W takich systemach Baza danych w dużej mierze chroniony zarówno przed przypadkowymi, jak i celowymi zniekształceniami, są łatwiejsze do wdrożenia uczciwość I spójność danych.

    DBMS jest niezbędnym komponentem System informacyjny. Aby tworzyć i zarządzać System informacyjny DBMS jest niezbędny w takim samym stopniu, w jakim jest konieczny tłumacz dla rozwoju programy NA język algorytmiczny.

    Główne funkcje realizowane przez SZBD:

    Zarządzanie danymi w pamięć zewnętrzna(na dyskach);

    Zarządzanie danymi w pamięć o dostępie swobodnym;

    - dziennikarstwo zmiany i odzyskiwanie bazy danych po niepowodzeniach;

    Utrzymanie języków bazy danych(język definicji danych - język SDL, język manipulacji danymi - język DML lub pojedynczy zintegrowany język zawierający wszystkie narzędzia niezbędne do pracy z bazą danych - język zapytań strukturalnych SQL).

    Pętla z parametrem ma następujący format:

    instrukcja for (inicjalizacja; wyrażenie; modyfikacje);

    Inicjalizacja służy do deklarowania i przypisywania wartości początkowych wartościom używanym w pętli. W tej części możesz napisać kilka instrukcji oddzielonych przecinkiem (operacja „wykonanie sekwencyjne”), na przykład tak:

    for (int i = 0, j = 2; ...

    dla (k=1, m=0; ...

    Zakres zmiennych zadeklarowanych w części inicjującej pętlę to pętla 1. Inicjalizacja wykonywana jest jednorazowo na początku wykonywania pętli.

    Wyrażenie definiuje warunek wykonania pętli: jeśli wynik rzutowany na bool ma wartość true, pętla jest wykonywana. Pętla z parametrem jest implementowana jako pętla z warunkiem wstępnym.

    Modyfikacje są wykonywane po każdej iteracji pętli i zwykle służą do zmiany parametrów pętli. W części modyfikacyjnej możesz wpisać kilka operatorów oddzielonych przecinkami. Proste lub złożone operator jest ciałem pętli. Dowolną część instrukcji for można pominąć (ale średniki należy pozostawić na miejscu!).

    Przykład (operator obliczający sumę liczb od 1 do 100):

    for (Int i = 1, s = 0; 1<=100; i++) s += i;

    Przykład (program wypisuje tabelę wartości funkcji y \u003d x 2 +1 w wprowadzonym zakresie):

    #włączać

    pływak Xn, Xk, Dx, X;

    printf("Podaj zakres i przyrost argumentu: ");

    scanf("%f%f%f", &Xn, &Xk, &Dx);

    printf("|X|Y|\n");

    dla (X = Xn; X<=Xk; X+=Dx)

    printf(" | %5.2f | %5.2f |\n", X*X + 1);

    Przykład (program znajduje wszystkie dzielniki liczby całkowitej dodatniej):

    #włączać int główna()(

    int liczba, połowa, div;

    cout<< “\n Введите число: "; cin >>liczba;

    for (half = liczba / 2, div = 2; div<= half; div++)

    if (!(num %div))cout<< div <<"\n";

    Ostatnie dwa przykłady wykonują te same działania, co przykłady dla pętli z warunkiem wstępnym, ale są napisane bardziej zwięźle i przejrzyście: wszystkie akcje związane ze sterowaniem pętlą są zlokalizowane w jej nagłówku.

    Dowolną pętlę while można rzutować na jej odpowiednik pętli for i odwrotnie, w następujący sposób:

    dla (b1: b2; b3) operatora b1;

    podczas gdy (b2)( instrukcja; b3;)

    Wspólny błędy przy programowaniu cykli - użycie niezainicjowanych zmiennych w treści pętli i nieprawidłowe wprowadzenie warunku wyjścia z pętli.

    q sprawdzić, czy wszystkim zmiennym znajdującym się po prawej stronie instrukcji przypisania w ciele pętli nie zostały już wcześniej przypisane wartości początkowe (oraz czy możliwe jest wykonanie innych instrukcji);


    q sprawdź, czy w pętli nie zmienia się choć jedna zmienna zawarta w warunku wyjścia z pętli;

    q zapewnić awaryjne wyjście z pętli po osiągnięciu określonej liczby iteracji;

    q i oczywiście nie zapominaj, że jeśli chcesz wykonać więcej niż jedną instrukcję w ciele pętli, musisz ująć je w nawiasy klamrowe.

    Instrukcje pętli są wymienne, ale niektóre zalecenia w każdym przypadku wybrać to, co najlepsze.

    Instrukcja do while jest zwykle używana, gdy pętla musi zostać wykonana przynajmniej raz (na przykład, jeśli w pętli są wprowadzane dane).

    Operator while jest wygodniejszy w przypadkach, gdy liczba iteracji nie jest z góry znana, nie ma oczywistych parametrów pętli lub wygodniej jest zapisać modyfikację parametru nie na końcu treści pętli.

    Instrukcja for jest preferowana w większości innych przypadków (zdecydowanie - do organizowania cykli za pomocą liczników).

    Cel: aby przedstawić koncepcję cykli z parametrem, schematy blokowe przedstawiające takie cykle. Nauczanie na konkretnych przykładach tworzenia schematów blokowych i programów z cyklami; dać wyobrażenie o różnicach między cyklami z warunkiem wstępnym, warunkiem końcowym i cyklem z parametrem; nauczyć się korzystać z różnych cykli w jednym programie, jeśli program zawiera kilka cykli; wprowadzać i uruchamiać programy przy użyciu kompilatorów BPW lub Turbo Pascal.

    1. Operator pętla do... do... zrobienia...

    Czasami z góry wiadomo, ile razy pętla powinna zostać wykonana. Dla problemów tego typu Pascal ma operatory cykle z parametrami .
    Format takich operatorów jest następujący:
    Do<cykl pary> := <wartość początkowa> Do<wartość końcowa.> Do <operator>.
    Tutaj Do, Do, Do- słowa zastrzeżone (dla, przed wykonaniem);
    <para. cykl> - parametr pętli - zmienna typu integer (dokładniej dowolnego typu porządkowego);
    <wczesny wartość.> - wartość początkowa - liczba lub wyrażenie tego samego typu;
    <kon. wartość.> - wartość końcowa - liczba lub wyrażenie tego samego typu;
    <operator> jest dowolnym operatorem Pascala.
    Jeśli jest kilku operatorów, to tak jak w operatorze chwila ... Do..., stosowane są nawiasy operatorskie: zacząć... zakończyć.
    Możliwe są na przykład następujące instrukcje pętli:

    Do ja:= a Do B Do s1;

    Do j:= a Do B zacznij s1; s2; ..., sn koniec; Lub

    Do k:=p Do M Do
    zaczynać
    s1;
    s2;
    ...
    sn
    koniec;

    Tutaj s1, s2, s3, ... sn są operatorami pętli.
    Podczas wykonywania instrukcji Do wyrażenie jest oceniane jako pierwsze<wartość początkowa.> i przypisanie jej wartości do zmiennej pętli
    <cykl pary> := <wczesny wartość.>.
    Następnie powtarza się cyklicznie:
    1) sprawdzenie stanu<cykl pary> <kon. wartość.>; jeżeli warunek nie jest spełniony, operator Do kończy pracę;
    2) wykonanie instrukcji<operator> lub operatory s1; s2; s3; ... sn;
    3) zmienna pętli<para. cykl> wzrasta o jeden.

    Należy od razu to odnotować że w tym stwierdzeniu nie można ustawić kroku cyklu innego niż 1.


    Graficzne przedstawienie cykli Do będzie tak (patrz ryc. 33):

    Ryż. 33

    Tutaj: i - zmienna cyklu; n jest jego wartością początkową; k jest jego wartością końcową. Ciało pętli to operator lub kilka operatorów: s1; s2; ... sn;, które są narysowane w prostokącie.

    Aby zilustrować pracę operatora Do Rozważmy przykład, który stał się już tradycyjny podczas badania działania tego operatora.

    Przykład 1. Napisz program obliczający silnię liczby n, tj. n!.

    Przypomnijmy sobie z matematyki, że silnia liczby n jest równa iloczynowi liczb od 1 do n.
    Na przykład:

    Z notatka . W matematyce przyjmuje się: 0! = 1.


    Schemat blokowy


    Ryż. 34

    Program

    program problem1; (Obliczanie silni liczby n!)
    wykorzystuje WinCrt;
    odm
    n, f, i: longint;
    zaczynać

    f:= 1;
    Jeśli N<> 0 Następnie Do ja:= 1 Do N Do f:= f*i;
    koniec.

    Zmienna n dotyczy liczby wprowadzonej przez użytkownika, której silnię należy znaleźć; f jest zmienną, która będzie zawierać „ gromadzić" wartość silni liczby n; i - zmienna pętli.
    Ustawiona zostaje początkowa wartość zmiennej f:= 1.
    Następnie rozpoczyna się cykl. Zmienna i jest inicjowana na 1; porównuje się go z końcowym - n (1<= n), Jeśli warunek jest prawdziwy Następnie wykonywany jest operator (w tym programie jest to jedyny): f:= f*i, 1*1=1; wartość zmiennej pętli zwiększa się o 1, czyli staje się równa: i:= i + 1, 1 + 1 = 2 i pętla się powtarza.
    Gdy wartość i stanie się równa n, Następnie pętla wykona się po raz ostatni, gdyż następną wartością i będzie n + 1, czyli większa od końcowej wartości n, stan I<= n - FAŁSZ, pętla nie jest wykonywana.

    2. Instrukcja pętli do... do... zrobienia...

    Istnieje inna forma instrukcji pętli Do:
    Do<cykl parowy.> := <wczesny zn.> aż do <kon. zn.> Do <operator>.

    Zastrzeżone zastąpienie słowa Do NA aż do Oznacza to, że krokiem parametru cyklu jest (-1).

    Zmiana wartości parametru następuje z wartości większej na mniejszą, tj.
    <wczesny wartość.> <kon. wartość.>.
    Za pomocą tej instrukcji pętli można napisać program do obliczania silni liczby.
    Program

    program Problem 1a;
    wykorzystuje WinCrt;
    odm
    n, i, f: longint;
    zaczynać
    write("Podaj liczbę naturalną"); czytajln(n);
    f:= 1;
    Jeśli N<> 0 Następnie Do ja:= rz aż do 1 Do f:= f*i;
    writeln("Silnia ", n, " to ", f)
    koniec.

    1. Zmień program tak, aby nie wyświetlał tabeli kwadratów liczb od 1 do n, ale kwadrat tylko jednej liczby n wprowadzonej przez użytkownika.

    2. Zmień i uzupełnij program tak, aby podał wartość kwadratu liczby i tych liczb nieparzystych, których suma jest jej równa.

    3 . Kontynuacja temat podnoszenia liczb naturalnych do potęgi, bez operacji mnożenia, rozważ dwa bardziej interesujące przykłady. W pierwszym z nich będziemy musieli połączyć „ inwestować„w siebie dwa cykle Do, a w drugim cykle Do I powtarzać.

    Przykład 3. Sześcian dowolnej liczby naturalnej n jest równy sumie n liczb nieparzystych następujących po liczbach, których suma była sześcianem poprzedniej liczby n - 1:

    13 = 1
    23 = 3 + 5
    33 = 7 + 9 + 11
    43 = 13 + 15 + 17 + 19
    . . . . . . . . . . . . . . . . . . . . . .

    Na podstawie tej właściwości utwórz program, który pozwoli Ci wydrukować tabelę kostek liczb naturalnych.

    Tutaj potrzebne są już dwa cykle. Jeden jest zewnętrzny , przez liczbę liczb nieparzystych, która jest równa liczbie podniesionej do sześcianu, np. dla 43 pętlę tę należy wykonać 4 razy. W tej samej pętli po obliczeniu sumy konieczne będzie wyświetlenie na ekranie jej wartości wraz z liczbą, która jest sześcienna.
    Drugie jest wewnętrzne , co zsumuje liczby nieparzyste i „ ćwiczyć" żądane liczby nieparzyste do sumowania.


    Schemat blokowy

    Ryż. 36

    Program

    program problem3; (Kostki liczb naturalnych od 1 do n)
    wykorzystuje WinCrt;
    odm
    i, j, n, s, k: longint;
    zaczynać
    writeln("Podaj liczbę naturalną do");
    write("wypisz kostki liczb"); czytajln(n);
    writeln("Kostki liczbowe są następujące:");
    k:= 1;
    Do ja:= 1 Do N Do
    zaczynać
    s:= 0;
    Do j:= 1 Do I Do
    zaczynać
    s:= s + k;
    k:= k + 2
    koniec;
    writeln("Kostka liczby ", i, " to ", s)
    koniec
    koniec.

    Przeanalizujmy, jak działa ten program.

    Zmienne i oraz j są potrzebne jako zmienne pierwszej - zewnętrznej i drugiej - wewnętrznej pętli. Zmienna k dla liczb nieparzystych i s dla sumy liczb. Typ tych zmiennych jest ustawiony na liczbę całkowitą, ale na wartość longint, ponieważ mogą istnieć dość duże liczby całkowite większe niż 32767.
    Program rozpoczyna się od poproszenia użytkownika za pomocą instrukcji writeln i write o podanie liczby naturalnej, do której ma zostać zwrócona tabela kostek liczb. Następnie za pomocą instrukcji readln wartość ta zostaje wpisana do pamięci komputera i przypisana do zmiennej n.
    Wiadomość " Kostki liczbowe są następujące". Podawany jest przed początkiem cykli z oczywistych powodów. Nie można go podawać w cyklach - będzie powtarzany kilka razy. Na końcu cykli też będzie to zapisane na dole, po wyjściu same liczby.Pierwsza nieparzysta wartość 1 jest przypisana zmiennej k.
    Zewnętrzna pętla zaczyna się od liczby liczb od 1 do n. W pętli znajduje się kilka instrukcji, więc „ otwarty" nawiasy operatorskie:- zaczynać ...
    Przed początkiem pętli wewnętrznej zmienna s jest ustawiana na zero – czyli sumę. Co więcej, taki reset nastąpi za każdym razem, gdy się powtórzy zewnętrzny pętli, zanim zacznie działać pętla wewnętrzna.
    Wewnętrzna pętla biegnie od 1 do i. Dlaczego? W pętli suma jest obliczana, a nieparzyste k zwiększane o 2, tj. „ wytworzony„następna liczba nieparzysta.

    Ogłoszenie! Zmienna k nie jest przypisana przed każdą pętlą wewnętrzną 1. Dlaczego?
    Następna instrukcja writeln wewnątrz pętli zewnętrznej wyświetla informację na ekranie. Dlaczego jest on umieszczony w pętli zewnętrznej?

    Przykład 4. Z matematyki wiadomo, że każda potęga naturalna n jest sumą n kolejnych nieparzystych liczb naturalnych. Napisz program, który dla dowolnej potęgi liczby naturalnej n znajdzie ciąg liczb nieparzystych, których suma jest równa tej potędze.

    Na przykład dla 53 zwróci sekwencję liczb: 21, 23, 25, 27, 29.

    Plan programowania

    1. Określ cel programu: jest to konieczne pokazywać , co w rzeczywistości jest dowolną potęgą naturalną liczby naturalnej Móc przedstawić jako sumę kolejnych liczb nieparzystych.
    A jeśli tak, to koniecznie musimy znać wartość potęgi liczby n z wykładnikiem k.
    Można to zrobić za pomocą prostej pętli:

    s:= 1;
    Do ja:= 1 Do k Do s:= sen*n;

    Wartość stopnia zostanie zgromadzona w zmiennej s, w tym celu zostaje ustawiona na wartość początkową 1.
    W pętli wartość zmiennej s jest sukcesywnie mnożona k razy przez potęgę bazową n. Po wykonaniu pętli zmienna s otrzyma wartość potęgi liczby n z wykładnikiem k.
    2. Cały sens pytania polega na tym, że nieznana jest pierwsza liczba nieparzysta, od której należy rozpocząć sumowanie kolejnych liczb nieparzystych.
    Do tego potrzebujesz próbka dodaj liczby nieparzyste najpierw od 1 i dalej (znana jest ich liczba - n);
    1 + 3 + 5 + 7 + 9 ...,
    a następnie sprawdź wynik porównując go z wartością potęgi s. Jeśli równość jest prawdziwa, zakończ pętlę i wyświetl wynikowe liczby nieparzyste, jeśli równość nie jest prawdziwa, musisz rozpocząć sumowanie od następnej liczby nieparzystej - 3: 3 + 5 + 7 + 9 ... itd.
    Proces ten łatwiej jest zorganizować za pomocą pętli powtarzać. Zmienna j, która ustawi początkowe liczby nieparzyste, musi zostać ustawiona na wartość początkową 1 przed rozpoczęciem pętli.
    Ogólny widok takiego cyklu:

    j:= 1;
    powtarzać
    . . . . . .
    j:= j + 2
    dopóki...= s;

    3. Pozostaje zastanowić się, jak obliczyć sumy kolejnych liczb nieparzystych. Spotkaliśmy się już z tym problemem i wiemy, że w tym celu musimy stworzyć cykl od 1 do n, w którym jedna ze zmiennych, powiedzmy m, kumuluje tę kwotę, a druga zmienna musi „ ćwiczyć„następna liczba nieparzysta.
    Pętlę tę można zapisać w następujący sposób:

    p:= j; m:= 0;
    Do ja:= 1 Do N Do
    zaczynać
    m:=m+p;
    p:= p + 2
    koniec;

    Notatka! Zmienne p, w każdym cyklu powtarzać, (zewnętrzna w stosunku do podanej), otrzyma nową wartość początkową liczby nieparzystej, a zmienna m - dla sumy musi być ustawiona na zero przed każdym nowym sumowaniem dla innego ciągu liczb nieparzystych.
    4. Na koniec, gdy zostanie znaleziony ciąg liczb nieparzystych, należy go wyświetlić na ekranie. Aby to zrobić, musimy ułożyć kolejny cykl od 1 do n, w którym wydawane będą wartości tych liczb nieparzystych. Dla pierwszej liczby nieparzystej w sekwencji musisz przyjąć wartość j, ale ponieważ wzrosła ona już o 2, to od j należy odjąć 2. Ta pętla będzie wyglądać następująco:

    j:= j - 2;
    Do ja:= 1 Do N Do
    zaczynać
    napisz(j, " ");
    j:= j + 2
    koniec

    Schemat blokowy

    Ryż . 37
    Program

    program problem4;
    wykorzystuje WinCrt;
    odm
    n, i, k, j, m, s, p: longint;
    zaczynać
    write("Podaj liczbę naturalną - podstawę stopnia"); czytajln(n);
    write("Podaj liczbę naturalną - wykładnik "); czytajln(k);
    s:= 1; j:= 1;
    Do ja:= 1 Do k Do s:= sen*n;
    powtarzać
    p:= j;
    m:= 0;
    Do ja:= 1 Do N Do
    zaczynać
    m:=m+p;
    p:= p + 2
    koniec;
    j:= j + 2
    dopóki m=s;
    write("Potęga o podstawie", n);
    writeln(" i wykładnik ", k, " tj. ", s);
    writeln("równa sumie następujących liczb nieparzystych");
    j:= j - 2;
    Do ja:=1 Do N Do
    zaczynać
    napisz(j, " ");
    j:= j + 2
    koniec
    koniec.

    Aby lepiej zrozumieć jak to działa, weźmy potęgę 25 i sprawdźmy jak instrukcje programu będą wykonywane sekwencyjnie.

    1 . Uruchom ten program na komputerach.

    2 . Narysuj schemat blokowy i program, który sprawdzi, czy praca może
    a) trzy; b) cztery kolejne liczby naturalne są równe pewnej potędze jakiejś liczby naturalnej (kwadrat, sześcian itp.)?

    4. Różne zadania

    Przykład 5. Wypisz wszystkie liczby czterocyfrowe, których zapis dziesiętny nie zawiera dwóch identycznych cyfr.

    Komentarz . Zanim zaczniesz tworzyć schemat blokowy tego zadania, powinieneś wiedzieć, w jaki sposób rysowane są pętle w pętlach w przypadku pętli z parametrami. Ogólna konstrukcja dwóch zagnieżdżonych pętli z parametrami będzie następująca:


    Ryż. 38
    Od razu pojawia się pomysł stworzenia programu według następującego schematu:
    zorganizować cykl przez liczbę tysięcy, t od 1 do 9, a następnie wewnętrzną cykle: według liczby setek, s od 0 do 9; przez liczbę dziesiątek, d od 0 do 9; według liczby jednostek, e od 0 do 9; kontrola stanu: Jeśli liczby są różne Następnie wyświetlić na ekranie czterocyfrową liczbę złożoną z nich.
    Schemat blokowy

    Ryż. 39
    Program

    program Problem5; (pierwszy sposób)
    wykorzystuje WinCrt;
    odm
    t, s, d, e: liczba całkowita;
    zaczynać
    Do t:= 1 Do 9 Do
    Do s:= 0 Do 9 Do
    Do d:=0 Do 9 Do
    Do mi:= 0 Do 9 Do
    Jeśli(T<>S) I(T<>D) I(T<>mi) I(S<>D) I
    (S<>mi) I(D<>mi)
    Następnie zapis(t*1000 + s*100 + d*10 + e, " ")
    koniec.

    Oczywiste jest, że program ten jest realizowany irracjonalnie. W nim wszystkie cykle są całkowicie zakończone.
    W ten sposób można ulepszyć program. Po wykonaniu cyklu setek należy rozpocząć kolejny cykl dziesiątek, Jeśli cyfra setek s nie jest równa cyfrze tysięcy t, w przeciwnym razie W przeciwnym razie , należy kontynuować cykl setek, czyli przyjąć kolejną cyfrę setek.
    Dla cyfry dziesiątek należy także ustawić warunek wykonania kolejnego cyklu jednostek, Jeśli cyfra dziesiątek d nie jest równa cyfrze setek i tysięcy, w przeciwnym razie W przeciwnym razie , musisz przejść do następnej cyfry dziesiątek.
    I wtedy, " wewnątrz„cyklu jednostek wystarczy zapisać warunek, Jeśli cyfry jednostkowe mi nie równa cyfrze dziesiątek D, setki S i tysiące T, wówczas czterocyfrowa liczba jest żądaną liczbą i jest wyświetlana na ekranie.


    Schemat blokowy

    Ryż . 40

    Program

    program Problem5a; (drugi sposób)
    wykorzystuje WinCrt;
    odm
    t, s, d, e: liczba całkowita;
    zaczynać
    writeln("Wszystkie liczby czterocyfrowe z różnymi cyframi");
    Do t:= 1 Do 9 Do
    Do s:= 0 Do 9 zrobić, jeśli S<>T Następnie
    Do d:=0 Do 9 zrobić, jeśli(D<>S) I(D<>T) Następnie
    Do mi:= 0 Do 9 Do
    Jeśli(mi<>D) I(mi<>S) I(mi<>T)
    Następnie write((((t*10 + s)*10 + d)*10) + e, " ")
    koniec.

    Zadanie 4

    1. Dodaj i zmodyfikuj ten program tak, aby wyświetlał na ekranie nie tylko różne czterocyfrowe liczby, ale także ich liczbę.

    2. Kiedy czterocyfrową liczbę składającą się z różnych cyfr pomnożono przez 9, w iloczynie otrzymano liczbę, która różniła się od mnożnej tylko tym, że między tysiącami a setkami cyfr znajdowało się zero. Znajdź mnożnik. Zrób schemat blokowy i program.

    Przykład 6. Trójki liczb naturalnych a, b, c spełniające równość: - nazywane są liczbami pitagorejskimi.
    Na przykład 3, 4 i 5 są liczbami pitagorejskimi, ponieważ

    Napisz program, który znajdzie i wypisze wszystkie liczby pitagorejskie nieprzekraczające 20.

    Matematyka na to pytanie jest prosta. Dla liczb a, b i c możliwymi wartościami są liczby naturalne od 1 do 20.
    Początkowa wartość a wynosi jeden, a = 1. Przyjrzymy się wszystkim możliwym wartościom b od 1 do 20, a także wartościom c od 1 do 20 i sprawdzimy równość a a + b b = c C. Po spełnieniu równości wyświetl wartości a, b i c.
    Następnie musisz przyjąć wartość a = 2 i sprawdzić wartości b już od 2 do 20. Dlaczego nie od 1, ale od 2? Tak, ponieważ zbiór dwóch liczb z 1 i 2 został już rozpatrzony o wartościach a = 1 i b = 2, aby nie powtarzać wartości a i b, tj. aby uniknąć pojawienia się dwóch identycznych par liczb, należy zacząć przeglądać wartości b lub aż do wartości A lub z A do 20.
    W związku z tym istnieje kilka sposobów organizowania pętli dla zmiennych aib.
    1. sposób:

    Do o:= 1 Do 20 Do
    Do b:=a Do 20 Do

    Drugi sposób:

    Do o:= 20 aż do 1 Do
    Do b:= 1 Do A Do

    Trzeci sposób:

    Do o:= 1 Do 20 Do
    Do b:= 1 Do A Do

    Łatwo zauważyć, że w każdym z tych sposobów pary liczb nie będą się powtarzać. Sprawdź to sam.
    Dla wartości c musimy sprawdzić wszystkie liczby naturalne od 1 do 20 dla każdej pary liczb a i b. Zatem pętla dla c powinna wyglądać następująco: Do c:= 1 Do 20 Do

    Schemat blokowy

    Ryż . 41

    Program

    program problem 6;
    wykorzystuje WinCrt;
    odm
    a, b, c: liczba całkowita;
    zaczynać
    writeln("Trójki liczb pitagorejskich z przedziału ");
    Do o:= 1 Do 20 Do
    Do b:= 1 Do A Do
    Do c:= 1 Do 20 Do
    Jeśli a*a + b*b = c*c Następnie writeln(a, " ", b, " ", c)
    koniec.

    1. Zrób schemat i program znajdujący wszystkie rozwiązania równania, w którym n jest daną liczbą, z przedziału .

    2. Znajdź wszystkie naturalne x z przedziału, dla którego wyrażenie jest kwadratem liczby naturalnej.

    Przykład 7. Na ile sposobów można przedstawić daną liczbę naturalną n jako sumę dwóch sześcianów liczb naturalnych:

    Zmiana układu terminów nie daje nowej metody. Nie można zastosować operacji podnoszenia do potęgi 1/3.

    Natychmiast pojawia się następujący prosty pomysł skomponowania programu.

    Ułóż dwie pętle, jedna to pętla zewnętrzna ze zmienną i od 1 do n, a druga to pętla wewnętrzna przechodząca przez j, również od 1 do n.

    Istota programu będzie następująca:

    pierwsza wartość i wynosi 1, jest ona mnożona przez siebie trzykrotnie (zastępuje to podniesienie do trzeciej potęgi);
    Następnie " przeboleć„ wszystkie wartości j od 1 do n, z których każda jest również trzykrotnie mnożona przez siebie i dodawana do wartości i i i, tj. i sześcian;
    ponadto sprawdza się, czy suma ta jest równa wartości n, jeśli równość jest prawdziwa, wówczas licznik, o którym wiadomo, że jest zdefiniowany w programie, zwiększa się o 1, a wartości i i j mogą być wyświetlane;
    pętla na i trwa, i przyjmuje drugą wartość - 2, a wewnętrzna pętla na j od 1 do n rozpoczyna się od nowa i tak dalej.
    Jeśli opracujemy program zgodnie z tym planem, będzie on miał dwie istotne wady:
    1) wykonuje się dużo bezużytecznej pracy - oba cykle są zorganizowane od 1 do n, a jest wśród nich wiele zbędnych (wystarczy przyjąć wartości od 1 do pierwiastka sześciennego z n);
    2) program poda wartości, które otrzymamy poprzez przestawienie wyrazów, np.: 2 2 2 + 3 3 3 = 35 i 3 3 3 + 2 2 2 = 35, co jest niedopuszczalne ze względu na warunek problem. Jak wyeliminować te niedociągnięcia?
    Pierwszą wadę możemy wyeliminować, jeśli najpierw dowiemy się, ile wartości dla każdej z liczb należy uwzględnić, aby nierówność została zachowana
    Aby to zrobić, możesz zorganizować pętlę z warunkiem wstępnym, pętlą „ Do widzenia ", w którym należy uwzględnić licznik - k, który będzie zliczał, ile razy taka pętla zostanie wykonana.

    Można to zrobić w następujący sposób:

    k:= 0; ja:= 1;
    chwila i*i*i + 1<= n Do
    zaczynać
    k:= k + 1;
    ja:= ja + 1
    koniec;


    Teraz możesz znacznie zmniejszyć liczbę cykli dla „ obiekty testowe" liczby i uporządkuj je od 1 do k, ponieważ dla wartości i większych od k, nawet dla najmniejszej wartości j (j:= 2), nierówność i i i + 1<=n не выполняется.
    Aby wyeliminować drugą wadę, tj. Aby nie wystawiać opcji z przestawieniem warunków, możesz to zrobić:

    Ułóż zewnętrzną pętlę przez i pierwszej liczby od k do 1 i wewnętrzną pętlę dla drugiej liczby przez j od 1 do i. Otrzymujesz tę część programu:

    p:= 0;
    Do ja:=k aż do 1 Do
    Do j:= 1 Do I Do
    Jeśli i*i*i + j*j*j = n
    Następnie
    zaczynać
    p:= p + 1;
    koniec;

    Ostrożnie zajmij się tą częścią programu i zastanów się, dlaczego w tym przypadku unikamy powtarzania opcji i wykluczania przypadków przestawiania terminów?

    Lewy Piękny zakończyć program. W końcu bardzo często zdarzają się przypadki, gdy liczby w ogóle nie można przedstawić jako sumy kostek dwóch liczb. Tę okoliczność również należy wziąć pod uwagę.

    W tym celu po wykonaniu wszystkich pętli wprowadzamy instrukcję warunkową, w której w zależności od wartości licznika p zostaną wydane odpowiednie komunikaty.

    Jeśli p = 0 Następnie przekazać wiadomość, że liczby nie można przedstawić jako sumy sześcianów dwóch liczb, oraz W przeciwnym razie, wyświetl komunikat o liczbie sposobów.
    Tę część programu można wykonać w następujący sposób:

    Jeśli p = 0
    Następnie
    zaczynać

    koniec
    w przeciwnym razie


    Schemat blokowy


    Ryż . 42

    Program

    program Problem7;
    wykorzystuje WinCrt;
    odm
    i, j, n, k, p: longint;
    zaczynać
    write("Podaj liczbę naturalną"); czytajln(n);
    k:= 0; ja:= 1;
    chwila i*i*i + 1<= n Do
    zaczynać
    k:= k + 1; ja:= ja + 1
    koniec;
    p:= 0;
    Do ja:=k aż do 1 Do
    Do j:= 1 Do I Do
    Jeśli i*i*i + j*j*j=n
    Następnie
    zaczynać
    p:= p + 1;
    writeln(i, "*", i, "*", i, "+", j, "*", j, "*", j, "=", n)
    koniec;
    Jeśli p = 0
    Następnie
    zaczynać
    write("Numer ", n, " nie może być przedstawiony jako ");
    writeln("suma kostek dwóch liczb")
    koniec
    w przeciwnym razie writeln("Liczba sposobów to ", p)
    koniec.

    Inne rozwiązanie tego problemu

    program Problem7b;
    wykorzystuje WinCrt;
    etykieta 1, 2;
    odm
    i, j, m, k, n: longint;
    zaczynać
    write("Podaj liczbę naturalną"); czytajln(n);
    m:= 0; ja:= 1; j:= 1;
    chwila j*j*j + 1< n Do j:= j + 1;
    powtarzać
    k:= i*i*i + j*j*j;
    Jeśli k = n Następnie m:= m + 1;
    Jeśli k<= n Następnie ja:= ja + 1;
    Jeśli k >= n Następnie j:= j - 1;
    dopóki ja > j;
    Jeśli m = 0 następnie idź do 1;
    write("Liczbę ",n" można przedstawić jako sumę");
    writeln("kostki dwóch liczb",m,"sposoby"); przejdź do 2;
    1: write("Tej liczby nie można przedstawić jako");
    writeln("suma kostek dwóch liczb");
    2: koniec.

    Biorąc pod uwagę liczbę naturalną n. Czy n można przedstawić jako sumę trzech kwadratów liczb naturalnych? Jeśli to możliwe, wskaż wszystkie trójki x, y, z takich liczb naturalnych, że Permutacja wyrazów nie daje nowej metody. Zrób schemat blokowy i program.

    5. Konwersja typu

    Przykład 8. Dwucyfrowa liczba dziesiętna dodana do liczby zapisanej tymi samymi cyframi, ale w odwrotnej kolejności, daje pełny kwadrat. Znajdź wszystkie takie liczby.

    Niech żądana dwucyfrowa liczba \u003d a 10 + b, następnie liczba zapisana tymi samymi cyframi, ale w odwrotnej kolejności będzie wynosić \u003d b 10 + a, na przykład 12 i 21, 13 i 31 itd.
    Suma tych liczb powinna dać idealny kwadrat, tj. dokładny kwadrat liczb całkowitych. Jak to sprawdzić?
    Sprawdzenie można przeprowadzić w następujący sposób: wyodrębnij pierwiastek kwadratowy z otrzymanej sumy; następnie zaokrąglij wynik do liczby całkowitej, a następnie pomnóż wynik przez siebie, jeśli suma tych liczb ponownie się okaże, to jest to dokładny lub doskonały kwadrat.
    Na przykład 12 + 21=33, pierwiastek kwadratowy z 33 wynosi 5,74...; zaokrąglij w górę, będzie to 6; pomnóż 6 przez siebie, aby otrzymać 36.
    Nie otrzymaliśmy pierwotnego wyniku, więc suma 33 nie jest dokładnym kwadratem.
    Kolejny przykład dający wyobrażenie o rozwiązaniu. Niech liczbą dwucyfrową będzie 29, następnie liczbą zapisaną tymi samymi cyframi, ale w odwrotnej kolejności - 92, w sumie dają 121. Wyciągamy pierwiastek kwadratowy z 121 i otrzymujemy 11. Mnożąc 11 przez siebie, ponownie otrzymujemy 121. Dochodzimy do wniosku, że otrzymaliśmy dokładny kwadrat, co oznacza, że ​​​​dwucyfrowa liczba 29 jest pożądana.
    Aby napisać program zgodnie z tą zasadą, należy wziąć pierwiastek kwadratowy z sumy, co można zrobić za pomocą standardowej funkcji sqrt (x). Wynikiem funkcji sqrt(x) jest liczba rzeczywista, trzeba ją zaokrąglić lub odrzucić część ułamkową, a nie wiemy jak to zrobić.
    Ale jeszcze bardziej znaczące jest to, że jeśli pierwiastek kwadratowy ze zbioru liczb całkowitych zostanie całkowicie wyodrębniony, jak w przypadku 121 (jest równy 11), to na zbiorze liczb rzeczywistych nie otrzymamy ściśle liczby 11, a wynik będzie bardzo bliski 11 i samo pomnożenie nadal nie daje 121, czyli jest potrzeba konwertować wartość rzeczywistą na liczbę całkowitą.
    Mamy więc dwa zadania: 1) wymyślić, jak zaokrąglić liczby oraz; 2) ustalić, jak przekonwertować typ rzeczywisty na liczbę całkowitą.

    Aby to zrobić, Pascal ma standardowe funkcje round(x) i trunc(x)

    Funkcje standardowe okrągły I obciąć mają na celu zastąpienie wartości typu rzeczywistego wartościami typu całkowitego.
    Funkcjonować okrągły(x) zaokrągla liczbę rzeczywistą x w górę do liczby całkowitej - jej wartością jest najbliższa liczba całkowita:
    okrągły(4.2) = 4, okrągły(4.7) = 5, okrągły(4.5)=5,
    okrągły(-4.2) = -4, okrągły(-4.7) = -5, okrągły(-4.5) = -5.
    Funkcjonować obciąć(x) odrzuca (bez zaokrąglania) część ułamkową liczby rzeczywistej x:
    obciąć(1.2) = 1, obciąć(5.8) = 5, obciąć(-1.2) = -1,
    obciąć(-5.8) = -5, obciąć(-6.7) = -6, obciąć(8,9) = 8

    Funkcje zaokrąglania są ze sobą powiązane w następujący sposób:
    obciąć(x + 0,5) = okrągły(X), Jeśli x0,
    obciąć(x - 0,5) = okrągły(X), Jeśli X< 0.
    Zatem w programie możesz skorzystać z jednej z tych funkcji. Który? Pomyśl samodzielnie i spróbuj najpierw zastosować funkcję w programie obciąć a następnie zastąp go okrągły i porównaj swoje wyniki.

  • Pokaż, że liczba czterocyfrowa, w której cyfry tysięcy i dziesiątek są takie same, a cyfry setek i jedności są takie same, nie może być dokładnym kwadratem.
  • Iloczyn sześciu kolejnych liczb naturalnych może być równy iloczynowi trzech kolejnych liczb naturalnych. Na przykład 1 2 3 4 5 6 = 8 9 10 = 720. Czy istnieją inne liczby tego typu?
  • Udowodnić, że iloczyn czterech kolejnych liczb całkowitych sumuje się do jedności, co daje doskonały kwadrat.
  • Znajdź 11 kolejnych liczb naturalnych, których suma kwadratów jest kwadratem liczby całkowitej.
  • Czy są liczby całkowite, które po przekreśleniu pierwszej (lewej) cyfry zmniejszają się 57-krotnie?
  • Znajdź liczbę czterocyfrową, wiedząc, że jest to kwadrat liczby naturalnej i że jej cyfry dzielą się na dwie pary identycznych cyfr.
  • Znajdź wszystkie liczby siedmiocyfrowe, które dzielą się przez 15 i są zapisywane tylko jako 0 i 1.
  • Liczba sześciocyfrowa zaczyna się od cyfry 1. Jeśli liczba ta zostanie przestawiona na koniec liczby, nowa liczba będzie trzykrotnością liczby pierwotnej. Znajdź numer.
  • Ile dokładnych kwadratów można utworzyć z liczb 3, 4, 5, 6?
  • Danych jest 20 różnych liczb naturalnych nie większych niż 50. Znajdź dwie z nich, których różnica wynosi 4, 5 lub 9.
  • Ile razy zwiększy się liczba dwucyfrowa, jeśli po jej prawej stronie dodamy tę samą liczbę dwucyfrową?
  • Określ największą wartość stosunku liczby trzycyfrowej do liczby równej sumie cyfr tej liczby.
  • Znajdź liczbę trzycyfrową będącą wielokrotnością 45, jeśli różnica między tą liczbą a liczbą zapisaną tymi samymi cyframi, ale w odwrotnej kolejności, wynosi 297.
  • Znajdź czterocyfrową liczbę będącą wielokrotnością 11, pod warunkiem, że: b + c = a jest idealnym kwadratem.
  • Znajdź liczbę trzycyfrową równą sumie cyfry dziesiątek, kwadratu cyfry setek i sześcianu cyfry jedności.
  • Znajdź dwie liczby, których iloczyn jest liczbą trzycyfrową będącą sześcianem pewnej liczby, a których iloraz jest kwadratem tej liczby.
  • Różnica między liczbą a iloczynem jej cyfr jest równa sumie cyfr tej liczby. Znajdź ten numer.
  • Znajdź wszystkie wartości liczby m, dla której suma wynosi 1! +2! + , +m! jest idealnym kwadratem.
  • Znajdź dodatnią czterocyfrową liczbę, która jest wielokrotnością 7 i jest sumą sześcianu i kwadratu pewnej liczby.
  • Niektóre liczby podzielone przez 7 dają resztę 3; jego kwadrat przy dzieleniu przez 72 daje resztę 44; jego sześcian po podzieleniu przez 73 daje resztę 111. Znajdź tę liczbę.
    1. Dla jakiej wartości naturalnej a liczba a2 + a + 1589 będzie dokładnym kwadratem?
    2. Znajdź idealną liczbę, np. 16p.
    3. Znajdź dwie liczby, jeśli suma ich kwadratów wynosi 468, a suma ich wspólnego największego dzielnika i najmniejszej wielokrotności wynosi 42.

    Cykle zajmują w Turbo Pascalu szczególne miejsce. Rozpoczynają naukę natychmiast po opracowaniu umiejętności informacji wejściowych i wyjściowych na ekranie. Przecież większość zadań sprowadza się do tego, że cykle z parametrem i innymi konstrukcjami pomagają ułatwić pisanie i obsługę określonego bloku programu.

    Odmiany cykli

    W sumie istnieją trzy odmiany:

    • z parametrem
    • z warunkiem wstępnym
    • z warunkiem końcowym.

    Pętle z parametrem, zwane inaczej For… to… do lub For… downto…. zrobić, wielokrotnie powtarzaj określoną sekwencję działań. Zasadniczo w tym samym celu stosuje się inne odmiany, tylko w pętli for liczba kroków jest z góry znana.

    W pozostałych dwóch konstrukcjach (While i Repeat) liczba iteracji jest początkowo nieznana. Dlatego podczas studiowania zadania konieczne jest już zrozumienie, który cykl zostanie zastosowany.

    Podstawowe definicje na ten temat

    Pętle z parametrami to wielokrotne iteracje. Licznik jest głównym wskaźnikiem, za pomocą którego wykonywana jest dana konstrukcja. Granice przedziału pokazują granice, w obrębie których zostaną wykonane określone iteracje. Nawiasem mówiąc, absolutnie nie jest konieczne, aby wartość początkowa była równa 1. Użytkownik samodzielnie ustala obie granice przedziału. Treść pętli to zbiór poleceń, dla których została już określona liczba powtórzeń.

    Koncepcja „pętli z parametrami” oznacza, że ​​w tej konstrukcji sprawdzany jest warunek, po czym wykonywany jest zestaw iteracji. Licznik zwiększa się (lub zmniejsza) i wszystko się powtarza. Ciało pętli zostanie wykonane, jeśli warunek jest spełniony.

    Do... do... zrobienia: algorytm pracy, składnia

    Jak już wspomniano, cykle z parametrem stosuje się w zadaniach, w których wskazany jest „interwał”, w którym należy pracować. Może to być więc tablica liczb, dni tygodnia, wersety wiersza itp.

    Istnieją 2 rodzaje projektów: zwiększanie licznika i zmniejszanie go. Pierwsza struktura zostanie zapisana w następujący sposób:

    Do zmienna wychodząca := granica 1 Do granica 2 Do

    ciało pętli;

    Tutaj: ref. zmienny zadeklarowany przez użytkownika na początku programu lub bloku; granica 1 i granica 2- wartość początkowa i końcowa przedziału; V ciało cykl określa zestaw akcji, które ma wykonać program. Należy pamiętać, że jeżeli w ciele pętli znajduje się tylko 1 polecenie, to operator nawiasowy Begin...End można pominąć. W tej wersji projektu licznik, a mianowicie<исх.переменная>, będzie zwiększany o 1.

    Do zmienna wychodząca:= granica 1 aż do granica 2 Do

    ciało pętli;

    Oto ref. zmienna będzie zmniejszać się w przyrostach co 1.

    Schemat pętli z parametrem For...to...do będzie wyglądał następująco:

    • Ustalana jest wartość górnej granicy przedziału, tj. granica 2.
    • Zmienna źródłowa przypisana jest wartość parametru granica 1.
    • Warunek jest sprawdzany: zmienna surowa ≤ limit 2.
    • Po otrzymaniu wyniku PRAWDA (PRAWDA) wykonywane jest ciało pętli.
    • Licznik zwiększa się o 1.
    • Kroki 3-5 są wykonywane dokładnie do momentu spełnienia warunku: zmienna źródłowa > limit 2. Gdy tylko to nastąpi, pętla kończy się, a sterowanie zostaje przekazane poleceniu następującemu po tej konstrukcji.

    W For... downto... do algorytm pracy jest podobny do powyższego, z wyjątkiem niektórych punktów:

    • W trzecim akapicie sprawdzany jest warunek: zmienna surowa ≥ limit 2.
    • W 5 linii algorytmu licznik jest zmniejszany o 1.
    • W akapicie 6 polecenia 3-5 będą wykonywane do momentu spełnienia warunku: zmienna wychodząca< граница 2.

    Cała reszta jest podobna w obu algorytmach pracy.

    Schemat blokowy pętli z parametrem

    Pętle z parametrem mają następującą postać schematu blokowego (choć zostało to już przedstawione powyżej). Pokazano tu także uproszczoną organizację projektu.

    Podstawowe wymagania dla cyklu z parametrem

    Pętle z parametrami wymagają określonych warunków.

    • Licznik i granice zakresu (tj. zmienna źródłowa, granica 1 i granica 2) muszą być tego samego typu danych. Jeśli zgodność jest tylko pomiędzy wartością początkową i końcową przedziału a zmienną oryginalną, program może zachować się niepoprawnie, ponieważ granice zostaną przekonwertowane zgodnie z typem danych oryginalnego parametru.
    • Typ danych, do którego muszą należeć wartości parametrów, musi być liczbą całkowitą. Zdecydowanie odradza się używanie prawdziwego typu.
    • Niepożądana jest zmiana wartości początkowego parametru zmiennej w treści pętli. W przeciwnym razie użytkownik nie będzie w stanie prześledzić ewentualnych błędów, które się pojawiły.
    • W przeciwieństwie do innych rodzajów pętli, w For… to… do lub For… downto… do krok nie może zmienić parametru innego niż 1.

    Turbo Pascal: jak wyjść z pętli

    Dość często zdarzają się problemy, w których dochodzi do zapętlenia, czyli sprawdzany warunek jest zawsze prawdziwy. Procedura break pomaga wyjść z pętli z warunkiem wstępnym, warunkiem końcowym i parametrem. Oznacza to, że ich praca kończy się przed terminem.

    Pętle parametrów Pascala (których programowanie zakłada „wieczną” prawdziwość warunku) można zatrzymać za pomocą opcji Kontynuuj. Tutaj praca jest skonfigurowana w następujący sposób: bieżąca iteracja kończy swoje wykonanie przed terminem, sterowanie jest przekazywane do następnego polecenia, ale bez wychodzenia z pętli.

    Procedura Exit jest konieczna w celu zakończenia pracy konkretnego bloku w kodzie programu. Wywołuje się ją wewnątrz procedury (funkcji) i w tym samym momencie wykonanie tego „kawałka” natychmiast się zatrzymuje. Jeśli Exit znajduje się w głównym bloku programu, to kończy swoje działanie.

    Procedura Halt sprowadza zasadę działania do następującej zasady: program kończy się całkowicie.

    Przykłady zadań z rozwiązaniem

    Po przestudiowaniu tematu „Pętle z parametrem w Pascalu” przydatne będzie dla użytkownika najpierw przestudiowanie przykładów, a następnie przeszkolenie w zakresie samodzielnego pisania kodu. Proste zadania pomagają przyszłemu programiście poznać teorię w praktyce, a następnie z sukcesem ją zastosować. W temacie „Pętle z parametrem” można znaleźć przykłady problemów z rozwiązaniem zarówno łatwym, jak i złożonym. Oto 3 zadania, w których analizowane są algorytmy pracy oraz podawane są wyjaśnienia i komentarze do każdego rozwiązania.

    Zadanie 1

    Biorąc pod uwagę dwuwymiarową tablicę liczb naturalnych z zakresu , wybraną losowo. Znajdź liczbę wszystkich liczb dwucyfrowych, których suma cyfr jest wielokrotnością 2.

    Algorytm działania:

    1. Utwórz tablicę dwuwymiarową.
    2. Sprawdź każdy numer pod kątem zgodności z warunkami:

    a) jeśli 9< Х < 100, то разделить его нацело на 10 посредством div;

    b) wyodrębnij drugą cyfrę liczby, dzieląc przez mod;

    c) zsumuj zaznaczone liczby;

    d) podzielić przez mod podaną sumę przez 2;

    e) jeśli wynik wynosi 0, licznik jest zwiększany o 1.

    Zadanie 2

    Biorąc pod uwagę jednowymiarową tablicę elementów całkowitych. Znajdź liczbę liczb dodatnich.

    Algorytm działania:

    1. Utwórz tablicę elementów całkowitych wygenerowaną przez randomizację.
    2. Do pętli z parametrem dołącz JEŻELI, co sprawdzi, czy dany element spełnia warunek: X>0.
    3. Jeżeli warunek jest spełniony, licznik zwiększa się o 1.
    4. Po wykonaniu pętli na ekranie powinna zostać wyświetlona wynikowa wartość licznika.

    Dane w nawiasach () są komentarzami. W linii 11 możesz wyświetlić tablicę na ekranie na dwa sposoby: pozostawić odstęp między liczbami lub przydzielić określoną liczbę komórek dla każdego elementu (w tym przypadku jest ich 5).

    W linii 12 zmienną licznika można również zwiększyć na dwa sposoby: albo dodać 1 do poprzedniej wartości, albo użyć standardowej funkcji Inc.

    Zadanie 3

    Biorąc pod uwagę macierz kwadratową. Znajdź liczbę elementów dodatnich na głównej przekątnej.

    Wyjaśnienia:

    W tablicy liczb główna przekątna rozciąga się od lewego górnego rogu do prawego dolnego rogu. Jego osobliwością jest fakt, że indeksy wierszy i kolumn są takie same. Dlatego wystarczy zorganizować 1 cykl, aby przejść przez linie bez iteracji po pozostałych elementach.

    Algorytm działania:

    1. Utwórz macierz kwadratową.
    2. Ustaw zmienną odpowiedzialną za zliczanie elementów dodatnich na „0”.
    3. Wykonaj cykl, aby utworzyć macierz kwadratową.
    4. Zorganizuj pętlę, aby sprawdzić warunek: jeśli liczba na głównej przekątnej jest > 0, licznik jest zwiększany o 1.
    5. Po zakończeniu pętli wyświetl na ekranie wartość zmiennej przechowującej liczbę elementów dodatnich.

    Konfrontacja dwóch języków programowania: C i Turbo Pascal

    Z reguły szanujący się programista zna kilka języków. Może to być na przykład C++, Turbo Pascal, Delphi, Java itp. Sprzeciw tych dwóch został wyraźnie wyrażony już w latach 80-tych. (C i turbopaskal). Pod koniec XX wieku zaobserwowano tę samą walkę pomiędzy C++ i Javą.

    W przestrzeni wirtualnej, spośród trzydziestu języków programowania, można wyróżnić trzy najjaśniejsze pary, których przeciwieństwo zdumiewało największe umysły cyberprzestrzeni: Algol-60 i Fortran, Pascal i C, Java i C++. Oczywiście te uczucia są subiektywne, ale w pewnym momencie ktoś z pary był liderem. Wynikało to z wymagań branży i zapotrzebowania na konkretny produkt programowy. W latach 70. Fortran „rządził światem”, w latach 80. – Turbo Pascal, w latach 90. – C++. Oczywiście żaden z nich nie „umarł”. Raczej przekształciły się w ulepszone produkty programowe.

    Studiując języki programowania, zauważysz, że w niektórych tematach składnia jest podobna. Zatem pętle z parametrem w C są podobne do podobnych konstrukcji w Pascalu, z wyjątkiem niektórych punktów.

    Co ciekawe, twórcy Turbo Pascala (Old World) wykorzystali wyniki osiągnięć amerykańskich naukowców, podczas gdy w Nowym Świecie aktywnie wykorzystali wyniki badań europejskich specjalistów. W Europie programiści bardziej opowiadają się za czystością i zwartością języków programowania, podczas gdy amerykańskie umysły mają tendencję do korzystania z nowomodnych trendów w pisaniu kodu.