Практическая работа №1 «Основные синтаксические структуры» по дисциплине Основы программирования

Практическая работа №1
Тема: «Основные синтаксические структуры».
Цель работы – изучить способы определения и назначение основных синтаксических структур; закрепить полученные знания при работе с готовыми элементами программного кода.
Наименование объектов контроля и оценки:
У2. Реализовывать построенные алгоритмы в виде программ на конкретном языке программирования.
З1. Этапы решения задачи на компьютере.
Теоретическая часть
Стандартные функции
Для вычисления наиболее распространенных математических функций в Delphi предусмотрены следующие стандартные функции:
синус - sin(x); ,
косинус - cos(x);
арктангенс - arctan(x);
натуральный логарифм (логарифм по основанию е=2,71) - loge(x) - ln(x);
экспонента (ех) - ехр(х);
квадрат числа (х2) - sqr(x); .
квадратный корень из числа х - sqrt(x);
абсолютная величина числа - abs(x);
получение дробной части числа - frac(x);
получение целой части числа - int(x);
определение следующего по порядку элемента из списка – succ(x);
определение предыдущего элемента из списка  pred(x);
псевдослучайное число, равномерно распределенное в диапазоне 0..1 - random;
псевдослучайное число, равномерно распределенное в диапазоне 0..(x-1) - random(x);
инициализация генератора псевдослучайных чисел - randomize;
и др.
Примечание. Величина угла тригонометрических функций должна быть выражена в радианах. Для преобразования величины угла из градусов в радианы используется формула (а*3.1415926)/180, где: а - величина угла в градусах; 3.1415926 - число
·. Вместо дробной константы 3.1415926 можно использовать стандартную именованную константу PI. В этом случае выражение пересчета угла из градусов в радианы будет выглядеть так: a*Pi/180.
Операторы
Основными элементами языка Delphi являются операторы. Операторы служат главными строительными блоками программы.
В этом вопросе мы рассмотрим наиболее часто употребляемые операторы языка Delphi.
Оператор присваивания. Синтаксис оператора присваивания: <имя переменной> := <выражение>;
Примеры:
i := 0; - значение переменной i становится равным нулю;
a := b+с; - значением переменной а будет число, равное сумме значений переменных b и с;
j := j+1; - значение переменной j увеличивается на единицу.
Оператор присваивания считается правильным, если тип выражения соответствует или может быть приведен к типу переменной, получающей значение. Например, переменной типа real можно присвоить значение выражения, тип которого real или integer, а переменной типа integer можно присвоить значение выражения только типа integer.
Условный оператор. Синтаксис условного оператора:
if <условие> then <оператор 1> else <оператор 2>;
Пример: if х <= 0 then у := -а*х else у := b*ехр(х);
Условный оператор позволяет использовать проверку истинности условия для выбора между разными возможными способами действия в нем слова if, then и else являются зарезервированными. Если условное выражение, следующее за if, истинно, то выполняется оператор (возможно, составной), следующий за then. Если условное выражение ложно, то выполняется оператор (возможно, составной), следующий за словом else. На месте любого оператора в конструкции if-then-else может стоять другой условный оператор if-then-else.
Составной оператор. Составной оператор начинается ключевым словом begin и заканчивается ключевым словом end.
Синтаксис составного оператора:
begin <оператор 1>; ... ; <оператор N> end; Ключевые слова bеgin и end в составном операторе являются «операторными скобками», выделяющими группу операторов. Составной оператор можно записывать в любом месте программы, где можно писать оператор.
Пример:
if х < 1 then
begin
у := 1 - х;
z := sqr(x)
end
else
begin
у := 1 + х;
z:= ln(x);
end;
Delphi не накладывает никаких ограничений на характер операторов, входящих в составной оператор. Среди них могут быть и другие составные операторы  язык Delphi допускает произвольную глубину их вложенности.
Операторы цикла
Группу операторов, повторяемую многократно при изменении одного параметра, называют циклом.
Каждый цикл должен завершаться после конечного числа повторений. Условием окончания цикла служит либо заданное число повторений, либо достижение заданного значения какой-либо величины.
К последним относятся циклы с условием продолжения. В них выполнение цикла прекращается при достижении заданной точности определения искомой величины или когда проверка логического условия дает результат «ложь».
Оператор цикла с условием продолжения (цикл с предусловием). Весь цикл с условием продолжения сводится к одному оператору. Синтаксис этого оператора:
while <логическое выражение> do <оператор>;
Ключевые слова while и do означают соответственно «пока» и «выполнять». Когда программа в процессе выполнения впервые достигает оператора while, осуществляется проверка истинности условия. Если условие истинно, то выполняется тело цикла (оператор). После этого происходит возврат к началу фрагмента while do, где проверка условия осуществляется вновь. Цикл будет выполняться до тех пор, пока логическое выражение будет истинным. Как только логическое выражение станет ложным, управление передается следующему за циклом оператору. Если при первом выполнении цикла значение логического оператора будет «ложь», то цикл не станет выполняться, а управление сразу же передается следующему за ним оператору.
Оператор, составляющий тело цикла с условием продолжения, может быть составным. В этом случае тело цикла начинается словом begin, а завершается словом end, означающим конец составного оператора.
Оператор цикла с условием окончания (цикл с постусловием). Отличие цикла с постусловием от цикла с предусловием состоит в том, что условие окончания цикла записывается и проверяется в конце цикла.
Тело цикла с условием окончания записывается между ключевыми словами repeat и until, означающими соответственно «повторять» и «до».
После ключевого слова until записывается выражение, которое должно иметь логический тип. Цикл повторяется до тех пор, пока логическое выражение не примет значение «истина». Иначе говоря, цикл выполняется, пока условное выражение ложно. Особенность этого цикла состоит также в том, что тело цикла всегда выполнится хотя бы один раз, даже если логическое выражение сразу будет истинным.
Зарезервированные слова rереаt и until служат операторными скобками, поэтому сам цикл может состоять из любого числа операторов.
Синтаксис цикла с условием окончания:
repeat
<оператор>
...
<оператор>
until <логическое выражение>;
Оператор цикла с параметром. Для программирования циклов с заранее известным числом повторений используют цикл с параметром.
Цикл с параметром сводится к одному оператору. Синтаксис этого оператора:
for <параметр цикла>:= <выражение 1> to <выражение 2> do <оператор>;
Ключевые слова for и to имеют смысл соответственно «для» и «увеличивая до», «выражение 1» задает начальное значение параметра цикла, а «выражение 2» - конечное значение параметра цикла. Наиболее часто параметром цикла является переменная целого типа. В этом случае его значение увеличивается на единицу. При этом начальное значение должно быть меньше или равно конечному значению, в противном случае цикл не выполнится ни разу. Цикл продолжается до тех пор, пока параметр цикла не достигнет конечного значения. Оператор входящий в состав цикла, может быть как простым, так и составным.
Иногда требуется не увеличивать, а уменьшать значение параметра цикла. В этом случае ключевое слово to в операторе цикла заменяется словом downto. Оператор цикла принимает следующий вид:
for <параметр цикла> := <выражение 1> downto <выражение 2> do <оператор>;
Здесь параметр цикла уменьшается от начального значения (выражение 1) до конечного значения (выражение 2). Оператор, который содержится в теле цикла for, выполняется один раз для каждого значения в диапазоне между начальным и конечным значением. При этом для цикла с downto начальное значение должно быть больше или равно конечному.
Задание. Выполнить задания согласно номеру варианта.
Вариант 1
Задание №1-3. выделить основные синтаксические структуры. Описать назначение выделенных синтаксических структур.
№1
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2
·.text);
c:=StrToFloat(Edit3.text);
D:=b*b-4*a*c;
if D>0 then
begin
x1:=(-b+Sqrt(D))/2*a;
x2:=(-b-Sqrt(D))/2*a;
Edit4.text:=FloatToStr(x1);
Edit5.text:=FloatToStr(x2);
end
else Edit6.text:='Уравнение не имеет корней';
end;
№2
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
While x<=b Do
begin
x:=x+n;
S:=S+F(x)*n;
end;
Edit3.text:=FloatToStr(S);
end;
№3
var
a, b, n, F, S, x: single;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
Repeat
begin
x:=x+n;
S:=S+F(x)*n;
end;
Until x>=b;
Edit1.text:=FloatToStr(S);
end;
Задание №4. В задании №4 выделить все представленные синтаксические структуры. Описать назначение выделенного условия.
var
j, p: integer;
begin
While j< ListBox1.Items.Count-1 Do
begin
j:=j+1;
p:=Pos(Edit1.Text, ListBox1.Items[j]);
if p>0 then
begin
Memo1.Lines.Clear;
Memo1.Lines.Add(ListBox1.Items[j]);
break;
end;
if j=ListBox1.Items.Count-1 then
begin
if p=0 then
ShowMessage('Не найдено');
end;
end;
ListBox1.ItemIndex:=J;
end;
Вариант 2
Задание №1-3. выделить основные синтаксические структуры. Описать назначение выделенных синтаксических структур.
№1
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
c:=StrToFloat(Edit3.text);
D:=b*b-4*a*c;
if D>0 then
begin
x1:=(-b+Sqrt(D))/2*a;
x2:=(-b-Sqrt(D))/2*a;
Edit4.text:=FloatToStr(x1);
Edit5.text:=FloatToStr(x2);
end
else Edit6.text:='Уравнение не имеет корней';
end;
№2
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
While x<=b Do
begin
x:=x+n;
S:=S+F(x)*n;
end;

Edit3.text:=FloatToStr(S);
end;
№3
var
a, b, n, F, S, x: single;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
Repeat
begin
x:=x+n;
S:=S+F(x)*n;
end;
Until x>=b;
Edit1.text:=FloatToStr(S);
end;
Задание №4. В задании №4 выделить все представленные синтаксические структуры. Описать назначение выделенного условия.
var i: integer; H: Srting;
begin
i:=-1
while i< Memo1.Lines.Count-1 do
begin
i:=i+1;
H:=Memo1.Lines[i];
begin
if Pos(')', H)-Pos('(', H)=3 then
insert('0', H, Pos('(', H)+1);
if Pos(')', H)-Pos('(', H)=2 then
insert('00', H, Pos('(', H)+1);
if Pos('(', H)=0 then
insert (' (000)', H, Pos('jpg', H)-1);
end;
ListBox1.Items.Add(H);
end;
end;
end;
Вариант 3
Задание №1-3. выделить основные синтаксические структуры. Описать назначение выделенных синтаксических структур.
№1
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
c:=StrToFloat(Edit3.text);
D:=b*b-4*a*c;
if D>0 then
begin
x1:=(-b+Sqrt(D))/2*a;
x2:=(-b-Sqrt(D))/2*a;
Edit4.text:=FloatToStr(x1);
Edit5.text:=FloatToStr(x2);
end
else Edit6.text:='Уравнение не имеет корней';
end;
№2
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
While x<=b Do
begin
x:=x+n;
S:=S+F(x)*n;
end;

Edit3.text:=FloatToStr(S);
end;
№3
var
a, b, n, F, S, x: single;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
Repeat
begin
x:=x+n;
S:=S+F(x)*n;
end;
Until x>=b;
Edit1.text:=FloatToStr(S);
end;
Задание №4. В задании №4 выделить все представленные синтаксические структуры. Описать назначение выделенного условия.
var r: integer; S: Srting;
begin
r:=-1;
Memo1.clear;
While r< ListBox1.Items.Count-1 Do
begin
r:=r+1;
S:=ListBox1.Items[r];
begin
if Pos(' (000)', S)>0 then
Delete(S, Pos(' (000)', S), 6);
if Pos('(00', S)>0 then
Delete(S, Pos('(00', S)+1, 2);
if Pos('(0', S)>0 then
Delete(S, Pos('(0', S)+1, 1);
end;
Memo1.Lines.Add(S);
end;
end;
Вариант 4
Задание №1-3. выделить основные синтаксические структуры. Описать назначение выделенных синтаксических структур.
№1
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
c:=StrToFloat(Edit3.text);
D:=b*b-4*a*c;
if D>0 then
begin
x1:=(-b+Sqrt(D))/2*a;
x2:=(-b-Sqrt(D))/2*a;
Edit4.text:=FloatToStr(x1);
Edit5.text:=FloatToStr(x2);
end
else Edit6.text:='Уравнение не имеет корней';
end;
№2
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
While x<=b Do
begin
x:=x+n;
S:=S+F(x)*n;
end;

Edit3.text:=FloatToStr(S);
end;
№3
var
a, b, n, F, S, x: single;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
Repeat
begin
x:=x+n;
S:=S+F(x)*n;
end;
Until x>=b;
Edit1.text:=FloatToStr(S);
end;
Задание №4. В задании №4 выделить все представленные синтаксические структуры. Описать назначение выделенного условия.
Var
a, b: Integer;
Begin
p_count:=0;
cx:=columns div 2;
cy:=0;
randomize;
If random(10)=0 then
ShowMessage('Bianchini Marco'+#13+'E-Mail bianco@arcanet.it');
deleteDL:=0;
p_count:=0;
for a:=1 to 2 do
for b:=0 to 2 do
Piece[A,B]:=colori[random(ncolori)+1];
Show_prew;
for a:=0 to columns do
for b:=0 to lines do
begin
vet[a,b,1]:=colori[0];
vet[a,b,2]:=0;
end;
disegna_pezz(cx,cy,true);
end;
Вариант 5
Задание №1-3. выделить основные синтаксические структуры. Описать назначение выделенных синтаксических структур.
№1
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
c:=StrToFloat(Edit3.text);
D:=b*b-4*a*c;
if D>0 then
begin
x1:=(-b+Sqrt(D))/2*a;
x2:=(-b-Sqrt(D))/2*a;
Edit4.text:=FloatToStr(x1);
Edit5.text:=FloatToStr(x2);
end
else Edit6.text:='Уравнение не имеет корней';
end;
№2
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
While x<=b Do
begin
x:=x+n;
S:=S+F(x)*n;
end;

Edit3.text:=FloatToStr(S);
end;
№3
var
a, b, n, F, S, x: single;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrToFloat(Edit1.text);
b:=StrToFloat(Edit2.text);
n:=(b-a)/1000;
S:=0;
x:=a;
Repeat
begin
x:=x+n;
S:=S+F(x)*n;
end;
Until x>=b;
Edit1.text:=FloatToStr(S);
end;
Задание №4. В задании №4 выделить все представленные синтаксические структуры. Описать назначение выделенного условия.
var
ex, ey, a: Integer;
begin
Canvas.Pen.Color:=colori[0];
Canvas.brush.Color:=colori[0];
for a:=0 to 2 do
begin
if vedi=true then
begin
if sil then
Canvas.Pen.Color:=piece[1,a];
if sfc then
Canvas.brush.Color:=piece[1,a];
end;
ex:=x*lx;
ey:=y*ly+a*ly;
Canvas.Rectangle(ex,ey,ex+lx,ey+ly);
end;
end;
Содержание отчёта:
Номер, тема и цель практической работы.
Текст задания.
Интерфейс рабочего приложения.
Код разработанного программного продукта.



















Приложенные файлы

  • doc pr1
    Размер файла: 158 kB Загрузок: 1