Главная страница
Навигация по странице:

  • Краткие сведения из теории 2.1. Понятие алгоритма Определение 1.

  • 2.2. Этапы решения задачи на ЭВМ

  • 2.3. Структура программы на языке Паскаль

  • 2.4. Объявление констант и переменных

  • 2.5. Операторы для записи линейных процессов 2.5.1. Оператор присваивания

  • 2.5.2. Оператор ввода числовых данных

  • 2.5.3. Оператор вывода числовых данных

  • 2.5.4. Вывод числовых данных с форматом и без формата

  • 2.6. Разработка алгоритмов линейных процессов Задание A

  • 2.7. Примеры программ линейных процессов Запишем программы рассмотренных выше задач. Задание А

  • Задание к работе Выполнить индивидуальное задание. Методические указания

  • Варианты индивидуальных заданий

  • ЛАБОРАТОРНАЯ РАБОТА N 3

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


    Скачать 0.89 Mb.
    НазваниеПрактикум по программированию на языке Паскаль Учебное пособие
    Анкорлабораторные работы паскаль.pdf
    Дата28.01.2018
    Размер0.89 Mb.
    Формат файлаpdf
    Имя файлалабораторные работы паскаль.pdf
    ТипПрактикум
    #14972
    страница2 из 11
    1   2   3   4   5   6   7   8   9   10   11
    Тема: "Алгоритмизация линейных вычислительных процессов "
    Цель работы
    Овладение навыками разработки алгоритмов линейных процессов, умением составлять математические модели алгоритмов и записывать программы на языке Паскаль.
    Краткие сведения из теории
    2.1. Понятие алгоритма
    Определение 1.
    Алгоритм - это четкое описание последовательности действий, приводящих к решению задачи.
    В теории алгоритмов принята следующая классификация алгоритмов: линейные, разветвляющиеся, циклические.
    Линейный алгоритм состоит из последовательности действий, каждое из которых выполняется только один раз в порядке их следования.
    Существует ряд способов записи алгоритмов; основными из них являются: текстуальный, графический, операторный.
    Определение 2.
    Схема алгоритма - это графическое изображение алгоритма с помощью различных геометрических фигур или блоков. Каждому блоку соответствует определенный этап решения задачи. Блоки соединяются линиями потока информации, причем линии определяют направление вычислений сверху вниз и слева направо. Если необходимо отразить другое направление (снизу вверх или справа налево), то на линиях ставятся стрелки. Внутри блоков записываются выполняемые действия.
    Для записи линейных алгоритмов применяются следующие блоки (рис.1): начало, конец ввод, вывод вычисления
    Рис.1. Основные элементы схем линейных алгоритмов.
    2.2. Этапы решения задачи на ЭВМ
    1. Словесная постановка задачи. Этот этап предполагает точную формулировку задачи и цели, которые необходимо достигнуть при ее решении. Определение целей сводится к нахождению исходных и промежуточных величин, а также результатов, т.е. дано: определить: промежуточные величины.
    2. Математическая постановка задачи заключается в записи условия задачи в виде математических соотношений с использованием выше выбранных переменных. На этом же этапе осуществляется выбор математического метода решения задачи согласно составленной математической модели. Метод должен обеспечить решение задачи выполнением последовательности четырех арифметических операций и функций. Для простых задач обычно метод решения очевиден, и этот этап опускается.
    3. Разработка алгоритма и его графическое описание. Алгоритмизация задачи представляет собой первый этап программирования. В процессе его выполнения устанавливается необходимая последовательность арифметических и логических действий, с помощью которых реализуется выбранный численный метод. Эту последовательность можно записать в виде схемы алгоритма.
    4. Запись алгоритма на языке программирования. Алгоритм, записанный в графическом виде, далее записывается в виде последовательности операторов выбранного языка программирования, т.е. составляется программа решения задачи.
    5. Разработка контрольного теста и отладка программы. Отладка программы необходима для выявления и устранения ошибок, допущенных на предыдущих этапах.

    13
    Правильность выполнения программы осуществляется сравнением результатов, полученных при расчете нескольких вариантов задачи вручную и на ЭВМ. Полученный вручную расчет является контрольным тестом. Такой метод называется тестированием программы.
    6. Работа на ЭВМ с получением результатов. После решения задачи на ЭВМ необходим анализ результатов. Решение задачи на ЭВМ производится по отлаженной программе для всего множества исходных данных. Анализ результатов выполняется, как правило, лицом, в интересах которого решалась задача.
    2.3. Структура программы на языке Паскаль
    Язык программирования (алгоритмический язык) - это специальный язык общения человека с ЭВМ. Общение производится следующим образом: программа записывается средствами языка программирования; эта запись переводится на язык команд ЭВМ с помощью специальной программы, называемой транслятором или компилятором; в результате трансляции (перевода) создается программа в машинных кодах (объектный модуль); объектный модуль компонуется и в результате создается загрузочный модуль, при выполнении которого получается результат.
    Программа на алгоритмическом языке состоит из предложений, каждое из которых выполняет определенное действие.
    Для описания линейных алгоритмов достаточно применение операторов ввода, вывода и присваивания (назначения).
    Программа на языке Паскаль состоит из двух частей: декларативной и процедурной.
    В декларативную часть входят: заголовок программы; раздел меток; раздел констант; раздел типов; раздел переменных; раздел процедур и функций.
    Процедурная
    часть состоит из раздела операторов.
    Общая структура программы на Паскале имеет следующий вид:
    PROGRAM имя (INPUT,OUTPUT); - заголовок
    LABEL - раздел меток
    CONST - раздел констант
    TYPE - раздел типов
    VAR
    - раздел переменных
    PROCEDURE,FUNCTION
    - раздел процедур и функций
    BEGIN оператор 1; оператор 2; оператор n-1; оператор n
    END.
    Заголовок содержит служебное слово PROGRAM, имя программы, задаваемое пользователем, и в круглых скобках имена стандартных процедур INPUT, OUTPUT для

    14
    связи с внешними стандартными устройствами ввода-вывода ЭВМ. Заголовок заканчивается символом "точка с запятой".
    Декларативная часть программы предназначена для объявления всех встречающихся в программе данных. После каждого объявления данного или метки ставится точка с запятой. В стандартном Паскале разделы декларативной части должны располагаться в строго указанном выше порядке, в Турбо-Паскале строгий порядок не обязателен. Следует заметить, что не все перечисленные разделы должны обязательно присутствовать в программе. В простых программах, например, могут потребоваться только разделы объявления констант и переменных. Некоторые программы могут вообще не содержать разделы декларативной части.
    Раздел операторов заключается в операторные скобки BEGIN (начало) и END (конец), при этом после END ставится точка. В этом разделе записывается последовательность исполняемых операторов, после каждого из которых ставится точка с запятой.
    Примечание
    : a) перед словом END точку с запятой можно опускать; b) указание стандартных устройств в заголовке программы не обязательно в Турбо-
    Паскале, начиная с версии 4.0 и выше.
    2.4. Объявление констант и переменных
    Для записи линейных программ в разделе описаний может потребоваться объявление констант и переменных.
    Объявление констант имеет вид: ключевое слово CONST, после которого записываются имена используемых констант и их значения.
    Имена и значения разделяются знаком равенства. Каждое определение константы заканчивается точкой с запятой.
    Примеры:
    CONST
    NMIN = 1; NMAX = 100;
    LIM = C;
    Далее в разделе операторов используется только имя константы. Если значение константы меняется, то изменение производится только в разделе констант, что очень удобно. Если в программе не используются константы, то этот раздел отсутствует.
    Описание переменных начинается с ключевого слова VAR, за которым идет перечисление имен всех переменных программы с указанием их типов, разделенных символом "двоеточие".
    Общий вид описания переменных:
    VAR
    V1,V2,V3,...,Vn: T; где V1,V2,V3,...,Vn - имена переменных данного типа;
    Т - тип переменных.
    В разделах описаний данное может быть описано только один раз.
    Примеры
    описания переменных стандартного типа.
    VAR
    A, B, C
    : real;
    {переменные действительного типа}
    N, K, L, M : integer;
    {переменные целого типа}
    D, BETA : boolean;
    {переменные логического типа}
    Stroka
    : string[10]; {переменные строкового типа, в квадратных скобках указана максимальная длина переменной}
    Для линейных программ достаточно применения операторов ввода, вывода и присваивания.
    2.5. Операторы для записи линейных процессов
    2.5.1. Оператор присваивания
    Этот оператор относится к простым операторам, т.к. не содержит внутри себя других операторов.
    Синтаксис оператора присваивания:

    15
    V : = A; здесь V
    - имя переменной;
    " : = " - знак присваивания;
    А - выражение.
    Данный оператор вычисляет значение выражения А и присваивает полученное значение переменной V. Выражение в правой части может быть арифметическим, логическим и символьным. Поэтому при использовании оператора присваивания нужно следить за тем, чтобы переменная в левой части и выражение в правой части были одного и того же типа.
    Из этого правила существует одно исключение: разрешается при целочисленном выражении использовать переменную действительного типа в левой части. В этом случае значение вычисленного выражения будет преобразовано в действительный тип.
    Примеры:
    Т: = 527.475;
    M: = TEM;
    Y: = SQRT(Т);
    L: = A and B;
    ST: = 'PASCAL';
    C5: = 2*K-SIN(PI/4-Х);
    Здесь T, Y, C5 имеют действительные значения и должны быть описаны в разделе переменных как данные типа REAL.
    Переменная ST должна иметь строковый тип в разделе описаний VAR; переменные М и
    ТЕМ должны иметь любые одинаковые типы, а переменные К и Х могут быть либо действительного типа, либо целого.
    Неверные записи: а) VAR
    D : REAL; beqin
    D : = '7' end. б) VAR
    A,B,C,D : REAL; beqin
    A : = (BC) end.
    В примере а) переменной D типа REAL присваивается константа типа CHAR. Это вызовет ошибку "несоответствие типа данных".
    В примере б) переменной А действительного типа присваивается значение логического выражения, что также приведет к ошибке "несоответствие типов данных".
    2.5.2. Оператор ввода числовых данных
    Ввод числовых данных на Паскале выполняется операторами READ и READLN. Общий вид операторов следующий:
    READ(a1, a2 ,..., an);
    READLN;
    READLN(a1, a2, ... , an); , где а1, а2,..., аn - имена переменных, которым последовательно присваиваются вводимые с клавиатуры числовые значения.
    При выполнении оператора READ вычислительная система приостанавливает работу и ждет ввода значений переменных, указанных в данном операторе. Если в операторе указано две и более переменных, то значения этих переменных при наборе на клавиатуре печатаются через пробел. Также допускается применение оператора ввода без параметров
    - READLN. Этот оператор выполняет переход на новую строку.
    При выполнении оператора READLN(а1, а2 ,..., аn) вводятся значения всех переменных, а затем осуществляется переход на новую строку.
    Следует помнить, что значения переменных и их имена должны соответствовать одному и тому же типу.
    2.5.3. Оператор вывода числовых данных

    16
    Вывод числовых данных выполняется операторами WRITE и WRITELN, которые имеют вид:
    WRITE(b1, b2 ,..., bn);
    WRITELN;
    WRITELN (b1, b2 ,..., bn);.
    Оператор WRITE выполняет вывод значений переменных b1, b2,..., bn в одной строке.
    Оператор WRITELN без параметров осуществляет переход на начало новой строки.
    Оператор WRITELN с параметрами после вывода последнего значения осуществляет переход на начало новой строки.
    Примеры
    :
    1) Write(a, b);
    Write(c); - вывод а, b, с в одну строку;
    2) Writeln(a, b); Write(c); - вывод а и b на одной строке, с- на следующей строке.
    2.5.4. Вывод числовых данных с форматом и без формата
    1. Вывод данных без формата.
    В случае бесформатного вывода значения целого типа выводятся в виде последовательности цифр и знака; значение действительного числа выводится в форме с плавающей точкой (или экспоненциальной форме) с указанием мантиссы и порядка.
    2. Вывод данных с форматом.
    Формат вывода указывается после переменной через двоеточие - :L:D. Для целых чисел формат состоит из одной величины L, равной количеству цифр в числе и символа под знак.
    Для вещественных чисел формат состоит из двух величин, указывающих соответственно общее поле выводимого значения L и количество цифр в дробной части D. L включает позиции под знак, целую часть, десятичную точку и дробную часть числа.
    Синтаксис
    :
    WRITE (V:L) - для целых переменных;
    WRITE (V:L:D) - для вещественных переменных.
    Здесь V - переменная, значение которой выводится на экран;
    L - общая длина поля числа;
    D - количество символов в дробной части числа.
    Пример
    : а) если Х = 835, то результатом работы оператора WRITE(Х:6) будет: _ _ _835; б) если Y = 28.63, то результатом работы оператора WRITE(Y:6:2) будет _28.63.
    Примечание
    : a) Если количество указанных позиций недостаточно, то происходит автоматическое увеличение поля до нужных размеров; если же длина поля больше, чем позиций в числе, то лишние позиции заполняются пробелами, причем перед целой частью и после значащих цифр в дробной части числа. b) Если указывается общее число позиций L, но не указывается число позиций после запятой D, то число выводится в экспоненциальной форме с шириной поля L. c) С помощью оператора вывода можно выводить любую строку символов, заключенную в апострофы.
    Пример
    :
    WRITE( 'значение В=', В);
    WRITE( 'введите значения X, Y:'); .
    Эту возможность можно использовать для вывода в программе данных пояснительного характера (комментариев).
    2.6. Разработка алгоритмов линейных процессов
    Задание A
    Словесная постановка задачи
    Определить площадь и длину второго катета прямоугольного треугольника, если известны длина одного катета и длина гипотенузы.

    17
    начало ввод a,c b =
    2 2
    (
    a
    c

    S = аb/2 вывод b,S конец x
    y
    (x1,y1)
    (x3,y3)
    (x4,y4)
    (x2,y2)
    Дано: а - длина катета, с - длина гипотенузы.
    Определить: b - длина искомого катета,
    S - площадь треугольника.
    Промежуточные величины: нет.
    Математическая постановка.
    По теореме Пифагора имеем: с
    2
    = а
    2
    + b
    2
    , откуда b = (c a
    2 2

    Тогда площадь
    S
    a b
    =
    *
    2
    Разработка схемы алгоритма.
    В первую очередь необходимо вычислить b =
    2 2
    (
    a
    c

    , затем
    S
    a b
    =
    *
    2
    Схема алгоритма будет иметь вид (рис.2):
    Рис.2 Схема алгоритма
    Так как алгоритм состоит из последовательно выполняемых действий, то он описывает линейный процесс.
    Задание Б
    Словесная постановка.
    Определить длину ломаной линии, состоящей из трех звеньев, если известны координаты вершин (рис.3).
    Дано: координаты вершин х1,y1,x2,y2,x3,y3,x4,y4.
    Определить: L - длина ломаной.
    Промежуточные величины: L1, L2, L3 - длины звеньев ломаной.
    Рис.3
    Математическая постановка.

    18
    начало ввод x1,y1,x2,y2, x4,y4 вычисл. L1 вывод L конец вычисл. L2 вычисл. L3
    L=L1+L2+L3
    Для определения длин составляющих звеньев воспользуемся формулой для вычисления расстояния между двумя точками плоскости.
    L1 =
    )
    )
    1 2
    (
    )
    1 2
    ((
    2 2
    y
    y
    x
    x

    +

    , L2 = ((
    )
    (
    ) )
    x x
    y y
    3 2
    3 2
    2 2

    +

    ,
    L3 = ((
    )
    (
    ) )
    x x
    y y
    4 3
    4 3
    2 2

    +

    , откуда L = L1 + L2 + L3 .
    Разработка схемы алгоритма.
    Схема алгоритма будет иметь вид:
    Рис.4. Схема алгоритма
    Задание В
    Словесная постановка задачи.
    Тело брошено вертикально вверх с некоторой скоростью V. Определить время, за которое тело пролетит заданное расстояние S.
    Дано: V - скорость; S - расстояние; g = 9,8 - ускорение свободного падения.
    Определить: t - время.
    Промежуточные величины: D.
    Математическая постановка задачи.
    Расстояние рассчитывается по формуле, известной из физики:
    S = Vt gt

    2 2
    ; отсюда 2S = 2Vt - gt
    2
    Так как нам нужно определить t, запишем это выражение в виде квадратного уравнения: gt
    2
    - 2Vt + 2S = 0.
    Получена математическая модель задачи в виде квадратного уравнения.
    Выбор численного метода решения задачи.

    19
    Этот этап в предыдущих задачах отсутствовал, т.к. метод решения был очевиден (с использованием полученных расчетных формул). В этой задаче необходимо применить формулы решения квадратного уравнения.
    В общем виде уравнение имеет вид: ах
    2
    + bх + с = 0.
    Определим дискриминант и корни: D = b
    2
    - 4ac ; x1 =
    − +
    b
    D
    a
    2
    ; x2 =
    − −
    b
    D
    a
    2
    Для данной задачи справедливы следующие соотношения: a = g; b = -2v; c = 2s; x = t.
    Тогда: D = 4v
    2
    - 4g·2s = 4v
    2
    - 8gS; t1=
    2 2
    v
    D
    g
    +
    ; t2 =
    2 2
    v
    D
    g

    Разработка схемы алгоритма.
    Вычисляем последовательно D, t1, t2. Схема алгоритма приведена на рис.5.
    Рис.5. Схема алгоритма
    2.7. Примеры программ линейных процессов
    Запишем программы рассмотренных выше задач.
    Задание А
    Program TREYG;
    Var a, b, c, s : real;
    Begin write('введите длину катета: '); readln(a); write('введите длину гипотенузы: '); readln(с); b : = SQRT(c * c - a * а);
    S : = a * b / 2;
    WRITELN('Длина второго катета=', b:6:1);
    WRITELN('Площадь треугольника=', s:8:2)
    End.
    Контрольный тест.
    Допустим а = 5; с = 6.
    Тогда b =
    (
    )
    36 25

    =
    11
    ≈ 3,3;
    D=4v
    2
    -8gs вывод t1,t2 ввод s,v,g конец t1=
    2 2
    v
    D
    g
    +
    t2=
    2 2
    v
    D
    g

    начало

    20
    S = 5 * 3.3 /2
    ≈ 8,25.
    Протокол работы на ЭВМ
    Введите длину катета : 5
    Введите длину гипотенузы : 6
    Длина второго катета = 3.3
    Площадь треугольника = 8.25
    Результаты работы программы и ручного счета совпали.
    Задание Б
    Program DLINA;
    Var x1, y1, x2, y2, x3, y3, x4, y4 : real;
    L, L1, L2, L3 : real;
    Begin
    Write('Введите координаты вершин х,y :'); readln(x1, y1, x2, y2, x3, y3, x4, y4);
    L1 := SQRT(SQR(x2 - x1) + SQR(y2 - y1));
    L2 := SQRT(SQR(x3 - x2) + SQR(y3 - y2));
    L3 := SQRT(SQR(x4 - x3) + SQR(y4 - y3));
    L := L1 + L2 + L3;
    Writeln('L1 = ', L1:4:1, ' L2 = ', L2:4:1, ' L3 = ', L3:4:1);
    Writeln('Длина ломаной =', L:6:1)
    End.
    Контрольный тест
    Пусть А(1, 1); В(4, 5); С(7, 3); D(10, 7). Тогда
    L1= ((
    )
    (
    ) )
    (
    )
    4 1 5 1 9 16 5
    2 2

    + −
    =
    +
    = ;
    L2= ((
    )
    (
    ) )
    (
    )
    ,
    7 4 3 5 9 4 13 3 6 2
    2

    +

    =
    +
    =

    ;
    L3= ((
    )
    (
    ) )
    (
    )
    10 7 7 3 9 16 5
    2 2

    +

    =
    +
    = ;
    L = 5 + 3,6 + 5
    ≈ 13,6.
    Протокол работы на ЭВМ
    Введите координаты вершин x,y : 1 1 4 5 7 3 10 7
    L1 = 5.0 L2 = 3.6 L3 = 5.0
    Длина ломаной = 13.6
    Задание В
    Program TELO;
    Const g = 9.8;
    Var s, v, t1, t2, D : real;
    Begin write('Введите расстояние:'); readln(s); write('Введите скорость:'); readln(v);
    D : = 4 * v * v - 8 * g * s; t1 : = (2 * v + SQRT( D )) / (2 * g); t2 : = (2 * v - SQRT( D )) / (2 * g);
    Writeln('t1 = ', t1:4:2, 't2 = ', t2:4:2)
    End.
    В этой задаче при анализе решения отрицательные значения времени отбрасываются.

    21
    Контрольные вопросы
    1. Что называется алгоритмом?
    2. Перечислите типы алгоритмов.
    3. Дайте определение линейного алгоритма.
    4. Перечислите способы описания алгоритмов.
    5. Что называется схемой алгоритма?
    6. Какие блоки используются для описания линейных алгоритмов?
    7. Опишите этапы решения задачи на ЭВМ.
    8. Дайте понятие контрольного теста.
    9. Дайте понятие алгоритмического языка.
    10. Что называется транслятором?
    11. Что такое объектный модуль?
    12. Что представляет собой программа на алгоритмическом языке?
    13. Дайте понятие оператора.
    14. Опишите структуру программы на Паскале.
    15. Поясните смысл объявления констант и переменных.
    16. Опишите выполнение оператора присваивания.
    17. Объясните выполнение оператора ввода.
    18. Что такое бесформатный вывод данных?
    19. Какие форматы вывода данных вам известны?
    20. В следующих операторах присваивания укажите типы переменных: а : = 32; х : = sin(y + 2.3); l : = (k > 3) and (d < c); m : = 'Сегодня' + t; b : = '1993'.
    Задание к работе
    Выполнить индивидуальное задание.
    Методические указания
    Задачу необходимо решать согласно рассмотренной технологии: а) изучить словесную постановку задачи; б) сформулировать математическую постановку задачи; в) выбрать метод решения задачи, если это необходимо; г) разработать схему алгоритма; д) записать разработанный алгоритм на языке Паскаль; е) разработать контрольный тест программы; ж) отладить программу; з) написать отчет.
    Содержание отчета
    1. Титульный лист.
    2. Словесная постановка задачи.
    3. Математическая формулировка задачи.
    4. Схема алгоритма решения задачи.
    5. Листинг программы.
    6. Контрольный тест.
    7. Результат тестирования программы.
    8. Ответы на контрольные вопросы к лабораторной работе по согласованию с преподавателем.

    22
    Варианты индивидуальных заданий
    1. Треугольник задан длинами сторон. Найти длины высот.
    2. Треугольник задан длинами сторон. Найти радиусы вписанной и описанной окружностей.
    3. Найти корни системы двух алгебраических уравнений с двумя неизвестными по формуле
    Крамера, считая, что система разрешима.
    4. Хозяин хочет оклеить обоями квартиру. Определить количество необходимых рулонов и затрат на их приобретение.
    5. В некотором треугольнике основание больше высоты на заданную величину d.
    Определить значение высоты и основания, если известна величина площади треугольника.
    6. Известны координаты вершин треугольника. Определить периметр и площадь треугольника.
    7. Имеется кольцо с известными радиусами внутреннего и внешнего кругов. Определить длины окружностей обоих кругов, а также площадь кольца.
    8. Дано действительной число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить а
    8
    за три операции.
    9. Дано действительной число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить а
    5
    и а
    13 за пять операций.
    10. Определить площадь равнобедренной трапеции, если заданы основание b, высота h и угол при основании b, равный L.

    23
    ЛАБОРАТОРНАЯ РАБОТА N 3
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта