Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 3
Всего онлайн: 3
Зарегистрировано юзеров: 6619
Комментариев на сайте: 650
Новый юзер: Dysonetn



Последние комментарии
c
dealrattKi прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Это действительно радует меня. --- Бесподобное сообщение скачать fifa, скачать фифа а также [url=http://15fifa.ru/novosti-fifa-15]fifa 15 последние новости[/url] скачать фифа
intatryadebra прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Revival RO is best free ro populair ragnarok online private server founded in 2017 2018. Revival pvp big free Ragnarok server is an online exciting free MMORPG called ragnarok online, it a fun server for MMORPG gamers in ASIA. This is a top 10 ragnarok online private server thats high on the list and top ranking with massive players online. We have many players from Asia like Malaysia, Indonesia, Philippines, Thailand, Singapore, China, Hong Kong All these players are here to play free private ragnarok online server and battle players all around the world. They want to collect the best items and gear to be strongest in War of Emperium, War of Emperium are guild wars in this free RO Server. You can play this game on android phone or tablet or pc client. Enjoy And have fun. ragnarok online server http://bit.ly/2tKyawS

Урок 6 - Одномерные массивы

  Представьте себе поезд, у которого есть определенное количество вагончиков. У каждого вагона есть номер и внутри каждого, пронумерованного вагона можно хранить информацию. Дак вот массив примерно так и выглядит, только он не поезд :) Массив записывается туда же, куда мы записываем обычные переменные.

Синтаксис:

var имя массива: array[интервал] of тип;
Теперь открываем Delphi и кидаем на форму компонент Button, Label и Memo. Компонент Memo находится на 6 месте на вкладке Standard.

Form


Компонент Memo имеет свойство под названием Lines. Оно схоже со свойством Caption у компонента Label. Найдите это свойство в инспекторе объектов и нажмите на кнопочку с тремя точками:

Lines


После нажатия на кнопку с тремя точками появится редактор:

Окно редактора


Сотрите всё, что написано в редакторе и создайте событие OnClick на кнопке. Объявим массив с именем mas, интервалом от 1 до 3 и типом string. Да, и еще нам нужно объявить переменную i типа integer, она нам пригодиться позже.
procedure TForm1.Button1Click(Sender: TObject);
var mas: array[1..3] of string;
i:integer;
begin
...
Сейчас запишем в наши воображаемые вагоны массива значения:
mas[1]:='Первая строка';
mas[2]:='Вторая строка';
mas[3]:='Третья строка';
А сейчас выводим второй элемент массива в Label и все 3 элемента в Memo.

В лабел:
Label1.Caption:=mas[2]; //Лабел отобразит содержимое второго элемента массива
Теперь, для того чтобы вывести все 3 значения в Memo, нужно воспользоваться циклом For:
for i:=1 to 3 do
Memo1.Lines.Add(mas[i]);
Так как в теле цикла выполняется всего одна строка, то можно опустить ключевые слова begin и end.
Строка Memo1.Lines.Add(mas[i]); при первом круге цикла добавит в memo первый элемент массива, так как переменная i равна 1. При втором круге переменная i равна 2 и строка Memo1.Lines.Add(mas[i]); добавит второй элемент массива. Точно так же и с третьим.

Общий вид программы:
procedure TForm1.Button1Click(Sender: TObject);
var mas: array[1..3] of string;
i:integer;
begin
mas[1]:='Первая строка';
mas[2]:='Вторая строка';
mas[3]:='Третья строка';

Label1.Caption:=mas[2]; //Лабел отобразит содержимое второго элемента массива

for i:=1 to 3 do
Memo1.Lines.Add(mas[i]);
end;
Без цикла For вывод элементов массива осуществлялся бы таким образом:
Memo1.Lines.Add(mas[1]);
Memo1.Lines.Add(mas[2]);
Memo1.Lines.Add(mas[3]);
Нам придется долго копировать и изменять номер элемента, если их будет сто, а бывает и больше тысячи! Цикл же помогает справиться с этим, всего ценой двух строчек.

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

Задание на закрепление: заполните массив из 100 чисел при помощи цикла for, выведите в memo числа 20, 50, 70 из массива при помощи цикла for и условия в нём.

Ну вот и всё! Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 13 Июля 2012
Просмотров: 59447

Урок 5 - Функции Урок 7 - Многомерные массивы

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-18
почему я уже 2 раза пытаюсь отправить большой комментарий и у меня не получается?




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-18
Что значит строка Memo1.Lines.Add(mas[i])?верней что значит lines и add? Допустим когда я пишу if then else я понимаю что пишу если то иначе а вот что значит та строка? я написал программу на закрепление но у меня выскачила ошибка,думаю из-за не знания перевода. вот код программы: procedure TForm1.Button1Click(Sender: TObject); var mas: array [1..100] of integer; i: integer; begin mas[1]:=20; mas[2]:=50; mas[3]:=70; for i:=1 to 3 do Memo1.Lines.Add(mas[i]); end; end.




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-18
выскакивает вот такая ошибка :*********************** пишу звездочками потому что она не отправляется!! Я думаю что она намекает на то,что в Memo1.Lines.Add(mas[i]); в этой строке нужен тип стринг но мне же ведь надо вывести числа,мне кажется что дело в том что lines.add выводит только текст в мемо,а что надо писать для числа?Хотя возможно мне только кажется,вообще прошу помочь,указать на ошибку.




аватар Добавил: Klesh [Программист] Дата: 2013-05-18
Да параметром Memo1.Lines.Add() является строка, а тот массив который ты объявил (mas) имеет тип integer. Есть такая функция, IntToStr(a: integer), она переводит число в строку, также есть и обратная StrToInt(a: String), она в свою очередь переводит строку с число. Дак вот тебе нужно сделать так: Memo1.Lines.Add(IntToStr(mas[i]));




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-19
Когда я писал 1 комментарий,я писал что возможно надо использовать функцию inttostr ,но я не стал этого делать так.как подумал что мне в мемо оно будет выводить двадцать пятьдесят и тд. а не 20 50.. Напутал я) .Спасибо за помощь) и отдельное спасибо за strtoint )об этом в уроках не упоминалось как я помню.




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-19
Когда я писал 1 комментарий,я писал что возможно надо использовать функцию inttostr ,но я не стал этого делать так.как подумал что мне в мемо оно будет выводить двадцать пятьдесят и тд. а не 20 50.. Напутал я) .Спасибо за помощь) и отдельное спасибо за strtoint )об этом в уроках не упоминалось как я помню.




аватар Добавил(а): Asyanya [Новичок] Дата: 2013-06-06
Так и не поняла, как выполнить задание с помощью цикла for...




аватар Добавил(а): Tuxuman [Новичок] Дата: 2013-09-29
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) btn1: TButton; mmo1: TMemo; lbl1: TLabel; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); var mas: array[1..100] of string; i:Integer; begin mas[1]:=IntToStr(20); mas[2]:=IntToStr(50); mas[3]:=IntToStr(70); for i:=1 to 1 do mmo1.Lines.add(mas[1]); mmo1.Lines.add(mas[2]); mmo1.Lines.add(mas[3]); end; end. мб так?




аватар Добавил(а): adex348 [Новичок] Дата: 2013-10-22
Ты походу не правильно понял функцию цикла for, он запускает код внутри цикла с начальным значением которое ты задал и прибавляя по 1 каждый раз запускает его заново, до тех пор пока не достигнется конечное значение(которое тоже нужно задать). Цикл по заданию должен выглядеть примерно так: for i:=1 to 100 do begin mas[i]:=i;if (mas[i]=20) or (mas[i]=50) or (mas[i]=70) then Memo1.Lines.add(InttoStr(mas[i]); else continue; end;




аватар Добавил(а): Shik007 [Новичок] Дата: 2013-10-29
Cделал вторую кнопку к этой программе с кодом для очистки содержимого компонента Memo после завершения работы цикла. Выглядит это так: procedure TForm1.Button2Click(Sender: TObject); begin memo1.Lines.Clear; end;




аватар Добавил: sema- 2014 [Новичок] Дата: 2013-12-05
А я, что то вообще ничего не понял... зачем нужно было открыть редактор? ,чтоб стереть надпись Memo1? Всё перемешалось в голове и вошёл в ступор, еле, еле с циклами разобрался, а тут массив... в общем наступление остановлено, отброшен снова к началу, в голове каша, запутался окончательно.... может как то по подробней, без спешки?




аватар Добавил: hess2222 [Новичок] Дата: 2015-05-14
Я не понял этого задания, хоть убейте(((




аватар Добавил: hess2222 [Новичок] Дата: 2015-05-14
Разберите пожалуйста!!!!




аватар Добавил(а): Aleksandr-Slah [Новичок] Дата: 2015-07-06
http://s019.radikal.ru/i634/1507/fd/3b5376d7dcac.png Вот сделал!




аватар Добавил: Nester_Novopolotsk [Новичок] Дата: 2016-03-11
задачка на закрепление хорошая. не очень и сложная. немножко мозгами нужно пошевелить




аватар Добавил(а): Lawren [Новичок] Дата: 2016-04-04
Очень хорошие уроки, большое спасибо автору. Давно искал что то подобное. Задания сначала стараюсь сделать сам, потом смотрю как делали другие. В этом создал два цикла for..do, в первом заполняю массив из 100 элементов через IntToStr, во втором произвожу выборку элементов по условию. for i := 1 to 100 do mas[i] := IntToStr(i); for i := 1 to 100 do if (i = 20) or (i = 50) or (i = 75) then Memo1.Lines.Add(mas[i]);