Главная страница
Навигация по странице:

  • 7.1. Цикл while

  • 7.2. Цикл do…while Выполнить ту же задачу с применением инструкции цикла do…while. Проект – консольное приложение. Пример . Листинг программы

  • 8.1. Команда Goto и метки

  • Пример

  • 8.2. Цикл for Вычислить значения функции с использованием инструкции цикла for. Проект – консольное приложение. 54 Пример

  • 8.3. Вложенные циклы for Вычислить значения функции с использованием вложенных инструкций цикла for. Проект – консольное приложение. Пример

  • 8.4. Команда break Создать программу с иcпользованием команды break

  • Пример.

  • 8.5. Команда continue Создать программу с использованием команды continue

  • 10.1. Одномерный массив Обработка одномерного массива. Проект – консольное приложение 64 Пример

  • 10.2. Матрица Обработка матрицы. Проект – консольное приложение 67 Пример

  • Лабораторная работа циклы. Поволжский государственный университет телекоммуникаций и информатики


    Скачать 3.57 Mb.
    НазваниеПоволжский государственный университет телекоммуникаций и информатики
    АнкорЛабораторная работа циклы
    Дата08.10.2022
    Размер3.57 Mb.
    Формат файлаpdf
    Имя файлаLR_CSharp_Akchurin_2010.pdf
    ТипДокументы
    #721430
    страница3 из 7
    1   2   3   4   5   6   7
    7.
    Циклы с неизвестным числом повторений
    Предмет исследований

    Организация циклов с неизвестным числом повторений.

    Инструкции циклов while и do…while.

    Вычисление суммы членов бесконечного ряда.

    Разработать алгоритмы решения задачи.

    Составить программы решения задачи.
    Контрольные вопросы
    Циклический процесс с неизвестным числом повторений.
    1.
    Его отличия от цикла с заданным числом повторений.
    2.
    Инструкции языка C# для организации таких циклов. Их сравнение.
    3.
    Синтаксис инструкции while.
    4.
    Как выполнить группу операторов в цикле while?
    5.
    Синтаксис инструкции do…while.
    6.
    Синтаксис инструкции foreach.
    7.
    Прямое вычисление суммы членов бесконечного ряда.
    8.
    Вычисление суммы членов бесконечного ряда по рекуррентной формуле.
    9.
    Условие выхода из цикла при вычислении суммы членов бесконечного
    10.
    ряда.
    7.1.
    Цикл while
    Вычислить значение суммы членов бесконечного ряда с заданной точностью Е с использованием инструкции цикла while. На печать вывести значение суммы и число членов ряда, вошедших в сумму. Проект – консольное приложение.

    48
    Пример. Вычислить значение суммы членов бесконечного ряда при x = 0.1 с точностью до члена ряда с модулем, меньшим E=0.00001.
    Для вычисления очередного члена ряда будем использовать рекуррентное соотношение, связывающее его с предыдущим членом a(n+1) = q*a(n). Приме- нение рекуррентных формул позволяет избежать вычисления факториала и возведения в произвольную степень. Рекуррентный коэффициент q найдем из выражений для текущего и следующего членов ряда

    49
    Деля второе выражение на первое, получим
    Значение начального члена ряда задаем до цикла путем прямого присваива- ния (номер начального члена n в разных вариантах равен 0 или 1, правильное значение определяется по формуле текущего члена). В нашем задании n=0, a=x.
    Листинг программы using
    System; namespace
    ConsoleWhile
    { class
    Program
    { static void
    Main()
    { double a=0, e=0.00001, q=0, s=0, x=0.1; int n = 0; a = x;
    // Инициализация цикла s = a; while
    (
    Math
    .Abs(a) > e)
    // Цикл
    { q = -x * x / (2 * n + 2) / (2 * n + 3); a *= q; s += a; n++;
    }
    Console
    .WriteLine();
    Console
    .WriteLine(
    "Результат"
    );
    Console
    .WriteLine();
    Console
    .WriteLine(
    "Сумма s="
    +
    Convert
    .ToString(s));
    Console
    .WriteLine(
    "Число членов ряда n="
    +
    Convert
    .ToString(n));
    Console
    .WriteLine();
    Console
    .WriteLine(
    "Нажмите любую клавишу"
    );
    Console
    .ReadKey();
    // Пауза

    50
    }
    }
    }
    Консоль перед закрытием программы:
    7.2.
    Цикл do…while
    Выполнить ту же задачу с применением инструкции цикла do…while. Проект – консольное приложение.
    Пример.
    Листинг программы
    using
    System; namespace
    DoWhile
    { class
    Program
    { static void
    Main()
    { double a = 0, e = 0.00001, q = 0, s = 0, x = 0.1; int n = 0; a = x;
    // Инициализация цикла s = a; do
    // Тело цикла
    { q = -x * x / (2 * n + 2) / (2 * n + 3); a *= q;

    51 s += a; n++;
    } while
    (
    Math
    .Abs(a) > e);
    // Цикл повторять
    Console
    .WriteLine();
    Console
    .WriteLine(
    "Результат"
    );
    Console
    .WriteLine();
    Console
    .WriteLine(
    "Сумма s = {0}"
    ,s);
    Console
    .WriteLine(
    "Число членов ряда n = {0}"
    ,n);
    Console
    .WriteLine();
    Console
    .WriteLine(
    "Нажмите любую клавишу"
    );
    Console
    .ReadKey();
    // Пауза
    }
    }
    }
    Результат работы программы такой же, как для задания 1.

    52
    8.
    Циклы с заданным числом повторений
    Предмет исследований

    Организация циклов с известным числом пвторений.

    Инструкция циклов for.

    Разработать алгоритмы решения задач.

    Составить программы решения задач.
    Контрольные вопросы
    Преимущества использования инструкций циклов в программе.
    1.
    Инструкция цикла for.
    2.
    Как организовать цикл с нарастанием индекса?
    3.
    Как организовать цикл с убыванием индекса?
    4.
    Организация вычисления суммы.
    5.
    Организация вычисления произведения.
    6.
    8.1.
    Команда Goto и метки
    Вывести последовательность чисел (их число две последние цифры в номере зачетной книжки) с использованием инструкции goto и метки. Проект – кон- сольное приложение.
    Пример. Вычислить последовательность 10 чисел с использованием инструк- ции goto и метки. Проект – консольное приложение.
    Листинг программы
    using
    System; namespace
    Goto
    { class
    Program
    { static void
    Main()
    { int i = 0;
    M:
    Console
    .WriteLine(
    "i: {0 } "
    , i); i = i + 1; if
    (i < 10) goto
    M;
    Console
    .WriteLine(
    "Нажмите любую клавишу"
    );
    Console
    .ReadKey();
    }
    }
    }

    53
    Результат прогона.
    8.2.
    Цикл for
    Вычислить значения функции с использованием инструкции цикла for. Проект – консольное приложение.

    54
    Пример. Вычислить значения функции с использованием инструкции цикла for.
    Проект – консольное приложение.
    Листинг программы using
    System;



    20 1
    2
    /
    i
    i
    x
    z

    55 namespace
    For1
    { class
    Program
    { static void
    Main()
    { double z = 0, x = 2; for
    (
    int i = 1; i < 21; i++) z += x * x / i;
    Console
    .WriteLine(
    "z = {0}"
    , z);
    Console
    .WriteLine(
    "Нажмите любую клавишу"
    );
    Console
    .ReadKey();
    }
    }
    }
    Консоль перед закрытием программы:
    8.3.
    Вложенные циклы for
    Вычислить значения функции с использованием вложенных инструкций цикла for. Проект – консольное приложение.
    Пример. Вычислить
    В алгоритме для разнообразия один цикл реализован инструкцией for нарас- танием индекса, а другой - инструкцией for с убыванием индекса.
    Листинг программы using
    System; namespace
    For2

    56
    { class
    Program
    { static void
    Main()
    { double t = 1, s = 0, x = 2; for
    (
    int i = 1; i < 11; i++)
    { for
    (
    int j = 10; j > 0; j--)
    { s +=
    Math
    .Cos(i * j * x); t *= s;
    }
    }
    Console
    .WriteLine(
    "t: {0 } "
    , t);
    Console
    .WriteLine(
    "Нажмите любую клавишу"
    );
    Console
    .ReadKey();
    }
    }
    }
    Консоль перед закрытием программы:
    8.4.
    Команда break
    Создать программу с иcпользованием команды break. Проект – консольное приложение. В программе ищется первое не простое число из последователь-

    57 ности чисел от N до 1. Варианты заданий – N = две последние цифры номера зачетной книжки.
    Пример. Создать программу с иcпользованием команды break. Проект – кон- сольное приложение. В программе ищется первое не простое число из после- довательности чисел от i = 8 до 1. Число не простое, если при его делении на целые числа, меньшие его, получается нулевой остаток. Во внешнем цикле пербираются числа делимые от i = 8 до 1. Во внутреннем цикле перебираются делители от j = i -1 до 1. При обнаружении нулевого остатка сбрасывается флаг простого числа, по которму команда break прекращает итерации, так как ответ уже найден.
    Листинг программы using
    System; namespace
    Break
    { class
    Program
    { static void
    Main()
    {
    // объявляем флаг с именем bool для обозначения простых чисел bool
    IsPrimeNumber = true
    ; for
    (
    int i = 8; i > 1; i--)
    {
    // устанавливаем флаг
    //IsPrimeNumber = true;
    for
    (
    int j = i - 1; j > 1; j--)
    {
    // если существует делитель с нулевым остатком
    // сбрасываем флаг if
    (i % j == 0)
    {
    IsPrimeNumber = false
    ;
    // дальнейшая проверка бессмысленна
    // если с нулевым остатком - то число простое if
    (IsPrimeNumber == true
    )
    Console
    .WriteLine(
    "{0}— простое число"
    , i); else
    Console
    .WriteLine(
    "{0}— не простое число"
    , i);
    Console
    .WriteLine(
    "Нажмите любую клавишу"
    );
    Console
    .ReadKey();
    } if
    (IsPrimeNumber == false
    ) break
    ;

    58
    }
    }
    }
    }
    }
    Консоль перед закрытием программы:
    8.5.
    Команда continue
    Создать программу с использованием команды continue. Проект – консольное приложение. В программе ищется первое нечетное число из последовательно- сти чисел от N до 1. Варианты заданий – N = две последние цифры номера зачетной книжки.
    Пример. В программе ищется первое нечетное число из последовательности чисел от N до 1. Признак нечетности – остаток от деления на 2 не равен нулю.
    Если он равен нулю, то команда continue прерывает текущую итерацию и пе- реъодит к следующей.
    Листинг программы using
    System; class
    PoiskNechet
    { static void
    Main()
    { for
    ( int i = 100; i > 0; i--)
    { if
    ( i%2 ==0 ) continue
    ;
    Console
    .WriteLine(
    "{0} - нечетное число"
    , i);
    Console
    .WriteLine(
    "Нажмите любую клавишу"
    );
    Console
    .ReadKey();

    59
    }
    }
    }
    Консоль перед закрытием программы:

    60
    9.
    Логические операции
    Предмет исследований

    Логические операции в C#.

    Разработать алгоритмы решения в соответствии с заданием.

    Составить программы решения задач.
    Контрольные вопросы
    Операция НЕ – Not.
    1.
    Операция ИЛИ – OR.
    2.
    Операция И – AND.
    3.
    Операция исключающее ИЛИ – XOR.
    4.
    Логические сдвиги.
    5.
    Выполнить над операндами i1 и i2 операции НЕ – Not, ИЛИ – OR, И – AND,, исключающее ИЛИ – XOR. Выполнить над операндом i1 логические двиги влево и вправо на j разрядов. Проект – консольное приложение.
    Варианты задания

    Число i1– первая с конца пара цифр в номере зачетной книжки.

    Число i2 – вторая с конца пара цифр в номере зачетной книжки.

    Число j – третья с конца пара цифр в номере зачетной книжки.
    Пример. Выполнить над операндами i1 = 10 и i2 = 16 операции НЕ – Not, ИЛИ
    – OR, И – AND, исключающее ИЛИ – XOR. Выполнить над операндом i1 = 10 логическис двиги влево и вправо на j = 4 разряда. Проект – консольное прило- жение.
    Листинг программы using System; namespace ConsoleLogic
    { class Program
    { static void Main()
    { int i = -16, i1 = 10, i2 = 16; bool b = true; int j = 4; // Размер свига
    Console.WriteLine("Операция НЕ - Not");
    Console.WriteLine();

    61
    Console.WriteLine("Операнд = {0}",b);
    Console.WriteLine("Not(Операнд) = {0}", !b);
    Console.WriteLine();
    Console.WriteLine("Операция ИЛИ - OR");
    Console.WriteLine(); i = i1 | i2;
    Console.WriteLine("Операнды = {0}, {1}",i1 ,i2);
    Console.WriteLine("(Оп1) OR (Оп2) = {0}", i);
    Console.WriteLine();
    Console.WriteLine("Операция И - AND");
    Console.WriteLine(); i = i1 & i2;
    Console.WriteLine("Операнды = {0}, {1}", i1, i2);
    Console.WriteLine("(Оп1) AND (Оп2) = {0}", i );
    Console.WriteLine();
    Console.WriteLine("Операция исключающее ИЛИ - XOR");
    Console.WriteLine(); i = i1 ^ i2;
    Console.WriteLine("Операнды = {0}, {1}", i1, i2);
    Console.WriteLine("(Оп1) XOR (Оп2) = {0}", i);
    Console.WriteLine();
    Console.WriteLine("Логический сдвиг");
    Console.WriteLine();
    Console.WriteLine("Исходное число = {0}", i); i = i1 >> j;
    Console.WriteLine("Cдвиг вправо на 4 бита = {0}", i); i = i1 << j;
    Console.WriteLine("Cдвиг влево на 4 бита = {0}", i);
    Console.WriteLine();
    Console.WriteLine("Нажмите любую клавишу");
    Console.ReadKey();
    }
    }
    }
    Консоль перед закрытием программы:

    62

    63
    10.
    Массивы
    Предмет исследований

    Способы описания размеров массивов.

    Способы ввода и вывода массивов.

    Реализация приемов накопления суммы или произведения элементов массивов, запоминания результатов, нахождения наибольшего и наименьшего.
    Контрольные вопросы
    Что такое массив?
    1.
    Описание типа - массив.
    2.
    Какие операторы языка можно использовать для описания массивов?
    3.
    Особенности организации цикла при обработке массивов?
    4.
    Особенности программирования при обработке массивов?
    5.
    Особенность ввода и вывода массивов?
    6.
    Представление строковых переменных типа String, как одномерных мас-
    7.
    сивов.
    Вложенные массивы.
    8.
    10.1.
    Одномерный массив
    Обработка одномерного массива. Проект – консольное приложение

    64
    Пример. Вычислить наибольший элемент Xmax массива Х и его порядковый номер Nmax. Размерность массива N=10. Результат – консольное приложение.
    В программе элементы массива создаются генератором случайных чисел.
    Листинг программы using
    System; namespace
    Massiv
    { class
    Program
    { static void
    Main()
    { int n = 0, N=10, Nmax=0, Mmax=0;
    // Переменные типа int
    Console
    .WriteLine();
    Random r = new
    Random
    ();
    // Для случайных чисел int
    [] M = new int
    [N];
    // Массив типа int

    65
    Console
    .WriteLine(
    "Создан массив M случайных целых чисел"
    );
    Console
    .WriteLine();
    Console
    .Write(
    "Номер n"
    +
    " Значение M[n]"
    );
    Console
    .WriteLine(); for
    (n = 0; n < N; n++)
    { int
    Mm = r.Next(0, 100);
    // Генерация случайного числа
    M[n] = Mm; if
    (Mm > Mmax)
    // Обнаружение максимума
    {
    Mmax = Mm;
    Nmax = n;
    }
    Console
    .WriteLine(
    "{0} {1,10}"
    ,n, Mm);
    }
    Console
    .WriteLine();
    Console
    .WriteLine(
    "Результаты"
    );
    Console
    .WriteLine();
    Console
    .Write(
    "Nmax="
    );
    // Вывод Nmax
    Console
    .WriteLine(Nmax.ToString());
    Console
    .Write(
    "Mmax="
    );
    // Вывод Mmax
    Console
    .WriteLine(Mmax.ToString());
    Console
    .WriteLine();
    Console
    .WriteLine(
    "Нажмите любую клавишу"
    );
    Console
    .ReadKey();
    // Пауза
    }
    }
    }
    Консоль перед закрытием программы:

    66
    10.2.
    Матрица
    Обработка матрицы. Проект – консольное приложение

    67
    Пример. Вывести квадратную матрицу X размером RxC в виде таблицы. Найти максимальное значание элемента и его ккординаты: номер строки R и номер столбца C.
    Листинг программы using System; namespace Matrix
    { class Program
    { static void Main()
    { int r=0,R=0,Rmax=0,c=0,C=0,Cmax=0,Mmax=0; // Переменные типа int
    Console.WriteLine("Введите число строк R и столбцов матрицы");
    Console.Write("Число строк R="); // Введите R
    R = Convert.ToInt32(Console.ReadLine());
    Console.Write("Число столбцов C="); // Введите C
    C = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine();
    Random rnd = new Random(); // Для случайных чисел int[,] M = new int[R, C]; // Матрица M[R,C] типа int for (r = 0; r < R; r++)
    { for (c = 0; c < C; c++)
    { int Mm = rnd.Next(0, 100); // Генерация случайного числа
    M[r,c] = Mm; if (Mm > Mmax) // Обнаружение максимума
    {
    Mmax = Mm; // Значение
    Rmax = r; // Номер строки
    Cmax = c; // Номер столбца
    }
    }
    }
    // Вывод матрицы
    Console.WriteLine("Создана матрица M[R,C] случайных целых чисел");
    Console.WriteLine(); for (r = 0; r < R; r++)
    { for (c = 0; c < C; c++)

    68
    {
    Console.Write(M[r, c].ToString("D2")+" ");
    }
    Console.WriteLine();
    }
    Console.WriteLine();
    Console.WriteLine("Результаты");
    Console.WriteLine();
    Console.Write("Максимальное значение Mmax="); // Вывод Mmax
    Console.WriteLine(Mmax.ToString());
    Console.Write("Номер строки Rmax="); // Вывод Rmax
    Console.WriteLine(Rmax.ToString());
    Console.Write("Номер столбца Cmax="); // Вывод Cmax
    Console.WriteLine(Cmax.ToString());
    Console.WriteLine();
    Console.WriteLine("Нажмите любую клавишу");
    Console.ReadKey(); // Пауза
    }
    }
    }
    Консоль перед закрытием программы:

    69
    По нему нужно проверить правильность исполнения алгоритма.

    70
    11.
    Файлы
    Предмет исследований

    Типы файлов, определенные в C#.

    Связь с дисковыми файлами.

    Операции с типизированными файлами.

    Операции с текстовыми файлами.

    Операции с нетипизированными файлами.
    Контрольные вопросы
    Типы файлов, определенные в C#..
    1.
    Способы связи с файлами.
    2.
    Директива using System.IO
    3.
    Тип FileStream для связи с файлами.
    4.
    Метод FileMode.Create.
    5.
    Метод FileMode.Append.
    6.
    Тип StreamWrite для связи с типом FileStream.
    7.
    Файловая переменная.
    8.
    Как связать файловую переменную с дисковым файлом?
    9.
    Процедуры создания, открытия, закрытия файлов.
    10.
    Задание. Создать программу создания и дополнения текстового файла. Сна- чала создать текстовый файл из заданного числа строк и посмотреть его со- держимое. Затем добавить в этот файл строки и проверить содержимое итого- вого файла.
    Пример.
    Листинг программы using System; using System.IO; namespace Files
    { class Program
    { static void Main()
    { string ПутьКФайлу = "e:\\"; string ИмяФайла = "data.txt"; string ПолноеИмяФайла = ПутьКФайлу + ИмяФайла;
    FileStream f = new FileStream(ПолноеИмяФайла, FileMode.Create);

    71
    StreamWriter str = new StreamWriter(f); int ЧислоСтрокБлока = 4;
    // Запись в файл блока строк for (int i = 1; i <= ЧислоСтрокБлока; i++)
    {
    Console.Write("Строка {0} = ", i); string s = Console.ReadLine(); str.WriteLine(s);
    } str.Close(); f.Close();
    Console.WriteLine();
    Console.WriteLine("Проверьте создание файла, затем нажмите любую клавишу");
    Console.ReadKey();
    Console.WriteLine();
    FileStream f1 = new FileStream(ПолноеИмяФайла, FileMode.Append);
    StreamWriter str1 = new StreamWriter(f1);
    // Добавление в файл блока строк for (int i = 1; i <= ЧислоСтрокБлока; i++)
    {
    Console.Write("Строка {0} = ", i + ЧислоСтрокБлока); string s = Console.ReadLine(); str1.WriteLine(s);
    } str1.Close(); f1.Close();
    Console.WriteLine();
    Console.WriteLine("Проверьте добавление файла, затем нажмите любую клавишу");
    Console.ReadKey();
    }
    }
    }
    Консоль перед закрытием программы:

    72

    73
    1   2   3   4   5   6   7


    написать администратору сайта