Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум для заочников.doc
Скачиваний:
22
Добавлен:
17.03.2015
Размер:
212.99 Кб
Скачать

3.Задание

Составить алгоритм с ветвлениями и программу для решения задачи.

Составить алгоритмы и программы для каждой из разновидностей циклов.

Варианты заданий

1. Найти минимальное из двух чисел.

2. Найти минимальное из трех чисел.

3. Определить принадлежит ли число Х отрезку [а; b].

4. Найти минимум функции на отрезке [а; b].

5. Найти значение функции

6. Даны две точки А(x1, y1) и B(x2, y2). Определить которая из точек находится ближе к началу координат.

7. Определить правильность даты, введенной с клавиатуры (число – от 1 до 31, месяц - от 1 до 12). Если введены некорректные данные, то сообщить об этом.

8. Даны три числа a, b, c. Определить, какое из них равно d. Если ни одно не равно d, то найти max (d-a, d-b, d-c).

9. Дано натуральное число n. Вычислить:

10. Дано натуральное число N. Вычислить произведение первых N сомножителей. .

11. Вычислить значения функции F(x) на отрезке [a,b] с шагом h. Результат представить в виде таблицы, первый столбец которой – значения аргумента, второй – соответствующие значения функции. F(x) = xsin x.

4.Методические указания по выполнению

задания

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

4.2 Изучить теоретический лекционный материал и ознакомиться с описанием лабораторной работы.

4.3 Изучить операторы Turbo Pascal, организующие ветвления и циклы.

4.4 Проанализировать задание для выполнения лабораторной работы.

4.5 Выполнить постановку задачи

4.6 Выполнить формализацию задачи.

4.7 Составить алгоритм решения задачи в графической форме.

4.8 Составить программу решения задачи на языке Turbo Pascal.

4.9 С помощью системы программирования Turbo Pascal составить текст программы и выполнить ее.

4.10 Проверить правильность составления программы с помощью контрольного примера.

    1. Оформить отчет по лабораторной работе.

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

  1. В каких случаях используют Writeln(‘Понедельник’); циклы с предусловием ?

  2. Каковы особенности использования цикла с постусловием ?

  3. В чем сходство и различие операторов CASE и IF ?

  4. Каков порядок выполнения цикла с параметром ?

  5. Что такое счетчик цикла ?

  6. Как задаются условия в операторах циклов и сравнения ?

  7. Какой формат имеет оператор CASE ?

  8. Какой формат имеет оператор IF ?

  9. Как избежать «зацикливания» при использовании операторов циклов?

  10. В каких случаях используются «операторные скобки» ?

  11. Что такое вложенные операторы ?

Лабораторная работа № 3 Массивы, их виды. Использование массивов.

1.Цель работы:

Составление алгоритмов и программ для решения задач с использованием массивов.

2.Краткая теория:

Массивы

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

Пример 1: Пусть даны вещественные числа а12, …, а1000. Необходимо к каждому из этих чисел добавить число 2,

Если решать эту задачу с помощью простых переменных, то каждое из чисел надо обозначить собственным идентификатором и затем написать 1000 операторов присваивания типа bi = ai + 2; и т. д. Чтобы избежать этих трудностей, числа а12, …, а1000 могут быть организованы как одномерный массив с именем А.

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

VAR A : Array [1..1000] of Real;

или

CONST N=1000;

VAR A : Array [1..N] of real;

Номер элемента называется индексом. Индексы являются целыми положительными константами или целыми переменными. Чтобы обратиться к некоторому элементу массива, нужно рядом с идентификатором массива в скобках указать индекс элемента. Например, А [99] означает 99-й элемент массива А.

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

Program MASSIV;

{ Эта программа демонстрирует использование массивов }

VAR

i : Integer;

А, В : Array [1..1000] of Real;

BEGIN

Writeln(‘введите массив А');

For i:=l to 1000 do

Begin

Write(‘Введите ',1,'-элемент ->');

ReadLn (A [i]);

End;

WriteIn(‘ массив В: ‘);

For i:=l to 1000 do

Begin

B[i]:=A[i]+2;

Write (B[i]:6:3);

End;

END.

Данные могут быть организованы в виде таблицы (матрицы), где расположение каждой переменной определяется номером строки и номером столбца. Например, место в зрительном зале задается указанием номера ряда и номером места в этом ряду. Такие данные удобно описать как двумерный массив. В отличие от одномерного массива каждому элементу двумерного массива соответствует пара индексов. Первый индекс — это номер строки, а второй — номер столбца, где расположен элемент массива. .

Размер двумерного массива задается парой чисел: М х N, где М — число строк, а N — число столбцов в таблице.

Пусть задан двумерный массив MATR, имеющий размер 10 х 20. Этот массив на языке Паскаль может быть описан следующим образом:

VAR MATR : Array [1..10,1..20] of Integer,

тогда

MATR [5,7] — элемент, расположенный в 5-й строке и в 7-м столбце.

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

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

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

TYPE

digit = ARRAY [0..9] OF integer;

matrix = ARRAY [1..100, 0..9] OF real;

VAR

m : matrix;

d : digit;

i : integer;

Описание типа массива задается следующим образом:

<имя типа> = ARRAY [<сп.инд.типов>] OF <тип>;

Здесь: .

  • <имя типа> — правильный идентификатор;

  • ARRAY, OF — служебные слова (англ.: массив, из);

  • <сп.инд.типов> — список из одного или нескольких индексных типов, разделенных запятыми;

  • <тип> — любой тип Турбо-Паскаля.

Обычно в качестве индексного типа используется тип-диапазон, в котором задаются границы изменения индексов через две точки (..). Так как <тип>, идущий за словом OF, — любой тип Турбо-Паскаля, он может быть, в частности, другим массивом.

Обычно при работе с двумерными массивами используются вложенные циклы.

Пример 2: Дана таблица целых чисел, содержащая 10 строк и 20 столбцов. Сосчитайте сумму всех чисел в таблице.

Программа решения этой задачи может быть написана на Паскале следующим образом:

Program MASSIV;

{ Эта программа демонстрирует использование

двумерных массивов и вложенных циклов }

VAR

i,j : Integer; l

SUMMA: Integer;

A : Array [1..10, 1..20] of Integer:

BEGIN

SUMMA:= 0;

Writeln(‘ Введите массив А');

For I:=l to 10 do

For j:=l to 20 do

Begin

Write(‘A[‘,,’,’,j,’]=’);

Readln (A [i,j]);

SUMMA:= SUMMA+A[i,j];

End;

Writeln('Cyммa =’, SUMMA);

END.

Обратите внимание, что внутри цикла со счетчиком i организован цикл со счетчиком j. В результате суммируются в начале числа 1-й строки (i=l, при j=1, 2, ..., 20), затем суммируются числа 2-й строки (i=2, j= 1, 2, ..., 20) и т. д.

В данной программе в теле одного цикла содержится другой цикл. Такие циклы называются вложенными. Причем цикл со счетчиком i является внешним , а цикл со счетчиком j — внутренним. При написании вложенных циклов необходимо соблюдать следующее правило: последний оператор внутреннего цикла должен либо предшествовать, либо совпадать с последним оператором внешнего цикла. Вложенные циклы напоминают матрешек, вложенных одна в другую.

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

Процедура RANDOMIZE.

Предназначена для инициализации датчика случайных чисел. Формат обраще

ния:

RANDOMIZE;

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

Функция RANDOM.

Обеспечивает генерацию псевдослучайного числа. Формат обращения:

RANDOM(W); или RANDOM.

Здесь

W — переменная типа WORD.

Результат выполнения этой функции существенно зависит от варианта ее вызова (одним параметром или без параметров):

  • RANDOM(W) возвращает псевдослучайное целое число х, равномерно распределенное в интервале 0  х < W;

  • RANDOM возвращает псевдослучайное вещественное число х, равномерно распределенное в интервале 0  х < 1.

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