metod_15.03.04_atppp_oaip_up_2016 (Методические документы), страница 10
Описание файла
Файл "metod_15.03.04_atppp_oaip_up_2016" внутри архива находится в папке "Методические документы". PDF-файл из архива "Методические документы", который расположен в категории "". Всё это находится в предмете "абитуриентам" из 1 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "абитуриентам" в общих файлах.
Просмотр PDF-файла онлайн
Текст 10 страницы из PDF
Однако это совсем не обязательно.Пример: Var B: Array [1582..1994] of Integer;Var C: Array [-754..-1] of Integer;(это, например, население за какие-то годы нашей эры и до нашей эры).Массив латинских букв: (можно посчитать частоту появления в тексте):Var Lat: Array [‘A’..’Z’] of Integer;53Массив t0C воздуха на островах:Type Остров = (Gaiti, Sumatra, Taimir);Var T: Array [Остров] of Real;Поскольку тип индекса не может быть стандартным целым илидействительным типом, нельзя делать следующие описания массива:Var А: Array [5] of Real;Var А: Array[Integer] of Real;Пример:VarMassiv: Array [1..N] of Real;Year: Array [янв..дек] of Integer;Если несколько массивов имеют одинаковый тип индексов и одинаковыйбазовый тип, то допускается в описание объединять массивы в список:Var А, В, С: Array[1..50] of Real;Здесь объявлено списком три массива действительных чисел, каждый из которыхсодержит по 50 элементов:А[1], A[2],… A[50].B[1], B[2],… B[50].C[1], C[2],… C[50].В качестве индекса может использоваться.
выражение, частным случаемкоторого является константа или переменная. Элемент массива можно называтьпеременной с индексом. В отличие от нее переменная без индекса называетсяпростой переменной.Элементы массива записываются в разделе операторов как идентификатор синдексом в квадратных скобках.B[5]:=B[3]-1;Sum:=Sum-C[K];P1:=A[2*3+1];Для ввода и вывода числовых значений элементов массива используютсяциклы.Пример:For I:=1 to 9 doRead(A[I]);Это ввод 9-ти значений элементов массива А.For I:=1 to 9 doWriteln(A[I]);Это их вывод.Пример: Вычислить сумму 15-ти целых чисел.Program Sum;Var X: Array [1..15] of Integer;I: 1..15;Sum: Integer;BeginSum:=0;For I:=1 to 15 doBegin54Read(X[I]);Sum:=Sum+X[I];End;End.В языке программирования Паскаль помимо явного описания массивов вразделе переменных есть другая форма описания, состоящая из двух этапов.Сначала в разделе описания типов Type указывается тип массива, затем в разделеописания переменных Var перечисляются массивы, относящиеся к донному типу.Type имя типа = Array [тип индекса] of тип элементов массива;Var имя массива: имя типа;Пример: Программа с двумя процедурами: одна – для ввода элементов массива,другая для вычисления суммы и произведения элементов.Program TI4;Type Massiv = Array [1..20] of Real;Var A, B: Massiv;Sum, Pr: Real;Procedure Vvod (N:Integer; Var X:Massiv);Var I: Integer;BeginWriteln(‘Ввод’);For I:=1 to N do Read(X[I]);End;Procedure Summa (N:Integer; Var X:Massiv; Var Sum, Pr: Real);Var I: Integer;BeginSum:= 0;Pr:=1;For I:=1 to N doBeginSum:=Sum+X[I];Pr:=Pr*X[I];End;End;BeginVvod(8,A); (*вызов процедуры*)Summa(8,A,Sum,Pr); (*вызов процедуры*)Writeln (‘Sum=’,Sum:7:2,’ ’:3,’Pr=’,Pr);Writeln;Vvod(15,B);Summa(15,B,Sum,Pr);Writeln (‘Sum=’,Sum:7:2,’ ’:3,’Pr=’,Pr);End.В основной программе описан тип массива длинной 20 элементов, а реальноиспользуются массивы А (8 элементов) и В(15 элементов).Пример: Расположить элементы заданного действительного массива в порядкеубывания: 1 2 3 4 4 3 2 155Program Rangir;Const N=10;Var A: Array [1..N] of Real;I, K: Integer; R: Real;BeginWriteln(‘Ввод’);For I:=1 to N do Read (A[I]);For K:=1 to N doFor I:=1 to N-K doIf A[I]<A[I+1] thenBeginR:= A[I];A[I]:= A[I+1];A[I+1]:=R;End;For I:=1 to N do Write (A[I]);End.K - номер просмотра строки (всего N-1 просмотров)I - номер сравнение элементов в просмотре (N-K сравнений).Пример: Массив R состоит из 10-ти элементов действительного типа.Type Mas = Array [1..10] of Real;Var R: Mas;Если в программе несколько таких массивов, то изменится лишь разделописания переменных:Var R, A, B, C: Mas;В разделе операторов программы используются массивы R, A, B, C.
Типмассива Mas введен формально только в разделе описаний и нигде в программе неуказывается и не обрабатывается.Пример: Найти наибольшее из 10-ти заданных целых чисел.Program Max;Const N=10;Type Massiv = Array [1..N] of Integer;Var K: Massiv;Max, I: Integer;BeginWriteln(‘Ввод’);For I:=1 to N do Read (K[I]);Max:=K[1];For I:=2 to N doIf K[I]>Max then Max:=K[I];Writeln;Write (‘Max=’, Max:4);End.Здесь 2 независимых цикла:1-ый – для ввода значений массива;2-ой – для нахождения максимального элемента.56Сначала первый элемент массива K[1] обозначается именем Мах. Затем каждыйпоследующий элемент сравнивается со значением Мах, и если он оказываетсябольше, то получает имя Мах.Пример: Составить программу определения минимального и максимальногоэлементов заданного массива.Program Minmax;Const N=9; (*число элементов*)Type Massiv = Array [1..N] of Real;Var A: Massiv; (*массив элементов*)I: Integer; (*параметр цикла*)Max, Min: Real; (*максимальный и минимальный элементы*)Procedure Maxmin (K: Integer; Var X: Massiv; Var Max, Min: Real);Var J: Integer;BeginMax:=X[1];Min:=X[1];For J:=2 to K doBeginIf X[J] > Max then Max:= X[J];If X[J] < Min then Min:= X[J];End;End;BeginWriteln (‘Ввод массива’);For I:=1 to N do Read (A[I]);Maxmin (N, A, Max, Min); (*вызов процедуры*)Writeln (‘макс.
элемент=’, Max:4:1);Writeln (‘мин. элемент=’, Min:4:1);End.В процедуре Maxmin определяются максимальный и минимальный элементымассива. Переменная J и формальные параметры процедуры K, X, Max, Minявляются локальными. В основной программе происходит ввод значений массива,вызов процедуры и вывод результатов. Константа N, тип Massiv, а такжепеременные A, I, Max и Min являются глобальными.Пример: Дан массив действительных чисел {Ai}, где i=1,2,3,4,..M. Пусть M = 15.Вычислить сумму элементов с 1-го по 12-ый и сумму элементов с 8-го по 15-ый.Затем найти произведение этих сумм.Program Pr2;Const M=15;Var A: Array [1..M] of Real;P: Real; (*произведение сумм*)J: Integer; (*параметр цикла*)Function Summa (N, K: Integer): Real;Var I: Integer;S: Real;Begin57S:=0;For I:=N to K do S:=S+A[I];Summa:=S;End;BeginWriteln (‘Ввод массива’);For J:=1 to M do Read (A[J]);P:=Summa (1,12)* Summa(8,15);Writeln(‘произведение=’,P:6:3);End.Пример: Дан массив (Х1,Х2,…Х100).
Записать отдельно положительные иотрицательные элементы.Program Sort;Const Nmax=100;Var X,Pol,Otr: Array [1..Nmax] of Real;I,N,K: Integer;BeginN:=0; K:=0;For I:=1 to Nmax doBeginRead (X[I]);If X[I] >0 thenBeginK:=K+1;Pol[K]:=X[I];EndElseBeginN:=N+1;Otr[N]:=X[I];End;End;For I:=1 to K do Write (Pol[I]);Writeln;For I:=1 to N do Write (Otr[I]);End.Пример: Вычислить среднее арифметическое массива D из N элементов (N500).Program Sred;Const NM=500;Var D: Array [1..NM] of Real;I,N,Nvar: Integer;Sum, Srd: Real;BeginSum:=0;Writeln (‘Nvar=?’);Readln(Nvar);58Writeln (‘Ввод массива’);For I:= 1 to Nvar doBeginRead (D[I]);Sum:= Sum + D[I];End;Srd:=Sum/Nvar;Writeln(‘Srd=’,srd);End.Пример: Вычислить n!Program Nfact;Var NF, K, N:Integer;BeginWriteln(‘N=?’);Readln (N);NF:=1;For K:=1 to N do NF:=NF*K;Writeln(‘NF=’,NF);End.Пример: Найти наибольший элемент массива (b1,b2,…b100) и его №.Program Max;Const NMax=100;Var B: Array [1..NMax] of Real;I,Imax: Integer;Bmax: Real;BeginWriteln (‘Ввод массива’);For I:=1 to NMax do Read (B[I]);Bmax:=b[1]; Imax:=1;For I:=2 to NMax doIf B[I]>Bmax thenBeginBmax:=B[I];Imax:=I;End;Writeln (‘Bmax=’, Bmax, ’Imax=’, Imax);End.Пример: Найти скалярное произведение двух векторов:X=(x1,x2,…xn)nY=(y1,y2,…yn) (X,Y)= xiyii=1Program Scal;Const N=3;Type Vektor = Array [1..N] of Real;Var X, Y: Vektor;I: Integer;59S: Real;BeginS:=0;Writeln (‘Ввести X,Y’);For I:=1 to N doBeginRead(X[I],Y[I]);S:= S+ X[I]*Y[I];End;Writeln(‘Scal=’,S);End.Пример: Перемножить два вектора:X=(x1,x2,x3)_ _ _Y=(y1,y2,y3)Z=X*YProgram V;Type Vektor = Array [1..3] of Real;Var X, Y, Z: Vektor;I: Integer;BeginWriteln (‘Ввести X,Y’);For I:=1 to 3 doBeginRead (X[I],Y[I]);Z[I]:= X[I]*Y[I];End;Writeln (‘Вектор Z’);For I:=1 to 3 do Write (Z[I]);End.(x1, x2, x3) * (y1, y2, y3) = (x1y1, x2y2, x3y3)6.1.1.
Алгоритмы сортировки массивовПроблема упорядочивания данных с практической точки зрения:достоинства и недостатки пяти различных методов сортировки.Сортировка применяется во всех без исключения областях программирования,будь то базы данных или математические программы. Практически каждыйалгоритм сортировки можно разбить на три части:- сравнение, определяющее упорядоченность пары элементов;- перестановку, меняющую местами пару элементов;- собственно сортирующий алгоритм, который осуществляет сравнение иперестановку элементов до тех пор, сока все элементы множества не будутупорядочены.Подобными свойствами обладают и те алгоритмы сортировки, которыерассмотрены ниже.
Они отобраны из множества алгоритмов, потому что, вопервых, наиболее часто используются, а во-вторых, потому что большинствоостальных алгоритмов является различными модификациями описанных здесь.1. Метод пузырька (метод обменной сортировки с выбором)60Идея этого метода отражена в его названии.