Delphi для начинающих. Урок 10. Циклы. Работа с массивами

A

AngelOfLove

Original poster
В этом уроке я покажу вам способы работы с массивами и обработки их элементов.

Как я уже говорил в предыдущих уроках — чтобы хорошо понять и запомнить основные принципы программирования, лучше всего изучить ряд примеров, чем пытаться разобраться в теоретическом материале. Поэтому в этом уроке я не буду нагружать вас теорией, а сразу перейду к примерам, в которых постараюсь максимально подробно все прокомментировать.

Для обработки нескольких элементов массива, программисты очень часто используют циклы. Циклы позволяют совершать ряд однотипных действий или операций. В языке программирования Pascal/Delphi существует всего 3 вида циклов: for, while, repeat. Их работу мы и разберем в следующем примере:

Пусть массив содержит 100 целочисленных переменных integer. Объявление такого массива в разделе var будет выглядеть следующим образом:

1 var a: array [0..99] of integer;

Требуется посчитать кол-во элементов массива, значение которых больше 10.

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

Цикл for:

1 var i,n:integer;
2 begin
3 n:=0;
4 for i:=0 to 99 do
5 if a>10 then inc(n);
6 end;

Цикл for использует для своей работы переменную i типа integer. «for i:=0 to 99 do» означает, что в первой итерации цикла (сначала) i присвоится «0», а затем i будет увеличиваться с каждой итерацией цикла на 1 и, когда достигнет 99, после прохождения последней итерации, цикл закончится. Содержимое цикла идет либо после ключевого слова «do» и может указываться между ключевыми словами «begin» и «end». Внутри цикла мы проверяем, является i-ый элемент в массиве a большим 10. Если да, то увеличиваем показатель n на единицу. Перед циклом n нужно обнулить, т.е. присвоить нулю, чтобы счет начинался с нуля. Если необходимо, чтобы итерации в цикле шли в обратном порядке (от 99 до 0), то цикл приобретет следующий вид:

1 for i:=99 downto 0 do
2 if a>10 then inc(n);
3 end;

Цикл While:

1 n:=0;
2 i:=0;
3 while i<100 do begin
4 if a>10 then inc(n);
5 inc(i);
6 end;

В этом цикле мы вручную увеличиваем счетчик итераций i, и пока i<100 цикл работает. Перед циклом следует вручную присвоить начальный показатель для счетчика итераций i. Цикл Repeat:

1 n:=0;
2 i:=0;
3 repeat
4 if a>10 then inc(n);
5 inc(i);
6 until i=99;

Цикл repeat представляет из себя цикл с постусловием, т.е. цикл закончится, когда выполниться постусловие, указанное после until, после прохождения последней итерации.

Теперь давайте напишем небольшой пример заполнения массива целочисленных элементов случайными числами.

1 var a: array [0..99] of integer;
2 i: integer;
3 begin
4 randomize; // инициализация генератора чисел
5 for i:=0 to 99 do begin
6 a:=random(100); // присваиваем элементу массива случайное целочисленное число (от 0 до 99)
7 end;
8 end;
 
Название темы
Автор Заголовок Раздел Ответы Дата
A Delphi для начинающих. Урок 11. Процедуры и функции С/C++ 0
A Delphi для начинающих – Урок 9 – Массивы С/C++ 0
A Delphi для начинающих – Урок 8 – Условия. Оператор Case С/C++ 0
A Delphi для начинающих – Урок 7 – Условия. Оператор IF С/C++ 0
A Delphi для начинающих – Урок 6 – Пишем свой калькулятор С/C++ 0
A Delphi для начинающих – Урок 5 – Работаем с компонентами С/C++ 0
A Delphi для начинающих – Урок 4 – Работа с переменными С/C++ 0
A Delphi для начинающих – Урок 3 – Создание переменных С/C++ 0
A Delphi для начинающих – Урок 2 — События С/C++ 0
A Delphi для начинающих — Урок 1 — Среда разработки Delphi С/C++ 0
C Реверс-инжирниринг бота на Delphi, есть проблемы Вопросы и интересы 0
M [Delphi] Работа VKAPI, на примере бота С/C++ 3
T Пишем WinLocker на Delphi С/C++ 0
D Нужна помощь по Delphi! ЗАПЛАЧУ! Другие ЯП 1
VAVAN Продам исход стиллера (ЯП Delphi) Продажа софта 1
A Потоки в Delphi. TThread С/C++ 0
A Delphi. Урок 17. Типы С/C++ 0
A Delphi. Урок 16. Исключительные ситуации С/C++ 0
A Delphi. Урок 15. Математические операции С/C++ 0
A Delphi. Урок 14. Работа со списками строк TStringList или «сложные» типы С/C++ 0
A Delphi. Урок 13. Работа со строками С/C++ 0
A Delphi. Урок 12. Преобразование числа в строку и строки в число С/C++ 0
A Простые шутку в DELPHI С/C++ 5
A Мои старые исходники на Delphi С/C++ 1
A Несколько шпор по Delphi =) С/C++ 3
L Загружаем компьютер другу. Delphi,rad studio Другие ЯП 0
I Country IP Ranges Generator v1.0 [Source][Delphi] Другие ЯП 3
B Помощь [Delphi] Другие ЯП 0
B VK Post Grabber [Source][Delphi] Другие ЯП 0
Admin [delphi] downloader winapi Другие ЯП 0
G Продам Продам Телеграм группы для безопасного инвайта Куплю/Продам 0
Support81 ЦБ РФ и Росфинмониторинг тестируют платформу для контроля криптовалютных операций Новости в сети 0
Support81 Майнинг и вымогательство: OpenMetadata стала площадкой для инвестиций в недвижимость Китая Новости в сети 0
Support81 Ботнет в каждом доме: хакеры снова порабощают роутеры TP-Link для DDoS-атак Новости в сети 0
Support81 Telegram устранил 0day, используемый для удаленного запуска кода Новости в сети 0
Emilio_Gaviriya Статья SSTImap: Инновационный инструмент для анализа городского пространства. Анонимность и приватность 0
Emilio_Gaviriya Статья Защита и надёжность: Важность патчей для Microsoft Active Directory. Вирусология 0
El_IRBIS Интересно Lookyloo: Путешествие в глубины интернета с помощью инструмента для анализа веб-страниц. Уязвимости и взлом 0
El_IRBIS Интересно Набор инструментов для глубокой проверки пакетов с открытым исходным кодом. Уязвимости и взлом 0
M Нужен VPN для роутера Вопросы и интересы 0
Tera_shop Продам Telegram аккаунты для рассылки, инвайта (Session + Json, Tdata) Tear-shop.ru Купить аккаунты на сайте: https://tear-shop.ru/ Tear-shop - Магазин Аккаунты/Админки/Документы 1
Emilio_Gaviriya Статья Censys: Поисковик для кибербезопасности в интернете. Уязвимости и взлом 0
Emilio_Gaviriya Статья AlienVault: Всё, что вам нужно знать о платформе для обнаружения угроз. Уязвимости и взлом 0
Emilio_Gaviriya OSINT: Подборка инструментов для автоматизации разведки. Статьи 0
Support81 VPN – ловушка для Android: как приложения превращают смартфоны в зомби Новости в сети 0
Support81 Токены Discord нарасхват: взлом Top.gg обернулся кошмаром для разработчиков Новости в сети 0
Emilio_Gaviriya Статья Платформы для проверки и улучшения навыков белого хакинга. Уязвимости и взлом 0
Emilio_Gaviriya Статья Инструмент для сбора whois-истории. Уязвимости и взлом 0
Support81 82 участника, 1,3 миллиарда и...отсрочка: что происходит с российской платформой для обмена кодом Новости в сети 0
Support81 DarkGPT: незаменимый OSINT-инструмент для специалистов в сфере кибербезопасности Новости в сети 0

Название темы