Оператор цикла с параметром — Информатика, информационные технологии
Программирование в Delphi с использованием операторов цикла
Цель и содержание работы
В данной лабораторной работе изучаются операторы цикла языка Delphi на примере решения задач обработки данных, представленных одномерными массивами.
Целью лабораторной работы является получение студентами навыков программирования циклических алгоритмов обработки одномерных массивов.
Общие сведения
Оператор цикла обеспечивает повторение некоторой последовательности операторов.
В языке Delphi имеется три вида операторов цикла. Если число повторений цикла известно заранее, то можно использовать оператор цикла с параметром (оператор FOR). В противном случае используются оператор цикла с предусловием (оператор WHILE) или оператор цикла с постусловием (оператор REPEAT).
Оператор цикла с предусловием
Оператор цикла с предусловием реализует базовую алгоритмическую структуру «Цикл с предусловием» (рис. 1.).
Рис. 1. Базовая алгоритмическая структура «Цикл с предусловием».
Синтаксическая структура оператора цикла с предусловием имеет следующий вид»
WhileDo
должно иметь значение логического типа.
Т.е.задает условие повторения цикла, ареализует тело цикла и коррекцию – изменение значения хотя бы одной переменной, входящей в .
После служебного слова Do может быть записан только один оператор и обычно это составной оператор.
Пример 1: I:=1; S:=0; N:=10; { инициализация}
While I
Begin
S:=S+I; {тело цикла}
I:=I+1; {коррекция}
End;
Пример 2: Max := A[1]; I: =2; ; N:=10; { инициализация}
While I
Begin
IFA[I] Max Then {тело цикла}
Max := A[I];
I:=I+1; {коррекция}
End;
Оператор цикла с постусловием
Оператор цикла с постусловием реализует базовую алгоритмическую структуру «Цикл с постусловием» (рис. 2.).
Синтаксическая структура оператора цикла с постусловием имеет следующий вид:
Repeat
опратор;
[оператор;…
оператор;]
Until
должно иметь значение логического типа.
Рис. 2. Структура «Цикл с постусловием».
Семантика оператора:
Сначала выполняется последовательность операторов, затем вычисляется значение . Выполнения оператора цикла с постусловием продолжается, если значениеравно False, и завершается, если значениеравно True.
Т. е. оператор цикла с постусловием выполняется, по крайней мере, один раз.
Пример: I:=1; S:=0; N:=10; {инициализация}
Repeat
S:=S+I; {тело цикла}
I:=I+1; {коррекция}
Until IN; {условие выхода из цикла}
Оператор цикла с параметром
Оператор цикла с параметром используется в тех случаях, когда известно число повторений цикла, а также при обработке данных, представленных массивами.
Синтаксическая структура оператора цикла с параметром:
For:=То
Do .
или
For:= Downto
Do ;
Переменную, идентификатор которой указан после служебного слова For называют параметром цикла.
Значение переменной – параметра цикла, значение выражения 1, выражения 2 должны быть одного и того же простого порядкового типа.
Т.е. значение переменной – параметра цикла, выражения 1 и выражения 2 не могут быть типа Real.
Значение переменной – параметра цикла нельзя изменять в операторе, записанном после служебного словаDo.
Оператор цикла For обеспечивает выполнение оператора, называемого телом цикла, до тех пор пока не будут автоматически перебраны все значения переменной – параметра цикла.
Если параметр цикла имеет тип Integer, то значение параметра цикла последовательно увеличиваются (при For…To) или уменьшается (при For…DownTo) на единицу при каждом повторе.Т.е. оператор цикла For в этом случае не допускает изменения параметра цикла на величину, отличную от единицы.
Пример 1: S:=0; N :=10;
For I :=1 ToN Do
S:=S+I; {тело цикла}
Пример 2: Max := A[1]; I: =2; ; N :=10;
For I :=1 To N Do
IFA[I] Max Then
Max := A[I];
Структура данных массив
Массив — это поименованное упорядоченное множество, образованное из фиксированного числа элементов данных одного и того же типа.
Элементы данных в массиве упорядочены с помощью индексов (одного или нескольких). В качестве индексов используются константы и переменные порядкового типа. Чаще всего это константы и переменные, принимающие целые положительные значения.
Порядковый тип — это такой тип, который определяет множество значений таких, что каждое из них, кроме первого и последнего, имеет предыдущее и последующее значение.
Для идентификации отдельного элемента массива необходимо указать:
— имя (идентификатор) массива,
— один или несколько индексов.
В Delphi индексы указываются вслед за именем массива в квадратных скобках и разделяются запятой.
Пример: B [3]
MAS [i , j].
Массив называют одномерным, если для идентификации отдельного элемента необходимо указать один индекс, двумерным, если два индекса и т. д.
Алгоритмы, манипулирующие данными, представленными массивами, имеют циклическую структуру.
Описание массива
Синтаксическая структура описания типа массив выглядит следующим образом:
TypeArray [] of .
Чаще всего в качествеиспользуется интервальный тип.
Пример 1: Type ТТ1= Array [1..50] of real;
Var А1, А2:TT1;
Допускается описывать массив сразу в разделе описания переменных.
Пример 2: Var A3, A4 : Array [1..5, 1..50] ofinteger;
Обработка данных типа массив производится поэлементно.
2.4.2. Компоненты Delphi, используемые для ввода/вывода массивов
В Delphi для ввода/вывода массивов обычно используется компонента StringGrid, расположенная на странице Additional палитры компонентов и представленная значком следующего вида. Компонента имеет свойство Cells, представляющее собой двумерный массив ячеек, содержащих текстовые строки. Индексация ячеек начинается всегда с нуля и первым указывается индекс столбца.
После размещения компоненты на форме она имеет вид, представленный на рис 3.
Рис. 3. Форма с размещенной на ней компонентой StringGrid.
По умолчанию компонента StringGrid имеет пять строк и пять столбцов, причем нулевая строка и нулевой столбец фиксированы, т. е. не прокручиваются.
Для того чтобы компонента могла использоваться для ввода одномерного массива необходимо при визуальной разработке интерфейса пользователя программы установить значения ниже перечисленных свойств StringGrid следующим образом:
Свойство | Значение |
FixedCols | |
FixedRows | |
Rowcount | |
Options | [goEditing] |
Значение [goEditing] свойства Options позволяет пользователю размещать в ячейках компоненты во время выполнения программы строки символов.
Статьи к прочтению:
- Оператор цикла с перебором foreach
- Оператор цикла с предусловием имеет вид
06. Цикл с параметром
Похожие статьи:
Операторы цикла и передачи управления
Операторы цикла задают многократное исполнение операторов тела цикла. Определены три разных оператора цикла: цикл с предусловием while…
Оператор цикла с предусловием имеет вид
Содержание Рабочая программа……………………………………………….. 3 Программирование на Паскале……………………………. 4…
Запускать что-то только один раз в цикле while? — NI LabVIEW
Шеф Дельфиsiggy2xc
#1
Как лучше всего запустить что-то только один раз в цикле while? Метод, который я сейчас использую, использует глобальную переменную, но мне хотелось бы найти способ, который не требует глобальной или локальной переменной.
Вайксрок
#2
Итак, если я правильно понимаю, вы хотите, чтобы какой-то фрагмент кода внутри цикла while выполнялся только при первом запуске цикла?
Этого можно добиться, поместив желаемый код внутрь структуры case, которая получает результат сравнения с выводом маленького синего блока «i» в углу.
Дайте мне знать, имеет ли это смысл
Joe_Ross
#3
Вы также можете использовать функцию первого звонка: http://zone.ni.com/reference/en-XX/help/371361F-01/glang/first_call/
siggy2xc
#4Спасибо! никогда этого не знал. Но он начинается с 0 для дальнейшего использования
случайная_переменная
#5
Думаю, что-то подобное может вас заинтересовать. После запуска программы случайное число не появляется. Когда я «Начинаю пробную версию», появляется одиночных случайных чисел. Я инициализировал значение «Boolean» значением TRUE до выполнения цикла while.
http://www.flickr.com/photos/
780@N04/8534396815/
sasasa.vi (8,72 КБ)
sasasa.vi (8,72 КБ)
Алан_Андерсон
#6
Да, примерно так Тайлер и делал это с самого начала. Он спрашивал, как это сделать без глобальной/локальной переменной.
Два года назад.
Я думаю, что «Первый звонок?» функция является подходящим инструментом.
Аккуратный
#7
Я считаю, что «Первый звонок» — очень специфическая функция с очень важной особенностью, о которой следует помнить. Если указанный цикл while находится внутри большего цикла, то должен ли код запускаться при втором вызове? С Первым звонком он не запустится. С итерационной проверкой он будет работать, так как он сбрасывается каждый раз при запуске цикла.
Существует также множество причуд LabVIEW, если вы запускаете свой код через свой ПК для отладки после того, как какой-то код уже запущен на роботе, вы не можете быть уверены, сбросится ли First Call или нет, поскольку LabVIEW, кажется, спасает самые раздражающие непредсказуемые биты данных, когда вы делаете подобные вещи.
First Call — обманчиво простая, но продвинутая функция, и ее не следует знакомить с ней неопытных программистов LabVIEW.
Грег МакКаскл
#8
Я согласен, что первый звонок — это продвинутая концепция, но я бы не назвал ее причудливой. Документация довольно откровенна: «Первый звонок? Функция возвращает TRUE только при первом вызове после нажатия кнопки «Выполнить». В деталях немного больше. Если вы найдете кейс, который не соответствует документации, пора что-то менять, либо в документации, либо в продукте.
Грег МакКаскл
NeatNit
#9
Подумайте только о том, сколько раз узлы обратной связи резервировали информацию, которую вы не хотели или не ожидали от них. Первый звонок сделал бы то же самое.
Грег МакКаскл
#10
Явная цель узла обратной связи — сохранить информацию для другого запуска этого выражения диаграммы. Сложность заключается в том, чтобы указать, каково время жизни сохраненных данных о состоянии — когда они должны быть инициализированы и с каким значением. Терминал инициализатора на узле обратной связи и левая сторона регистра сдвига предназначены для указания значения и времени инициализации. Возможно, это не работает так, как подсказывает вам ваша интуиция, и я хотел бы услышать об этом больше, но это кажется довольно полным, полезным и обучаемым. Я хотел бы услышать о случаях, с которыми у вас возникли проблемы.
Грег МакКаскл
NeatNit
#11
Короче говоря, у меня проблемы с прогнозированием инициализации узлов обратной связи, особенно при обучении им. Они кажутся очень решительными в сохранении информации всегда и всегда, а иногда даже между совершенно отдельными прогонами. Сдвиговые регистры полностью предсказуемы — они инициируются при запуске цикла. Но я видел, как программисты-новички убивали из-за этого в целом неплохой код. Останавливая, редактируя код и запуская его снова, узлы обратной связи фактически сохраняли информацию из предыдущих запусков. Мне трудно учить людей «когда что использовать», потому что они ничего не добьются, если не изучат такие вещи так, как они их понимают, а узлы обратной связи и сдвиговые регистры так похожи, мне очень сложно просто сказать кому-то «забудь, узел обратной связи сломался, переключись на сдвиговый регистр».
Грег МакКаскл
#12
Я согласен, что вам нужно иметь правильную концепцию и доверять своему коду, чтобы он работал.
Я бы посоветовал вам создавать очень простые программы, например, составлять их графики. Надеюсь, это поможет в обучении.
Кстати, коду, безусловно, разрешено сохранять значения при выполнении. Это сделано намеренно, чтобы лучше отображать внешнее оборудование и другие процессы. Это поведение неинициализированного сдвигового регистра и узла обратной связи без инициализатора.
Грег МакКаскл
NeatNit
№13
Что-то, что я не могу протестировать прямо сейчас — многие неопытные программисты LabVIEW любят использовать Run Continuous (или как там это называется, закольцованная кнопка рядом с обычной кнопкой запуска) для тестирования своего кода цикла. Как на это реагирует Первый Звонок? Для справки, я намерен никогда больше не рассказывать об этой кнопке, просто из-за путаницы, которую она вызывает, и из-за ужасающей привычки всегда нажимать ее вместо обычного бега.
Грег МакКаскл
№14Работает так же, как и нажатие кнопки Run сразу после завершения VI. Он инициализируется между каждым запуском диаграммы.
Грег МакКаскл
NeatNit
№15
Я знаю, как это работает, но когда кто-то новичок в LabVIEW, первыми задачами для его обучения в основном являются ввод, линейные вычисления и вывод. Чтобы проверить это, мы используем кнопку «Выполнить непрерывно», чтобы мы могли видеть, как вывод немедленно реагирует на наш ввод. Это приводит к тому, что у новых программистов возникает труднопреодолимая привычка всегда использовать кнопку «Выполнить непрерывно» вместо кнопки «Выполнить».
$@#$@#$@#$@# раздражает.
Редактировать: лол, это выглядит намного злее, чем оригинал xD
Greg_McKaskle
№16
Вы, конечно, можете учить как хотите.
Я использую LV более двадцати лет, и для меня это просто еще одна функция. Это удобно для быстрых вещей и не предназначено для готовых приложений.
Грег МакКаскл
Аккуратный
# 17
Да, я прекрасно знаю о его пользе (но согласитесь, на создание цикла while и кнопки «стоп» уходит не так много времени), он просто вызывает вредные привычки.
система Закрыто
# 18
cs3se3 — примеры лекций
cs3se3 — примеры лекций
ДЕЛЬФИ
Пример цикла
Повторить пример
Пока пример цикла
Калькулятор — Практикум VII
Редактор заметок
Передовой пример
VISUAL BASIC (автономный) V6
  ВБ. Нет
  Asp.Net
HTML
JavaScript
XML
Рациональная РОЗА
ДЕЛЬФИ
Пример цикла
форлопекс.dpr
loop4do.dfm
loop4do.pas
Скачать
forlopex.exe
Повторить пример
Repeatex.dpr
reptuntl.pas
Скачать
Repeatex.exe
Пока пример цикла
в то время какcod.pas
в то время какex. dpr
Скачать
в то время какex.exe
Калькулятор — Практикум VII
calcinta.pas
calcinta.dfm
pract8a.dpr
Скачать
pract8a.exe
calcintb.pas
calcintb.dfm
Скачать
pract8b.exe
calcintc.pas
calcintc.dfm
pract8c.dpr
Скачать
pract8c.exe
Редактор заметок
memoedit.dpr
poredit.pas
Скачать memoedit.exe
memoedit.dpr
poredit.pas
Скачать
memoedit.exe
Передовой пример
forwrdex. dpr
lec10cod.pas
VISUAL BASIC (автономный / V6)
Следующие примеры предназначены для ознакомления с визуальным Базовый язык программирования. Примеры написаны на Visual Basic 6.0. Professional Edition, версия, используемая в ITB Computer Labs.
Эти примеры почти полностью основаны на примерах Delphi, поэтому, если вы знакомые с Delphi, вы можете сравнить их, чтобы быстро приступить к работе. Программирование на ВБ.
Пример 1: Для цикла
frmForLoop.frm
frmForLoop.frx
forloop. vbp
- forloop.exe
Простой пример for цикл, который перебирает ряд списков.
Пример 2: цикл while
frmWhileLoop.frm
в то время как loop.vbp
- в то время как loop.exe
Выводит модальное сообщение box во время каждой итерации цикла while.
Пример 3: цикл Do. . While
frmDoWhileLoop.frm
dowhile.vbp
- dowhile.exe
Аналогично примеру 2, но используя цикл Do.. While вместо цикла while.
Пример 4: Редактор заметок
frmMemoEdit.frm
frmMemoEdit.frx
memoedit. vbp
- memoedit.exe
Простой текстовый редактор, который использует системный буфер обмена для копирования и вставки. Иллюстрирует сохранение и загрузку текстовых файлов.
Пример 5a: Целочисленный калькулятор, Нет перехвата ошибок
frmCalculator.frm
frmCalculator.frx
расч.vbp
- calc.exe
Калькулятор с +, -, /, *. Обратите внимание, что эта версия не проверяет достоверность ввода пользователя. Вход неправильные значения приводят к ошибкам во время выполнения.
Пример 5b: Целочисленный калькулятор, С перехватом ошибок
frmCalculator1.frm
frmCalculator1.frx
calc1.vbp
- calc1.exe
Эта версия калькулятора использует встроенную в Visual Basic функцию обработки ошибок для обработки неправильных вход.
  ВБ.Нет (В7)
Разница между VB 6.0 и VB.Net
Установка Visual Studio.Net
Как использовать Visual Studio.Net
Примеры
Пример 1: Добро пожаловать в Cs3se3 в VB.NET Пример 1 Exe
Пример 1 Почтовый индекс
Это очень простой пример программирования на Vb.NET. Можно исполнить *.exe файл или скачать целиком исходный код в формате Zip File Format на локальный компьютер.
Пример 2: Цикл for в VB. NET Пример 2 Exe
Пример 2 Почтовый индекс
Вот как запрограммировать цикл for в VB.NET, и это почти то же, что VB6. Для получения дополнительных сведений щелкните ссылку Visual Basic.
Пример 3: Цикл в VB.NET
Пример 3 Exe
Пример 3 Почтовый индекс
Вот как запрограммировать цикл while в VB.NET
Пример 4: Do. .While Loop в VB.NET Пример4 Exe
Пример4 Почтовый индекс
Вот как запрограммировать цикл «do.. while» в VB.net
Пример 5: Целочисленный калькулятор в VB.NET Пример5 Exe
Пример 5 Почтовый индекс
Вот как запрограммировать цикл «Do.. While» в VB.net
Страницы активного сервера / Asp.Net
Установка Установка IIS в Windows XP Pro
Visual Studio. Net
Майкрософт .NET Framework версии 1.1
О нас Асп.Нет
Примеры
Следующие примеры предназначены предоставить введение в программирование Asp.Net с использованием языка VB.NET.
ПРИМЕЧАНИЕ. Расширение файла asp.net — «*.aspx».
Пример 1: Привет, мир в Asp.Net привет.aspx
Щелкните правой кнопкой мыши файл и сохраните его (в разархивированном виде) в корневом каталоге по умолчанию. папка «wwwroot». «http://localhost/hello.aspx»
Пример 2: Html против Asp.Net HTML по сравнению с Asp. Net
Щелкните правой кнопкой мыши файл и сохраните его (в разархивированном виде) в корневом каталоге по умолчанию. папка «wwwroot». «http://localhost/example2.aspx»
Пример 3: Страница радио в Asp.Net радиостраница.aspx
Щелкните правой кнопкой мыши файл и сохраните его (в разархивированном виде) в корневом каталоге по умолчанию. папка «wwwroot». «http://localhost/radiopage.aspx»
Пример 4: Страница списка в Asp.Net listpage. aspx
Щелкните правой кнопкой мыши файл и сохраните его (в разархивированном виде) в корневом каталоге по умолчанию. папка «wwwroot». «http://localhost/listpage.aspx»
HTML
Руководство для начинающих по HTMLJavaScript
Краткое изложение общих тегов HTML
examp01.htm
3se3p1.htm
3se3p2.htm
таблица.htm
formex0.html
formex1.html
formex2.html
formex3.html
formex4.html
formex5.html
formex6.html
formex7.html
formex8.html
formex9.html
framdefh.html
framdefv.html
Дорожная карта объектов JavaScript (pdf—35K)
lec16ex1. html
lec16ex2.html
lec16ex3.html
lec17ex1.html
lec17ex2.html
lec18ex1.html
lec18ex2.html
lec18ex3.html
lec18ex4.html
lec18ex5.html
lec18ex6.html
печенье
lec19ex1.html
XML/XSL/DTD/DOM
XML-примеры
Рациональная РОЗА
Рациональные примеры ROSE
СКАЧИВАНИЕ Раздел
Учебные видеоролики по CS3SE3 для загрузки/просмотра:
ОБУЧЕНИЕ 1 —
Часть 1 из 2 (*.exe / 4,66 МБ) — введение в VB.NET: запуск, формы, свойства
Часть 2 из 2 (*.exe / 6.89M) — введение в VB.NET: сохранение, программирование, события, атрибуты
РУКОВОДСТВО 2 —
Часть 1 из 2 (*.exe / 3. 93M) — введение в VB.NET: работа с файлами решений и дерево обозревателя решений
Часть 2 из 2 (*.exe / 6.26M) — введение в VB.NET: программирование, соглашения, невизуальные элементы управления
РУКОВОДСТВО 3 —
Часть 1 из 1 (*.exe / 5.43M) — VB.NET: CAS File Environment (перемещение структуры решения и постоянное хранение)
ОБУЧЕНИЕ 4 —
Часть 1 из 1 (*.exe / 7.51M) — VB.NET: меню и несколько форм, а также атрибут модальности
РУКОВОДСТВО 5 —
Часть 1 из 3 (*.exe / 1.72M) — VB.NET: о перегрузке методов и операторов в OOPS
Часть 2 из 3 (*.exe / 3.63M) — VB.NET: об обработке исключений (блоки Try… End Try и Catch)
Часть 3 из 3 (*.exe / 5.67M) — VB.NET: слияние меню с MDI (многодокументный интерфейс)
ОБУЧЕНИЕ 6 —
Часть 1 из 1 (*.exe / 12.51M) — VB.NET: концепции MDI (многодокументный интерфейс)
Презентация Power Point по кодированию MDI (*. pdf / 487K)
VB.net: пример кода для MDI (*.zip / 68K)
ОБУЧЕНИЕ 7 —
Часть 1 из 1 (*.exe / 18.1M) — WWW: концепции JavaScript
РУКОВОДСТВО 8 —
Часть 1 из 3 (*.exe / 5.27M) — WWW: установка отладчика Microsoft Script
Часть 2 из 3 (*.exe / 3.93M) — WWW: Отладчик JavaScript Mozilla / VENKMAN
Часть 3 из 3 (*.exe / 7.05M) — WWW: Концепции сценариев VB
УЧЕБНОЕ ПОСОБИЕ 9 —
Часть 1 из 2 (*.exe / 6.54M) — WWW: Программирование ASP.net/ADO.net
Часть 2 из 2 (*.exe / 9.27M) — WWW: проблемы безопасности (обработка файлов MSIIS и отладчик сценариев MSIE)Следующие сообщения до конца предназначены ТОЛЬКО для информации и НЕ являются частью содержания курса.
ОБУЧЕНИЕ 10 —
Часть 1 из 1 (*.exe / 28.97M ) — WWW: VRML2/Введение (Узлы/Преобразования/и т. д.)
Новые лекции CS3SE3 для скачивания/просмотра:
ЛЕКЦИЯ 1 (*.pdf / 62K) — заменен VB6 на VB7 (vb.net).
ЛЕКЦИЯ 2 (*.pdf / 287K) — заменен VB6 на VB7 (vb.net).
ЛЕКЦИЯ 3 (*.pdf / 921K) — заменен VB6 на VB7 (vb.net).
ЛЕКЦИЯ 7 (*.pdf / 818K) — заменен VB6 на VB7 (vb.net).
ЛЕКЦИЯ 8 (*.pdf / 229K) — добавлены модели Spiral/Waterfall и графики Kiviat.ЛЕКЦИЯ 17 (*.pdf / 444K) — добавлена объектная модель браузера (BOM) для MSIE и MozFFx.
ЛЕКЦИЯ 18 (*.pdf / 822K) — добавлены события (атрибуты, смоделированные) и таблицы стилей.
ЛЕКЦИЯ 19 (*.pdf / 502K) — добавлены расширения Script Debug для MSIE и MozFFx.
ЛЕКЦИЯ 20 (*.pdf / 474K) — добавлены дополнительные сведения о программировании XML.
ЛЕКЦИЯ 28 (*.