Как составить блок схему по задаче паскаль

Блок-схема

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

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

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

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

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

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

Задача №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, так как составление блок-схем не только очень простое и быстрое, но и весьма увлекательное занятие.

Язык программирования Паскаль. Блок-схемы.

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

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

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

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

Легче всего показать разработку блок-схемы
на примере линейного алгоритма.

Для этого рассмотрим задачу:

Задача №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) Описание переменных;
  • 2) Ввод значений сторон
    прямоугольника;
  • 3) Расчет площади
    прямоугольника;
  • 4) Расчет периметра
    прямоугольника;
  • 5) Вывод значений площади и
    периметра;
  • 6) Конец.

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

Program Rectangle;

Var a,b,S,P: real;

Begin

writeln(‘Введите стороны прямоугольника!’);

readln(a,b);

S:=a*b;

P:=2*(a+b);

writeln(‘Площадь прямоугольника: ‘,S);

write(‘Периметр прямоугольника: ‘,P);

End.

(Обратите внимание, если бы вы использовали
тип
integer, а не real, то при
введении дробных чисел, у вас возникала бы ошибка)

Задание для самостоятельного
решения(Нарисовать блок-схему, написать решение задачи в ПАСКАЛЕ):

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

Даю подсказку: Для нахождения S1
, вам необходимо воспользоваться  следующей формулой : S1=(V1+V2)*T+S

Ответ:

блок-схема:

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

Program
Rasstoyanie;

Var
V1,V2,S,T,S1:
real; {Ввод }

begin

write(‘Введите скорость первого автомобиля: ‘);

readln(V1);

write(‘Введите скорость второго автомобиля: ‘);

readln(V2);

write(Введите время: ‘);

readln(T);

write(‘Введите расстояние между автомобилями: ‘);

readln(S);

S1:=(V1+V2)*T+S;

writeln(‘Через ‘,t,‘ч. расстояние ‘,S1,‘ км.’);

End.

Основные алгоритмические конструкции

Элементарные
шаги алгоритма можно объединить в
следующие алгоритмические конструкции:
линейные (последовательные), разветвляющиеся,
циклические.

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

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

Линейный
алгоритм Разветвляющийся алгоритм

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

Примеры составления блок-схемы алгоритма

Пример
1.

Составить схему алгоритма вычисления
значения:

Для
построения блок – схемы алгоритма
опишем последовательность действий,
необходимых для решения данной задачи:

  • начало

  • ввод
    чисел a,b

  • вычисление
    х

  • вычисление
    z

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

  • конец

Исходя
из этого, составляем блок-схему алгоритма
согласно ГОСТ, используя соответствующие
блоки.

Пример
2.
Составить
схему алгоритма вычисления значения:
x=a+b
при a>b,
x=a*b,
при a<=b.

ПРИЛОЖЕНИЕ
2

Основные элементы языка Pascal

Алфавит
языка состоит из множества символов,
включающих в себя буквы, цифры и
специальные символы.

Латинские
буквы:

от А до Z (прописные) и от а до z (строчные),
символ “подчеркивания”, который в
языке считается буквой.

Цифры:
арабские от 0 до 9 и шестнадцатеричные
(первые 10 цифр от 0 до 9 – арабские,
остальные шесть – латинские буквы: А, B,
C, D, E, F).

Специальные
символы:

+ – * / = , . : ; < > [ ] ( ) { } ‘, $, пары <> <=
>= := (* *) (. .), пробел (символы (. .)
соответствуют символам [ ], несколько
пробелов считаются одним).

К
спецсимволам
относятся
также
служебные
слова
– abs, and, array, begin, case, const, dir, do, downto, else, end,
for, function, goto, if, int, label, mod, not, of, or, procedure,
program, repeat, shr, then, to, type, var, while, with и
др.
Смысл
зарезервированных слов фиксирован
строго. При этом набор зарезервированных
слов может меняться от версии к версии.

Идентификатор
– это последовательность букв, цифр и
знаков подчеркивания, начинающихся не
с цифры. Под идентификатором мы будем
понимать ячейку памяти ЭВМ, которая
имеет свое имя и в которой хранится
информация. В Паскале строчные и прописные
буквы в идентификаторах и служебных
словах не различаются. Идентификаторы
могут иметь произвольную длину, но
значащими являются только первые 63
символа. Хорошим стилем является
осмысленный выбор имени идентификатора.
Зарезервированные слова не могут
использоваться в качестве идентификаторов.

Комментарии
заключаются либо в фигурные скобки {
комментарий 1 },
либо в символы (*
комментарий 2 *)
и могут занимать любое количество строк.
Последовательность из трех символов
(*)
начинает комментарий до конца строки.
Текст комментария игнорируется при
компиляции, если это не директивы
компилятора, которые имеют вид {$
}
.

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

В
качестве констант могут использоваться
целые, вещественные, шестнадцатеричные
числа, логические константы, символы,
строки символов, множества:

а)
целые числа записываются без дробной
части со знаком или без него;

б)
вещественные числа записываются со
знаком или без него, с фиксированной
или плавающей точкой (например, +3.14 или
-19е-5);

в)
логическая константа – либо false либо
true (ложь или истина);

г)
символьная константа – любой символ,
заключенный в апострофы (например, ‘<>’,
‘Y’);

д)
строковая константа – любая последовательность
символов, заключенная в апострофы
(например, ‘это моя строка’, ‘ “‘).

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

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

список
идентификаторов переменных:
тип1;

список
идентификаторов переменных:
тип2;

В
списке имена переменных перечисляются
через запятую. Кроме базовых типов Турбо
Паскаля здесь можно использовать свои
типы (описанные ранее в разделе Type).

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

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

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

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

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

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

Ход урока.

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

На занятии рассматривается условный оператор в Паскале (if). Объясняется, как использовать несколько условий в одной конструкции (AND и OR). Рассмотриваются примеры работы с оператором

Напоминаем, что данный сайт не претендует на полное изложение информации по теме. Целью портала является предоставление возможности усваивания материала на основе готовых решенных примеров по теме «Язык программирования Pascal» с практическими заданиями для закрепления материала. Представленные на сайте labs-org.ru задания по Паскалю выстроены последовательно по мере увеличения их сложности. Сайт labs-org.ru может быть использован учителями и преподавателями в качестве вспомогательного наглядного пособия.

Содержание:

  • Условный оператор в Паскале
    • Составной оператор
    • Логические операции в Паскале (в логическом выражении)
  • Построение блок-схем по коду Паскаль

Условный оператор в Паскале

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

Блок-схема условного оператора:
условный оператор в паскале блок-схема
Условный оператор в Паскале имеет следующий синтаксис:

Сокращенный вариант:

if условие then
   оператор;

Полный вариант:

if условие then
   оператор
else
   оператор;

Условный оператор в Паскале — if — служит для организации хода задачи таким образом, при котором изменяется последовательность выполнения операторов в зависимости от какого-либо логического условия. Логическое условие может принимать одно из двух значений: либо true (истина), либо false (ложь), соответственно, оно может быть либо истинным, либо ложным.

неполная форма ветвления

Составной оператор

Если при истинном условии необходимо выполнять несколько операторов, то их по правилам языка Pascal необходимо заключать в блок, начинающийся со служебного слова begin и заканчивающегося служебным словом end. Такой блок принято называть операторными скобками, а данную конструкцию — составным оператором:

Операторные скобки и составной оператор в Паскале:

if логическое выражение then
begin
     оператор1;
     оператор2;
end
else
begin
     оператор1;
     оператор2;
end;

Перевод с английского оператора условия облегчит понимание его использования:

IF THEN ELSE
ЕСЛИ ТО ИНАЧЕ

Условный оператор в Паскале
В условии (в логическом выражении) используются операторы отношения.
Рассмотрим список операторов отношения Паскаля:

  • больше >
  • меньше <
  • больше или равно в Pascal >=
  • меньше либо равно в Pascal <=
  • сравнение в Pascal =
  • не равно в Pascal <>

Пример: найти наибольшее из двух чисел

Подробно разобраться в работе условного оператора в Паскале можно, просмотрев видеоурок:

Пример: вычислить значение переменной у по одной из двух ветвей

условный оператор

Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
var
 x,y:real;
begin
writeln ('введите х');
read(x);
if x>0 then
 y:=ln(x)
else
 y:=exp(x);
writeln ('y=', y:6:2) 
{итоговое число будет занимать 6 позиций,
и в нем будет 2 знака после запятой}
end.
1
2
3
4
5
6
7
8
9
begin
var x:=readReal('введите х');
var y: real;
if x>0 then
 y:=ln(x)
else
 y:=exp(x);
writeln ('y=', y:6:2)
end.

Обратите внимание на то, как в данном примере выводится y. При выводе переменных типа real в pascal, можно использовать так называемый форматированный вывод, или запись с двумя двоеточиями:
y:6:2
– цифра после первого двоеточия (6) указывает на то, сколько знаков будет занимать число при выводе на экран
– цифра после второго двоеточия (2) указывает на то, сколько знаков после запятой вещественного числа будет выводиться

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

Задача 0. Вычислить значение переменной у по одной из двух ветвей:
условный оператор в паскале

[Название файла: L2task0.pas]

Задача 1. В компьютер вводятся два числа. Если первое больше второго, то вычислить их сумму, иначе – произведение. После этого компьютер должен напечатать результат и текст ЗАДАЧА РЕШЕНА

[Название файла: L2task1.pas]

Задача 2. Дракон каждый год отращивает по три головы, но после того, как ему исполнится 100 лет – только по две. Сколько голов и глаз у дракона, которому N лет?

[Название файла: L2task2.pas]

Логические операции в Паскале (в логическом выражении)

Когда необходимо использовать двойное условие в Pascal, то понадобятся логические операции.

  • Логическая операция AND (И), поставленная между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия (должны быть истинными). Логический смысл операции – “конъюнкция”.
  • Поставленный между двумя условиями, знак OR (ИЛИ) говорит о том, что достаточно, если будет выполняться хотя бы одно из них (одно из двух условий истинно). Логический смысл операции – “дизъюнкция”.
  • На языке Паскаль XOR – знак логической операции, имеющий смысл “строгая дизъюнкция” и указывающий на то, что необходимо, чтобы одно из двух условий выполнялось (истинно), а другое – не выполнялось (ложно).
  • Логическая операция NOT перед логическим выражением или переменной имеет смысл “отрицание” или “инверсия” и указывает на то, что если данная переменная или выражение истинны, то их отрицание — ложь и наоборот.
  • Таблица истинности, содержащая все возможные комбинации операндов:

    A B not A A or B A and B A xor B
    False False True False False False
    False True True True False True
    True False False True False True
    True True False True True False

Важно: Каждое из простых условий обязательно заключать в скобки.

Пример: Рассмотрим примеры логических операций в логических выражениях в Паскале

1
2
3
4
5
6
7
8
var n:integer;
begin
n:=6;
if (n>5) and (n<10) then writeln('истина');
if (n>7) or (n<10) then writeln('истина');
if (n>7) xor (n<10) then writeln('истина');
if not(n>7) then writeln('истина');
end.

Пример: Компания набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он для данной компании (вывести ответ «подходит» или «не подходит»).
Особенность: надо проверить, выполняются ли два условия одновременно.

Пример: Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».

Открыть решение:

1
2
3
4
5
6
7
8
9
10
11
var
  a,b: integer;
begin
  write('Введите A: ');
  read(a);
  b := a mod 2;
  if b>0 then
     writeln('true')
  else
      writeln ('false')
end.

Или проще:

1
2
3
4
5
6
7
8
var
  a,b: integer;
begin
  write('Введите A: ');
  read(a);
  b := a mod 2;
  writeln(b>0);
end.

Задача 3. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».

[Название файла: L2task3.pas]

Задача 4. Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 – то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля — НЕ БЕЙ ПО СВОИМ

[Название файла: L2task4.pas]

  

Рассмотрим функции pascalABC.NET, которые возвращают логическое значение true или false:

n.Divs(m) возвращает True, если целое n делится на m без остатка (n mod m = 0);
n.DivsAll(m1, m2, ... mn) возвращает True, если целое n делится без остатка на каждое из m1, m2, ... mn;
n.DivsAny(m1, m2, ... mn) возвращает True, если целое n делится без остатка хотя бы на одно из m1, m2, ... mn;
n.InRange(a, b) - возвращает True, если для целого n верно, что a ≤ n ≤ b;
n.IsEven возвращает True, если целое n имеет четное значение;
n.IsOdd возвращает True, если целое n имеет нечетное значение;
n.NotDivs(m) возвращает True, если целое n не делится на m без остатка (n mod m <> 0).

Построение блок-схем по коду Паскаль

Теперь настало время вспомнить о том, что такое блок-схемы.
Блок схема – ориентированный граф, указывающий на последовательность операций, приводящую к решению поставленной задачи.

Существуют управляющие структуры трех типов:

Две из трех представленных структур блок-схемы мы уже можем перевести в код Pascal.

Пример: Составить блок-схему вычисления значения величины С, определяемое по формулам: С=A+B, если A<=B и C=A-B, если A>B.

Результат:
блок схема ветвление

Задача 5. Составить блок-схему решения задачи 3

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

Открыть решение:

блок-схема с ветвлением

Задача 6. По составленной выше блок-схеме решить задачу на Pascal

[Название файла: L2task6.pas]

Задача 7. Дано двузначное целое число. Вывести сумму и произведение его цифр. Проверьте правильность вашей программы. Для нахождения цифр числа использовать операцию взятия остатка mod и операцию целочисленного деления div. Модуль числа – функция abs().

Пример результата:

Введите двузначное число: -12
Сумма цифр = 3
Произведение цифр = 2

[Название файла: L2task7.pas]

Задача 8. Дано трёхзначное целое число. Вывести все его цифры (порядок не имеет значения). Проверьте правильность вашей программы. Для нахождения цифр числа использовать операцию взятия остатка mod и операцию целочисленного деления div.

Пример результата:

Введите трёхзначное число: -123
Разряд сотен: 1
Разряд десяток: 2
Разряд единиц: 3

[Название файла: L2task8.pas]

Использование функции Assert (pascalAbc.net)

Пользовательский ввод практически всегда должен проверяться на корректность. Чтобы избежать в программе ошибки, необходимо использовать функцию assert(), в качестве параметра которой указывается условие, которое должно возвращать значение true.

Пример:

Выполнить: Даны координаты точки (x,y) на координатной плоскости ( ≠ 0, ≠ 0). Вывести номер четверти:

✍ Решение:

    var (x,y) := ReadInteger2;
    var quarter: integer;
    Assert((x<>0) and (y<>0), 'некорректный ввод'); //  True
    if x>0 then
      if y>0 then
        quarter := 1
      else 
        quarter := 4
    else
      if y>0 then
         quarter := 2
      else 
         quarter := 3;

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