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

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

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

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

Содержание

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

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

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

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

koef: array [0..2] of integer;

name: array [1..30] of string  [25];

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

const

      NT=18; {число команд}

      SN=25; {предельная длина названия команды}

var

      team: array [1..NT] of string [SN];

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

team [1]:= Зенит;

d:= koef [1] * koef [1]  - 4 * koef [2] * koef [1];

readln (name [n + 1]);

writeln (temper [i]);

 

Далее

 

Назад

 

Меню

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

 

К типичным действиям с массивами можно отнести следующие: - вывод массива;   - ввод массива;

- сортировка массива;                          - поиск в массиве заданного  элемента;

- поиск в массиве максимального  или минимального элемента;

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

Например, программа, выводящая на печать номера и названия дней недели, хранящиеся в массиве day, может быть реализована так:

var

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

   i: integer;

begin

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

    day [2]:=‘Вторник’;

    day [3]:=‘Среда’;

    day [4]:=‘Четверг’;

    day [5]:=‘Пятница’;

    day [6]:=‘Суббота’;

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

    for i:= 1 to 7 do writeln (i, ‘ ’, day [i]);

                                          end.

 

Далее

 

Назад

 

Меню

 

Вывод массива

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

 

 

 

Под вводом массива понимается ввод значений элементов массива. Как  и вывод массива, ввод удобно реализовать  при помощи инструкции FOR. Чтобы пользователь программы знал, ввода какого элемента массива ожидает программа, следует  организовать вывод подсказок перед  вводом очередного элемента массива. В  подсказке обычно указывают индекс элемента массива.

Пример:

Следующая программа запрашивает  температуру воздуха в течении  недели и запоминает введённые значения в массиве temper, затем вычисляет  среднее значение. Для организации  подсказок используется массив строк day.

 

 

Ввод массива

 

Пример

 

Далее

 

Назад

 

Меню

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

 

Пример:

 

 

var

     day: array [1..7] of string [11]; {название дней недели}

     temper: array [1..7] of real; {температура}

     sum: real; {сумма температур за неделю}

     sredn: real; {средняя температура за неделю}

                             i: integer;

begin

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

    day [2]:=‘Вторник’;

    day [3]:=‘Среда’;

    day [4]:=‘Четверг’;

    day [5]:=‘Пятница’;

    day [6]:=‘Суббота’;

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

    writeln (‘Задайте температуру воздуха за неделю.’);

    for i:= 1 to 7 do

           begin

write (day [i], ‘-->’);

readln (temper [i]);

           end;

       {вычисление средней температуры за неделю}

     sum:= 0;

     for i:= 1 to 7 do

            sum:= sum + temper [i];

     sredn:= sum / 7;

     writeln (‘Средняя температура за неделю:’, sredn: 6: 2);

end.

 

Назад

 

Меню

 

Далее

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

 

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

a [1] <= a [2] <=  … <= a [SIZE]

SIZE - верхняя граница индекса  массива.

Так как можно сравнивать переменные типов INTEGER, REAL, CHAR и STRING, то можно сортировать массивы этих типов.

Задача сортировки распространена в информационных системах и используется как предварительный этап задачи поиска, так как поиск в упорядоченном (отсортированном) массиве проводится намного быстрее, чем в неупорядоченном.

Существует много методов (алгоритмов) сортировки массивов. Здесь мы рассмотрим два метода:

  • метод прямого выбора
  • метод прямого обмена

 

Сортировка массива

 

Далее

 

Назад

 

Меню

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

 

Алгоритм сортировки массива по возрастанию методом прямого  выбора может быть представлен так:

1. Просматривая массив  от первого элемента, найти  минимальный и поместить его  на место первого элемента,  а первый на место минимального.

2. Просматривая массив  от второго элемента, найти  минимальный и поместить его  на место второго элемента,  а второй на место минимального.

3. И так далее до  последнего элемента.

 В Примере представлена программа сортировки массива целых чисел по возрастанию. Для демонстрации процесса сортировки программа выводит массив после каждого обмена элементов.

 

Сортировка методом прямого  выбора

 

Далее

 

Назад

 

Меню

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

 

 
 
Пример:

 

const

   SIZE = 5;

var

   a: array [1..SIZE] of integer;

   i: integer; {номер элемента, которого ведётся поиск минимального элемента}

   min: integer; {номер минимального элемента в части массива от i до верхней границы массива}

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

   buf: integer; {буфер, используемый при обмене элементов массива}

   k: integer;

begin

   writeln (‘Сортировка массива.’);

   write (‘Введите’, SIZE: 3,’ целых в одной строке’);

   writeln (‘через пробел и нажмите<ENTER>’);

   for k:=1 to SIZE do read (a [k]);

   begin

       {поиск минимального элемента в части массива от f [i] до a [SIZE]}

        min:= i;

        for j:= i + 1 to SIZE do begin

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

                 {поменяем местами a [min] и a [j]}

                 buf:= a [i];

                 a [i]:= a [min];

                 a [min]:= buf;

           {выведем массив}

        for k:= 1 to SIZE do write (a [k], ‘ ‘);

        writeln;

                                                end;

    end;

    writeln (‘Массив отсортирован.’);

end.

 

Далее

 

Назад

 

Меню

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

 

 

 

 

 

 

В основе алгоритма лежит обмен  соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением - к концу  массива (тонут), поэтому этот метод  иногда называют “пузырьковым”. Этот процесс повторяется на единицу  меньше раз, чем элементов в массиве.

 

 

 

 

Сортировка методом обмена

(Метод пузырька)

 

Далее

 

Назад

 

Меню

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

 

Пример:

 

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

const

          SIZE

var

             a: array [1..SIZE] of integer;

             i: integer; {счетчик циклов}

             k: integer; {текущий индекс элемента массива}

             buf: integer;

begin

          writeln (‘Сортировка массива пузырьковым методом.’);

          write (‘Введите’,SIZE: 3,’целых в одной строке через пробел’);

          writeln (‘и нажмите <ENTER>’);

          for k:= 1 to SIZE do read (a [k]);

          writeln (‘Сортировка.’);

          for i:= 1 to SIZE - 1

          do begin

for k:= 1 to SIZE -  1

do begin

           if a [k] > a [k + 1]

           then begin

{обменяем k-й и (k +  1)-й элементы}

buf:= a [k];

a [k]:= a [k + 1];

a [k + 1]:= buf;

            end;

end;

for k:= 1 to SIZE do  write (a [k], ‘  ’);

writeln (‘Массив отсортирован.’);

end.

 

Назад

 

Меню

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

 

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

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

В Примере представлен текст программы поиска в массиве целых чисел. Перебор элементов массива осуществляет инструкция REPEAT, в теле которой инструкция IF сравнивает текущий элемент массива с образцом и присваивает переменной naiden значение TRUE, если текущий элемент равен образцу. Цикл завершается, если в массиве обнаружен элемент, равный образцу (naiden = TRUE), или если проверены все элементы массива. По завершении цикла, по значению переменной found можно определить, успешен поиск или нет.

Очевидно, что чем больше элементов  в массиве и чем дальше расположен нужный элемент от начала массива, тем  дольше будет программа искать нужный элемент.

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

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

 

Поиск в массиве

 

Далее

 

Назад

 

Меню

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

 

Пример:

 

var

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

           obrazec: integer; {образец для поиска}

           naiden: boolean; {признак совпадения с образцом}

           i: integer;

begin

           {ввод 10 целых чисел}

           writeln (‘Поиск в массиве.’);

           write (‘Введите 10 целых в одной строке через пробел’);

           writeln (‘и нажмите <ENTER>’);

           write (‘-->’);

           for i:= 1 to 10 do read (massiv [i]);

           {числа введены в массив}

           write (‘Введите образец для поиска (целое число) -->’);

           readln (obrazec);

           {поиск простым перебором}

           naiden:= FALSE; {совпадений нет}

           i:= 1; {проверяем с первого элемента массива}

           repeat

                   if massiv [i] = obrazec

          then naiden:= TRUE {совпадение с образцом}

          else i:= i + 1; {переход к следующему элементу}

            until (i > 10) or (naiden); {завершим, если совпадение с образцом или}

            {проверен последний элемент массива}

            if naiden

                    then writeln (‘Совпадение с элементом номер’, i : 3, ‘ . ‘, ‘Поиск успешен.’)

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