Программирование на Cи




Содержание:
  • Цикл с предусловием while
  • Цикл с постусловием do ... while

  • Цикл с предусловием while

    В языке Си кроме цикла for, который явно задаёт число итераций, существует цикл while, который выполняется до тех пор, пока условие цикла принимает истинное значение. При условии равном false (ложь) цикл прерывается, то есть число итераций цикла заранее неизвестно. Такой цикл следует использовать с осторожностью, так как он может не завершиться никогда. Цикл while оформляется следующим образом:
    while (логическое условие) оператор;
    или
    while (логическое условие)
    {
    Оператор 1;
    Оператор 2;
    ...
    Оператор N;
    }
    Решим, например, такую математическую задачу: мама дала сыну 1000 рублей на покупку продуктов. Число покупок заранее неизвестно (на сколько денег хватит). Стоимость купленных продуктов вводится с клавиатуры. Как только сумма покупок будет равна или превысит 1000 рублей, следует прекратить ввод данных и вывести сумму покупок на экран.

    #include <stdio.h>
    void main()
    {
    char s1[80];
    long xin, xout; /* xin - покупки; xout - сумма покупок */
    clrscr();
    xout=0; xin=0;
    while (xout <= 1000) /* До тех пор пока сумма покупок меньше либо равна 1000 */
    {
    scanf("%d",&xin); /* Вводим стоимость очередной покупки */
    xout += xin; /* Наращиваем сумму покупок */
    }
    /* Проверяем сумму покупок и если она превысила 1000 рублей то вычитаем стоимость последней покупки */
    if (xout > 1000) xout = xout - xin;
    printf("Summa=%d",xout);
    }





    Цикл while удобен для работы с символами и строками. Напишем программу по выделению первого слова из введённой с клавиатуры строки. Признаком разделения слов в строке служит пробел (код 32).
    #include <stdio.h&l>
    #include <string.h>
    void main()
    {
    char c, s1[80], s2[80];
    int z;
    clrscr();
    puts("Input string:");
    gets(s1); /* Считываем строку с клавиатуры */
    printf("S1=%s \n",s1);
    z=0; c=0; /* Задаём начальные значения переменным */
    /* Организуем цикл, который завершится если символом с будет "пробел" */
    while (c != 32)
    {
    /* Присваиваем переменной с значение очередного символа из строки S1 */
    c = s1[z];
    /* Создаём слово в S2 */
    s2[z] = c;
    z++; /* */
    }
    printf("Slowo=%s",s2); /* Печатаем полученное слово */
    }




    Цикл while называется циклом с предусловием, так как условие прекращения цикла определяется до выполнения действий в цикле. Это означает, что если условие цикла изначально равно false, то цикл не выполнится ни разу.


    Цикл с постусловием do ... while
    Для того, чтобы цикл выполнился хотя бы один раз (а именно в действии цикла может быть заложен алгоритм изменения условия), то следует воспользоваться циклом с постусловием do ... while. Цикл оформляется следующим образом:
    do оператор цикла while (логическое условие);
    или
    do
    {
    оператор1;
    оператор2;
    ...
    Оператор N;
    }
    while (логическое условие);
    Цикл do : while удобно использовать когда число итераций цикла заранее неизвестно, а цикл нужно прервать по какому нибудь признаку, например при нажатии определённой клавиши.
    Напишем программу вычисления суммы ряда чисел. Число элементов ряда заранее неизвестно. Цикл будет прерываться при нажатии клавиши "y".

    #include <stdio.h>
    void main()
    {
    char c;
    float z, rez;
    clrscr();
    z=0; c=0; rez=0;
    do
    {
    printf("Inrut z:");
    scanf("%f",&z); /* Считываем значение очередного члена ряда */
    rez = rez + z; /* Вычисляем сумму ряда */
    puts("End - y, else other char");
    c = getch(); /* Вводим символ признак */
    }
    while (c != 'y'); /* Завершаем цикл если с = 'y' */
    printf("\nRez= %2f",rez); /* Выводим сумму ряда на экран */
    }

    Результат работы программы будет такой:






    Яндекс.Метрика    ©Гуков Константин Михайлович 2006 - 2013     Почта: juvel@mail.ru