лабораторные работы лазарус. лабораторные работы на Лазарусе. Лабораторная работа 1 Основные понятия среды Lazarus
![]()
|
procedure TForm1.Button1Click(Sender: TObject); var i,n:integer; p:real; begin n:=strtoint(edit1.text); P:=1; for i:=1 to n do p:=p*i; edit2.text:=floattostr(P); end; Цикл с предусловием: procedure TForm1.Button2Click(Sender: TObject); var n,i:integer; Р:real; begin n:=strtoint(edit1.text); Р:=1; i:=1; while i<=n do begin Р:=Р*i; Рис. 31. Рис. 32. 39 i:=i+1; end; edit3.text:=floattostr(Р); end; Цикл с постусловием: procedure TForm1.Button3Click(Sender: TObject); var n,i:integer; Р:real; begin n:=strtoint(edit1.text); Р:=1; i:=1; repeat Р:=Р*i; i:=i+1; until i>n; edit4.text:=floattostr(Р); end; Задание 2. Процедуру для кнопки «Очистить» написать самостоятельно. Задание 3. Составить программу, находящую сумму ряда n i i 1 sin Условие задачи определяет ряд, вида n sin 3 sin 2 sin 1 sin Обозначим отдельный элемент переменной a. Можно сказать, что каждый элемент i a sin , где i=1, 2, 3, ..., n. Определим переменные задачи: входные данные: n: integer промежуточные переменные: i: integer; a: real результат: S: real Решение данной задачи рассмотрим для цикла с постусловием. Располо- жим следующие компоненты на форме (рис. 34). Свойства выбранных компонент: Form1 – Caption – Сумма ряда Рис. 33. 40 Label1 – Caption – Введите n Button1 – Caption – Вычислить Button2 – Caption – Очистить Edit1 – Text – пусто Memo1 – Lines – пусто Процедура для кнопки «Вычислить»: procedure TForm1.Button1.Click(Sender: TObject); var n,i:integer; a,S:real; begin n:=StrToInt (edit1.text); S:=0 ; i:=1; repeat a:=sin(i); S:=S+a; i:=i+1; until i>n; Memo1.Lines.Add (FloatToStr(s)); end; Задание 4. Процедуру для кнопки «Очистить» написать самостоятельно. Задание 5. Составить программу для нахождения произведения ря- да n i i x 1 3 Условие задачи определяет ряд, вида n x x x x 3 3 3 3 3 2 Как и в задании 3 обозначим отдельный элемент переменной a, где i x a 3 , где i=1, 2, 3, ... , n. Обозначим i x t . Тогда t a 3 . Первоначально t=1, а далее в цикле каж- дый раз увеличивается на степень x t t Определим переменные задачи: входные данные: n: integer; х: real промежуточные переменные: i: integer; a, t: real результат: P: real Рис. 35. Рис. 34. 41 Решение данной задачи рассмотрим на примере цикла с предусловием. Расположим компоненты на форме (рис 36). Свойства выбранных компонент: Form1 – Caption – Произведение ряда Label1– Caption – Введите n Label2 – Caption – Введите x Button1 – Caption – Вычислить Button2 – Caption – Очистить Edit1 – Text – пусто Edit2 – Text – пусто Memo1 – Lines – пусто Процедура для кнопки «Вычислить»: procedure TForm1.Button1Click(Sender: TObject); var n, i, x:integer; a, t, P:real; begin n:=StrToInt (edit1.text); x:=StrToInt (edit2.text); P:=1; i:=1; t:=1; while i<=n do begin t:=t*x; a:=3+t; P:=P*a; i:=i+1; end; Memo1.Lines.Add (FloatToStr(P)); end; Задание 6. Процедуру для кнопки «Очистить» написать самостоятельно. Компонент Memo часто используется, когда необходимо вывести значе- ния функции на некотором интервале с заданным шагом. Задачи такого типа Рис. 37. Рис. 36. 42 Рис. 39. называются задачами на табулирование, т. е. при решении таких задач резуль- таты выводятся на каждом шаге. Задание 7. Найти значение функции 2 x x e e y на отрезке [a, b] с ша- гом h. Определим переменные задачи: входные данные: a, b, h: real промежуточные переменные: x: real результат: y: real Решение данной задачи рассмотрим на примере цикла с предусловием. Расположим компоненты на форме (рис. 38). Свойства выбранных компонент: Form1 – Caption – Значение функции Label1 – Caption – Табулирование функции Label2 – Caption – a Label3 – Caption – b Label4 – Caption – h Button1– Caption – Выполнить Button2– Caption – Очистить Memo1 – Lines – пусто ScrollBars – ssVertical Процедура и блок-схема (рис. 39) для кнопки «Вычислить»: procedure TForm1.Button1Click(Sender: TObject); var a,b,h,y,x:real; begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); h:=StrToFloat(Edit3.Text); x:=a; while x<=b do begin y:=exp(x)-exp(-x)-2; Рис. 38 43 Memo1.Lines.Add('х='+FloatToStr(x)+' у='+FloatToStr(y)); x:=x+h; end; end; Задание 8. Процедуру для кнопки «Очистить» написать самостоятельно. Задания для самостоятельного выполнения В ар и а н т № 1 1. Вычислить n k k Y 1 2 1 2. Вычислить n i i i x z 1 3. Вычислить и вывести значе- ния функции 1 2 2 3 2 2 x x x x y на интервале [0; 2] с шагом h=0,15. В ар и а н т № 5 1. Вычислить n k k Y 1 2 2 1 2. Вычислить n i i i x z 1 2 1 3. Вычислить и вывести значения функции x x y x ln 1 на ин- тервале [0,1; 1,5] с шагом h=0,15. В ар и а н т № 2 1. Вычислить n k k Y 1 ! 1 2. Вычислить n i i i x z 1 2 3. Вычислить и вывести значе- ния функции x xe y x sin на интервале [-1;1] с шагом h=0,1. В ар и а н т № 6 1. Вычислить n k k Y 1 2 1 2. Вычислить n i i i x z 1 1 2 1 2 1 3. Вычислить и вывести значения функции x e y x 2 cos на интервале [-1; 1] с шагом h=0,1. В ар и а н т № 3 1. Вычислить n k k k Y 1 1 2. Вычислить n i i i ix z 1 1 2 3. Вычислить и вывести значе- ния функции 1 x e x y на ин- тервале [-2; -0,5] с шагом h=0,15. В ар и а н т № 7 1. Вычислить n k k k Y 1 1 2. Вычислить n i i x i z 1 1 2 1 2 1 3. Вычислить и вывести значения функции 2 3 2 4 x x x y на интер- вале [0; 3] с шагом h=0,1. 44 В ар и а н т № 4 1. Вычислить n k k k Y 1 1 1 2. Вычислить n k i i x z 1 1 3. Вычислить и вывести значе- ния функции x x y 1 sin 1 2 на интервале [1;3] с шагом h=0,1. В ар и а н т № 8 1. Вычислить n k k Y 1 ! 1 2. Вычислить n i i i x z 1 2 3. Вычислить и вывести значения функции x x y 2 ln на интервале [6;8] с шагом h=0,25. 45 Лабораторная работа №6 Одномерный массив Массив – это фиксированное количество элементов одного и того же ти- па, объединенные одним именем, где каждый элемент имеет свой номер. Одномерный массив представляет собой вектор-строку или вектор стол- бец. Описание массива Массив описывается в разделе описания переменных. Var имя массива:array[1..t 1 ] of t 2 ; array – массив; of – из; t 1 – количество элементов массива; t 2 – тип элементов массива. Пример. Var А:array[1..30] of integer; Если в программе несколько массивов, например, А, В, С одного и тоже типа, то они перечисляются через запятую. Пример. Var А,B,C:array[1..30] of integer; При работе с массивами обычно используется цикл с параметром. Для работы с массивами используются следующие компоненты: 1. StringGrid – таблица строк, предназначена для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Компонент находится на странице Additional. Таблица делится на фиксированную и рабочую (рис. 40). Фиксированная служит для показа заго- ловков строк (столбцов) и выделена темно- серым цветом; рабочая – это остальная часть таблицы. Если рабочая часть целиком не по- мещается в пределах окна, то в этом случае автоматически появляются полосы прокрутки. Рис. 40. 46 Рис. 41. Таблица 16 Основные свойства компонента StringGrid FixedCols Количество фиксированных столбцов FixedRows Количество фиксированных строк. Если эти свойства равны 0, то таблица не содержит фиксированной части ColCount Количество столбцов RowCount Количество строк Cells Двумерный массив ячеек +Option Параметры. «+» указывает на наличие вложенных свойств. Из всех вложен- ных свойств выбирается GoEditing – true (разрешено редактирование ячеек) В компоненте StringGrid строки и столбцы нумеруются с 0. К каждой ячейке таблицы можно обратиться Cells[<номер столбца>,<номер строки>]. 2. BitBtn – командная кнопка с изображением. Находится на страни- це Additional. Таблица 17 Основные свойства компонента BitBtn Caption Надпись на кнопке Kind Предлагает на выбор десять предопределенных типов кнопок (bkOk, bkYes, bkCancel и т.д.) Glyph Определяет связанное с кнопкой изображение Задание 1. Дан массив А, состоящий из элементов целого типа. Найти ко- личество положительных элементов этого массива. Определим переменные задачи: входные данные: a[i,0]: integer – элементы массива; n: integer – количест- во элементов массива промежуточные переменные: i: integer – параметр цикла результат: k: integer – количество положительных элементов массива Расположим следующие компоненты на форме (рис. 41). Свойства выбранных компонент: Form1 – Caption – Положительные элементы Button1 – Caption – Сформировать массив Edit1, 2 – Text – пусто BitBtn – Kind – bkOk Label1 – Caption – Введите количество элементов массива 47 Рис. 42. StringGrid1 – ColCount – 100 RowCount – 1 Visible – False FixedCols – 0 FixedRows – 0 Option – GoEditing – True Процедура для кнопки «Сформировать массив»: procedure TForm1.Button1Click(Sender: TObject); var n:integer; begin n:=strtoint(edit1.text); stringgrid1.ColCount:=n; stringgrid1.Visible:=true; end; Процедура и блок-схема (рис. 42) для кнопки «OK»: procedure TForm1.BitBtn1Click(Sender: TObject); var i,k:integer; a:array[0..10,0..10] of integer; begin for i:=0 to n-1 do a[i,0]:=strtoint(stringGrid1.cells[i,0]); k:=0; for i:=0 to n-1 do if a[i,0]>0 then k:=k+1; edit2.text:=inttostr(k); end; В задачах на массивы часто используется генератор случайных чисел. Для этого необходимо запустить процедуру Randomize, которая инициализирует (за- пускает) генератор случайных чисел. 48 Чтобы получить случайное число, нужно воспользоваться функцией Random. Пример. Randomize; for i:=0 to n-1 do a[i,0]:=random(20)-10; Таким образом, диапазон значений массива будет (–10; 9). Задание 2. В одномерном массиве положительные элементы, кратные 3, за- менить на нуль. Вывести полученный массив. Заполнение исходного массива осу- ществить с использованием генератора случайных чисел. Определим переменные задачи: входные данные: a[i,0]: integer – элементы массива; n: integer – количество элементов массива промежуточные переменные: i: integer – параметр элемента результат: a[i,0]: integer – элементы массива Расположим следующие компоненты на форме (рис. 43). Свойства выбранных компонент: Form1 – Caption – Замена элементов Label1 – Caption – Введите количество элементов Button1 – Caption – Сформировать массив Button2 – Caption – Новый массив Edit1 – Text – пусто StringGrid2 – ColCount – 100 RowCount – 1 Visible – False FixedCols – 0 FixedRows – 0 Option – GoEditing – True StringGrid1 – ColCount – 100 RowCount – 1 Visible – False FixedCols – 0 FixedRows – 0 Option – GoEditing – True Рис. 43. 49 Рис. 44. Процедура для кнопки «Сформировать массив»: procedure TForm1.Button1Click(Sender: TObject); var n,i:integer; a:array[0..100,0..100] of integer; begin n:=strtoint(edit1.text); stringgrid1.ColCount:=n; stringgrid1.Visible:=true; Randomize; for i:=0 to n-1 do begin a[i,0]:=random(20)-10; stringgrid1.cells[i,0]:=inttostr(a[i,0]); end; end; Процедура и блок-схема (рис. 44) для кнопки «Новый массив»: procedure TForm1.Button2Click(Sender: TObject); var i,n:integer; a:array[0..10,0..10] of integer; begin n:=strtoint(edit1.text); for i:=0 to n-1 do a[i,0]:=strtoint(stringGrid1.cells[i,0]); for i:=0 to n-1 do if (a[i,0]>0) and (a[i,0] mod 3 =0) then a[i,0]:=0; stringgrid2.Visible:=true; StringGrid2.ColCount:=n; 50 for i:=0 to n-1 do StringGrid2.Cells[i,0]:=IntToStr(a[i,0]); end; Задания для самостоятельного выполнения В ариа нт № 1 1. Дан одномерный массив и число k. Найти сумму квадратов эле- ментов массива, кратных заданному числу k. 2. Из элементов одномерного массива С сформировать массив А той же размерности по правилу: если номер элемента четный, то 2 i i C A ; если номер элемента нечетный, то i i C A 2 В ариа нт № 2 1. Дан одномерный массив и число b. Найти количество элементов массива, равных числу b. 2. Из элементов одномерного массива А сформировать массив D той же размерности по правилу: первые k элементов - i A D i i , ос- тальные - i A D i i В ариа нт № 3 1. Дан одномерный массив и число n. Найти количество элементов массива, значения которых не превосходят заданного числа n. 2. Из элементов одномерного массива А сформировать массив С той же размерности по правилу: первые k элементов - 2 i i C A , ос- тальные - 1 i i C A В ариа нт № 4 1. Дан одномерный массив. Найти количество элементов, больших среднего арифметического всех элементов массива. 2. Из элементов одномерного массива С сформировать массив А той же размерности по правилу: если номер элемента четный, то i i C A ; если номер элемента нечетный, то 2 i A В ариа нт № 5 1. Дан одномерный массив и число m. Найти произведение отрица- тельных элементов массива, кратных заданному числу m. 2. Из элементов одномерного массива А сформировать массив D той же размерности по правилу: i i i A D 51 В ариа нт № 6 1. Дан одномерный массив. Найти произведение ненулевых элемен- тов и количество нулевых элементов. 2. Из элементов одномерного массива М сформировать массив Р той же размерности по правилу: если номер элемента четный, то i i iM Р ; если номер элемента нечетный, то i i M Р 5 В ариа нт № 7 1. Дан одномерный массив. Найти минимальный элемент и его но- мер. 2. Из элементов одномерного массива С сформировать массив А той же размерности по правилу: если номер элемента четный, то 5 i i С A ; если номер элемента нечетный, то 5 i i С A В ариа нт № 8 1. Дан одномерный массив. Найти разность максимального и мини- мального элементов массива. 2. Из элементов одномерного массива А сформировать массив С той же размерности по правилу: первые k элементов - i i C A 10 , ос- тальные - i i C A 2 |