Справочник от Автор24
Поделись лекцией за скидку на Автор24

Массивы строк

  • 👀 291 просмотр
  • 📌 245 загрузок
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Массивы строк» doc
Лекция 2. Массивы строк Рассмотрим программу, которая читает из файла список слов и затем выполним поиск в этом списке слов по заданному буквосочетанию. Лучшим вариантом является чтение файла строк в массив. Для визуального просмотра списка слов их можно вывести в компонент Memo. Все остальные операции со строками, которые требуются по какому-либо алгоритму, нужно выполнять в массиве. Работа с файлами при создании любых проектов является основной задачей, поэтому рассмотрим этот вариант работы. 1. Сформируем текстовый файл flow.txt: astra lilia pion tulpan romashka roza siren 2. Описание файловой переменной и массива строк Var ft:textfile; - текстовый файл на диске; Ms:array[1..100] of string; - массив строк. 3. Назначение файловой переменной имени файла на диске: Begin Assignfile(ft,’flow.txt’); - файл цветов 4. Открытие файла на чтение: Reset(ft); 5. Чтение файла и вывод строк в многострочный редактор Memo. K:=0; - количество строк; s- строка While not eof(ft) do Begin Readln(ft,s); - чтение строки в s Inc(k); - увеличение счетчика на 1 Ms[k]:=s; - запись в массив Form1.Memo1.Lines.Add(s); - запись в Memo End; Closefile(ft) - закрытие файла В конце цикла в k – количество строк. Можно записать: Kols:=k; Далее мы в однострочном редакторе Edit вводили букву или буквосочетание и выводили найденные слова в Memo2. Допустим мы создали событие при нажатии на кнопку «Найти». Напишем команды поиска и вывода найденных слов в Memo2. St:=Form1.Edit1.Text; - выбираем буквосочетание из Edit Form1.Memo2.Clear; - очищаем Memo2 For i:=1 to kols do Begin n:=pos(st,ms[i]); - n<>0, если буквосочетание найдено, n равно номеру Позиции If (n<>0) then Begin Form1.Memo2.Lines.Add(ms[i]); - заносим слово в Memo2 End; End; 2. Полная программа представлена ниже. unit ustroka; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; ft:textfile; Ms:array[1..100] of string; s:string; kols:integer; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin form1.Memo1.Clear; form1.Memo2.Clear; form1.Edit1.Clear; end; procedure TForm1.Button1Click(Sender: TObject); var k:integer; begin Assignfile(ft,'flow.txt'); // файл цветов мы создали Reset(ft); // Открытие файла на чтение: K:=0; // количество строк; s- строка While not eof(ft) do // чтение, пока не конец файла Begin Readln(ft,s); // - чтение строки в s // If eof(ft) then break; // - прерывание цикла по концу файла Inc(k); // - увеличение счетчика на 1 Ms[k]:=s; // - запись в массив Form1.Memo1.Lines.Add(s); // - запись в Memo End; closefile(ft); // - закрытие файла Kols:=k; end; procedure TForm1.Button2Click(Sender: TObject); var st:string; i,n:integer; begin St:=Form1.Edit1.Text; // - выбираем буквосочетание из Edit Form1.Memo2.Clear; // - очищаем Memo2 For i:=1 to kols do Begin n:=pos(st,ms[i]); // - если n<>0, то n равно номеру позиции буквосочетания If (n<>0) then Begin Form1.Memo2.Lines.Add(ms[i]); // - заносим слово в Memo2 End; End; end; end. 3. Результат работы 4. Зачетное задание по теме. Разработать фрагмент урока и программу. Необходимо при чтении файла в Memo1 после всех слов вывести строку с сообщением о количестве прочитанных слов, например: «Прочитано 10 слов». При поиске в Memo2 тоже вывести сообщение: «Найдено 5 слов» Для вывода этих сообщений необходимо воспользоваться командами перевода целых чисел в символьный вид: Sk:=inttostr(k); - sk – строка, k- целое число. Кроме того нужно для получения результата сложить отдельные части результирующей строки, например: s:=s+s1+s2; Программу можно написать в среде визуального проектирования Lazarus и на языке Паскаль. Лекция 3. Штриховка уголка. 1. Рассмотрим штриховку наклонными линиями уголка, составленного из отрезков прямых линий. Введем переменные и их значения для координат концов отрезков.. x1,y1,x2,y2,x3,y3 – координаты точек уголка. xl1,yl1- координаты начала линии штриховки. xl2,yl2- координаты конца линии штриховки. hx1,hy1 – шаг перемещения точки начала линии hx2,hy2 – шаг перемещения точки конца линии Например: x1=50, y1=50, x2=100,y2=200, x3=250, y3=200. Введем 2 кнопки: «Уголок» и «Построить» Событие: «Уголок» - Procedure buttonclick1. Присвоим начальные значения координатам точек уголка: X1:=50; y1:=50; X2:=100; y2:=200; X3:=250; y3:=200; Нарисуем уголок синим цветом. Методы: Moveto – перемещение курсора к точке x1,y1. Lineto – рисование линии к точке x2,y2. Form1.Canvas.pen.color:=clblue; - синий цвет для уголка Form1.Canvas.Moveto(x1,y1); - курсор к первой точке Form1.Canvas.Lineto(x2,y2); - рисование уголка Form1.Canvas.Lineto(x3,y3); Если мы в edit1 зададим k линий, то можно записать для нашего рисунка: Procedure buttonclick2; Var i:integer; Begin Form1.Canvas.pen.color:=clred; - красный цвет для штриховки Xl1:=x1; yl1:=y1; - начальные значения координат Xl2:=x2+hx2; концов первой линии Yl2:=y2; K:=strtoint(Form1.Edit1.Text); - перевод строки в целый вид Hx1:=(x2-x1) div k; - расчет шагов Hy1:=(y2-y1) div k; Hx2:=(x3-x2) div k; Hy2:=0; For i:=1 to k do Begin Form1.Canvas.Moveto(xl1,yl1); - курсор в начало линии Form1.Canvas.Lineto(xl2,yl2); - рисование линии Xl1:=xl1+hx1; yl1:=yl1+hy1; - изменение координат концов линии Xl2:=xl2+hx2; yl2:=yl2+hy2; End; 2. Пример программы. unit ushtrih; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; x1,y1,x2,y2,x3,y3:integer; //– координаты точек уголка. xl1,yl1:integer; //- координаты начала линии штриховки. xl2,yl2:integer; //- координаты конца линии штриховки. hx1,hy1:integer; // – шаг перемещения точки начала линии hx2,hy2:integer; //– шаг перемещения точки конца линии implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin form1.Edit1.Clear; end; procedure TForm1.Button1Click(Sender: TObject); begin Begin // вывод прямоугольника Form1.Canvas.brush.color:=clwhite; // - заполнение белым цветом Form1.Canvas.rectangle(10,10,350,300); // левый верхний и правый нижний угол X1:=50; y1:=50; X2:=100; y2:=200; X3:=250; y3:=200; // вывод уголка Form1.Canvas.pen.color:=clblue; // - синий цвет для уголка Form1.Canvas.Moveto(x1,y1); // - курсор к первой точке Form1.Canvas.Lineto(x2,y2); // - рисование уголка Form1.Canvas.Lineto(x3,y3); End; end; procedure TForm1.Button2Click(Sender: TObject); Var i,k:integer; Begin K:=strtoint(Form1.Edit1.Text); // - перевод строки в целый вид Form1.Canvas.pen.color:=clred; // - красный цвет для штриховки Hx1:=(x2-x1) div k; // - расчет шагов Hy1:=(y2-y1) div k; Hx2:=(x3-x2) div k; Hy2:=0; Xl1:=x1; yl1:=y1; // - начальные значения координат Xl2:=x2+hx2; // концов первой линии Yl2:=y2; For i:=1 to k do // штриховка Begin Form1.Canvas.Moveto(xl1,yl1); // - курсор в начало линии Form1.Canvas.Lineto(xl2,yl2); // - рисование линии Xl1:=xl1+hx1; yl1:=yl1+hy1; // - изменение координат концов линии Xl2:=xl2+hx2; yl2:=yl2+hy2; End; end; end. 3. Результат работы программы. 4. Необходимо выполнить штриховку по индивидуальному заданию. Итоговое задание . Разработайте фрагмент урока для выполнения штриховки уголка в графическом режиме. Напишите программу, выполняющую штриховку. Сделайте и отправьте скриншот работы программы. Работу выполните по номеру своей фамилии в общем списке. 1 Var1 2 Var2 3 Var3 4 Var4 5 Var5 6 Var6 7 Var7 8 Var8 9 Var9 10 Var10 11 Var11 12 Var12 13 Var13 14 Var14
«Массивы строк» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Тебе могут подойти лекции

Смотреть все 462 лекции
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot