ФЭА / Информатика / КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: №34 РАЗРАБОТКА ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ УПОРЯДОЧИВАНИЕ ЭЛЕМЕНТОВ МАССИВА
(автор - student, добавлено - 15-05-2014, 14:57)
СКАЧАТЬ:
КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК 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 <Имя программы>; Здесь слова Program, Begin и End являются служебными. Правильное и уместное употребление этих слов является обязательным. Имя программы выбирается программистом самостоятельно в соответствии с правилами построения идентификаторов. Все объекты, не являющиеся зарезервированными в Паскале, наличие которых обусловлено инициативой программиста, перед первым использованием в программе должны быть описаны. Раздел описаний может состоять из пяти подразделов: Алфавит языка Паскаль составляют: . конец программы, разделение целой и дробной частей вещественного числа (десятичная точка), разделение полей в переменной типа 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. Примеры работы программ приведены в приложении.
Список литературы
Похожие статьи:
|
|