Главная » Статьи » Информатика | [ Добавить статью ] |
Реферат: Операторы циклаЗадачи целочисленной арифметики Командой повторения или циклом называется такая форма организации действий, при которой одна и та же последовательность действий повторяется до тех пор, пока сохраняется значение некоторого логического выражения. При изменении значения логического выражения на противоположное повторения прекращаются (цикл завершается). Для организации цикла необходимо выполнить следующие действия: перед началом цикла задать начальное значение параметра; внутри цикла изменять параметр цикла с помощью оператора присваивания; проверять условие повторения или окончания цикла; управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из цикла в противном случае. Различают циклы с известным числом повторений (цикл с параметром) и итерационные (с пред- и постусловием). В цикле с известным числом повторений параметр изменяется в заданном диапазоне. Если в цикле изменяется простая переменная, то она является параметром цикла; если в цикле изменяется переменная с индексом, то индекс этой переменной является параметром цикла. Для организации цикла с известным числом повторений в Pascal используется оператор for. Структура цикла, организованного с помощью этого оператора, имеет вид: For I := A To B Do Begin <операторы> End; или For I := A DownTo B Do Begin <операторы> End; Здесь I — параметр, изменяющийся в цикле; A, B — выражения порядкового типа, обозначающие начальное, конечное значение параметра цикла. Шаг изменения номера параметра цикла равен 1, если в заголовке цикла стоит To (т.е. реально следующее значение параметра цикла вычисляется с помощью функции succ); и -1 — при DownTo (вычисление производится с помощью функции pred). Порядок выполнения цикла с шагом 1 следующий: вычисляются значения начального и конечного значений параметра цикла; параметр если I принимает начальное значение; если I меньше или равно конечному значению, исполняется тело цикла; значение параметра цикла увеличивается, т.е. I := succ(I); проверяется условие I<=B (для отрицательного шага условие I>=B) и при его выполнении цикл повторяется. Выход из цикла осуществляется, если I>B (I<B для H=-1), и выполняется оператор, следующий за оператором цикла. Если A>B (или A<B для H=-1), то цикл не исполняется ни разу. Если в операторе цикла с параметром начальное или конечное значение параметра заданы переменными или выражениями, то значения этих переменных должны быть определены в программе до оператора цикла. Не следует внутри цикла изменять параметр цикла, его начальное и конечное значения с помощью операторов присваивания или ввода. Задача 1. Дано натуральное n, действительное x. Вычислить Разработаем алгоритм решения задачи: 1) ввести данные - количество слагаемых n и число x; 2) присвоить переменной, в которой будем хранить степени sin x, значение 1; S := 0; 3) присвоить параметру цикла значение 1; 4) если значение параметра цикла меньше n, перейти к следующему пункту, иначе к п. 9; 5) вычислить очередную степень sin x; 6) добавить вычисленное значение к сумме; 7) увеличить параметр цикла на 1; 8) перейти к п.4; 9) вывести на печать сумму S; 10) конец. {Программа вычисления суммы степеней sin x} Program Summa; Var S, X, Pr : Real; N, I : Integer; Begin Write('Введите число слагаемых и x: '); ReadLn(N, X); Pr := 1; {в этой переменной хранятся последовательные степени sin x} S := 0; For I := 1 To N Do Begin Pr := Pr * Sin(X); {Очередная степень Sin(x)} S := S + Pr End; WriteLn('Сумма равна ', S : 7 : 4) End. Достаточно часто цикл с параметром используется при разработке программ обработки массивов. Примечание. Как видно из рассказа, приведённого выше, область применения цикла с параметром в языке Pascal значительно ограничена: ограничения связаны с шагом изменения параметра цикла, с типом параметра цикла, его начального и конечного значения. В некоторых языках, например, в Basic, таких ограничений не существует. По сравнению с циклом с параметром итерационные циклы являются универсальными. Для организации итерационных циклов используются операторы цикла с предусловием while и цикла с постусловием repeat..until. Эти операторы не задают закон изменения параметра цикла, поэтому необходимо перед циклом задавать начальное значение параметра с помощью оператора присваивания, а внутри цикла изменять текущее значение этого параметра. Соответствующие структуры циклов: while B Do Begin <операторы> End; Repeat <операторы> Until C; Здесь B, C — логические выражения. Для оператора цикла с предусловием проверяется значение логического выражения, если оно имеет значение True, то операторы, входящие в цикл, выполняются, в противном случае осуществляется выполнение оператора, следующего за циклом. Цикл с постусловием выполняется хотя бы один раз. Затем проверяется значение логического выражения, если оно False, то операторы, входящие в цикл, выполняются, в противном случае осуществляется выход из цикла. Входить в цикл можно только через его начало, т.е. нельзя входить внутрь цикла с помощью управляющего оператора, т.к. в этом случае параметр цикла не определен. Задача 2. Найти наименьший номер члена последовательности, для которого выполняется условие |an-an-1|<e, где an=arctg an-1+1, a1=0. Вывести на экран этот номер и все элементы ai (i = 1, 2, ..., n). Поскольку по ходу решения задачи необходимо знать an и an-1, будем запоминать их соответственно в переменных ANew и AOld. Program Posled; Var Eps, AOld, ANew : Real; N : Integer; Begin Write('Введите число Epsilon '); ReadLn(Eps); AOld := 0; ANew := ArcTan(AOld) + 1; N := 2; WriteLn(AOld : 8 :5); WriteLn(ANew : 8 :5); While Abs(ANew - AOld) >= Eps Do Begin AOld := ANew; ANew := ArcTan(AOld) + 1; WriteLn(ANew : 8 :5); N := N + 1 End; WriteLn('Искомый номер ', N) End. Внутрь одного цикла может входить один или несколько других. При этом охватывающий цикл называется внешним, а вложенные циклы — внутренними. Правила организации как внешнего, так и внутренних циклов такие же, как и простого цикла. Задача 3. На интервале [2; n] найти натуральное число с максимальной суммой делителей. Предлагаемая задача может быть отнесена к классу «задачи целочисленной арифметики», где аргументы, результаты и промежуточные величины относятся к целому типу. Следует заметить, что в такого рода задачах довольно часто используются операции DIV и MOD; наиболее типичной подзадачей является определение количества цифр в записи числа. Алгоритм решения задачи: 1) ввести число n; 2) переменной для хранения максимальной суммы делителей присвоить значение 1 (это сумма делителей числа 1); 3) запомнить число с максимальной суммой делителей; 4) параметру цикла I присвоить значение 2; 5) если I больше n, перейти к п. 13, иначе - к следующему пункту; 6) переменной для хранения очередной суммы делителей присвоить значение 0; 7) параметру цикла K присвоить значение 1; 8) если K больше I/2, перейти к п. 11, иначе - к следующему пункту; 9) если I делится на K без остатка, добавить K к текущей сумме делителей; 10) увеличить K на 1 и перейти к п. 8; 11) сравнить текущую сумму делителей с максимальной, если максимальная меньше, запомнить новое значение и число, соответствующее этой сумме; 12) увеличить I на 1 и перейти к п. 5; 13) вывести число с максимальной суммой делителей и эту сумму; 14) конец. Program Sum_Del; Var N, I, Sum_Max, Sum, K, Ch : Integer; Begin Write('Введите число N: '); ReadLn(N); Sum_Max := 1; {Максимальная сумма делителей} Ch := 1; {Число с максимальной суммой делителей} For I := 2 To N Do {Это цикл по количеству чисел} Begin Sum := 0; For K := 1 To I Div 2 + 1 Do {В этом цикле находим сумму делителей} If I Mod K = 0 Then {Если I нацело делится на K, то K - делитель I} Sum := Sum + K; Sum := Sum + I; If Sum > Sum_Max Then Begin Sum_Max := Sum; Ch := I End; End; WriteLn('Максимальную сумму делителей ', Sum_Max, ' имеет число ',Ch) End. Задача 4. Дано натуральное число n. Получить все простые делители этого числа. {Программа отыскания простых делителей данного числа} Program Pr_Del; Var N, I, Vsp : Integer; Log_Per, Priznak : Boolean; Begin Write('Введите натуральное число: '); ReadLn(N); Priznak := True; {Признак того, не является ли введенное число простым} {Пока параметр цикла не превысил квадратного корня из данного числа, продолжаем поиск простых делителей} For I := 2 To Round(Sqrt(N)) Do If N Mod I = 0 Then Begin Priznak := False; {Введенное число не является простым} Log_Per := False; {Логическая переменная, принимающая значение True, если нашлись делители I, отличные от 1 и I} Vsp := 2; Repeat If (I Mod Vsp = 0) And (I <> Vsp) Then Log_Per := True; |
Чтобы скачать материал, пожалуйста, авторизуйтесь или зарегистрируйтесь! Это быстро ! )
Категории
Математика, алгебра, геометрия [1729] |
Книги (Это интересно) [351] |
Видеоуроки [26920] |
География [2660] |
Дополнительное образование [401] |
ЕГЭ/ГИА [266] |
Информатика [1187] |
История / обществознание [4663] |
Для Логопеда [500] |
Материалы для коррекц. классов [400] |
ОБЖ [558] |
Презентации [402] |
Для Психолога [514] |
Физическая культура [529] |
Черчение [121] |
Шаблоны презентаций [466] |
Для Библиотекаря [160] |
Праздники [419] |
Интересные Видеоролики [12] |
Английский язык [791] |
Иностранные языки (прочие) [461] |
Окружающий мир [873] |
Биология и экология [1643] |
Всем учителям [508] |
Для директора и завуча [1042] |
Дошкольное образование [1238] |
Искусство [804] |
Для Классного руководителя [543] |
Начальные классы [718] |
Основы религиозных культур [137] |
Программы и Софт [21] |
Родной язык [505] |
Русский язык и литература [3915] |
Технология [1000] |
Физика [1263] |
Химия [1297] |
Экономика [905] |
Астрономия [444] |
Писатели [113] |
Классный час [527] |
Шаблоны документов [85] |
Другое (Прочее) [412] |