|
Кафедра Информационных систем и технологийСтр 1 из 3Следующая ⇒ УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ «БАРАНОВИЧСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» ____________________________________________________________ Кафедра Информационных систем и технологий
Виноградова И.М.
«ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ» Методические указания и задания к лабораторным работам для студентов 1-го курса дневной формы обучения Инженерных специальностей
часть 1
Барановичи 2006 УДК 681.3
Составитель: И.М.Виноградова Рецензенты: к.ф.-м.н. Д.А.Ционенко, магистр естественных наук С.Г.Скобля
Рекомендованы к изданию методической комиссией инженерного факультета», (протокол № 2 от 01.10.2006 г.)
Лабораторный практикум по дисциплине «Основы алгоритмизации и программирование» представляет собой сборник лабораторных работ. Каждая работа содержит в себе методические указания по программированию на языке Паскаль, двенадцать вариантов заданий и контрольные вопросы по каждой теме. Большинство лабораторных работ снабжено примерами решения задач.
Содержание
Лабораторная работа № 1Программирование линейных алгоритмов 4 Лабораторная работа № 2 Программирование разветвляющих алгоритмов 7 Лабораторная работа № 3 Программирование циклических алгоритмов. 11 Лабораторная работа № 4 Обработка одномерных массивов. 19 Лабораторная работа № 5 Обработка матриц. 22 Лабораторная работа № 6 Организация с использованием подпрограмм. 26 Лабораторная работа № 7 Программирование с использованием строк.. 35 Лабораторная работа № 8 Программирование с использованием записей. 38 Лабораторная работа № 9 Программирование с использованием файлов. 40 Лабораторная работа № 10 Программирование с использованием множеств 51 Лабораторная работа № 11 Графика 57 Приложение 1. 63 Приложение 2. 64 Приложение 3. 67 Приложение 4. 68
ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ Цель работы — овладение практическими навыками заработки и программирования вычислительного процесса линейной структуры и навыками по отладке и тестированию программ. Задания для самостоятельной подготовки: · Изучить: запись констант, переменных, функций, правила записи арифметических выражений, арифметический оператор присваивания, организацию простейшего ввода-вывода данных. · Разработать алгоритм решения в соответствии с заданием. · Составить программу решения задачи. · Подготовить тестовый вариант исходных данных и вычислить для них вручную или с помощью микрокалькулятора значения вычисляемых в программе величин. Пример выполнения работы. program корни; var b, c, d: real; begin read(b, c); d: =sqrt(sqr(b)-4*c); writeln(‘x1=’,(-b+d)/2,’ x2=’,(-b-d)/2) end. Задание к работе Вычислить на ЭВМ значения переменных, указанных в таблице (вариант задается преподавателем), по заданным расчетным формулам и наборам исходных данных. На печать завести значения вводимых исходных данных и результаты вычислений, сопровождая вывод наименованиями выводимых временных.
Продолжение таблицы
Контрольные вопросы 1. Какую конструкцию имеет программа на Паскале? 2. Опишите основные элементы интерфейса интегрированной среды разработки Borland Pascal. 3. Какими командами осуществляется сохранение и открытие файла программы, сохранение под новым именем? Как изменить каталог? 4. Какие типы величин используются в языке программирования? 5. Указать диапазон значений величин целого и действительного типов. 6. Какие имена переменных допустимы в программе? Как задать тип переменной в программе? Указать имена стандартных функций для вычисления. 5. Можно ли в качестве операнда в арифметическом выражении использовать: а) имя массива; б) имя стандартной функции, например SIN (Y); в) имя символьной переменной или переменной логического типа? 6. Назвать последовательность действий при выполнении арифметического оператора присваивания. Допустимо ли использование величин разных типов в арифметическом выражении? 7. Написать арифметический оператор присваивания для вычисления значения P(x) =(((( 8. Указать старшинство выполнения операций при вычислении арифметического выражения. 9. Указать средства, имеющиеся в языке программирования для управления размещением данных на строке. Как организовать вывод значений, сопровождая выводимое числовое значение наименованием переменной? Как организовать пропуск одной, двух строк при выводе? 10.Как выбрать значения исходных данных для тестового варианта счета?
ЛАБОРАТОРНАЯ РАБОТА № 2 Пример выполнения работы. Разработать программу для вычисления выражения вида Блок-схема.
Ниже приведен один из вариантов программы program MaPr; var A,B,D:real;] begin Writeln(‘ Введите исходные данные’); Readln(A,B); if A*B<0 then D:=Ln(Sqr(A*B)) if A*B>0 then D:=Ln(A*B); if A*B=0 then D:=0; Writeln(‘ D=’,D) end. Задания 1. Вычислить значение функции заданной в таблице (в соответствии с вариантом задания). Осуществить вывод значений вводимых исходных данных и результат вычисления значения функции, сопровождая вывод наименованиями переменных. 2. Выполнить программу на ЭВМ и протестировать все ветви алгоритма. Таблица – Варианты заданий
Продолжение таблицы
Контрольные вопросы 1. Перечислить действия, реализуемые при выполнении условного оператора. 2. Какие действия выполняются оператором перехода? 3. Что такое вычислительный процесс разветвляющейся структуры? Как организовать разветвление вычислений: а) на две ветви? б) на три ветви? 4. Составить последовательность операторов для вычисления величины z = 0, если х <—2; z = l, если — 2<x<2; z= — 1, если х>2. 5. Зачем необходимо при отладке программы тестировать все ветви алгоритма? 6. Объясните работу оператора Case.
ЛАБОРАТОРНАЯ РАБОТА № 3 Блок-схема.
Пример программы. Найти сумму первых n двузначных чисел, кратных 11 (n вводится с клавиатуры).
Program Pr1; var n,s,a,i:integer; begin Write('Введите количество чисел n = '); Readln(n); {вводится количество чисел} s:=0; a:=10; i:=0; {присваиваются начальные значения} repeat if a mod 11=0 then begin {если число делится на 11 без остатка, то} s:=s+a; {оно прибавляется к сумме} i:=i+1 {и счётчик чисел увеличивается на 1} end; a:=a+1; {берётся следующее двузначное число} until (i=n)or(a>99); {выход из цикла, если достигнуто нужное количество чисел, или если проверены все двузначные} writeln('Искомая сумма = ',s); {выводится результат} readln {ожидается нажатие Enter} end.
Задание 2. Оператор while. Написать программу, вычисляющую значения функции с точностью до 3-х знаков после запятой на заданном отрезке с заданным шагом и выводящую результаты вычислений в виде таблицы, состоящей из двух столбцов – столбца, содержащего значения аргумента и столбца, содержащего значения функции. Значения концов отрезка и шага должны вводиться с клавиатуры. Таблица – Варианты заданий
Пример программы. Написать программу, вычисляющую значения функции с точностью до 2-х знаков после запятой на отрезке [-10;4] с шагом 2 и выводящую результаты вычислений в виде таблицы, состоящей из двух столбцов – столбца, содержащего значения аргумента и столбца, содержащего значения функции. Значения концов отрезка и шага должны вводиться с клавиатуры. Блок-схема.
Program Pr2; var a,b,h,x,y:real; begin writeln('Введите значения концов отрезка:'); readln(a,b); {вводятся концы отрезка} writeln('Введите шаг:'); readln(h); {вводится шаг} writeln('-------------------'); {формируется заголовок таблицы} writeln(' x | y '); writeln('-------------------'); x:=a; {х присваивается значение начала отрезка} while x<=b do begin {цикл выполняется пока х≤b} y:=x/2+1; {вычисляется функция у} writeln(x:6:2,' | ',y:6:2); {выводятся х и у с заданной точностью} x:=x+h {берётся следующее значение х} end; writeln('-------------------'); {подчёркивается таблица} readln end. Задание 3. Оператор for. Написать программу, вычисляющую сумму элементов предложенного ряда для n >2. Значения n и х должны вводиться с клавиатуры. Таблица – Варианты заданий
Продолжение таблицы Блок-схема.
Пример программы. Написать программу, вычисляющую сумму элементов ряда для n >2. Значения n и х должны вводиться с клавиатуры. Program Pr3; var x,s,a:real; n,i:integer; begin writeln('Введите x и n:'); readln(x,n); {вводятся значения х и n} s:=1; a:=1; {задаются начальные значения суммы и первого слагаемого} for i:=1 to n do begin a:=a*(-1/x); {вычисляется следующее слагаемое} s:=s+a {и прибавляется к сумме} end; writeln('Искомая сумма = ',s:4:2); {выводится результат} readln end. Контрольные вопросы 1. Какими командами осуществляется компиляция и трассировка программы? Как вызвать пользовательский экран? Как организовать просмотр значений переменных величин при трассировке программы? 2. Как записывается и как работает оператор FOR? 3. В чем отличие оператора WHILE от оператора REPEAT? 4. Как программируются циклические алгоритмы с явно заданным числом повторений цикла? 5. Как программируются циклические алгоритмы с незаданным числом повторений цикла? 6. Для организации каких циклов, применим оператор FOR? ЛАБОРАТОРНАЯ РАБОТА № 4 Задание 1 Выполните задания в соответствии с вариантом, указанным преподавателем. Программа должна: · запрашивать элементы массива; · выводить найденный максимальный или минимальный элемент массива и его индекс. · выводить найденную сумму или произведение; · выводить исходный и полученный (ые) массивы.
1. Обработать на ЭВМ массив в соответствии с вариантом задания, указанного в таблице. Таблица – Варианты заданий
Задание 2 Выполните задания в соответствии с вариантом, указанным преподавателем. Программа должна: · запрашивать элементы массива; · выводить значения функции выводить в виде таблицы, состоящей из двух колонок (одна – для значений элементов массива, другая – для значений функции); Таблица – Варианты заданий
Продолжение таблицы
Контрольные вопросы 1. Указать особенности программ, использующих массивы. 2. Какие операторы языка можно использовать для описания массивов? 3. В чем состоит особенность организации цикла при обработке массивов? 4. В чем состоит особенность использования приемов программирования при обработке массивов? 5. Указать особенности ввода и вывода массивов. ЛАБОРАТОРНАЯ РАБОТА № 5 ОБРАБОТКА МАТРИЦ Цель работы — овладение навыками алгоритмизации и программирования структур с вложенными циклами, навыками использования приемов программирования во вложенных циклах, способами ввода и вывода матриц. Задания для самостоятельной подготовки 1. Изучить: - правила организации вложенного цикла с учетом порядка перебора элементов матрицы; - правила использования приемов программирования в структурах с вложенными циклами; - способы ввода и вывода матриц, имеющиеся в языке программирования. 2. Разработать алгоритм решения в соответствии с заданием. 3. Составить программу решения задачи. 4. Подготовить тестовый вариант программы и исходных данных. Пример выполнения работы Задание 1. Выполнить на ЭВМ решение задачи. Записать в массив В (N, KMAX) положительные элементы строк матрицы A (N, M) (N<20, M<10) до первого отрицательного, где КМАХ — наибольшее значение числа положительных элементов в строке до первого отрицательного. Вывести на печать сформированную матрицу В. На печать выводить только те элементы, которые записаны в матрицу В. PROGRAM LR6 LABEL 10; CONST N=20; M=10; VAR I, J. NR, MR, K, KMAX: INTEGER; A, B: ARRAY [1.. N, 1.. M] OF REAL; BEGIN WRITELN(‘ ВВЕДИТЕ ЗНАЧЕНИЕ NR. MR*); READ (NR, MR); WRITELN(‘ ВВЕДИТЕ ЗНАЧЕНИЯ MАССИВА А'); FOR I: = 1 TO NR DO FOR J: = 1 TO MR DO READ(A[I, J]); KMAX:=О; FOR I: = 1 TO Nr DO BEGIN K: =0; FOR J: = 1 TO MR DO IF A[I,J]>=0THEN BEGIN K:=K+1; В[I,J]: =A[I.,J] END; ELSE BEGIN В[I,J]: = -l; GOTO 10 END; 1O: IF К>KМАХ THEN KMAX:=K; END; FOR I:=1 TO NR DO FOR J:=1 TO KMAX DO IF B[I, J]>O THEN WRITE(B[I, J)) ELSE WRITELN; END. Задание к работе 1. Обработать на ЭВМ матрицу в соответствии с вариантом задания, указанного в таблице. Вывести на печать результаты и исходную матрицу в общепринятом виде. 2. Проверить правильность выполнения программы с помощью тестового варианта. Таблица – Варианты заданий
Контрольные вопросы 1.Указать основные правила организации вложенных циклов. 2. Указать способы выхода из внутреннего цикла. 3. Сколько раз выполняются операторы- К = 0 и К=К +1 в программе примера? 4. Как организовать вывод матрицы в общепринятом виде? 5. Как организовать вывод нижней треугольной матрицы в общепринятом виде? 6. Как организовать ввод матрицы размером NxM элементов?
ЛАБОРАТОРНАЯ РАБОТА № 6 Задание1 Используя подпрограмму Function построить схему машинного алгоритма и составить Паскаль-программу решения задачи по варианту. Методические указания Для выполнения задания следует ознакомиться приведенной ниже программой РР92, которая вводит вещественные значения аргументов X и Y, вычислить Р(Х,У) по формуле F(Х,У)=(Х+У)-5 - (X - 2*У)3 и выводит на печать полученный результат. При этом для возведения вещественного числа А в целую степень В используется функция СТЕП. Рrogram pp; var x, y, fxy: real; function степ (a: real; b: integer): real; var rab:real; absb: integer; begin rab:=1; absb:= abs(b); while absb>0 do begin rab:=rab*a: absb:=absb-1 end; if b<0 then rab:=1/rab; степ:=rab end; begin writeln(‘вводи данные’); readln(x,y); fxy:= степ(x+y,-5)- степ(x-2*y,3); writeln(‘для x=’, x:6:3, ‘y=’, y:6:3, ‘значение f(x,y)=’, fxy:6:3) end. Протокол работы программы: ВВОДИ ДАННЫЕ 2.0 -1.0 ДЛЯ Х= 2.000 И У=-1.000 ЗНАЧЕНИЕ Р(Х,У)=-63.000 Варианты задания
Продолжение таблицы
Продолжение таблицы
Задание 2. Используя подпрограмму Procedure построить схему машинного алгоритма и составить Паскаль-программу решения задачи по варианту. Методические указания Решить на ЭВМ задачу. Переписать положительные элементы массивов X(N), Y (М) в массив Z подряд Запись положительных элементов в массив осуществить в подпрограмме. Принять ограничения: М<=100 и М=< 100. В подпрограмме должна осуществляться запись положительных элементов исходного массива в массив результатов. Для этого в подпрограмму необходимо передать следующие параметры: имя и количество элементов исходного массива, имя и количество элементов результирующего массива. Поскольку в массив результатов Z записываются подряд положительные' элементы из нескольких массивов, в списке параметров должны фигурировать также: входной параметр L — номер ячейки, начиная с которой необходимо осуществлять запись в массив результатов; выходной параметр К — номер ячейки, в которую записан последний положительный элемент исходного массива при предыдущем обращении к подпрограмме. После окончания записи элементов в массив результатов этот параметр определяет количество элементов, записанных в массив результатов. |При первом обращении к подпрограмме в нее необходимо передать, имя массива X. Количество его элементов N; входной параметр L=l, если запись осуществляется в массив Z, начиная с элемента с индексом 1, имя выходного массива Z, то его элементов N + M. и получать в подпрограмме выходной параметр К, определяющий количество элементов, в массив Z. При втором обращении необходимо передать соответственно Y, M, L=K+ I, Z, N + M, К. После второго обращения к подпрограмме К — суммарное количество элементов, записанных в массив Z после двух выполнений подпрограммы. В схеме алгоритма при первом обращении к подпрограмме параметр L задан равным нулю, так как в подпрограмме перед записью элемента в массив Z индекс К увеличивается на 1. По этой же причине при втором обращении параметру L присваивается значение К, т. е. меньшее на 1.
program sort; const nn=100; type mas:array[1..n] of real; var i,n,m:integer; x,y,z:mas; procedure st (var a,c: mas; n, l, k:integer); var j:integer; Begin k:=l; for j:=l to n do if a[j]>0 then Begin k:=k+1; c[k]:=a[j] end; end; Begin write(‘Ввeдите значения nr и mr'); read(nr,mr); write(‘Ввeдите значения массива x'); for i:= l to nr do read (x[i]); write(‘Ввeдите значения массива y'); for i:=l to mr do read(y[i]); st(x,nr,o,z,nr+mr,k); st{y,mr, k,z,nr+mr,k); for i:=1 to к do write(z[i]); end.
Данная конкретная программа в тестировании не нуждается, так как выведенные на печать результаты позволяют однозначно судить о правильности выполнения программы. Варианты задания 1. Выполнить на ЭВМ программу, использующую подпрограмму-процедуру в соответствии с номером, указанным в таблице
Продолжение таблицы
©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.
|