Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Глава 3. Процедуры и функции ⇐ ПредыдущаяСтр 3 из 3
Функции Подпрограмма-функция обрабатывает данные, переданные ей из главной программы, и затем возвращает полученный результат (в отличие от процедуры). Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово Function, имя, список формальных параметров (заключенный в скобки) и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре сходный с программой. Общий вид описания функции: Function < имя> (< параметры> ): < тип результата>; Const …; ù … ý блок описания Var ….; û begin < операторы> end; В разделе операторов должен находиться, хотя бы один оператор, присваивающий имени функции значение. Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам и иметь тот же тип. Пример 1. Найти значение следующего выражения: F(t) – F(c), где F(x)=Ö x +2x2 +3x Program m; Uses crt; Var t, c, r: real; Function F(x: real): real; Begin F: = sqrt(x)+ 2*sqr(x) + 3*x; End; Begin Clrscr; Write(‘Введите числа’); Readln (t, c); r: = F(t) – F(c); write(‘результат =’, r: 8: 3); {8 символов на все число, 3 – на дробную часть, см п.1.4.2} end. Пример 2. Найти наибольшее из четырех чисел, используя подпрограмму нахождения наибольшего из двух чисел. Program max; Uses crt; Var a, b, c, d, m, p, q: real; Function Bid(x, y: real): real; Begin If x> y then bid: =x else bid: =y; End; Begin Clrscr; Write(‘Введите числа’); Readln (a, b, c, d); p: =bid(a, b); q: = bid(c, d); m: =bid(p, q); write(‘наибольший элемент’, m: 8: 3); end. Глава 4. Массивы Одномерные массивы Все простые типы данных, рассматриваемые ранее, имеют два характерных свойства: неделимость и упорядоченность их значений. Составные, или структурированные, типы данных задают множество сложных значений с одним общим именем. Существует несколько методов структурирования, каждый из которых отличается способом обращения к отдельным компонентам. В данном учебном пособии будут рассмотрены только два структурированных типа данных: регулярный тип (массивы) и строковый тип (часть 5). С понятием «массив» приходится встречаться при решении научно-технических, экономических задач обработки большого количества однотипных значений. Таким образом, массив – это упорядоченная последовательность данных, состоящая из фиксированного числа элементов, имеющих один и тот же тип, и обозначаемая одним именем. Название регулярный тип массивы получили за то, что в них объединены однородные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элементы в массиве. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое. Элементы, образующие массив, упорядочены так, что каждому элементу соответствует совокупность номеров (индексов), определяющих его место в общей последовательности. Индексы представляют собой выражения простого типа. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индекса нужного элемента: < имя массива> [< индекс> ]. Описание массива определяет его имя, размер массива и тип данных. Общий вид описания массива: Type < имя нового типа данных> =array[< тип индекса> ] of < тип компонентов>; Далее, в перечне переменных указывается имя массива, и через двоеточие указывается имя нового типа данных. Массив может быть описан и без представления типа в разделе описания типов данных: Var < имя массива>: array [< тип индекса> ] of < тип компонентов>; Чаще всего в качестве типа индекса используется интервальный целый тип. Одномерные массивы Линейный (одномерный) массив – массив, у которого в описании задан только один индекс, если два индекса – то это двумерный массив и т.д. Одномерные массивы часто называют векторами, т.е. они представляют собой конечную последовательность пронумерованных элементов. Присваивание начальных значений (заполнение массива) заключается в присваивании каждому элементу массива некоторого значения, заданного типа. Наиболее эффективно эта операция осуществляется при помощи оператора for. Ввод данных может осуществляться: с клавиатуры, при помощи различных формул, в том числе и датчика случайных чисел. Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, им можно присваивать любые значения, соответствующие их типу и т.д. Алгоритм решения задач с использованием массивов: · Описание массива · Заполнение массива · Вывод (распечатка) массива · Выполнение условий задачи · Вывод результата Пример 1. Задан одномерный массив В(10), заполненный произвольным образом. Подсчитать количество элементов массива, больших заданного числа k. Program massiv; Uses crt; Var b: array [1..10] of integer; I, k, s: integer; Begin Clrscr; S: =0; For i: =1 to 10 do Begin Write(‘Введите’, i, ‘-й элемент массива ’); Readln (B[i]); Write(b[i], ‘ ‘); End; Write(‘Введите число k’); Readln(k); For i: =1 to 10 do If b[i]> k then s: =s+1; Write(‘Количество элементов’, s); End. Пример 2. Определить самую высокую температуру и самый теплый день в мае. Program massiv; Uses crt; Var t: array [1..31] of integer; I, max, n: integer; Begin Clrscr; For i: =1 to 31 do Begin t[i]: =random(20); Write(b[i], ‘ ‘); End; Max: =t[1]; n: =1; For i: =2 to 31 do Begin If t[i] > max then max: =t[i]; n: =i; End; Write(‘максимальная температура’, max, ‘в’, n, ‘день’); End. Глава 4. Массивы Двумерные массивы Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны: Var a: array [1..10] of array [1.. 20] of real; Var a: array [1..10, 1..20] of real; Чаще всего при описании двумерного массива используют второй способ. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется вложенный цикл for. Например, For i: = 1 to 10 do For j: = 1 to 20 do A[i, j]: = 0;
При организации вложенных (сложных) циклов необходимо учитывать: · Все правила, присущие простому циклу, должны соблюдаться · Имена параметров для циклов, вложенных один в другой, должны быть различными · Внутренний цикл должен полностью входить в тело внешнего цикла. Пересечение циклов недопустимо
Пример 1. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран. Program Pifagor; Uses crt; Var p: array[1..9, 1..9] of integer; i, j: integer; Begin Clrscr; for i: =1 to 9 do for j: = 1 to 9 do p[i, j]: = i*j; for i: =1 to 9 do begin for j: =1 to 9 do write(p[i, j], ‘ ‘); writeln end; end. Пример 2. Задан двумерный массив В(10, 10), заполненный случайными числами из [-10, 10]. Найти и вывести на экран те элементы массива, которые больше заданного числа k. Program massiv; Uses crt; Var b: array[1..10, 1..10] of integer; i, j, k: integer; Begin Clrscr; for i: =1 to 10 do begin for j: = 1 to 10 do begin b [i, j]: = random(20)-10; write(b[i, j], ‘ ‘); end; writeln; end; write(‘Введите число k’); readln (k); For i: =1 to 10 do For j: =1 to 10 do If b[i, j] > k then write (b[i, j]); End. Глава 5. Строковые величины Символьные величины Литерный (символьный) тип char определяется множеством значений кодовой таблицы ПК. Каждому символу задается целое число от 0 до 255. В программе значения переменных и констант типа char должны быть заключены в апострофы. Пример. Program lit; Var c, symbol: char; Begin C: = ‘A’; Symbol: =’д’; Writeln(c); Write(symbol); End. Результат выполнения программы: А д
Над данными символьного типа определены операции отношения: =, < >, >, <, < =, > =, вырабатывающие результат логического типа, и следующие стандартные функции: Chr(x) – преобразует выражение х в символ и возвращает значение символа Ord(ch) – преобразует символ ch в его код и возвращает значение кода Pred(ch) – возвращает предыдущий символ Succ(ch) – возвращает следующий символ Пример. Ord(‘: ’) =58 Ord(‘A’)=65 Chr(128)=Б Pred(‘Б’)=А Succ(‘Г’)=Д Глава 5. Строковые величины Строковые величины Строка (строковый тип данных) – это последовательность символовкодовой таблицы ПК. Количество символов в строке (длина строки) может лежать в диапазоне от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует значение максимальной длины строки данного типа (заключается в квадратные скобки). Строковые данные могут использоваться в качестве констант. Строковая константа – последовательность символов, заключенная в апострофы. Например, ‘237’, ‘это строковая константа’. Переменную строкового типа можно определить в разделе описания переменных: Var < имя>: string[< максимальная длина строки> ]. Например, var Name: string[20]. В описании строки можно не указывать длину, в этом случае она равна максимальной величине – 255. Элементы строки определяются именем строки с индексом, заключенным в квадратные скобки. Например, N[5]. Первый символ строки имеет номер 1 и т.д. Можно сказать, что строка представляет собой одномерный массив, элементами которого являются символы. Тип string и тип char совместимы, они могут употребляться в одних и тех же выражениях. Выражения, в которых операндами служат строковые данные, называются строковыми. Они могут состоять из строковых констант, переменных, знаков операций. Над этими данными допустимы операция сцепления (конкатенация) и операции отношения. Операция сцепления (+) применяется для соединения нескольких строк в одну строку. Сцеплять можно и константы, и переменные. Длина результирующей строки не должна превышать 255 символов. Операции отношения (=, < >, >, <, < =, > =) проводят сравнение двух строк и имеют приоритет более низкий, чем операция конкатенации. Сравнение строк производится слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в таблице кодов. Например, ‘MS-DOS’< ’MS-Dos’. Если строки имеют различную длину, но в общей части символы совпадают, то более короткая строка меньше. Например, ‘Компьютер’< ’Компьютер ’. Строки равны, если они полностью совпадают. Например, ‘Маска’ = ’Маска’. Для обработки строковых данных можно использовать специальные процедуры и функции. Процедура Delete(St, poz, n) – удаление n символов строки St, начиная с позиции Poz. Пример
Процедура Insert (S1, S2, Poz) – вставка строки S1 в строку S2, начиная с позиции Poz. Пример
Процедура Str(N, St) – преобразование числового значения N в строковый и помещение результата в строку St. Пример
Процедура Val(St, N, Code) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в N. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно 0, если же обнаружена ошибка, то Code будет содержать номер позиции первого ошибочного символа, а значение N не определено. Пример
Функция Copy(S, Poz, N) – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. Пример
Функция Concat(S1, S2, …, Sn) – выполняет сцепление строк S1, S2, …, Sn в одну строку. Пример
Функция Length(S) – определяет текущую длину строки S. Пример
Функция Pos(S1, S2) – определяет первое появление в строке S2 подстроки S1. Пример
Функция UpCase (ch) – преобразует строчную букву в прописную.Обрабатывает буквы только латинского алфавита. Пример
Пример. Из данной символьной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность. Program Stroki; Var S1, S2: string; Begin Write(‘Введите строку’); Readln(S1); S2: = ‘ ‘; For i: =1 to length(S1) do If (S1[i]> =’0’) and (S1[i]< =’9’) Then S2: =S2+S1[i]; Writeln(‘Результат’, S2) End. Популярное:
|
Последнее изменение этой страницы: 2016-07-13; Просмотров: 628; Нарушение авторского права страницы