Как составить блок схему паскаль линейный алгоритм

Блок-схема

Итак, опустив долгие и нудные восхваления Паскаля, которые так любят публиковать в своих статьях редакторы многих сайтов, приступим непосредственно к самому основному – к программированию.

В школах, как правило, изучение Паскаля начинают с решения простейших задач путем составления различных алгоритмов или блок-схем, которое многие так часто игнорируют, считая никому не нужной ерундой. А зря. Я, как и любой другой человек, хоть немного соображающий в программировании (не важно где – в Паскале, Си, Дельфи), могу уверить Вас – умение правильно и быстро составлять схемы является фундаментом, основой программирования.

Блок-схема — графическое представление алгоритма. Она состоит из функциональных блоков, которые выполняют различные назначения (ввод/вывод, начало/конец, вызов функции и т.д.).

Существует несколько основных видов блоков, которые нетрудно запомнить:

Некоторые виды блоков

Сегодняшний урок я решила посвятить не только изучению блок-схем, но также и изучению линейных алгоритмов. Как Вы помните, линейный алгоритм — наипростейший вид алгоритма. Его главная особенность в том, что он не содержит никаких особенностей. Как раз это и делает работу с ним простой и приятной.

Задача №1: «Рассчитать площадь и периметр прямоугольника по двум известным сторонам».

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

Составим алгоритм решения подобных задач:

1) Прочитать задачу.
2) Выписать известные и неизвестные нам переменные в «дано». (В задаче №1 к известным переменным относятся стороны: a, b ;к неизвестным — площадь S и периметр P)
3) Вспомнить либо составить необходимые формулы. (У нас: S=a*b; P=2*(a+b))
4) Составить блок-схему.
5) Записать решение на языке программирования Pascal.

Запишем условие в более кратком виде.

Дано: a, b

Найти: S, P

Блок-схема:

Решение задачи №1. Блок-схема

Решение задачи №1

Структура программы, решающей данную задачу, тоже проста:

  • 1) Описание переменных;
  • 2) Ввод значений сторон прямоугольника;
  • 3) Расчет площади прямоугольника;
  • 4) Расчет периметра прямоугольника;
  • 5) Вывод значений площади и периметра;
  • 6) Конец.

А вот и решение:

Program Rectangle;
Var a, b, S, P: integer;
Begin
write('Введите стороны прямоугольника!'); 
readln(a, b);
S:=a*b;
P:=2*(a+b);
writeln('Площадь прямоугольника: ', S);
write('Периметр прямоугольника: ', P);
End.

Задача №2: Скорость первого автомобиля — V1 км/ч, второго – V2 км/ч, расстояние между ними S км. Какое расстояние будет между ними через T часов, если автомобили движутся в разные стороны? Значения V1, V2, T  и S задаются с клавиатуры.

Решение осуществляем, опять же, следуя алгоритму. Прочитав текст, мы переходим к следующему пункту. Как и во всех физических или математических задачах, это запись условий задачи:

Дано: V1, V2, S, Т
Найти: S1

Далее идет самая главная и в то же время самая интересная часть нашего решения – составление нужных нам формул. Как правило, на начальных стадиях обучения все необходимые формулы хорошо нам известны и взяты из других технических дисциплин (например, на нахождение площади различных фигур, на нахождение скорости, расстояния и т.п.).

Формула, используемая для решения нашей задачи, выглядит следующим образом:

S1=(V1+V2)*T+S

Следующий пункт алгоритма – блок-схема:

Решение задачи №2.Блок-схема

Решение задачи №2.

А также решение, записанное в Pascal :

Program Rasstoyanie;
Var V1, V2, S, T, S1: integer; {Ввод }
begin
write('Введите скорость первого автомобиля: '); 
readln(V1);
write('Введите скорость второго автомобиля: '); 
readln(V2);
write('Введите время: '); 
readln(T);
write('Введите расстояние между автомобилями: '); 
readln(S);
S1:=(V1+V2)*T+S;
writeln('Через ', t,'ч. расстояние ', S1,' км.');
End.

Вам может показаться, что две эти программы правильны, но это не так. Ведь сторона треугольника может быть 4.5, а не 4, а скорость машины не обязательно круглое число!  А Integer — это только целые числа. Поэтому при попытке написать во второй программе другие числа выскакивает ошибка:

Ошибка!

Обратите внимание в Паскале, как и в любом другом языке программирования десятичная дробь вводится с точкой, а не с запятой!

Чтобы решить эту проблему вам надо вспомнить какой тип в Pascal отвечает за нецелые числа. В этом уроке мы рассматривали основные типы. Итак, это вещественный тип — Real.  Вот, как выглядит исправленная программа:

Снимок экрана 2013 12 15 в 20.00.24 1024x545

Как видите, эта статья полезна для прочтения как новичкам, так и уже более опытными пользователям Pascal, так как составление блок-схем не только очень простое и быстрое, но и весьма увлекательное занятие.

Линейный
алгоритм

алгоритм,
в котором команды выполняются
последовательно одна за другой. Команды
в линейном алгоритме выполняются в
порядке их записи в алгоритме. Рассмотрим
блок-схему линейного алгоритма:

Программы с линейной
структурой составляются из операторов
присваивания, ввода, вывода, обращения
к процедурам. Рассмотрим некоторые из
таких операторов.

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

Формат:

<переменная>:=<выражение>;

Результат выражения
должен соответствовать типу переменной
в левой части оператора присваивания.
Например: если в разделе описания
переменных var
мы описали переменную k
типа integer,
то впоследствии в ходе разработки
алгоритма мы можем присвоить данной
переменной значение только этого типа.

k:=3;

или

k:=m*5;

(m
– переменная типа integer)

Операторы вывода

1) Оператор Write

Формат:

Write(<список
вывода>);

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

В операторе write
можно
использовать форматирование данных.
Для этого после соответствующего
значения в скобках ставится “:
(двоеточие) и указывается количество
знакомест, выделяемых под это значение.
Для дробных чисел через второе двоеточие
можно указать количество знакомест под
цифрой после запятой (количество
знакомест для дробной части числа).

Пример:

Write(3.5343:0:2);

В результате на
экран будет выведено число 3,53.

2) Оператор Writeln

Формат:

Writeln(<список
вывода>);

Отличается от
оператора write
лишь тем, что после вывода списка на
экран он переводит курсор на начало
следующей строки.

Пример:

Writeln(k);

На экран выводится
значение переменной k
и переводится курсор на начало следующей
строки.

Операторы ввода

1) Оператор Read

Формат:

Read(<список
переменных>);

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

Пример:

Read(k);

С клавиатуры
вводится значение переменной k
соответствующего типа.

2) Оператор Readln

Формат:

Readln(<список
переменных>);

Отличается от
оператора read
лишь тем, что еще обрабатывает нажатие
на клавишу <Enter>,
т.е. перевод курсора на новую строку и
возврат каретки.

Пример:

Readln(k);

5.6. Разветвляющиеся алгоритмы. Условные операторы языка Pascal

В отличие от
линейных алгоритмов, в которых команды
выполняются последовательно одна за
другой, в алгоритмическую структуру
«ветвление» входит условие, в зависимости
от выполнения или невыполнения которого
реализуется та или иная последовательность
команд.

Ветвление
– алгоритмическая структура, в которой
та или иная серия команд выполняется в
зависимости от истинности условия.

В ветвлении команды
выполняются с нарушением порядка их
следования в алгоритме.

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

В неполном
ветвлении

если условие выполняется (истинно), то
будет выполняться определенный список
команд.

В полном
ветвлении

если условие выполняется (истинно), то
выполняется список команд 1, иначе, если
условие не выполняется (ложно), выполняется
список команд 2.

В Pascal
разветвляющиеся алгоритмы реализуются
с помощью условного
оператора
If
и оператора
выбора
Case.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Алгоритмизация и программирование являются
одной из трудных для понимания учащимися тем в
предмете информатика, а при наличии дефицита
часов, выделяемых на изучение предмета, перед
учителем встает довольно сложная задача «Как
познакомить хотя бы с основами программирования
всех учащихся, в том числе и непрофильных
классов?». Между тем, как мы видим и в новых
стандартах и в демо-версии ЕГЭ по информатике эта
тема занимает существенное место. Предлагаемые
ниже материалы помогают познакомить ребят с
основными алгоритмическими конструкциями и
реализацией их на языке программирования
Паскаль и дать начальное представление о языке.
Заинтересовавшиеся учащиеся могут в дальнейшем
продолжить изучение языка программирования на
спецкурсе.

Предлагаю задания к трем урокам: по линейному
алгоритму, ветвлению и циклам. Типы переменных и
структура программы на Паскале рассматриваются
на предыдущих уроках.

Начальная подготовка учащихся.

  • Знание основных алгоритмических конструкций:
    линейный алгоритм, ветвление, цикл.
  • Знание основных типов переменных.
  • Знание структуры программы на Паскале.

Ход урока.

Перед каждым уроком учитель раскладывает на
столах «Папки ученика», в которых находятся
листы с заданиями, таблица «Реализация элементов
блок – схемы алгоритма на языке Паскаль»,
«Алгоритм создания программы по шаблону» и
другой справочный материал. Если
предполагается создание программы по шаблону,
т.е. ученики редактируют уже имеющуюся программу,
то соответствующий файл *.pas с текстом программы
должен находится на жестком диске в
соответствующем каталоге.

Для знакомства с реализацией алгоритмической
конструкции средствами языка используется сайт http://schools.keldysh.ru/gym1522/inform/pascal/ (см. Приложение1)

Обсуждается задание, проговаривается сценарий,
составляется блок-схема алгоритма.

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

В качестве заданий на ветвление и циклы взяты
задачи по физике, так как программирование
изучается на уроках интегрированного с физикой
курса «Компьютерное моделирование физических
процессов и явлений» в 9 классе.

Описание приложений.

  • Адрес сайта «Паскаль для начинающих» – http://schools.keldysh.ru/gym1522/inform/pascal/ Немного
    сокращенный вариант находится в архиве (Приложение1.zip). Сайт выполнен
    с использованием флэш-технологии, позволяет в
    анимационной форме дать начальное представление
    о языке Паскаль 7.0 Для демонстрации надо
    разархивировать в каталог на жестком диске.
    Главная страница сайта – index.html
  • Тексты программ для создания программ по
    шаблону – файлы Приложение2.pas и Приложение3.pas. Их
    надо переименовать в Shablon1.pas и Shablon2.pas и поместить
    в соответствующий каталог на диске.

Использованная литература дана в Приложении 1
на сайте в разделе «ссылки».

Реализация элементов блок – схемы
алгоритма на языке Паскаль.

Элемент блок
схемы

В программе

Действия

img1.gif (1061 bytes)

BEGIN

Начало работы
программы
(служебное слово)

img2.gif (1041 bytes)

END.

Конец работы
программы
(служебное слово)

img3.gif (1387 bytes)

WRITE (‘A,B)

На экране появляется надпись:
введите A, B
(оператор вывода данных)
img4.gif (1227 bytes)

WRITE (C)

На экране появляется значение
переменной
C.
(оператор вывода данных)
img5.gif (1246 bytes)

WRITE (‘результат=’,S)

На экране появляется текст результат=
и значение переменной S.
(оператор вывода данных)
img6.gif (1087 bytes)

READ (X,Y)

Надо вводить два числа с
клавиатуры
(оператор ввода данных)
 img7.gif (1149 bytes) C:=4*T ;
D:=A+B;
I:=I+1;
После выполнения операторов,
переменным присваиваются следующие значения:
C=4T,
D=A+B, I=I+1
(операторы присваивания)
img8.gif (1358 bytes) IF A>B THEN

BEGIN
ОП.1
END

ELSE


BEGIN
ОП.2
END

Если условие A>B верно,
то выполняется группа операторов
ОП.1, в
противном случае – группа операторов
ОП.2
(условный оператор)
img9.gif (1383 bytes) WHILE I<=N DO

BEGIN
ОП.1
END

Пока будет выполнено I? N, выполняется
группа операторов
ОП.1
(оператор цикла с предусловием, ОП.1 – тело
цикла)
img10.gif (1351 bytes) REPEAT
ОП.1
UNTIL I>N
Выполняется группа опера-торов
ОП.1 до тех пор, пока не будет выполнено
условие
I>N.
(оператор цикла с постусловием, ОП.1 – тело
цикла)
img11.gif (1323 bytes) FOR I:=1 TO N DO


BEGIN
ОП.1
END

Для каждого I от 1
до
N выполняется группа операторов ОП.1

(оператор цикла с параметром, I – параметр цикла)

Линейный алгоритм. Простейшая
программа (ввод/вывод данных, вычисление суммы,
разности, произведения и частного двух чисел).

Задание

Написать программу, которая

  • знакомится с пользователем (на появившееся на
    экране сообщение пользователь вводит свое имя, и
    на экране появляется «приветствие» от
    компьютера с именем пользователя);
  • находит сумму (разность, произведение или
    частное) введенных с клавиатуры двух чисел);
  • выводит результат на экран.

Примерный вид экрана при работе

  Введите свое
имя  Вася
Привет, Вася
Введите 2 числа 2 6
Сумма чисел равна 8
 

Для выполнения задания можно использовать
приведенный ниже текст программы или заранее
подготовленный учителем файл Shablon1.pas (файл Приложение2.pas) с текстом
программы, который находится в каталоге CLASS (там
же находятся личные папки учащихся). Ученик
проставляет вместо вопросительных знаков
необходимые операторы и служебные слова.
Комментарии в фигурных скобках поясняют, что
необходимо сделать. Программа состоит из двух
частей. В первой части программы демонстрируется
использование операторов ввода и вывода, во
второй, после комментария {ЗАДАНИЯ}, ученику надо
самому записать необходимые операторы,
используя приведенную выше блок-схему и
комментарии в программе. Алгоритм создания
программы по шаблону дан ниже.

Текст программы по линейному
алгоритму

PROGRAM P1;

{Объявление переменной S для ввода имени, надо
указать тип переменной – строковый}

VAR S: ???? ;

{Объявление переменных A и B для ввода чисел,
надо указать тип переменных – целые числа со
знаком}

VAR A,B: ???? ;

{Объявление переменной C для вывода результата,
надо указать тип переменной – все действительные
числа}

VAR C: ???? ;

{Начало раздела инструкций}

BEGIN

{Оператор вывода на экран сообщения (просьба
ввести имя)}

WRITE (‘Введите свое имя’);

{Оператор ввода данных (значение переменной S =
имя пользователя)}

READLN (S);

{Вывод на экран сообщения (приглашения к работе)
– слово “Привет” и значение переменной S
(введенное пользователем имя)}

WRITELN (‘Привет, ‘, S);

{ЗАДАНИЯ:}

{1)Запишите оператор вывода на экран
приглашения к вводу 2 чисел (переменные A и В)}

???????

{2) Запишите оператор ввода для переменных A и В}

???????

{3) Запишите оператор присваивания для
вычисления значения переменной С (сумма,
разность, произведение, частное двух чисел)}

C:=?????;

{4) Запишите оператор вывода на экран результата
вычислений (сумма (разность, произведение,
частное) = <значение переменной>}

????????

{Конец программы, конец раздела инструкций}

END.

Ветвление. Моделирование
равномерного прямолинейного движения двух тел.

Задания

Построить компьютерную модель движения двух
тел.

I. Найти скорость сближения (удаления) 2-х
тел.

Рассмотреть случаи:

1. Тела двигаются в одном направлении.

2. Тела двигаются в противоположных
направлениях.

  • Скорости вводятся с клавиатуры после вывода на
    экран соответствующего приглашения.
  • Направление движения каждого тела задаются
    буквами (L – влево, R – вправо)

Примерный вид экрана при работе

  Введите скорость 1
тела 10

Введите скорость 2 тела 5

Введите направление 1 тела L

Введите направление 2 тела R

Скорость равна 15

 
II. Добавить ввод начальных
координат тел и определить сближаются или
отдаляются тела.

III. Определить расстояние
между телами через время t (ввести с клавиатуры).

IV. Выводить на экран текущие координаты тел.

V. Выводить на экран картину движения тел.

Примечания:

  • блок-схема и заготовка для программы даны для I;
  • II, III – повышенного уровня;
  • IV, V – после изучения темы «Циклы».

Текст программы на ветвление

PROGRAM P2;

{Объявление переменных V1, V2 и V для значений
скоростей, тип переменных – целые числа со знаком
}

VAR V1, V2, V: ??? ;

{Объявление переменных A1 и A2 для значений
направлений, значения переменных – символы}

VAR A1, A2: ??? ;

{Начало раздела инструкций}

BEGIN

{Оператор вывода на экран сообщения (просьба
ввести скорость первого тела)}

WRITE (‘Введите скорость 1 тела’);

{Оператор ввода данных (значение переменной V1)}

READLN (V1);

{Тоже для второго тела}

?????????????

?????????????

{Аналогично осуществить ввод направлений
движения}

WRITE (‘Введите направление 1 тела’ );

READLN (A1);

?????????????

?????????????

{Условный оператор: проверка условия
равенства значений переменных A1 и A2}

IF A1 = A2 THEN V := V1 – V2 ELSE V := V1 + V2;

{Определение модуля вектора ABS – функция
вычисление абсолютной величины}

V:=ABS(V);

{Оператор вывода на экран результата
вычислений }

????????

{Конец программы, конец раздела инструкций}

END.

Текст программы находится в файле Приложение3.pas (в кодировке MS
DOS). Его надо переименовать в Shablon2.pas и можно
использовать при создании программы по шаблону
(см. алгоритм ниже).

Алгоритм создания программы по
шаблону.

1. Войти в систему программирования Turbo Pascal 7.0.

2. Открыть файл ShablonK.pas (K – номер шаблона):

2.1. File -> Open

2.2. Перейти в каталог CLASS (в списке Files
выбрать ..)

2.3. Выбрать файл ShablonK.pas (K – номер шаблона)

2.4. Подтвердить выбор (Open)

3. Выполнить задание, заменяя ????.

4. Сохранить файл в своем каталоге:

4.1. (File -> Save as)

4.2. Убедится, что находитесь в своем каталоге
(нижняя строчка)

4.3. Ввести имя файла

4.4. Подтвердить сохранение (Ok)

5. Запустить программу (Run -> Run или Ctrl+F9)

6. При наличии ошибок, внести изменения в
программу и повторить пункт 5.

7. Просмотреть результат выполнения программы (Debug
User Screen
или Alt+F5)

8. Сохранить файл (File -> Save или F2)

9. Выйти из системы программирования (File ->
Exit
или Alt+X
)

Для циклического алгоритма уже текст программы
не дается. Учащиеся должны сами составить
программу по блок – схеме.

Циклы. Моделирование
равноускоренного движения.

Задания

Построить модель равноускоренного движения
тела (X=X0+V0t+At2/2).

I.. Тело двигается по прямой. Выводить на
экран координату тела через каждые 10 секунд
движения.

Исходные данные (задаются с клавиатуры):

1. Начальная скорость тела (V0, м/с).

2. Ускорение тела со знаком (A, м/с2).

3. Начальное положение тела (X0, м).

4. Время движения (TK, с).

Расчетные данные (выводятся на экран):

1. Текущее положение тела (X, м).

2. Текущее время движения (T, с).



Примерный вид экрана при работе

  Введите
скорость тела 10

Введите ускорение тела 2

Введите нач. положение тела 0

Введите время движения тела 200

T = 0 X = 0

T = 10 X = 200

T = 20 X = 600

………..

T = 200 X = 42000

 
II. Рассмотреть случай, когда
известно конечное положение тела, но неизвестно
время движения.

III. Организовать ввод/вывод
данных в других единицах (км, км/час, час) с
пересчетом в программе.

Примечание: блок-схема и фрагменты программы
даны для задания
I.

Реализация блока
расчета и вывода на экран времени движения и
положения тела

Цикл с предусловием

Цикл с постусловием Цикл с параметром
img15.gif (2495 bytes) img16.gif (2496 bytes) img17.gif (2544 bytes)
x:=x0;

t:=0;

While T <= TK do

begin

X:=X0+V0*T+A*T*T/2;

Writeln (‘T = ‘,T,’ X = ‘,X);

T:=T+10; end;

X:=X0;

T:=0;

Repeat

X:=X0+V0*T+A*T*T/2;

Writeln (‘T = ‘,T,’ X = ‘,X);

T:=T+10;

Until T>=TK;

X:=X0; T:=0; N:=Trunc(TK/10);

For i:=0 to N do

begin

T:=i*10;

X:=X0+V0*T+A*T*T/2;

Writeln (‘T = ‘,T,’ X = ‘,X);

end;

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

Algo_970x90-20219-0c5b45.png

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

Алгоритмический язык

Представьте, что человеку, работающему за компьютером, поставлена некая вычислительная задача. В языке программирования решение этой задачи выполняется с помощью алгоритмизации. Решение предполагает:
— разбиение на этапы;
— разработку алгоритма;
— составление программы решения на алгоритмическом языке;
— ввод данных;
— отладку программы (возможны ошибки — их надо исправить);
— выполнение на ПК;
— анализ результатов.

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

Свойства алгоритма

Их несколько:
конечность. Любой алгоритм должен быть завершённым, а окончание наступает после выполнения определённого числа шагов;
однозначность, понятность. Не допускается разных толкований, неопределённости и двусмысленности — всё должно быть чётко и ясно, а также понятно исполнителю — и правила выполнения действий линейного алгоритма, и сами действия;
результативность. Итог работы — результат, полученный за конечное число шагов;
универсальность, массовость. Качественный алгоритм способен решать не одну задачу, а целый класс задач, имеющих схожую постановку/структуру.

Линейная структура

Любой алгоритм составляется из ряда базовых структур. Простейшей базовой структурой является следование — структура с линейными характеристиками. Из этого можно сформулировать определение.

Линейный алгоритм — это алгоритм, образуемый командами, которые выполняются однократно и именно в той последовательности, в которой записаны. Линейная структура, по сути, проста. Записать её можно как в текстовой, так и в графической форме.

Представим, что у нас стоит задача пропылесосить ковёр в комнате. В текстовой форме алгоритм будет следующим:
— принести пылесос к месту уборки;
— включить;
— пропылесосить;
— выключить;
— унести пылесос.

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

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

Algo_970x90-20219-0c5b45.png

Блок-схема

Для изображения алгоритма графически используют блок-схемы. Они представляют собой геометрические фигуры (блоки), соединённые стрелками. Стрелки показывают связь между этапами и последовательность их выполнения. Каждый блок сопровождается надписью.

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

Блок начала-конца:

Screenshot_1-1801-a35d16.png

Блок ввода-вывода данных (отображает список вводимых и выводимых переменных):

Screenshot_2-1801-52cab0.png

Арифметический блок (отображает арифметическую операцию/группу операций):

Screenshot_3-1801-df500e.png

Условный блок (позволяет описать условие). Алгоритмы с таким блоком используются при графической визуализации алгоритмов с ветвлением:

Screenshot_4-1801-3103cc.png

Условного блока нет в классическом линейном алгоритме, так как в нём, как уже было сказано ранее, все операции выполняются последовательно, то есть одна за другой. В линейном алгоритме размещение блоков выглядит следующим образом:

Screenshot_5-1801-f1511b.png

А вот, как решается задача по нахождению площади треугольника по формуле Герона. Здесь a, b, c – это длины сторон, S – площадь треугольника, P – периметр.

Screenshot_6-1801-c010e2.png

Следует обратить внимание, что запись «=» — это не математическое равенство, а операция присваивания. В результате этой операции переменная, стоящая слева от оператора, получает значение, которое указано справа. Значение не обязательно должно быть сразу определено (a = 3) — оно может вычисляться посредством выражения (a = b + z), где b = 1, a z = 2.

Примеры линейных алгоритмов

Если рассмотреть примеры решения на языке Pascal (именно этот язык до сих пор используется для изучения основ алгоритмизации и программирования), то можно увидеть следующую картину:

Screenshot_7-1801-f9ba66.png

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

Screenshot_8-1801-8a0c1b.png

Как составить программу линейной структуры?

Порядок следующий:
— определите, что именно относится к исходным данными, а также каков типы/класс этих данных, выберите имена переменных;
— определите, каков тип данных будет у искомого результата, выберите название переменных (переменной);
— определите, какие математические формулы связывают результат и исходные данные;
— если требуется наличие промежуточных данных, определите класс/типы этих данных и выберите имена;
— опишите все используемые переменные;
— запишите окончательный алгоритм. Он должен включать в себя ввод данных, вычисления, вывод результатов.

На этом всё, в следующий раз рассмотрим на примерах программу разветвлённой структуры. Если же вас интересует тема алгоритмизации в контексте разработки программного обеспечения, ждём вас на профессиональном курсе OTUS!

Algo_970x550-20219-265dfd.png

Источники:
• https://inep.sfedu.ru/wp-content/uploads/2018/05/25/lection_27.pdf;
• https://www.sites.google.com/site/415ict/textbooks/prog-9/02-linejnyj-algoritm.

В разделе описаний наиболее
важная часть начинается после служебного слова var

(сокращ. от англ. variable
переменная), именно здесь указываются типы переменных в Паскале.
Любая
переменная в PascalABC.NET имеет определённый тип. Каждый тип, используется для
определённых целей и имеет свои уникальные возможности.
 

Типы
данных языка Паскаль integer
– целочисленный тип,
любое число от 

–147483648
до 2147483647.
real
вещественный тип, любое число от  –1.8∙10308 до 1.8∙10308.
string

строковый тип, содержит произвольное количество символов. boolean
логический тип, принимает значения:
 Истина (True) и Ложь (False).

Переменная
это величина, имеющая имя, тип и значение. Значение переменной может
быть изменено во время работы программы. Данные хранятся в переменных, которые
имеют свои идентификаторы (имена),
например,
идентификаторы X или Y, или более длинные идентификаторы переменных

number1, counter и т.п. Идентификаторы состоят из буквы, за которой могут
следовать буквы, цифры или символ подчеркивания.

Чтобы задать
переменной какое-либо значение используется оператор присваивания.
Оператор присваивания в Паскале обозначается как :=, выполняет правую
часть выражения и присваивает результат переменной, расположенной в левой части
выражения:

 

Технология
работы:

Пример
1.
Вычислить
сумму двух заданных чисел и вывести результат на экран.

program primer1; 

var х,у,z:integer; {
описание переменных целого типа } 
begin {
начало программы } 
х := 3; {
установка значения х } 
у := 5; {
установка значения у } 
z := х + у; { вычисление суммы } 

write(z); {вывод
результата вычисления на экран } 
end. {
конец программы }

Оператор write
(от англ. write)

написать или writeln (от англ. write line

написать строку)
оператор
вывода
в Паскале, т.е. служит для вывода на экран каких-либо данных (просто
текста, результатов выполнения программы, значений переменных и т.п.).

Часто в программе
необходимо запрашивать данные (т.е. вводить значения переменных с клавиатуры, а
затем использовать эти значения для решения поставленной задачи). Для ввода
данных
используется оператор ввода read или readln.

 

Пример
2.
Вычислить
сумму двух любых чисел и вывести результат на экран.
 

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

program primer1;

 var x,y,z:integer; {
описание переменных целого типа }  
begin {
начало программы }  
read(x,y); { ввод значений х и y с
клавиатуры }  
z := x + y; { вычисление суммы } 

 write(z); {вывод
результата вычисления на экран }  
end. {
конец программы }

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

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

В примере, при работе программы, не совсем
понятно, что нужно вводить и что за числа появляются на экране по завершению
работы программы. Поэтому изменим код программы, чтобы у нее появился
минимальный пользовательский интерфейс. Для этого задействуем уже знакомую нам
команду write.

program primer1; 

var x,y,z:integer; {
описание переменных целого типа } 
begin {
начало программы } 

writeln(‘Вычисление
суммы двух чисел’
);  writeln (‘Введите два целых числа
через пробел’
);  readln(x,y); { ввод значений х и y с
клавиатуры } 
z := x + y; { вычисление суммы } 

write(‘Сумма
= ‘
,z);
{вывод результата вычисления на экран }  end. {
конец программы } 

Важно! 

      Выводимый
текст заключается в одиночные кавычки (апострофы)

     
Для
вывода значений переменных кавычки использовать нельзя, указывается
просто идентификатор (имени переменной). 

     
Если
необходимо после вывода перейти на другую строку, то используется writeln
().

Задача
1.
Модифицировать
программу так, чтобы она вычисляла и выводила на экран сумму и произведение
трех целых чисел.

program zadacha1; 

var x,y,k,z,p:integer; {
описание переменных целого типа } 
begin {
начало программы } 

writeln(‘Вычисление
суммы и произведения трех чисел’
);  write(‘Введите
три целых числа через пробел’
);  readln(x,y,k); {
ввод значений х,y,k с клавиатуры } 
z := x + y + k; {
вычисление суммы } 
p := x * y * k; { вычисление
произведения } 

writeln(‘Сумма
= ‘
,z);
{вывод результата сложения на экран }  writeln(‘Произведение
= ‘
,p);{вывод
результата произведения на экран } 
end. {
конец программы }

Задача
2.

Дана длина ребра куба а. Найти объем куба V=a3 и площадь его
поверхности S=6a2 .

program zadacha2; 

var a,v,s:real; {
описание переменных вещественного типа } 
begin {
начало программы } 
writeln(‘Вычисление объема и
площади поверхности куба’
);  write(‘Введите длину ребра
куба’
); 
readln(a);
{ ввод значения a с клавиатуры }  v := a * a
* a;
{ вычисление объема }  s := 6 * a * a; {
вычисление площади } 

writeln(‘Объем
куба = ‘
,v);
{ вывод результата объем куба }  writeln(‘Площадь
поверхности = ‘
,s); { вывод результата
площадь поверхности } 

end. {
конец программы }

Задача
3.

Даны две переменные с некоторыми значениями. Поменять местами значения этих
переменных.

Program zadacha3;

var a,b,c: integer;
{ описание переменных целого типа }
  begin

    writeln (‘Поменять
местами значения переменных’
);     write (‘введите число а=’);

    readln
(a);
{ ввод значения a с клавиатуры }     write (‘введите
число b=’
);

    read
(b);
{ ввод значения b с клавиатуры }     c:=a;
{ промежуточная переменная с }
     a:=b; { обмен значениями }     b:=c;
{ обмен значениями }

   
writeln(
‘a=’,a); { вывод нового значения переменной
a }
    
writeln(
‘b=’,b); { вывод нового значения переменной
b }
   
end.

Самостоятельно:

Составьте блок-схему линейного алгоритма.
Напишите программу на языке Паскаль для вычислений по данным формулам. Установите
имена переменным, их тип: все переменные считайте вещественными (real).
Включите в программу подсказки для ввода исходных данных и вывода результата
вычислений.

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

1)     
Определить имена переменных.

2)     
Установить
тип переменных.

3)     
Задать
(ввести) значения переменных.

4)     
Выполнить
вычисления по формулам.

5)     
Вывести
результат решения задачи.

program имя программы; { название программы }
var  
{
описание переменных }
begin { начало программы } оператор 1{ вывод подсказок } оператор 2{ ввод исходных данных } ……………………  { вычисления по формулам } оператор n { вывод результата вычислений } end. { конец программы }

Внимание! Для правильного оформления задачи изучите
примеры, рассмотренные в данной работе.

Решите
задачи согласно своему варианту:

1.      
Найти
объем  шарового слоя по формуле, если известны r1 и r2  –
радиусы, h – высота.

                                                                                                        3         1      (r12 r22)
h

V h

2

2.      
По
заданному значению радиуса R определить площадь поверхности сферы по формуле:
𝑃
= 4𝜋𝑅2

3.      
По
заданному значению радиуса R определить объем сферы по формуле:

 

4.      
Определить
путь, пройденный телом при равноускоренном движении по формуле:

 , где a = 9,81 м/с2
v0 = 10 м/с

5.      
Вычислить
площадь кольца с внешним диаметром D1 и внутренним диаметром D2
по формуле:

 

6.      
Определить
объем шарового сегмента по формуле:

 

7.      
Вычислить
общее сопротивление при параллельном соединении проводников по формуле: 

 

8.      
Вычислить
площадь трапеции по длине основания и высоте по формуле: 

 

9.      
Вычислить
значение функции y при любых значениях переменной x:  

𝑦 = 4𝑥2 +7𝑥
− 1

10.   
Определить
площадь S и периметр P прямоугольника со сторонами a и b.

11.   
Найдите
гипотенузу прямоугольного треугольника по данным катетам a и b по формуле:

 

12.   
Найдите
площадь треугольника со сторонами a=11, b=13, c=20 по формуле Герона:

 

13.   
Определить
объем цилиндра с радиусом основания R и высотой H, площади его боковой и полной
поверхности по формулам: 

                                                 𝑉 = 𝜋𝑅3𝐻;       𝑆бок = 2𝜋𝑅𝐻;              𝑆пол = 2𝜋𝑅𝐻
+2𝜋𝑅2

Добавить комментарий