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

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

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

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

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

 СКАЧАТЬ:  34-variant.zip [122,85 Kb] (cкачиваний: 23)

 

 

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

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

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

НА ТЕМУ: №34

РАЗРАБОТКА ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ УПОРЯДОЧИВАНИЕ ЭЛЕМЕНТОВ МАССИВА

 

 

 

Оглавление

Оглавление. 2

Введение. 3

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

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

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

Задача 8. 17

Задача 12. 21

Задача 26. 24

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

Заключение. 28

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

 


Введение

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

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

 


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

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

Задания:

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

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

Пусть дан массив A1, A2, …, An. Упорядочить четные элементы по возрастанию, а нечетные – по убыванию. Создать из упорядоченных элементов массив, в котором на нечетных позициях находятся нечетные элементы, а на четных – четные. Исходный массив сформировать с помощью генератора случайных чисел.

Задача 8

В массиве хранятся данные об атмосферном давлении за месяц. Найти:

–    среднее давление за время наблюдения;

–    максимальное и минимальное значение давления;

–    количество дней, в которые давление превышало задачную величину q;

–    количество дней, в которые давление имело одинаковое значение.

Задача 12

Даны две последовательности по 30 целых чисел в каждой. Написать программу для нахождения наименьшего среди тех чисел первой последовательности, которые не входят во вторую последовательность.

 

Задача 26

Определить количество 5-ти, 20-ти, и 50-ти копеечных монет, необходимых для набора суммы 4 рубля. При условии, что общее количество монет должно быть равно 20.


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

     Правила языка Паскаль предусматривают единую для всех программ форму основной структуры:

Program <Имя программы>;
<Раздел описаний>
Begin
<Тело программы>
End. 

Здесь слова Program, Begin и End являются служебными. Правильное и уместное употребление этих слов является обязательным.

Имя программы выбирается программистом самостоятельно в соответствии с правилами построения идентификаторов.

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

Раздел описаний может состоять из пяти подразделов:
     1. Описание меток (Label).
     2. Описание типов (Type).
     3. Описание констант (Const).
     4. Описание переменных (Var).
Алфавит языка Pascal 

Алфавит языка Паскаль составляют:
     1) буквы латинского алфавита;
     2) арабские цифры;
     3) специальные знаки.

.         конец программы, разделение целой и дробной частей вещественного числа (десятичная точка), разделение полей в переменной типа Record;

,             разделение элементов списков;..    указание диапазона;

:             используется в составе оператора присваивания, а также для указания формата вывода в операторе Writeln;

;             отделяет один раздел программы от другого, разделяет операторы;

'             используется для ограничения строковых констант;

-+*/()     арифметические знаки (используются по своему назначению);

< >         знаки отношений;

=            используется в составе оператора присваивания, в разделах описаний констант и типов, используется как знак отношения (равно);

{ }          ограничение комментариев в программе;

[ ]           заключают в себе индексы элементов массивов;

_            символ подчеркивания используется также как любая буква, например, в идентификаторах - вместо пробела;

$            обозначение директивы компилятора, обозначение шестнадцатеричного числа.

Идентификаторы

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

–    идентификатор должен быть уникальным, то есть одним и тем же именем разные объекты не могут быть названы;

–    идентификатор имеет ограничение по длине (зависит от конкретной реализации языка на компьютере);

–    идентификатор может состоять только из символов латинского алфавита, цифр и знака подчеркивания ("_");

–    идентификатор не может начинаться с цифры.

Раздел описания констант

В этом разделе производится присваивание идентификаторам констант постоянных значений. Раздел начинается  зарезервированным словом const, за которым следует ряд выражений, отделяющихся друг от друга точкой с запятой.

Формат:

const <идентификатор> = <значение>;

После того как константа определена, ей нельзя присвоить какое-либо другое значение. Следует обратить внимание на то, что при определении констант применяется знак = (равенства), а не := (присваивание). 

Раздел описания переменных. Типы

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

К базовым типам относятся:

–    Integer – тип целых чисел;

–    Longint – тип "длинных" целых чисел;

–    Real – тип действительных (вещественных) чисел (то есть - с дробной частью);

–    Byte – тип неотрицательных целых чисел от 0 до 255;

–    Word – тип неотрицательных целых чисел от 0 до 65535;

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

а также некоторые другие типы, как string и char.

Раздел описания переменных начинается зарезервированным словом var, за которым следует список переменных, двоеточие и тип данных. 

Формат:

   var < идентификатор 1, идентификатор 2,…>  :  <тип>;

Основные операторы и функции

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

Самым простым действием над переменной является занесение в нее величины соответствующего типа.

Формат:      <Имя переменной> := <Выражение>;

Функция random

Возвращает случайное число, удовлетворяющее условию 0<=x<=диапазон. Тип аргумента и результата – целочисленный. Если необходимы случайные числа из диапазона a<=x<b - используется выражение random(b-a)+a.

Если параметр диапазон не указан, то random возвращает число в диапазоне 0<=x<1. Тип  результата – вещественный. Если необходимы вещественные числа из диапазона a<=x<b, нужно задать его при помощи  random*b+a.

Перед первым обращением к функции random необходимо с помощью вызова процедуры Randomize инициализировать программный генератор случайных чисел, иначе при каждом запуске программы датчик будет выдавать одни и те же числа.

Процедура вывода Write.

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

Формат:

Write (а1, а2, а3, …,аn) ; Writeln;

Writeln (а1, а2, а3, …,аn) ;

где а1, а2, а3, …,аn – выражение типа integer, byte, real, char, boolean.

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

Write(y1:n:m, y2:n:m, …);

Writeln(y1:n:m, y2:n:m, …);

где y1, y2,… - выражение, переменная или константа;

 n – определяет общую ширину поля вывода;

 m – определяет место под дробную часть.

Если заданное n мало, при выводе ширина поля будет увеличена, если мало m – то производится округление.

Кроме того, в операторах вывода можно задавать количество пробелов. Для этого необходимо записать оператор вывода в виде:

Write (‘ ‘ : q);

где q — константа целого типа, указывающая число пробелов.

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

Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой и ограниченную операторными скобками 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 оператор;

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

 

Массив.

Массив - это упорядоченная последовательность величин, имеющих один и тот же тип и объединённых одним именем

Формат:

<имя> : array[n1..n2] of  <тип>;

Здесь величины n1 и n2 (индексы строки) являются целочисленными константами.

Пример описания двумерных массивов в разделе констант:

Const i=5; Var S: array[ 1..i,] of integer;

 

 


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

Блок-схема

 

 

Программа

program prk;

uses crt;

const N = 10;

var

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

  b : array[1..2*N] of byte;

  i, j, k: integer;

  max, imax :integer;

  t: byte;

begin

  ClrScr;

  randomize;

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

  for i := 1 to N do

  begin

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

    write(a[i]:3);

  end;

  writeln;

  for i := 1 to N*2 do

  begin

    if i mod 2 <> 0  then

      for j := 1 to N do

        if a[j] mod 2 <> 0 then

          if a[j] > max then

          begin

            max := a[j];

            imax := j;

          end;

    if i mod 2 = 0  then

      for j := 1 to N do

        if a[j] mod 2 = 0 then

          if a[j] > max then

          begin

            max := a[j];

            imax := j;

          end;

    b[i] := max;

    max := 0;

    a[imax] := 0;

  end;

  writeln(Результат (0-пустые элементы):');

  for i := 1 to 2*N do

    write(b[i]:3);

  readln;

end.

 

Задача 8

Блок-схема

 

 

Программа

program pr8;

uses crt;

var

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

  i,j,q : integer;

  sr : real;

  min, max : integer; { Минимальное и максимальное }

  bq, od : byte;   { Дней с давлением больше q и кол-во одинаковых }

  f : boolean;

begin

  ClrScr;

  randomize;

  for i := 1 to 31 do

  begin

    a[i] := random(20)+750;

    write(a[i]:4);

  end;

  writeln;

  write('Введите q: ');

  readln(q);

  min := a[1];

  for i := 1 to 31 do

  begin

    sr := sr + a[i];

    if a[i] > max then max := a[i];

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

    if a[i] > q then bq := bq + 1;

  end;

  sr := sr / 31;

  f := true;

  for i := 1 to 31-1 do

  begin

    for j:= i+1 to 31 do

    begin

      if a[i]<>0 then

        if a[i] = a[j] then

        begin

          if f = true then

          begin

            od := od + 2;

            f := false;

          end

          else od := od + 1;

          a[j] := 0;

        end;

    end;

    f := true;

    a[i]:=0;

  end;

  writeln('Среднее: ', sr:4:2);

  writeln('Минимальное: ', min);

  writeln('Максимальное: ', max);

  writeln('Больше q: ', bq);

  writeln('Одинаковых: ', od);

  readln;

end.

 


Задача 12

Блок-схема

 

 


Программа

program pr12;

uses Crt;

var

  a, b : array[1..30] of byte;

  i, j, min : integer;

  e : boolean;

begin

  ClrScr;

  Randomize;

  writeln('a');

  for i := 1 to 30 do

  begin

    a[i] := Random(100);

    write(a[i], ',');

  end;

  writeln;

  writeln('b');

  for i := 1 to 30 do

  begin

    b[i] := Random(100);

    write(b[i], ',');

  end;

  writeln;

  min := a[1];

  for i := 1 to 30 do

  begin

    if a[i] < min then

    begin

      e := false;

      for j := 1 to 30 do

        if a[i] = b[j] then

        begin

          e := true;

          break;

        end;

      if e = false then min := a[i];

    end;

  end;

  writeln('min:',min);

  readln;

end.

 

 

 


Задача 26

Блок-схема

 

 

 

Программа

program pr26;

uses crt;

var

  i,j,k: integer;

begin

  ClrScr;

  for i := 0 to 8 do        { Цикл для 50коп: 4.00 / 0.50 = 8  }

    for j := 0 to 20 do     { Цикл для 20коп: 4.00 / 0.20 = 20 }

      for k := 0 to 80 do   { Цикл для 5коп: 4.00 / 0.05 = 80  }

        if ( i*50 + j*20 + k*5 ) = 400 then

          if (i+j+k)=20 then

            writeln(i, ' 50-копеечных, ', j, ' 20-копеечных, ', k, ' 5-копеечных.');

  readln;

end.

 

 

 

 


Приложение

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

 

Задача 8

 

 

Задача 12

 

Задача 26

 

 


Заключение

Были составлены алгоритмы, выполняющие поставленные задачи, реализованные в графическом виде (блок-схема), а также составлены программы на языке Pascal. Примеры работы программ приведены в приложении.


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

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

 

 


Ключевые слова -


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