О САЙТЕ
Добро пожаловать!

Теперь вы можете поделиться своей работой!

Просто нажмите на значок
O2 Design Template

ФЭА / Информатика / КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: №31 РАЗРАБОТКА ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ СОРТИРОВКУ СТОЛБЦОВ МАТРИЦЫ

(автор - student, добавлено - 15-05-2014, 15:05)

 СКАЧАТЬ:  31.zip [114,73 Kb] (cкачиваний: 30)

 

 

КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»

РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL

НА ТЕМУ: №31

РАЗРАБОТКА ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ СОРТИРОВКУ СТОЛБЦОВ МАТРИЦЫ

 

 

 

Введение

Важнейшая роль в развитии современного общества в конце XX в. принадле­жит информатизации. По характеру и значению для будущего человеческой циви­лизации процесс информатизации можно сравнить с переходом человечества от аграрного общества к индустриальному. Подобно тому, как изобретение механи­ческого двигателя открыло эру комплексной механизации и автоматизации физи­ческого труда, изобретение ЭВМ сделало то же самое в отношении труда умствен­ного.

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

 


Постановка задачи

Разработка в среде Turbo Pascal программы, реализующей сортировку столбцов матрицы.

Задания:

1)                        Изучить работу с массивами и элементами массивов. Решить контрольные задачи: №5, 19, 23.

2)                        Проанализировать методы сортировки массива. Решить контрольную задачу:

Отсортировать нечетные столбцы массива по возрастанию , четные – по убыванию. Исходный массив сформировать с помощью генератора случайных чисел.

Задача 5

Массив состоит из элементов, соответствующих количеству учеников разных классов школы. Найти:

–    среднее количество учеников в классе;

–    классы с максимальным и минимальным количеством учеников;

–    количество классов, имеющих учеников больше среднего количества;

–    на сколько процентов увеличилось бы количество учеников школы, если бы все класс имели столько же учеников, что и в классе с максимальным количеством.

Задача 19

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

Задача 23

Дано четырехзначное число n. Является ли это число перевертышем (палиндромом), как например 6116, 4004, 2222.


Описание основных операторов и используемых модулей

Алфавит и структура программы

Совокупность допустимых в языке PASCAL 7.0 символов об­разует алфавит, который складывается из букв, цифр и специаль­ных символов. Между группами символов алфавита вставляются разделители.

В качестве букв PASCAL 7.0 использует прописные и строч­ные латинские буквы.

Цифрами PASCAL 7.0 могут служить только арабские цифры то 0 до 9.

Из букв, цифр и знаков подчеркивания строятся идентифика­торы. Написание прописных и строчных букв в идентификаторах не различается: слова VAR, vAR VaR трактуются как одно слово.

Длина идентификатора может быть любой, но существенны только первые 63 символа. Начинаться идентификатор должен всегда с буквы и может содержать знаки подчеркивания и цифры в любом другом месте.

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

Под знаками операций понимаются как различные арифмети­ческие действия (+, -, *, /, >, <, О, <=,>m , @), так и арифме­тические и логические функции (DIV, MOD, NOT, AND, OR, XOR, IN, SHL, SHR).

Множество знаков пунктуации складывается из следующих символов:

{ } или (* *)   Скобки комментария

[ ]               Выделение индексов массивов и элементов множеств

()                Выделение списков параметров, атгебраические скобки

'                  Апостроф

:=                Знак присваивания

;                  Разделение операторов и объявлений

:                  Отделение переменной или типизированной константы от типа

=                 Отделение идентификатора типа от описания типа или типизированной константы от ее значения

,                  Разделение элементов списка

.                  Разделение границ диапазона, конец программы, отделение целой части от дробной, разделение полей записи

$                 Знак шестнадцатеричного числа или директива компилятора

#                 Признак кода числа

К зарезервированным словам относятся операторы, имена ло­гических и арифметических функций, имена директив. Список зарезервированных слов приводится в приложении.

Разделителями служат пробелы, любые управляющие символы и комментарии, которые заключаются в фигурные скобки. Ком­ментарий, в котором за скобкой идет знак $, является директивой компилятора. Все остальные комментарии при компиляции про­граммы игнорируются.

Некоторые символы, такие, как &, %, буквы русского алфави­та и т. д., можно использовать только в символьных строках и в комментариях.

Структура программы

В программе могут быть следующие разделы, каждый из кото­рых, кроме последнего, завершается точкой с запятой:

–    заголовок программы;

–    раздел объявления меток;

–    раздел объявления констант;

–    раздел объявления типов;

–    раздел объявления переменных;

–    раздел объявления процедур и функций;

–    тело программы (обязательная часть).

Заголовок программы. Заголовок программы необязателен и игнорируется компилятором. Если заголовок присутствует, то он состоит из зарезервированного слова и имени программы, возт можно со списком параметров в круглых скобках. Конец заголов­ка обозначается точкой с запятой: PROGRAM ONE;

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

Раздел объявления меток. Данный раздел начинается со слова LABEL, за которым следует список меток. Завершается список точкой с запятой: LABEL 4, 77, 90;

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

Сама метка ставится в теле программы перед оператором и от­деляется от него двоеточием.

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

CONST

А = 512; В = 'IRDА'; BRIGHTNESS = 0.5;

Раздел объявления типов. В PASCAL 7.0 используются стан­дартные типы данных, но могут быть объявлены и новые типы. Например, для объявления типов, соответствующих году, месяцу и дню, можно написать так:

TYPE

YEAR = 1900..2200; MONTH = (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC);

DAY= 1..31;

Раздел объявления переменных. Объявление различных пере­менных всегда начинается с зарезервированного слова VAR, за ко торым следует список переменных. Для всех переменных обозна­чается тип, стандартный или ранее объявленный в программе:

VAR

I, J : INTEGER; L : REAL; STR : STRING;

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

Тело программы. Тело программы обязательно и должно быть заключено между BEGIN и END с точкой.

Структура данных

Используемые различные типы данных в PASCAL имеют ог­ромное значение при программировании, т. к. определяют спосо­бы и алгоритмы обработки этих данных.

Определим понятие формально: под типом данных понимается множество допустимых значений переменных, а также совокуп­ность операций над ними.

В PASCAL 7.0 можно выделить следующие группы типов:

–    простые типы;

–    структурированные типы;

–    указатели;

–    процедурные типы;

–    объекты.

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

К стандартным типам относятся:

–    целые типы - SHORTINT, INTEGER, LONGINT, BYTE, WORD;

–    вещественные типы - REAL, SINGLE, DOUBLE, EXTENDED, COMP;

–    логические типы BOOLEAN;

–    символьный тип CHAR;

–    тип-строка - STRING;

–    ASCII-строка - PCHAR;

–    текстовый файл TEXT;

–    тип-указатель POINTER.

Все другие используемые типы должны быть определены либо в разделе объявления типов, либо в разделе объявления перемен­ных или типизированных констант.

Раздел объявления типов начинается зарезервированным TYPE, после которого определяются вводимые типы. Определение каждого нового типа начинается с идентификатора типа. За ним следует знак равенства, а далее - само определение, завершающее­ся точкой с запятой:

TYPE

<имя типа 1> = <определение типа 1>; <имя типа 2> = <определение типа 2>;

...............

<имя типа N> = <определение типа N>;

ПРОСТЫЕ ТИПЫ ДАННЫХ

Рассмотрим простые типы данных. Простой тип определяет упо­рядоченные значения переменной. К простым типам относятся:

–         целые типы;

–         логический тип;

–         перечисляемые типы;

–         тип-диапазон;

–         символьный тип;

–         вещественные типы.

Все простые типы данных, кроме вещественных, называются порядковыми, и для них определены функции:

DEC(N)           Уменьшение N

INC(N)            Увеличение N

ORD(N)           Порядковый номер N

Массивы

Он представляет собой заранее известное количество однотипных компонентов, снабженных индексами. Массив может быть одномерным или многомерным. Чтобы задать тип-массив, необходимо использовать зарезервированное слово ARRAY, тип индексов массива и тип компонентов массива.

Например, тип одномерного массива целых чисел может быть

задан следующим образом:

TYPE

MAS = ARRAY[1..10] OF INTEGER;

VAR

M1 : MAS;

Тот же самый тип массива может быть задан и при определе­нии соответствующих переменных:

VAR

М1 : ARRAY[1..10] OF INTEGER;

Размерность массива может быть любой, компоненты тоже, только тип индексов должен быть обязательно порядковый и не Longint. В большинстве случаев при задании размеров массивов используются диапазоны.

В PASCAL 7.0 тип двумерных массивов описывается так же, как и одномерных. Различие состоит в том, что вы должны ука­зать диапазон для двух индексов массива - положение каждого элемента массива A [I, J] определяется значением строки I и столбца J. Например, описание двумерного массива натуральных чисел размера N х М может быть задано следующей строкой: VAR MAS : ARRAY[1..N, 1..M] OF INTEGER;

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

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

Рассмотрим два метода сортировки – линейную и методом «пузырька».

Линейная сортировка (сортировка отбором)

Это самый простой и самый очевидный метод сортировки массивов, а также наиболее прост в реализации.

Идея линейной сортировки по невозрастанию заключается в том, чтобы, после­довательно просматривая весь массив, отыскать наибольшее число и поместить его на первую позицию, обменяв его с элементом, который ранее занимал первую позицию. Затем просматриваются все остальные элементы массива и выполняется аналогичная операция по отбору из рассматриваемой части массива максимального элемента и обмену местами этого элемента и первого в рассматриваемой части и т.д.

Сортировка методом пузырька

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

 

Операторы

Оператор присваивания.

Оператор    присваивания используется для изменения значений переменных, в том числе и для вычислений по формулам — оператор предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, стоящей в левой части.

 Формат:

идентификатор := выражение;

Составной оператор.

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

Формат:

begin

Оператор1;

OпеpaтoрN;

end;

Условный оператор IF.

Условный оператор позволяет проверить некоторое условие и в зависимости от результата выполнить тот или иной оператор или группу операторов. С помощью условных операторов программируются алгоритмы разветвляющейся структуры. 

Формат:

if <условие> then < оператор1> else < оператор2>;

где if, then, else – зарезервированные слова (обозначают если, то, иначе соответственно);

<условие> - произвольное выражение логического типа;

<оператор1>, <оператор2> - любые операторы языка Паскаль.

Условный оператор работает по следующему алгоритму: вначале  вычисляется выражение <условие>. Если результат - true (истина), то выполняется <оператор1>, а <оператор2> пропускается. Если результат - false (ложь), наоборот <оператор1> пропускается, а выполняется <оператор2>.

Часть оператора, стоящая после служебного слова else, может отсутствовать. Тогда при значении true условного выражения выполняется <оператор1>, в противном случае этот оператор пропускается.

Формат:

If < условие > then < оператор>;

Один оператор if может входить в состав другого оператора if. В этом случае говорят о вложенности операторов.

Пример:

if  Условие1  then   if  Условие2  then  Оператор1  else  Оператор2;

Оператор цикла For.

Оператор повтора for часто называют оператором цикла с параметром, так как число повторений задается переменной, называемой параметром цикла, или управляющей переменной, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу – поэтому ее и называют счетчиком.

Оператор повтора for применяется в случаях, когда число повторений заранее известно.

Оператор повтора for состоит из заголовка (строка, содержащая for…do ) и тела цикла.

Формат:

for < параметр цикла >:=А to B do < оператор >;

где for, do – зарезервированные слова (обозначают "для", "выполняй" соответственно);

А и В – выражения, определяющие соответственно начальное и конечное значение параметров цикла;

< оператор > - тело цикла.

Если требуется выполнить после do несколько операторов, они обрамляются операторными скобками begin и end, образуя тем самым составной оператор.

Цикл while

В отличие от цикла for, в цикле while заранее неизвестно сколько раз проработает цикл. Вместо задания параметров счетчика, там задается условие, при котором цикл будет продолжать работать. Если условие будет равно false, то цикл прекратит свою работу.

Формат:

while <условие> do оператор;

В качестве оператора может выступать также и составной оператор.

 

 


Контрольная задача

Блок-схема

 

 

 

Программа

program contr;

const

  M = 10;

  N = 10;

var

  a : array[1..M, 1..N] of integer;

  b : array[1..N] of integer;

  i, j, k: integer;

  x, x_i : integer;

begin

  randomize;

  writeln('Исходный массив: ');

  for j := 1 to N do

  begin

    for i := 1 to M do

    begin

      a[i, j] := random(100);

      write(a[i, j]:3);

    end;

    writeln;

  end;

  for i := 1 to M do

  begin

    for k := 1 to N do

    begin

      for j := 1 to N do

        if x < a[i, j] then

        begin

          x := a[i, j];

          x_i := j;

        end;

      b[k] := x;

      a[i, x_i] := -1;

      x := 0;

    end;

    if i mod 2 = 0 then

      for j := 1 to N do

        a[i, j] := b[j]

    else

      for j := 1 to N do

        a[i, j] := b[N+1-j];

  end;

  writeln('Отсортированный массив: ');

  for j := 1 to N do

  begin

    for i := 1 to M do

      write(a[i, j]:3);

    writeln;

  end;

  readln;

end.

 

 


Задача 5

Блок-схема

 

 

 

Программа

program ex5;

var

  pupils : array[1..11] of byte;

  i     : integer;

  avg, min, max, min_i, max_i, total, more_than_avg: byte

  incr  : real;

begin

  randomize;

  for i := 1 to 11 do

  begin

    pupils[i] := 10 + random(20);

    writeln('Учеников в ', i, '-м классе: ', pupils[i]);

  end;

  writeln('-------------------------------');

  min   := pupils[1];

  min_i := 1;

  for i := 1 to 11 do

  begin

    avg := avg + pupils[i];

    if max < pupils[i] then

    begin

      max   := pupils[i];

      max_i := i;

    end;

    if min > pupils[i] then

    begin

      min   := pupils[i];

      min_i := i;

    end;

  end;

  total := avg;

  avg := Round( avg/11 );

  incr := (11*max*100)/total-100;

  for i := 1 to 11 do

    if pupils[i] > avg then

      more_than_avg := more_than_avg + 1;

  writeln('В среднем учеников в классах: ', avg);

  writeln('Максимальное число учеников: ', max, ' в ', max_i, '-м классе');

  writeln('Миниимальное число учеников: ', min, ' в ', min_i, '-м классе');

  writeln('Классов с количеством учвеников больше среднего: ', more_than_avg);

  writeln('Всего учеников: ', total);

  writeln('Если бы во всех классах было учеников как в максимальном: ', incr:8:2);

  readln;

end.

 

 

 


Задача 19

Блок-схема

 

Программа

program ex19;

const

  N = 10;

var

  a : array[1..N] of byte;

  min, max : byte;

  min_i, max_i : byte;

  i : integer;

begin

  randomize;

  for i := 1 to N do

  begin

    a[i] := random(20);

    writeln('a[', i, '] = ', a[i]);

  end;

  i := 1;

  min := a[1];

  min_i := 1;

  while i <= N do

  begin

    if max < a[i] then

    begin

      max   := a[i];

      max_i := i;

   end;

    if min > a[i] then

    begin

      min   := a[i];

      min_i := i;

    end;

    i := i + 2;

  end;

  writeln('Максимальный элемент: ', max, ' в позиции ', max_i);

  writeln(' Минимальный элемент: ', min, ' в позиции ', min_i);

  readln;

end.

 

 


Задача 23

Блок-схема

 

 

 

 

Программа

program ex23;

var

  n : integer;                  

  nums : array[1..4] of byte;   

begin

  writeln('Введите n: ');

  readln(n);

  nums[1] := n div 1000;

  nums[2] := (n - nums[1]*1000) div 100;

  nums[3] := (n - nums[1]*1000 - nums[2]*100) div 10;

  nums[4] := (n - nums[1]*1000 - nums[2]*100 - nums[3]*10);

  if (nums[1] = nums[4]) and (nums[2] = nums[3]) then

      writeln('Число ', n, ' является палиндромом')

    else

      writeln('Число ', n, ' не является палиндромом');

  readln;

end.

 

 


Приложение

Контрольная задача

 

Задача 5

 

 

Задача 19

 

Задача 23

 


Список литературы

  1. Немнюгин С.А., Перколаб Л. Изучаем Turbo Pascal. СПб.: Питер, 2003.
  2. Рапаков Г.Г., Ржеуцкая С.Ю. TURBO PASCAL для студентов и школьников. СПб.: БХВ - Петербург, 2004.
  3. А.Ф.Иванов, О.Н.Потапова, Салихова Г.Л. Методическое пособие по дисциплине «Информатика». Раздел: Основы алгоритмического языка Pascal. Альметьевск: АГНИ, 2007.
  4. Иванов А.Ф., Потапова О.Н., Салихова Г.Л. Информатика. Раздел: Word для начинающих: Лабораторный практикум для студентов вузов. Альметьевск, АлНИ 2003.
  5. Миронова К.В. «Учимся программировать: Turbo Pascal», Киев:  BHV, «Ирина» 2001г.

 


Содержание

Введение. 2

Постановка задачи. 3

Описание основных операторов и используемых модулей. 4

Алфавит и структура программы.. 4

Структура программы.. 5

Структура данных. 7

Массивы.. 9

Сортировка Массивов. 10

Контрольная задача. 14

Задача 5. 17

Задача 19. 20

Задача 23. 23

Приложение. 25

Список литературы.. 27

Содержание. 28

 

 


Ключевые слова -
Похожие статьи:
  • КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: №15 РАЗРАБОТКА В СРЕДЕ TURBO PASCAL ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ СОЗДАНИЕ ОДНОГО МАССИВА ИЗ ДВУХ
  • КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: Разработка в среде Turbo Pascal программы, реализующей транспонирование матрицы
  • КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: №34 РАЗРАБОТКА ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ УПОРЯДОЧИВАНИЕ ЭЛЕМЕНТОВ МАССИВА
  • КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: №21 РАЗРАБОТКА В СРЕДЕ TURBO PASCAL ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ ПОИСК ЧИСЕЛ, ЗАПИСЬ КОТОРЫХ СОВПАДАЕТ С ПОСЛЕДНИМИ ЦИФРАМИ КВАДРАТА
  • КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: №15 РАЗРАБОТКА В СРЕДЕ TURBO PASCAL ПРОГРАММЫ ВСТАВКИ В МАТРИЦУ СТОЛБЦА ИЗ НУЛЕЙ


  • ФНГ ФИМ ФЭА ФЭУ Яндекс.Метрика
    Copyright 2021. Для правильного отображения сайта рекомендуем обновить Ваш браузер до последней версии!