СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

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

Категория: Информатика

Нажмите, чтобы узнать подробности

Методический материал "Программирование линейных алгоритмов и ветвлений на Паскале" закрепляет знания по реализации линейных и разветвляющихся алгоритмов на компьютере в программной оболочке PascalABC.NET

Просмотр содержимого документа
«Программирование линейных алгоритмов и ветвлений на Паскале»

Практическое занятие №5

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

Цель работы: изучить среду программирования и структуру программы PascalABC.NET, научиться составлять несложные программы в этой среде программирования, производить тестирование программы.

Оборудование: персональный компьютер, инструкция к работе, презентация, программа Net Op, PascalABC.NET

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

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

Рассмотрим пример программы линейного алгоритма.

Пример 1. Длина отрезка задана в дюймах (1 дюйм = 2,54 см). Перевести значение длины в метрическую систему, т. е. выразить ее в сантиметрах.

program Example_dlina;

var d,m: real;{объявление переменных}

begin

write('Длина в дюймах:');     {вывод пояснения}

readln(d); {ввод исходных данных}

m:=d*2.54; {вычисление}

writeln ('Длина в сантиметрах ',m);    {вывод результата}

end.

Пример 2Треугольник задан величинами своих сторон. Найти его площадь.

 

program Example1_S;

var    a,b,c,р,s : real;

begin

write( 'А=' ) ;

readln (a);

write ( 'В=');

readln(b);

write('C=');

readln (c);

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c)

writeln('S=',s:6:2);

end.

 

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

Владелец автомобиля приобрел новый карбюратор, который экономит 50% топлива, новую систему зажигания, которая экономит 30% топлива, и новые поршневые кольца, которые экономят 20% топлива. Верно ли, что его автомобиль теперь сможет обходиться совсем без топлива? Найти фактическую экономию топлива.

Ответ на первый вопрос возникает естественно: нет, в любом случае какое-то количество бензина машина будет расходовать. Но какое? Простое суммирование или нахождение среднего значения исходных данных даст нам неверный результат. Практически тот же подход используется и при решении большинства задач «на время», на перевод величин в разных системах мер, на экономию операций при выполнении некоторых действий.

Здесь хорошими помощниками являются функции остатка от деления и целого деления, а также математические ухищрения.

Пример 3Решить задачу обмена значениями двух переменных, не используя дополнительных переменных и предполагая, что значениями целых переменных могут быть произвольные целые числа.

Обозначим начальные значения переменных, а и b через а0 и b0. Тогда математически очевидно следующее:

а=а+b {а=а0+b0, b=b0}

b=а-b {а=а0+b0, b=а0}

а=а-b {а=b0, b=а0}

(Блок-схему алгоритма составить самостоятельно)

Реализовав эти вычисления на языке программирования, получим решение нашей задачи:

program Example_obmen;

var a,b:integer;

begin

write('Введите A: ');

readln (a);

write('Введите В : ');

readln(b);

a:=a+b;

b:=a-b;

a:=a-b;

writeln('A = ',a);

writeln('B = ',b);

readln;

end.

Пример 4. Часовая стрелка образует угол лучом, проходящим через центр циферблата и через точку, соответствующую 12 часам. По значению угла определить время, показываемое часами.

Циферблат разбит на 12 равных частей (часов). Циферблат, как окружность, имеет 360 градусов. Значит, один полный час равен 30 градусам.

То есть количество полных часов определяется выражением div 30. За один полный час, т. е. за 30 градусов хода часовой стрелки, минутная совершает полный оборот, т. е. 360 градусов. Значит, 1 минута равна 2 градусам и количество минут в текущем часе будет равно: (mod 30)*2.

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

(Блок-схему алгоритма составить самостоятельно)

program Example_ugol;

var fi,chas,min: integer;

begin

write ('Введите угол ' ) ;

readln (fi) ;

chas:=fi div 30;

min:=(fi mod 30)*2;

write('Текущее время ',chas,' час',min,' мин');

end.

 

  1. Алгоритмы с ветвящейся структурой на языке Паскаль

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

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

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

Данная запись читается как: ЕСЛИ ТО … ИНАЧЕ …

В качестве оператора может выступать и составной оператор.

Если логическое выражение, выступающее в качестве условия, принимает значение False (ложь), то выполняются оператор расположенный после else, если True(истина) — оператор, следующий за then. При записи логического выражения следует избегать знака = (равно) для действительных (вещественных) переменных, так как они представляются с некоторой точностью (до определенного знака), а поэтому может не произойти совпадения значений выражений, стоящих слева и справа от знака равно. Для устранения указанного недостатка следует проверять выполнения условия с заданной точностью, т. е. вместо отношения Х = Y рекомендуется, например, использовать такой прием:

ABS (X   -   Y)    E-8, т. е. абсолютная разница сравниваемых величин не превышает некоторой весьма малой величины.

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

 

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

 

Логические функции

Рассмотрим следующую задачу.

Даны действительные числа х, у. Если х и у отрицательны, то каждое значение заменить модулем; если отрицательно только одно из них, то оба значения увеличить на 0,5; если оба значения неотрицательны и ни одно из них не принадлежит отрезку [0,5; 2,0], то оба значения уменьшить в 10 раз; в остальных случаях х и у оставить без изменения.

Разработаем алгоритм решения задачи, после чего напишем программу.

Алгоритм запишем словесно:

1.    ввести значения х, у;

2.    если х

3.    если х

4.    если ни х, ни у не принадлежат отрезку [0,5; 2,0], уменьшить их в 10 раз;

5.    вывести значения х и у;

6.    конец.

Обратите внимание на «связки» в нашем условном алгоритме: если х

Эти смысловые союзы образуют смысловую логическую связку двух или более условий в одно. В программировании они называются логическими функциями. Основных логических функций четыре:

  1. AND (ЛОГИЧЕСКОЕ И),

  2. OR (ЛОГИЧЕСКОЕ ИЛИ)

  3. NOT (ЛОГИЧЕСКОЕ НЕ)

  4. XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ)

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

Логические функции могут принимать только одно значение из двух — ИСТИНА или ЛОЖЬ (TRUE — FALSE). Истинность обозначают цифрой 1, а ложность — цифрой 0.

X

Y

X  AND  Y

X  OR  Y

NOT  X

0

0

0

0

1

0

1

0

1

1

1

0

0

1

0

1

1

1

1

0

 

Функция отрицания НЕ даёт всегда противоположное исходному значение. Функция И истинна только в том случае, когда оба связанных условия истинны. Функция же ИЛИ истинна, если хотя бы одно из связываемых условий истинно.

Если в таблице истинности между аргументами поставить знак сложения для функции ИЛИ, а для функции И поставить знак умножения и сравнить арифметический результат со значением функций, то станет понятно, почему функцию ИЛИ называют также «логическое сложение», а функцию И — «логическое умножение».

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

 

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

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

Запись оператора выбора:

CASE   OF  ELSE  END;

выражение любого типа кроме REAL и STRING;

 - одна или более конструкций вида:

 :;

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

Любой из операторов может быть, как простым, так и составным.

Содержание отчета

Отчет должен содержать:

    1. Название работы.

    2. Цель работы.

    3. Задание и его решение.

    4. Вывод по работе.

Контрольные вопросы

  1. Что такое алгоритм?

  2. Что такое «исходные данные» задачи?

  3. Нарисуйте условное обозначение ввода-вывода данных.

  4. Какое свойство алгоритма называется «дискретность»?

  5. Нарисуйте структуры линейного алгоритма и алгоритма ветвления

  6. Назовите способы записи алгоритмов.

  7. Нарисуйте обозначение условия.

  8. Нарисуйте все структуры циклических алгоритмов.


Литература

И.Г.Семакин, Т.Ю.Шеина, Л.В.Шестакова. Информатика, углубленный уровень,10 класс ч. 1, БИНОМ, 2014 год


10




Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!