Лабораторная работа №5. Алгоритм решения математический задачи на языке.



Алгоритм решения задачи имеет 3 основные части:

1. ввод данных

Например:

a:=StrToInt(Memo1.text); // занести в переменную а содержимое многострочного редактора Memo1, переведенное из строкового в числовую форму для выполнения математических действий.

b:=StrToInt(Edit1.text); // занести в переменную b содержимое однострочного редактора Edit1, переведенное из строкового в числовую форму для выполнения математических действий.

2. проведение определенных действий, требуемых в условии задачи.

3. вывод результата или сообщения о проведенном анализе данных.

Вывод результата: c:=a+b; // ответ с

Memo1.text:=IntToStr(c); // вывод результата решения примера в многострочный редактор Memo1 путем перевода ответа из числовой в строковую форму.

Вывод сообщения: Edit1.text:=’Задача решена успешно!’; // вывод сообщения о проведенном анализе данных в многострочный редактор Edit1. Перевод сообщения из числовой в строковую форму НЕ ОСУЩЕСТВЛЯЕТСЯ!

Стандартные арифметические функции

abs(x) Модуль х
cos(x) Косинус х
exp(x) Экспонента
frac(x) Дробная часть от х
int(x) Целая часть от х
random псевдослучайное число [0,1)
random(x) псевдослучайное число [0,x)
sin(x) Синус х
sqr(x) квадрат х
sqrt(x) корень квадратный

Возведение в степень: xy = exp(y*ln(x))

Для работы с арифметическими функциями необходимо выполнять простое правило:

1. Для вывода значения функции х2 нужно описать две переменные x и y целого типа.

2. Ввести х с клавиатуры. Например, x:=StrToInt(Edit1.Text);

3. В программе y:=sqr(x);

4. Вывести значение у. Например, Memo1.Text:=IntToStr(y);

Лабораторная работа № 6

Для работы с арифметическими функциями необходимо выполнять простое правило:

1. Для вывода значения функции х2 нужно описать две переменные x и y целого типа.

2. Ввести х с клавиатуры. Например, x:=StrToInt(Edit1.Text);

3. В программе y:=sqr(x);

4. Вывести значение у. Например, Memo1.Text:=IntToStr(y);

Задания для самостоятельной работы:

1.

2.

3. Дано число. Вывести на экран его целую и дробную части.

4. Даны числа a, b, c. Возвести в третью степень a, в квадрат произведения b на с и найти модуль суммы этих чисел.

Флажки (CheckBox) и переключатели (RadioButton). Условный оператор

Флажки в среде программирования используются для выбора собственного решения (да/нет или да/нет/не уверен). В последнем случае флажок устанавливается, но выглядит блекло. Это решение отражается в свойстве State компонента, доступном как для чтения, так и для записи. State может быть 3 типов:

· Установлен (Checked)

· Не установлен (Unchecked)

· Не уверен (Alignment)

Переключатели предназначены для выбора одного из нескольких взаимоисключающих решений. На форме помещаются, по меньшей мере, два таких компонента. Они могут иметь только два состояния, определяемых свойством Checked.

Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. То есть Условный оператор - средство ветвления вычислительного процесса.

Структура условного оператора в общем виде:

IF <УСЛОВИЕ> THEN <ОПЕРАТОР №1> ELSE <ОП.2>;

где IF, THEN, ELSE - ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА (если, то, иначе)

<условие> - произвольное выражение логического типа,

<операторы> - любые операторы, т.е. действия.

Далее можно разъяснить алгоритм работы условного оператора:

1. Вычисляется <условие>.

2. Если оно TRUE (истина), то выполняется оператор 1, а оператор 2 пропускается.

3. Если результат - FALSE (ложь), наоборот <оп.1> пропускается, а выполняется <оп.2>.

Рассмотрим структуру неполного ветвления. Запишем ее в общем виде:

IF <УСЛОВИЕ> THEN <ОПЕРАТОР>;

Условный оператор может быть использован для решения математических задач. Для облегчения работы с оператором на начальном этапе работы с ним, рассмотрим таблицу:

<Условие> <Оператор>
a>0 k:=0; k:=k+1: //количество
a<0 s:=0; s:=s+a; //сумма
(a mod 2=0) а нацело делится на 2, а - четное p:=1; p:=p*a; //произведение

В структуру условного оператора

IF <УСЛОВИЕ> THEN <ОПЕРАТОР №1> ELSE <ОП.2>;

вместо <УСЛОВИЕ>и<ОПЕРАТОР>вставляем нужные поля таблицы. В предлагаемые столбцы, можно вводить какие угодно условия и операторы, необходимые для решения задачи.

Запомним основные правила для работы с условным оператором:

перед else ; никогда не ставится;

если необходимо использовать составное условие, то каждое подусловие записывается в скобках через логические операции «и» (and) или «или» (or).

Например: Даны числа x, y, z. Найти количество чисел, которые больше 5 и меньше 10.

Var x, y, z, k : integer;

Обработаем событийную процедуру:

{раздел ввода данных}

x := StrToInt(Edit1.Text);

y := StrToInt(Edit2.Text);

z := StrToInt(Edit3.Text);

k := 0;

{раздел основного алгоритма}

if (x>5) and (x<10) then k := k+1;

if (y>5) and (y<10) then k := k+1;

if (z>5) and (z<10) then k := k+1;

{раздел вывода результата}

Memo1.Text := IntToStr(k);

Если на одной из ветвей находятся несколько операторов необходимо использовать операторные скобки beginend.

Например: Увеличить значение t и m на единицу, если k – четное и уменьшить в обратном случае.

Var t, m, k : integer;

Рассмотрим алгоритм записи условия:

… if (k mod 2 = 0) then

Begin

t := t+1; m := m+1;

end // перед else ; не ставится!!!

else

Begin

t := t-1; m := m-1;

end; …

Другая форма записи увеличения на единицу числа: inc(<число>);

для уменьшения - pred(<число>); тогда решение представленного выше примера может быть записано следующим образом:

… if (k mod 2 = 0) then

Begin

inc (t); inc (m);

end

else

Begin

pred(t); pred (m); end; …

Лабораторная работа №7

Флажки. При активизации двойным щелчком мыши CheckBox1 появится процедура TForm1.CheckBox1Click(Sender: TObject);

Задача: При установке флажка текст в Метке1 должен становиться жирным.  

Procedure TForm1.CheckBox1Click(Sender: TObject);

begin

if checkbox1.Checked=true

then Label1.font.Style:=font.style+[fsbold]

else Label1.font.Style:=font.style-[fsbold]

end;

То есть, если (if) флажок установлен, (then) текст в Метке1 должен становиться жирным, (else) а при повторном нажатии на флажок – обычным.

Рассмотрим применение таблицы для первого случая, когда необходимо текст в многострочном редакторе сделать жирным при установке флажка и обычным при повторном нажатии.

<Условие> <Оператор>
CheckBox1.checked Memo1.Font.Style:=Memo1.Font.Style+[fsBold]
  Memo1.Font.Style:=Memo1.Font.Style-[fsBold]

Вставив условия и операторы в шаблон получим:

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

if CheckBox1.checked then

Memo1.Font.Style:=Memo1.Font.Style+[fsBold]

  else

Memo1.Font.Style:=Memo1.Font.Style-[fsBold]

end;

Переключатели. Задача: При установке переключателей текст в Метке1 должен становиться желтым либо красным.

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

if RadioButton1.Checked=true then Label1.Font.Color:=clyellow

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

 if RadioButton2.Checked=true then Label1.font.Color:=clred

end;

Задания для самостоятельной работы:

1. Создать простейший текстовый процессор, содержащий переключатели цвета шрифта, флажки для определения стиля.

2. Вычислить наибольшее (max) из двух введенных чисел а и b.

3. Вычислить наименьшее (min) из трех чисел a, b, c.

4. Даны числа x, y, z. Найти количество чисел больших нуля.

5. Даны числа x, y, z. Найти сумму чисел меньших нуля и произведение чисел больших нуля.

6. Даны числа a, b, c. Вычислить модуль чисел меньших нуля, квадрат чисел не равных нулю и корень из чисел больших нуля.

7. Найти значение выражения z=3x-4, 0<x<=1и z=|x-x2|, 1<x<=10

8. s=max(x,y), x<0 s=min(x,y), x>=0

9. Известно, что из четырех чисел а1, а2, а3, а4 одно отлично от трех других, равных между собой. Вывести это число.

10. Даны два действительных числа x и y, не равные друг другу. Меньшее из этих чисел заменить половиной их суммы.

Придумать и решить несколько задач по данной теме.

1. Как ввести целое число в однострочное поле?

a. a:=IntToStr(Edit1.text);

b. a:=StrToInt(Memo1.text);

c. a:=IntToStr(Memo1);

d. a:=StrToInt(Edit1.text);

2. Выберите синтаксически правильную запись (может быть несколько вариантов ответа)

a. If a>b then c:=d; else c:=b;

b. If a>b then c:=5 and d:=7;

c. If a>b then c:=5+s;

d. If a<10 then c:=1 else c:=0;

e. If a=1 and b=6 then k:=k+1;

f. If (a=5) or (b=5) then c:=5;

g. If a≠10 then s:=s+b;

h. If a≥1 then

begin

c:=4; b:=4;

else

 c:=5; b:=5;

end;

i. if a>0 then

begin

c:=1; d:=1;

end else k:=1;

Оператор варианта

Оператор варианта Case является обобщением оператора if и позволяет сделать выбор из произвольного числа вариантов.

 Он состоит из выражения, называемого селектором, и списка параметров, каждому из которых предшествует список констант выбора  (список может состоять из одной константы). Как и в операторе if, здесь может присутствовать else, имеющее тот же смысл.

Формат:

Case <выражение-селектор> of

<список 1>: <оператор 1>;

<список 2>: <оператор 2>;

<список N>: <оператор N>

else <оператор>

end;

Селектор может иметь любой скалярный тип, кроме вещественного. Использование строкового типа в качестве селектора запрещено. Список констант выбора может состоять из произвольного количества значений или диапазонов, отделенных друг от друга запятыми.

Тип констант в любом случае должен совпадать с типом селектора.

Рассмотрим примеры:

1. селектор интервального типа.

Case i of

1..10: Memo1.Lines.Add (‘число’, I:4, ‘в диапазоне 1-10’);

11..20: Memo1.Lines.Add (‘число’, I:4, ‘в диапазоне 11-20’);

21..30: Memo1.Lines.Add (‘число’, I:4, ‘в диапазоне 21-30’)

else Memo1.Lines.Add (‘число’, I:4, ‘вне пределов контроля’) end;

2. селектор целочисленного типа.

Case I of

1: z:=i+10;

2: z:=i+100;

end;

Лабораторная работа №8

Задача: Написать программу, которая по введенному числу 1..3 выводит его название.

Опишем переменную Var a: integer;

Для события по щелчку кнопки в теле процедуры напишем:

Begin

a:=(Edit1.text); // ввод числа

case a of

1: Memo1.text:=IntToStr(‘один’);

2: Memo1.text:=IntToStr(‘два’);

3: Memo1.text:=IntToStr(‘три’);

else Memo1.text:=IntToStr(‘Введите число 1, 2 или 3’);

end;

End;

Задания для самостоятельной работы:

1. Составить программу, которая по заданному числу (1-12) выводит название соответствующего месяца.

2. Написать программу, которая по введенному номеру времени года выдавала соответствующие этому времени года месяцы и число дней в каждом месяце.

3. Составить программу, которая для любого натурального числа 1-1000 печатает количество цифр в записи этого числа.

4. Для целого числа k от 1 до 99 напечатать фразу «я прочел k книг», согласовав окончание слова «книга» с числом k.


Дата добавления: 2018-04-15; просмотров: 734; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!