Основы языка Turbo Pascal

Автор: Пользователь скрыл имя, 29 Октября 2012 в 22:00, творческая работа

Описание работы

Работа содержит презентацию по дисциплине "Информатика"

Содержание

Алгоритмы
Условие
Ветвления: Инструкция IF
Инструкция CASE
Инструкция FOR
Циклы:
Инструкция WHILE
Инструкция REPEAT
Массивы: Объявление массива
Сортировка массива
- сортировка методом прямого выбора
- сортировка методом прямого обмена
Поиск в массиве
Многомерные массивы
Ошибки при использовании массива
Выход
разработка: Крутченко Т. И.

Работа содержит 1 файл

Информатика.ppt

— 2.23 Мб (Скачать)

                    else writeln (‘Совпадений с образцом нет.’);

end.

 

Назад

 

Меню

разработка: Крутченко Т. И.

 

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

 

const

        GRANICA = 10;

var

        a: array [1 .. GRANICA] of integer; {массив целых чисел}

        min: integer; {номер минимального элемента массива}

        i: integer; {номер элемента сравниваемого с минимальным}

begin

{здесь инструкции ввода  массива}

        min:= 1; {пусть первый элемент минимальный}

        for i:= 2 to GRANICA do

                if a [i] < a [min] then min:= i;

        writeln (‘Минимальный элемент массива:’., a [min]);

        writeln (‘Номер элемента:’, min);

end.

 

Поиск минимального (максимального)

элемента массива

 

Далее

 

Назад

 

Меню

разработка: Крутченко Т. И.

 

Исходные данные для решения  многих задач можно представить  в табличной форме:

 

 

 

 

 

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

zavod1: array [1..4] of integer;

zavod2: array [1..4] of integer; 

zavod3: array [1..4] of integer;

Для подобных случаев Pascal предоставляет  более удобную структуру данных - двумерный массив.

В общем виде описание двумерного массива выглядит так:

Имя :array [НижняяГраницаИндекса1..ВерхняяГраницаИндекса1,

                    НижняяГраницаИндекса2..ВерхняяГраницаИндекса2] of Тип

где Имя - имя массива; array - слово языка Pascal, показывающее, что описываемый элемент данных - массив;

НижняяГраницаИндекса1, ВерхняяГраницаИндекса1, НижняяГраницаИндекса2, ВерхняяГраницаИндекса2 - константы или выражения типа INTEGER, определяющие диапазон изменения индексов и, следовательно, число элементов массива;

Тип - тип элементов массива.

 

 

 

Многомерные массивы

 

Продукт1     Продукт2     Продукт3     Продукт4

 

Завод1

 

Завод2

 

Завод3

 

Далее

 

Назад

 

Меню

разработка: Крутченко Т. И.

 

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

product : array [1..3, 1..4]  of integer

Этот массив состоит из 12 элементов  типа INTEGER.

Чтобы использовать элемент массива, нужно указать имя массива  и индексы элемента. Первый индекс обычно соответствует номеру строки таблицы, второй - номеру колонки. Так  элемент product [2, 3] содержит число продуктов третьего наименования, выпущенных вторым заводом.

Значения элементов двумерных  массивов выводят на экран и вводят с клавиатуры, как правило, по строкам, т.е. Сначала все элементы первой строки, затем второй и т.д. Это  удобно выполнять при помощи вложенных  инструкций FOR. Следующий фрагмент программы  выводит на экран значения элементов  массива по строкам:

for i:= 1 to 3 do

begin

      for j:= 1 to 4 do

write (product [i, j]);

      writeln;

end;

Каждый раз, когда внутренний цикл завершается, внешний цикл увеличивает i на единицу, и внутренний цикл выполняется  вновь. Таким образом, выводятся  все компоненты массива product : product [1, 1], product [1, 2],... product [1, 4], product [2,1], product [2, 2],... product [2, 4] и т.д.

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

 

Далее

 

Назад

 

Меню

разработка: Крутченко Т. И.

 

Пример:

 

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

 

 

 

 

 

 

 

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

 

      Клуб  Завоевано медалей:

Золотые  Серебряные  Бронзовые

Буревестник   4  4   4

Динамо           2   4   3

Зенит              6 4   4

Спартак          3 3   4

 

Далее

 

Назад

 

Меню

разработка: Крутченко Т. И.

 

const

        NC = 4; {}

var

        club : array [1..NC + 1] of string [30]; {}

        medal: array [1.. NC + 1, 1..4] of integer; {}

        m, i, j : integer;

begin

    club [1] := ‘Буревестник’;

    club [1] := ‘Динамо ’;

    club [1] := ‘Зенит ’;

    club [1] := ‘Спартак ’;

    writeln (‘Для каждой команды в одной строке введите’);

    writeln (‘через пробел’ число золотых, серебряных и’);

    writeln (‘бронзовых медалей и нажмите <ENTER>’);

    for i:= 1 to NC do

          begin

                    write (club [i],’->’);

                    readln (medal [i, 1], medal [i, 2], medal [i, 3]);

          end;

    {подсчет общего количества медалей}

    for i := 1 to NC do

          begin

                    medal [i, 4] := 0;

                    for j := 1 to 3 do

                          medal [i, 4] := medal [i, 4] + medal [i, j];

                    end;

        {сортировка таблицы}

   for i:= 1 to NC - 1 do

      begin

          

 

 

{найти строку, в которой  максимально общее число медалей}

m := i;

          for j := i + 1 to NC do

               if medal [j, 4] > medal [m, 4] then m := j;

          {обменяем i-ю строку с m-й}

          club [NC + 1] := club [i];

          club [i] := club [m];

          club [m] := club [NC + 1];

          for j := 1 to 4 do

               begin

                     medal [NC + 1, j] := medal [i, j];

                     medal [i, j] := medal [m, j];

                     medal [m, j] := medal [NC + 1, j];

               end;

       end;

       {вывод итоговой таблицы}

       writeln;

       writeln (‘Клуб Золотые Серебряные Бронзовые Всего’);

       writeln (‘** Итоговая таблица**’);

       for i:= 1 to NC do

               begin

                     write (i : 2, ‘. ‘, club [i]);

                     for j := 1 to 4 do

   write (medal [i, j] : 11);

                     writeln;

               end;

end.

 

 

Назад

 

Меню

разработка: Крутченко Т. И.

 

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

var 

      day : array [1..6] of string [11];

begin

      day [1] := ‘Понедельник’;

      day [7] := ‘Воскресенье’;

end.

будет выведено сообщение об ошибке для инструкции

day [7] := ‘Воскресенье’;

Если при обращении к элементу массива в качестве индекса используется переменная или выражение, то возможно возникновение ошибки времени выполнения программы (run time error). Например, в программе, представленной ниже, ошибок времени  компиляции нет.

var  

        temper : array [1..12, 1..31] of real;

        month, day: integer;

begin

        writeln (‘’);

        write ( ‘->’);

        readln (day, month, t);

        temper [month, day] := t;

end.

 

Ошибки при использованими массивов

 

Далее

 

Назад

 

Меню

разработка: Крутченко Т. И.

 

Однако если во время работы программы  в ответ на запрос будет введена  строка

-15  17  12

что соответствует  -15 градусов  17 января, то при выполнении инструкции

temper [month, day] := t будет выведено сообщение

Run time error 104;

В программы, в которых возможны ошибки времени выполнения вследствие неправильного ввода исходных данных, следует добавлять инструкции проверки вводимых данных. Для приведенной  выше программы это можно сделать, например, так:

var

      temper : array [1..12, 1..31] of real;

      month, day : integer;

      t : real;

begin

      writeln (‘Веедите дату (число, номер месяца) и температуру воздуха’);

      write (‘->’);

      readln (day, month, t);

      if ((day . 31) OR (month > 12) OR (day < 1) OR (month < 1))

            then writeln (‘Неверные данные’);

            else temper [month, day] := t;

end.

 

Далее

 

Назад

 

Меню

разработка: Крутченко Т. И.

 

 

 Вы закончили знакомство с основами языка программирования Turbo Pascal. Теперь Вы можете смело приступать к практическому применению полученных знаний.

 

 

 

Успехов Вам!

 

 

Назад

 

Меню

 

3

 

19


Информация о работе Основы языка Turbo Pascal