Примеры программ с


Примеры программ с циклами

Количество просмотров публикации Примеры программ с циклами - 304

Пример 1. Вычислить и вывести на печать значения функции y = x+ex sin x , в случае если аргумент х изменяется от -1 до 2 с шагом 0,1.

Составим схему алгоритма (рис. 1).

Она работает следующим образом: в блоке 2 аргументу х присваивается начальное значение, равное -1, в блоке 3 вычисляется значение функции у при х = -1, в блоке 4 значения у и х выводится на экран. В блоке 5 аргумент получает приращение, ᴛ.ᴇ. увеличивается на 0,5, в блоке 6 выполняется проверка на достижения аргументом конечного значения, равного 2. В случае если аргумент х ещё не превысил конечное значение, то

управление передаётся блоку 3, в котором вычисляется новое значение функции у при новом значении х. В случае если значение х становится больше, чем 2, то вычисления прекращаются, конец программы.

По этому алгоритму можно составить четыре варианта программы.

Схема алгоритма:

Рисунок 1 Схема алгоритма

циклической программы

Программа, вариант 1

REM Цикл с оператором IF…THEN

CLS ' очистка экрана

х =-1 ' присвоение х начального значения

m: у =х + EXP(х)*SIN(х) ' вычисление у при хнач

PRINT "у =";у, "х ="; х ' вывод на экран у и х

х =х + 0.1 ' увеличение х на шаг 0,1

IF х <= 2 THEN m ' если х ещё меньше или равен хкон, то

END ' управление передаётся по метке m, если

' нет, то следующему оператору – END

В программе варианта 1 для организации цикла использован оператор условного перехода IF…THEN (что указано в комментарии – оператор REM).

Действие каждого оператора указано в комментариях под знаком апострофа (это невыполняемая часть программы, которая записывается только для программиста). Возврат в начало цикла организован передачей управления с помощью оператора условного перехода по метке m.

Вариант 2

REM Цикл с оператором FOR…NEXT

CLS ' очистка экрана

FOR х =-1 TO 2 STEP .2 ' задание параметров цикла: хнач, хкон, шага ∆х

у =х + EXP(х)*SIN(х) ' вычисление у в цикле

PRINT "у =";у, "х ="; х ' вывод на экран у и х

NEXT x ' возврат к началу цикла

END

Описание программы:

в операторе цикла FOR…задаётся первое значении х=-1, следующим оператором вычисляется значение функции у, затем оно распечатывается на экране (оператор PRINT) вместе со значением х, потом оператор NEXT x передаёт управление назад, оператору FOR…, где к величинœе х прибавляется шаг, т.е число 0,2, новое значение х составляет -0,8, в следующем операторе вычисляется значение у при х=-0,8, распечатывается, вновь производится возврат в оператор FOR…, вновь увеличивается аргумент х на 0,2 и становится равным 0,6 и т.д. Последний раз цикл выполнится при х=2, а потом, т.к. заданный интервал х[-1;2] уже просчитан, программа переходит к следующему оператору, ᴛ.ᴇ. END – конец программы.

Вариант 3

REM Цикл с оператором WHILE…WEND

CLS ' очистка экрана

х = -1 ' задание начального значения: хнач = -1

WHILE x <= 2 ' проверка условия: пока х ещё <= хкон = 2

у =х + EXP(х)*SIN(х) ' вычисление у в цикле

PRINT "у =";у, "х ="; х ' вывод на экран у и х

х = х + 0.2 ' увеличение х на шаг 0.2

WEND' возврат к началу цикла - WHILE…

END

Описание программы:

Начальное значение х = -1 задаётся до тела цикла WHILE…WEND,

затем в операторе WHILE проверяется достижение конца цикла х = 2. Поскольку х = -1 ещё меньше, чем 2, то программа переходит к следующему оператору, где вычисляется значение у при первом х = -1. затем оно и значение х распечатываются (на экране), потом значение х увеличивается на шаг (х = х + 0.1) и оператор WEND передаёт управление оператору WHILE, где снова проверяется, достигло ли новое значение х = -0,8 значения 2. Т.к. -0,8 ещё меньше 2, то вычисляется у при этом значении х = -0,8 ,распечатывается вместе с х, снова х увеличивается на шаг 0,2, затем WEND возвращает управление началу цикла, где WEND вновь проверяет х = -0,6 на достижение хкон = 2 и т.д.

Особенностью цикла является то, что он должна быть не выполнен ни разу, в случае если значение хнач пройдет проверку в операторе WHILE, ᴛ.ᴇ. окажется больше хкон.

Вариант 4

REM Цикл с оператором DO…LOOP

CLS ' очистка экрана

х = -1 ' задание начального значения: хнач = -1

DO

у =х + EXP(х)*SIN(х) ' вычисление у в цикле

PRINT "у =";у, "х ="; х ' вывод на экран у и х

х = х + 0.2 ' увеличение х на шаг 0.2

LOOP UNTIL x > 2 ' проверка превышения конца цикла х > 2

END

Описание программы:

До тела цикла вводится хнач= -1, потом следует оператор "Делать" – что именно: вычислять у, распечатывать его и аргумент х. Далее идёт проверка: делать петлю до того, как величина х станет больше хкон. В условии проверки должен стоять знак ">", чтобы цикл был просчитан и при последнем значении х = хкон. В случае если записать LOOP UNTIL x = 2, то последним значением х, ĸᴏᴛᴏᴩᴏᴇ будет до х = 2, является х = 1,8, ᴛ.ᴇ. при х = хкон= 2 цикл просчитан не будет. В случае если записать LOOP UNTIL x < 2, то всœе значения х окажутся меньше хкон и цикл просчитается только один раз, при х = хнач= -1, затем он увеличится на шаг и станет равным -0,8, но это значение является значением до х = 2, в связи с этим "петля" на слово DO делаться не будет. По этой причине, для того, чтобы цикл был

просчитан и при конечном значении аргумента х, в условии LOOP UNTIL должен быть только знак ">".

Структура программы такая же, как и для цикла WHILE…WEND, ᴛ.ᴇ. до тела цикла вводится начальное значение х = -1, а в телœе цикла вычисляется и выводится у, а также задаётся приращение аргумента х = х + 0,1, но:

· проверка достижения хкон выполняется в конце цикла, в связи с этим он обязательно будет просчитан хотя бы один раз (при х = хнач),

· в условии проверки достижения конечного значения должен стоять знак ">", чтобы цикл был просчитан и при последнем значении аргумента.

Вариант 5

REM Цикл с оператором DO UNTIL…LOOP

CLS ' очистка экрана

х = -1 ' задание начального значения: хнач = -1

DO UNTIL x > 2 ' проверка превышения конца цикла х > 2

у =х + EXP(х)*SIN(х) ' вычисление у в цикле

PRINT "у =";у, "х ="; х ' вывод на экран у и х

х = х + 0.2 ' увеличение х на шаг 0.2

LOOP

END

Работа программы происходит также, как и в варианте 4, но, поскольку проверка конца цикла производится в его начале, то он тоже должна быть не выполнен ни разу (как и в цикле WHILE…WEND).

Пример 2 Вычислить с помощью оператора цикла и вывести на печать сумму всœех значений у = sin3х, где х изменяется от 1 до 10 с шагом 0.1.

S =

referatwork.ru

Примеры программ на С++

Внимание! Это сайт переехал на www.simplecoding.org

Большинство программ в этом разделе (но не все) написаны с использованием объектно-ориентированного программирования. Примеры написаны с помощью Borland C++ Builder 5 или Visual Studio.NET (для примеров, в которых используется DirectX). Однако, это должно вам мешать использовать их с какой-либо другой средой разработки, т.к. все функции программ (кроме интерфейса) написаны в виде отдельных модулей и не зависят от VCL и MFC.

Совет: не пропускайте описание программы. Безусловно, исходного кода достаточно для того, чтобы разобраться в работе программы. Но в описании рассказывается о назначении отдельных файлов программы, и о взаимодействии её частей между собой.

  • Простая логическая игрушка
  • С этой игрой я познакомился, когда играл в "Космических рейнджеров" (это было задание в одном из квестов). Игра показалась мне интересной, и я решил написать свою версию. При этом мне захотелось добавить возможность регулирования уровня сложности >>>
  • Путешествие коня
  • Эта интересная головоломка была предложена математиком Эйлером. Задание, на первый взгляд, достаточно простое – нужно шахматным конем, находящимся на произвольной клетке шахматной доски, обойти все остальные клетки доски. При этом на одну клетку можно походить только один раз >>>
  • Восемь ферзей
  • Эта задача - одна из очень интересных шахматных головоломок. Нужно поставить восемь ферзей на пустой доске таким образом, чтобы ни один из них не "атаковал" другого >>>
  • Крестики-нолики (DirectX)
  • Эта игра известна всем, начиная с дошкольного возраста. Тем не менее, я до сих пор не видел её трехмерного варианта (может, плохо искал?). К тому же, мне давно хотелось написать полноценную 3D игрушку, и крестики-нолики показались мне достаточно подходящим вариантом. В общем, если вы интересуетесь программированием игр и библиотекой DirectX, читайте дальше >>>

P.S. Любые замечания или предложения, касающиеся этого сайта, статей и примеров, размещенных на нем, вы можете отправить лично мне по адресу [email protected], либо сообщить всем с помощью гостевой книги.

www.vova-prog.narod.ru

Студентам

Стандартные задачи на циклы

Ссылка на Wiki-страничку с алгоритмами на циклы

Простейшие алгоритмы

  1. Сумма целых чисел
  2. Произведение целых чисел
  3. Двойной факториал n!!=n*(n-2)*(n-4)*...*2 (или 1)
  4. Количество нечетных среди n введенных
  5. Защита от неверного ввода
  6. Табулирование функции f(x) на отрезке в [a,b] (цикл for)
  7. Табулирование функции f(x) на отрезке в [a,b] (цикл while)
Рекуррентные соотношения
  1. Вывод 10 первых степеней двойки
  2. Вывод всех двухзначных чисел, кратных 5
  3. Вывод n первых чисел Фибоначчи
  4. НОД(A,B) (алгоритм Евклида)
  5. Сумма цифр целого положительного числа
Максимумы и минимумы
  1. max из введенных чисел
  2. min из введенных чисел, удовлетворяющий условию
Суммирование рядов (конечных и бесконечных)
  1. Вычисление суммы конечного ряда ?(i=1..n) a^i/i!
  2. Вычисление суммы бесконечного ряда ?(i=1..?) (-1)^i * a^i/i!
Поиск значения
  1. Есть ли среди введенных число k?
  2. Есть ли среди введенных число k? (то же с использованием while)
  3. Является ли число N простым?
Другие алгоритмы
  1. Разложение числа на простые множители
  2. Вычисление значения многочлена в точке x (схема Горнера)
  3. Корень непрерывной функции на отрезке (метод половинного деления)

Стандартные задачи на одномерные массивы

Простейшие алгоритмы

  1. Вывод массива
  2. Заполнение массива случайными числами
  3. Инвертирование массива
  4. Поиск элемента по заданному значению
  5. Поиск с барьером
  6. Минимальный элемент и его индекс

Сдвиги, вставка, удаление

  1. Сдвиг влево
  2. Сдвиг вправо
  3. Циклический сдвиг вправо
  4. Удаление k-того элемента
  5. Вставка на k-тое место

Слияние упорядоченных и бинарный поиск в упорядоченном массиве

  1. Слияние двух упорядоченных в один упорядоченный
  2. Поиск в упорядоченном массиве

Сортировка массивов

  1. Сортировка выбором
  2. Пузырьковая сортировка
    • Способ 1
    • Способ 2
  3. Сортировка вставками

Использование процедурных типов в задачах на массивы

  1. Поиск по условию
  2. Количество по условию
  3. Условный минимум
  4. Удаление по условию

Файлы

  1. Создание текстового файла целых и подсчет суммы чисел в файле
  2. Создание текстового файла и преобразование каждой строки - все буквы к верхнему регистру
  3. Создание типизированного файла целых и вывод данных из него
  4. Возведение в типизированном файле всех элементов в квадрат
  5. Сортировка типизированного файла

Списки

Односвязные линейные списки

  1. Вставка в начало списка
  2. Удаление из начала списка
  3. Вставка после текущего узла
  4. Удаление после текущего узла
  5. Проход по списку

Двусвязные линейные списки

  1. Вставка в начало/конец списка
  2. Удаление из начала/конца списка
  3. Вставка перед/после узла
  4. Удаление текущего узла
  5. Проход по списку
  6. Слияние двух отсортированных списков
  7. Объединение двух списков

Рекурсия

  1. Рекурсивное вычисление факториала
  2. Рекурсивное вычисление минимума в массиве
  3. Рекурсивное вычисление чисел Фибоначчи с использованием вспомогательного массива
  4. Ханойские башни
  5. Быстрая сортировка

Деревья

Основные операции

  1. Создание бинарного дерева и его вывод
  2. Обходы бинарного дерева
  3. Поиск элемента в бинарном дереве

Поиск минимальной суммы от корня к листу

  1. Очевидный рекурсивный алгоритм
  2. Алгоритм перебора с возвратом
  3. Алгоритм перебора с возвратом + метод ветвей и границ

Бинарные деревья поиска

  1. Добавление элемента
  2. Вывод
  3. Поиск элемента
  4. Удаление элемента

Абстрактные типы данных. Контейнеры

Стек

  1. Реализация стека. Алгоритм вычисления выражения в ПОЛИЗ (польскую инверсную запись)

Очередь

  1. Реализация очереди. Вывод четных в прямом и нечетных в обратном порядке

Динамический массив

  1. Реализация динамического массива с примером использования

Множество

  1. Реализация множества с примером использования

Ассоциативный массив

  1. Реализация ассоциативного массива с примером использования

Контейнеры .NET

  1. Цикл по LinkedList с помощью LinkedListNode
  2. Цикл foreach по контейнерам List, LinkedList
  3. Цикл foreach по Dictionary

Объектно-ориентированное программирование

  1. Демонстрация наследования
  2. Демонстрация включения
  3. Демонстрация перехвата нескольких исключений
  4. Демонстрация полиморфизма
  5. Демонстрация реализации интерфейса
  6. Демонстрация ограничений на переметры шаблона
  7. Демонстрация использования интерфейса IComparable для сортировки контейнера.

Методы расширения

  1. Фильтрация с помощью Where
  • Назад
  • Вперёд

pascalabc.net