Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 13

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 13 страницаОсновы программирования (947332) страница 132013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 13)

Для их представления используютструктурные типы данных. В Borland Pascal определены следующие структурные типыданных:• массивы - для представления однотипных или табличных данных;• строки-для представления символьной (текстовой) информации;• множества - для представления абстрактных математических множеств;• записи - для представления таблиц с данными различных типов.4.1. МассивыМассив - это упорядоченная совокупность однотипных данных. Каждо­му элементу массива соответствует один или несколько индексов^ определя­ющих положение элемента в массиве.

Индексы образуют упорядоченные по­следовательности. Синтаксическая диаграмма объявления массива представ­лена на рис. 4.1.Тип индекса определяет его допустимые значения. В качестве типа ин­декса может быть указан любой порядковый тип (boolean, char, integer, пере­числяемый тип, а также диапазоны этих типов), кроме типа longint и его про­изводных.В зависимости от количества типов индексов различают: одномерные,двумерные, трехмерные и п-мерные массивы.

Двумерные массивы обычноназывают матрицами, считая первый индекс - номером строки, а второй номером столбца.<^>0гС&ОЧНЯТипэлементаРис. 4.1. Синтаксическая диаграмма <Объявление массива>77Часть I. Основы алгоритмизации и процедурное программированиеГЗ"0-8 112 54АГА" NО0D1Rт-5-4-3-50"ii'l[Т]В 46 83С 54 0 "93]255бРис. 4.2. Одномерный массив из 5 целых чисел (л), одномерный массив из 256символов (б), матрица из 9 чисел (в)Тип элементов массива - любой допустимый в Borland Pascal тип (в томчисле и массив), кроме файла..Объявление переменных типа массив выполняется двумя способами:• в операторе объявления переменных, например:Var a:array[L.10] of integer; {массив из 5 целых чисел, см.

рис. 4.2, а)Ь: array[byte] of char;{массив из 256 символов, индекс элементамассива изменяется от О до 255, см. рис. 4.2, 6}с:аггау['А\, 'C\-5„'3J of byte; {матрица из 9 чисел, см. рис. 4.2, в}d:array[*А\. V*] of array[-5..-3] of byte; {матрица из 9 чисел, поструктуре эквивалентная предыдущей}• с предварительным объявлением типа, например:Туре mas =array[l.

JO] of integer; {объявляем тип}{объявляем переменную}Var a:mas;Ограничения на количество индексов в Borland Pascal нет. Однако сум­марная длина массива не должна превышать 65537 байт.Значения элементов массива в программе можно определить тремя спо­собами. Во-первых, массив может быть инициализирован с использованиемтипизированных констант или просто присваиванием значений элементам.Во-вторых, элементы массива могут быть введены с клавиатуры или из фай­ла (см. главу 6). В-третьих, элементы массива могут быть вычислены,например, сгенерированы с использованием датчика случайных чисел, рас­считаны по заданным формулам и закономерностям, а также скопированы издругого массива.Инициализация массивов.

Для объявления инициализированных мас­сивов в Borland Pascal используют типизированные константы. При этом со­ответствующие значения указывают в скобках через запятую. Значения эле­ментов многомерных массивов перечисляют в порядке возрастания индексов784, Структурные типы данныхсправа налево, заключая в скобки каждый подмассив. Для матриц такой по­рядок соответствует построчному указанию значений. Например:Const а: arrayfl..5Jo/real = (0,-3,6,7.8,3.789,5.0);b: arrayfboolean, L.5,]ofreal = ((0,-3.6,7.8,3.789,5.0),(6.1,0,-4.56,8.9,3.0));{массив будет инициализирован следующим образом:Ь false,! " О' bfaise,2= "3.6, bfaise,3 = 7.8, ..., b ^^ue,! = 6.1, и Т.д.}c:array[1..3,0..1,-2..1]ofbyte = (((3,6,9,6),(0,4,3,9)),((5,7,3,1),(45,8,0,2)),((5,9,2,3),(1,5,8,4)));...Операции над массивами.

Над массивом в целом определена единст­венная операция ~ операция присваивания.Присваивание массивов заключается в копировании элементов одногомассива в другой. Эту операцию можно выполнять только над массивами од­ного типа.Массивы считаются совпадающими по типу, если они объявлены череззапятую в одной строке, например:Var а, Ь: array[boolean] of real;... a:-b;...или, если вначале объявлен тип массива, а затем массивы этого типа:Туре mas =аггау[boolean] of real;Const a:mas=(3.6, -5.1);Var b: mas;... b-a;...Доступ к элементам массива.

Работа с массивом, как правило, сводитсяк действиям над его элементами. Для обращения к конкретному элементумассива необходимо указать имя массива и значения индексов элемента вквадратных скобках через запятую, например:Vara:array[char,boolean]ofreal; {объявляем матрицу}... a[^A\true]:=5.1;... {присваиваем значение элементу адд^ц^}Значения индексов можно указать непосредственно литералом, напри­мер а[3], или косвенно, указав идентификатор переменной, которая содержит,значение индекса, например a[i] (рис.

4.3).Косвенное задание индексов позволяет реализовывать последователь­ную обработку элементов массивов. Причем, поскольку интервал измененияиндекса определен при объявлении массива, для этого обычно применяют79Часть I. Основы алгоритмизации и процедурное программированиеа 121 3.5 -5.13048.45-0.364.9а13.52-5.130458.4 |-0.361 ^^iа[3]a[i] -^Ъ\Рис. 4.3. Прямая (а) и косвенная (б) адресация элементов массивациклы с заданным количеством повторений. Параметр же цикла используютв качестве переменной косвенной адресации массива, например:Var a:array[L.6] of integer;...for /V=7 to б do a[i]:=i;... {при i=l a| присваивается 1,при i=2 a2 присваивается 2при i=3 аз присваивается З'и т.д.}Количество переменных, необходимых для косвенной адресации масси­вов, совпадает с размерностью массива.

Так, для работы с матрицами ис­пользуют две переменные, хранящие индексы: одну-для хранения номеровстрок, а вторую - номеров столбцов.Примечание, Из многомерных массивов допускается выделять подмассивы, отбрасывиндексы, записанные справа, и оставляя индексы, определяющие данный подмассив. Так, изматрицы можно выделить строку, но нельзя - столбец, например:Туре mas=array[boolean] of real; {массив из двух вещественных чисел}Const a:array[L.2]ofmas^((3.6,-5,l),(7.0,-4.2)); {матрица из четырехвещественных чисел}Var b:mas;Begin b:=a[IJ;... {в массив b скопирована первая строка матрицы а}Ввод-вывод массивов.

Ввод-вывод массивов выполняют поэлементно,используя циклы с заданным числом повторений, например:Var a:array[L.5] of real;Beginfor i:-l to 5 do Read(afiJ); {осуществляем ввод массива}ReadLn;{очищаем буфер ввода, чтобы далее значения вводилисьсо следующей строки (см. параграф 2.6)}Значения элементов массива вводят в порядке обращения к ним из цик­ла, например для цикла, показанного выше: а|, а2, аз, а4, аз- Эти значения мо­гут задаваться в одной строке через пробел или с нажатием клавиши Enterпосле ввода одного или нескольких чисел.804. Структурные типы данныхНапример:^) 2_-6_8_56_34 J - символ «J» означает нажатие клавиши Enter;6)2 J-6 J8 J56 J34 JПри выполнении операций ввода-вывода матриц и массивов большойразмерности целесообразно вводить и выводить значения построчно.Например:Var a:arrayfl..5, LJ] of real; {матрица a из 5 строк по 7 элементов}Beginfor /;=7 to 5 do{цикл ввода строк массива: aj, а2, аз, а4, аз)beginforj:-l to 7 do{цикл ввода элементов i-й строки:}Read(a[iyj]);{aj j , aj 2, a,-3, aj 4, aj 5, a^ 5, aj 7}ReadLn; {очищаем буфер ввода}end;...Пример 4.L Разработать программу определения максимального эле­мента массива А(5) и его номера.Вначале элементы массива необходимо ввести.

Для выполнения этойоперации используем цикл с заданным числом повторений.Поиск максимального элемента выполним следующим образом. Запом­ним в качестве максимального, т. е. запишем в атах первый элемент и зафик­сируем в imax его номер. Затем будем последовательно просматривать эле­менты массива, сравнивая их со значением, хранящимся в атах. Если оче­редной элемент больше значения в атах, то сохраняем его в качестве макси­мального в атах и запоминаем его номер в imax (рис. 4.4). Для организациипоследовательного просмотра используем цикл с заданным числом повторе­ний, изменяя переменную цикла от 2 до 5, так как первый элемент мы ужеучли.

Просмотрев все элементы массива, найдем максимальный элемент иего номер. После этого необходимо вывести на экран исходный массив, мак­симальный элемент и его номер.На рис. 4.5 представлена схема алгоритма программы. Поскольку опе­рации ввода-вывода массивов выполняют однотипно, на схеме алгоритма со­ответствующих циклов, так же как и запросов на ввод данных, обычно не по­казывают. Вместо этого в схему вставляют блок операции ввода/вывода, в81Часть 1.

Основы алгоритмизации и процедурное программированиеатах|3.5|imaxш1——!121 3.5 -5.13048.45-0.3amax8.4maxiL "J*aUU123.5 -5.13048.45-0.3iLiJбРис. 4.4, Поиск максимального элемента массива:а - состояние на момент проверки четвертого элемента массива; б - изменение текущего значениямаксимального элемента и его номера по результатам проверки четвертого элемента массивакотором указано имя массива и количество элементов, участвующих воперации.

Ниже приведен текст программы.Рис. 4.5. Схема алгоритмапоиска максимальногоэлемента массива82Program ex;Var a:array[l.,5] of real;amax:real;/, imax:byte;Begin{запрос на ввод массива}WriteLn(*Введите 5 чисел: *);{ввод элементов массива}for /.-=7 to 5 do Read(a[i]);ReadLn;{поиск максимального элемента}amax:=aflj;imax:-J;for i:=2 to 5 doifa[i]>amax thenbeginamax:=a[ij;imax.'^i;end;{вывод массива}WriteLnCИсходные данные: *);for /.•=; to 5 do Write(a[i]:5:2);WriteLn;{вывод результата}WriteLnCМаксимальный элемент равен \атах:5:2, \ его номер равен \ imax);End4. Структурные типы данных3.1 5.7 8.1 -0.7 3.64.3 6.8 -0.3 5.7 9.23 6.4 2.7 5.5 -5.3 2.74 5.1 -2.7 7.71.7 5.1123412а19.825.7 112.016.9бРис.

4.6. Исходные данные (а) и результат (б) примера 4.2Пример 4.2. Разработать программу вычисления сумм элементов строкматрицы А(4,5). Полученные суммы записать в новый массив В.Итак, нам задана матрица, имеющая 4 строки и 5 столбцов (рис. 4.6, а).Требуется сформировать одномерный массив В из четырех элементов, кото­рый будет содержать суммы элементов строк (рис.

4.6, б). Распечатать ре­зультат лучше так, чтобы суммы были выведены после соответствующейстроки матрицы, как на рис. 4.6.Программа должна начинаться со ввода мат­Г Начало Jрицы. Основной цикл программы - цикл по стро­кам. Переменная цикла i в нем будет изменяться от/Ввод71 до 4. Дпя каждой i-й строки в этом цикле долж­/А(4,5) /но выполняться суммирование элементов. Сумми­рование будем осуществлять методом накопления,=1,4,1для чего перед суммированием обнулим соответ­j1jствующий i-й элемент массива В, а затем в циклевыполним добавление элементов строки.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6310
Авторов
на СтудИзбе
312
Средний доход
с одного платного файла
Обучение Подробнее