Скачать 0.78 Mb.
|
Описание массивов. Переменная регулярного типа описывается в разделе описания переменных в следующей форме: Var <идентификатор> : Array [<тип индекса>] Of <тип компонент> Чаще всего в качестве типа индекса употребляется интервальный тип. Например, указанный в задании одномерный массив среднемесячных температур можно описать следующим образом: Var Т : Array [1..12] Of Real; Объем памяти, выделяемый под массивы, в ТурбоПаскале составляет 64 Кбайт. По аналогии с математикой одномерные числовые массивы часто называют векторами, а двухмерные — матрицами. В Паскале не допускается употребление динамических массивов, т.е. массивов, размер которых определяется в процессе выполнения программы. Изменение размеров массива происходит через изменение в тексте программы и повторную компиляцию. Для упрощения таких изменений индексные параметры определяют в разделе констант: Const Imax = 10; Jmax = 20; Var Mas : Array[1..Imax, l..Jmax] Of Integer; В этом случае для изменения размеров массива Mas и всех операторов программы, связанных с этими размерами, достаточно отредактировать только одну строку в программе — раздел констант. Обработка массивов в программах производится поэлементно. Например, ввод значений элементов массива может производиться в цикле следующим образом: в одномерный массив For I := 1 То 12 Do ReadLn(Т[I]); в двумерный массив For I := 1 To IMax Do For J := 1 To JMax Do ReadLn(Mas[I, J]); Здесь каждое следующее значение будет вводиться с новой строки. Для построчного ввода вместо оператора ReadLn используется оператор Read. Аналогично в цикле по индексной переменной организуется вывод значений массива. Например: For I := 1 То 12 Do Write(T[I] : 8 : 4); Порядок выполнения задания к лабораторной работе № 6
Program Example_1; Const N = 12; Type Vec = Array [1..N] Of Real; Var T, Dt : Vec; St : Real; I : Integer; Begin { ---Ввод исходных данных---} WriteLn('Введите таблицу температур'); For I := 1 То N Do Begin Write(I : 2,':'); ReadLn(T[I]) End; {---Вычисление средней температуры---} St:=0; For I:=1 To N Do St:=St+T[I]; St:=St/N; {---Вычисление таблицы отклонений от среднего---} For I:=1 То N Do Dt[I]:=St—T[I]; {---Вывод результатов---} WriteLn('Средняя температура равна ', St:6:2); WriteLn; WriteLn('Отклонения от средней температуры:'); For I := 1 То N Do WriteLn(I:1,':',Dt[I]:6:2) End. По такой программе можно рассчитать среднее значение и вектор отклонений от среднего значения для любого одномерного вещественного массива. Настройка размера массива осуществляется только редактированием раздела констант. Лабораторная работа № 7П Рекурсивные подпрограммы в ТурбоПаскале. Задание к лабораторной работе № 7П Набрать и отладить программу вычисления суммы элементов линейного массива. При решении использовать рекурсивную форму алгоритма в соответствии с утверждением: сумма равна нулю, если число элементов равно нулю, и равна сумме всех предыдущих элементов плюс последний, если число элементов не равно нулю. Краткие теоретические сведения В рекурсивном определении обязательно должно присутствовать ограничение, т.е. граничное условие, при выходе на которое дальнейшая инициация рекурсивных обращений прекращается. Приведем примеры рекурсивных определений некоторых математических функций. Классическим примером рекурсии является определение факториала. С одной стороны, факториал определяется в виде: n! = = 1 ∙ 2 ∙ 3 ... n, а с другой стороны, его можно определить следующим образом: Граничным в данном случае является условие n < 1. Рекурсивное определение функции К(п), возвращающей количество цифр в заданном натуральном числе n, имеет вид Обращение к рекурсивной подпрограмме ничем не отличается от вызова любой другой подпрограммы. При этом при каждом новом рекурсивном обращении в памяти создается новая копия подпрограммы со всеми локальными переменными. Такие копии будут создаваться до момента выхода на граничное условие. Очевидно, что в случае отсутствия граничного условия, неограниченный рост числа таких копий приведет к аварийному завершению программы, т.е. переполнения стека. Порождение все новых копий рекурсивной подпрограммы до выхода на граничное условие называется рекурсивным спуском. Максимальное число копий рекурсивной подпрограммы, одно- вренно находящихся в памяти компьютера, называется глубиной рекурсии. Завершение работы рекурсивных подпрограмм, вплоть до самой первой, инициировавшей рекурсивные вызовы, называется рекурсивным подъемом. Выполнение действий в рекурсивной подпрограмме может быть организовано одним из следующих способов:
Здесь Р — рекурсивная подпрограмма. Действия в рекурсивной подпрограмме могут выполняться либо на одном из этапов рекурсивного обращения, либо на обоих сразу. Способ организации действий диктуется логикой разрабатываемого алгоритма. Порядок выполнения задания к лабораторной работе № 7П
Program SUM_LIN_MAS; Type LinMas = Array[1..100] Of Integer; Var A : LinMas; I, N : Byte; {Рекурсивная функция} Function Summa(N : Byte; A : LinMas): Integer; Begin If N = 0 Then Summa := 0 Else Summa := A[N] + Summa(N - 1, A) End; {Основная программа} Begin Write('Количество элементов массива? '); ReadLn(N); Randomize; For I := 1 To N Do Begin A[I] := -10 + Random(21); Write(A[I] : 4) End; WriteLn; WriteLn('Сумма: ', Summa(N, A)) End.
Лабораторная работа № 8П Множества в ТурбоПаскале. Задание к лабораторной работе № 8П
Краткие теоретические сведения Множеством называется совокупность однотипных элементов, рассматриваемых как единое целое. В Паскале могут быть только конечные множества. В ТурбоПаскале множество может содержать от 0 до 255 элементов. В отличие от массива элементы множества не пронумерованы и не упорядочены. Каждый отдельный элемент множества не идентифицируется и с ним нельзя выполнять какие-либо действия. Действия могут выполняться только над множеством в целом. Тип элементов множества называется базовым типом. Базовым может быть любой скалярный тип за исключением типа Real. Конструктор множества. Конкретные значения множества задаются с помощью конструктора множества, представляющего собой список элементов, заключенный в квадратные скобки. Сами элементы могут быть либо константами, либо выражениями базового типа. Приведем несколько примеров задания множеств с помощью конструктора: [3, 4, 7, 9, 12] — множество из пяти целых чисел; [1. .100] — множество целых чисел от 1 до 100; ['a', ' b', 'с'] — множество, содержащее три литеры а, Ь, с; ['а'..'z','?','!']— множество, содержащее все строчные латинские буквы, а также знаки ? и !. Символом «[]» обозначают пустое множество, т.е. множество, не содержащее никаких элементов. Не имеет значения порядок записи элементов множества внутри конструктора. Например, [1, 2, 3] и [3, 2, 1] — это эквивалентные множества. Каждый элемент в множестве учитывается только один раз, поэтому множества [1, 2, 3, 4, 2, 3, 4, 5] и [1..5] эквивалентны. Переменные множественного типа описываются следующим образом: Var <идентификатор> : Set Of <базовый тип>. Например: Var A, D : Set Of Byte; В : Set Of 'a'..'z'; С : Set Of Boolean; Нельзя вводить значения в множественную переменную оператором ввода и выводить оператором вывода. Множественная переменная может получить конкретное значение только в результате выполнения оператора присваивания следующего формата: <Множественная переменная> := Множественное выражение> Например: А := [50,100,150,200]; В := ['m','n1,'k']; С := [True,False]; D := А; Кроме того, выражения могут включать в себя операции над множествами. Операции над множествами. В Паскале реализованы основные операции математической теории множеств: объединение, пересечение, разность. Во всех этих операциях операнды и результаты есть множественные величины одинакового базового типа. Объединением двух множеств А и В называется множество, состоящее из элементов, входящих хотя бы в одно из множеств А или В. Знак операции объединения в Паскале — это «+». На рис. 1, а схематически показан результат объединения двух множеств. Рис. 2.27. Операции над множествами: а — объединение; б — пересечение; в — разность. Например: [1,2,3,4] + [3,4,5,6][1,2,3,4,5,6]. Пересечением двух множеств А и В называется множество, состоящее из элементов, одновременно входящих и в множество А, и в множество В (рис. 1, б). Например: [1,2,3,4] * [3,4,5,6] [3,4] . Разностью двух множеств А и В называется множество, состоящее из элементов множества А, не входящих в множество В (рис. 1, в). Например: [1,2,3,4] – [3,4,5,6] [1,2] [3,4,5,6] – [1,2,3,4] [5,6] Очевидно, что операции объединения и пересечения перестановочные, а разность множеств — операция неперестановочная. Множества можно сравнивать между собой, т.е. для них определены операции отношения. Результатом отношения, как известно, является логическая величина True или False. Для множеств применимы все операции отношения, за исключением «>» и «<». В табл. 1 описаны операции отношения над множествами. При этом предполагается, что множества А и В содержат элементы одного типа. Таблица 1 Операции отношения над множествами
Приведем несколько примеров выполнения операций отношения. Пусть переменная М описана в программе следующим образом: |
Программа по формированию навыков безопасного поведения на дорогах... Тема: Научно-методические основы реализации содержательной линии «Основы алгоритмизации и программирования» | Рабочая программа учебной дисциплины «програмирование и основы алгоритмизации» Целью дисциплины является изучение способов программирования и алгоритмизации математических и теплоэнергитических задач с использованием... | ||
Методические указания по выполнению контрольных работ по дисциплине Методические указания по выполнению контрольных работ по дисциплине «Правовые основы российского государства» для студентов по специальности... | Методические указания и контрольные задания для студентов-заочников... Методические указания и контрольные задания для студентов-заочников Салаватского индустриального колледжа | ||
Методические указания и контрольные задания для студентов-заочников... Методические указания и контрольные задания для студентов-заочников Салаватского индустриального колледжа | Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | ||
Методические указания по выполнению внеаудиторной самостоятельной... Методические указания предназначены для студентов техникума, обучающихся по специальности | Методические указания к выполнению курсовой работы по дисциплине «Основы научных исследований» «Прикладная биотехнология» Наумовой Н. Л. Методические указания к выполнению курсовой работы предназначены для студентов 2 курса... | ||
Методические указания к выполнению практических работ по дисциплине... Методические указания предназначены для студентов среднеспециальных учебных заведений, обучающихся по специальностям: 080302 Коммерция... | «Разработка алгоритмов и программирование на языке Pascal» Лабораторный практикум содержит методические указания к выполнению лабораторных работ по алгоритмизации и программированию на языке... | ||
Методические указания к спецкурсу «Теория и практика нейролингвистического... Методические указания разработаны кандидатом психологических наук, доцентом кафедры психологии личности Е. В. Прокопьевой | Методические указания составлены в соответствии с учебным планом... Методические указания предназначены для студентов, обучающихся по направлению 011200. 68 «Физика», магистерская программа «Окружающая... | ||
Возможность доступа студентов к электронным фондам учебно-методической... Методические указания по выполнению контрольных работ по дисциплине «Правовые основы российского государства» для студентов по специальности... | Методические указания к практическим занятиям по дисциплине «Основы конструкции автомобилей» Методические указания предназначены для студентов, изучающих курс «Основы конструкции автомобиля». Они могут быть также использованы... | ||
Методические указания к выполнению контрольных работ по дисциплине “ Методические указания к выполнению контрольных работ по дисциплине “Основы внешнеэкономической деятельности” для студентов экономических... | Программа по формированию навыков безопасного поведения на дорогах... Программы: «Основы алгоритмизации и программирования» и «Арифметические основы эвм» |