МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Основы программирования на языке Паскаль

    |больше: |

    |та, которая длиннее? |

    |та, которая содержит больше заглавных букв? |

    | На самом деле такая проверка проходит довольно сложно: компьютер |

    |сравнивает сначала первые символы строк. Большим из двух считается тот, код|

    |которого больше (вспомните, что такое код символа). Если равны первые |

    |символы, то так же анализируется следующая пара до тех пор, пока не будет |

    |найдено различие. Если начало строк совпадает, а одна из них кончается |

    |раньше, то вторая автоматически называется большей. |

    | Код символа в Паскале можно определить при помощи функции Ord. |

    | Ее формат: Ord(C), где С - либо непосредственно указанный символ, либо|

    |переменная символьного типа, либо один символ строковой переменной. Вообще,|

    |функция Ord имеет более глубокий смысл, но об этом - позже. Есть и обратная|

    |функция, которая возвращает символ по известному коду. Это функция Chr(N), |

    |где N - выражение, приводящее к целому числу в интервале от 0 до 255 |

    |(возможные значения кода символа). Очевидно, что Chr(Ord(C))=C, |

    |Ord(Chr(N))=N. |

    | Следующая маленькая программа выводит на экран кодовую таблицу: |

    |Program Str3; |

    |Var |

    | I : Byte; |

    |Begin |

    |For I:=32 to 255 do |

    |Write('VV',I:4, '-',Chr(I)) |

    |End. |

    | Цикл в программе начинается с 32 потому, что символы с кодами от 0 до |

    |31 являются управляющими и не имеют соответствующего графического |

    |представления. |

    | Задача: "Определить, является ли введенная строка "перевертышем". |

    |Перевертышем называется такая строка, которая одинаково читается с начала и|

    |с конца. Например, "казак" и "потоп" - перевертыши, "канат" - не |

    |перевертыш". |

    | Поступим следующим образом: из введенной строки сформируем другую |

    |строку из символов первой, записанных в обратном порядке, затем сравним |

    |первую строку со второй; если они окажутся равны, то ответ положительный, |

    |иначе - отрицательный. Естественно, предложенный способ решения не является|

    |единственно возможным. |

    |Program Str4; |

    |Var |

    | S,B : String; |

    | I : Byte; |

    |Begin |

    |Writeln('Введите строку'); |

    |Readln(S); |

    |B:=''; {Переменной B присваиваем значение "пустая строка"} |

    |For I:=1 to Length(S) do |

    |B:=S[I]+B; {Конкатенация. Символы строки S пристыковываются к} |

    |{переменной B слева. Самым левым окажется последний.} |

    |If B=S Then Writeln('Перевертыш') Else Writeln('Не перевертыш') |

    |End. |

    | Число, записанное в строковую переменную, естественно числом не |

    |является, но очень часто требуется его все же использовать в качестве |

    |числа. Для этого нужно произвести преобразование типа. Перевод строкового |

    |представления числа в числовое выполняет в Паскале оператор Val. |

    |Его формат: |

    |Val(S,X,C); |

    | Здесь S - строка, содержащая число, X - числовая переменная, в которую|

    |будет помещен результат, С - переменная целочисленного типа, в которую |

    |помещается первого встреченного в S отличного от цифры символа. Если после |

    |выполнения оператора Val переменная С имеет значение 0, то это означает, |

    |что преобразование типа прошло совершенно успешно и в строке нецифровых |

    |символов не встретилось. |

    | Противоположное действие осуществляет оператор Str. Формат оператора: |

    | Str(X,S); |

    |X - число (либо арифметическое выражение), S - строковая переменная. |

    | В переменную S попадает строковое представление числа X. Это нужно, |

    |например, при необходимости выводить на экран числа в графическом режиме |

    |(будет изучено позже), так как стандартные процедуры вывода на экран там |

    |работают только со строковыми величинами. |

    | Для иллюстрации рассмотрим такую задачу: "Найти сумму цифр введенного |

    |натурального числа". Используя только числовые переменные, решить ее можно,|

    |но предлагаемое здесь решение, по-моему, проще. |

    |Program Str5; |

    |Var |

    |S : String; |

    |I,X,A,C : Integer; |

    |Begin |

    |Writeln('Введите натуральное число'); |

    |Readln(S); {Число вводится в строковую переменную} |

    |A:=0; |

    |For I:=1 To Length(S) Do |

    |Begin |

    |Val(S[I],X,C); {Цифровой символ превращается в число} |

    |A:=A+X {Цифры суммируются} |

    |End; |

    |Writeln('Сумма цифр равна ',A) |

    |End. |

    | Теперь рассмотрим еще несколько действий над строками: |

    |оператор DELETE(S,I,C) из строковой переменной S удаляет C символов, |

    |начиная с I-того; |

    |оператор INSERT(SN,S,I) вставляет подстроку SN в строковую переменную S |

    |перед символом с номером I; |

    |функция COPY(S,I,C) возвращает подстроку строки S из C символов, начиная с |

    |символа с номером I; |

    |функция Pos(SN,S) возвращает номер символа, с которого в строке S |

    |начинается подстрока SN (позицию первого вхождения подстроки в строку). |

    |Если такой подстроки нет, то возвращается ноль. |

    | Пример их использования: |

    |"Во введенной строке заменить все вхождения подстроки 'ABC' на подстроки |

    |'KLMNO'". |

    |Program Str6; |

    |Var |

    |S : String; |

    |A : Byte; |

    |Begin |

    |Writeln('Введите строку'); |

    |Readln(S); |

    |While Pos('ABC',S)<>0 Do |

    |Begin |

    |A:= Pos('ABC',S); |

    |Delete(S,A,3); |

    |Insert('KLMNO',S,A) |

    |End; |

    |Writeln(S) |

    |End. |

    | |

    |Определение типов |

    | Как было упомянуто ранее, в изучаемом языке возможно определять новые |

    |типы переменных. После определения этот тип становится доступным для |

    |описания переменных, также как и стандартные типы. |

    | Новый тип перед первым его использованием должен быть описан в |

    |соответствующем разделе описаний. Его заголовок - служебное слово Type. |

    |Type |

    | = ; |

    | Есть несколько способов описания. Иногда говорят даже о видах типов |

    |(как бы это странно ни звучало). |

    | Итак, первым рассмотрим так называемый перечисляемый тип. |

    | Перечисляемый тип используется для повышения наглядности программ, |

    |позволяя записывать в переменные этого типа названия разнообразных |

    |объектов, исследуемых программой. Этот тип представляет собой набор |

    |идентификаторов, с которыми могут совпадать значения параметров. |

    | Формат описания следующий: = (, ,? ); |

    | Далее можно определить любое число переменных уже описанного типа. |

    |Обратите внимание на то, что каждый идентификатор может участвовать в |

    |описании только одного перечисляемого типа. |

    | Этим переменным можно присваивать только значения из списка, |

    |определенного при описании типа. Эти значения не являются ни числами, ни |

    |строковыми величинами, ни даже величинами логического типа, поэтому они не |

    |могут участвовать в арифметических, строковых, логических выражениях, а |

    |также не могут быть выведены на экран или принтер. Величины перечисляемого |

    |типа можно сравнивать между собой, над их множеством в языке Паскаль |

    |определены несколько функций: |

    | Ord(X) - порядковый номер значения переменной X в списке |

    |идентификаторов. |

    | Succ(X) - следующее значение для величины Х. |

    | Pred(X) - предыдущее значение данного типа. |

    | Обратите внимание на то, что для функции Ord нумерация среди значений |

    |идет, начиная от нуля. Для последнего значения нельзя применять функцию |

    |Succ, для первого - Pred. |

    | Переменные различных перечисляемых типов несовместимы друг с другом. |

    | Множество стандартных порядковых типов в языке Паскаль на самом деле |

    |определены как перечисляемые. Это типы Char, Integer, другие. Достоинства |

    |стандартных порядковых типов лишь в том, что над каждым из них уже |

    |определены специфические действия. Например, тип Boolean описан так: |

    |Type |

    |Boolean = (False, True); |

    | Единственное его отличие от перечисляемых типов, определяемых |

    |программистом, состоит в том, что значения типа Boolean можно выводить на |

    |экран. Можете проверить, Ord(False)=0. |

    | Интересно, что переменная перечисляемого типа может быть счетчиком в |

    |цикле "с параметром". |

    |Пример: |

    |Program T1; |

    |Type |

    | Colors = (Black, Blue, Green, Cyan, Red, Magenta, Brown, Yellow, |

    |White); |

    |Var |

    | C1,C2 : Colors; |

    |Begin |

    |C1:=Green; |

    |C2:=Red; |

    |Writeln(Ord(C1), Ord(Succ(C2))) |

    |End. |

    | Во время выполнения на экране появятся числа "2" и "5", что |

    |соответствует номерам значений Green и Magenta. |

    | Следующий тип, который можно определить в программе - тип-диапазон. |

    | Здесь не нужно перечислять все значения этого типа, потому, что |

    |возможными для него являются значения поддиапазона уже определенного до |

    |него любого порядкового типа (стандартного или описанного ранее |

    |перечисляемого типа). Достаточно лишь указать начальную и конечную величину|

    |отрезка порядкового типа. Единственное условие: начальное значение не |

    |должно превышать конечное. |

    | Формат описания отрезочного типа: |

    |Type |

    | =..; |

    |Примеры: |

    |Type |

    |Age=0..150; {Целое число в интервале от 0 до 150} |

    |Lat='A'.. 'Z'; {Заглавные буквы латинского алфавита} |

    |Month=(January, February, March, April, May, June, July, August, September,|

    |October, November, December); |

    |Spring=March..May; {Весенние месяцы} |

    | Есть еще одна возможность определить новый тип, о существовании |

    |которой можно было бы и догадаться. |

    |Type |

    | =; |

    |Пример: |

    |Type |

    | Number=Byte; |

    | |

    |Массивы |

    | До сих пор мы рассматривали переменные, которые имели только одно |

    |значение, могли содержать в себе только одну величину определенного типа. |

    |Исключением являлись лишь строковые переменные, которые представляют собой |

    |совокупность данных символьного типа, но и при этом мы говорили о строке, |

    |как об отдельной величине. |

    | Вы знаете, что компьютер предназначен в основном для облегчения работы|

    |человека с большими информационными объемами. Как же, используя только |

    |переменные известных вам типов, сохранить в памяти и обработать данные, |

    |содержащие десяток, сотню, тысячу чисел или, к примеру, строк? А ведь такие|

    |задачи встречаются в любой области знания. Конечно, можно завести столько |

    |переменных, сколько данных, можно даже занести в них значения, но только |

    |представьте, какой величины будет текст такой программы, сколько времени |

    |потребуется для его составления, как много места для возможных ошибок? |

    |Естественно, об этом задумывались и авторы языков программирования. Поэтому|

    |во всех существующих языках имеются типы переменных, отвечающие за хранение|

    |больших массивов данных. В языке Паскаль они так и называются: "массивы". |

    | Массивом будем называть упорядоченную последовательность данных одного|

    |типа, объединенных под одним именем. Кстати, под это определение подходит |

    |множество объектов из реального мира: словарь (последовательность слов), |

    |мультфильм (последовательность картинок) и т. д. Проще всего представить |

    |себе массив в виде таблицы, где каждая величина находится в собственной |

    |ячейке. Положение ячейки в таблице должно однозначно определяться набором |

    |координат (индексов). Самой простой является линейная таблица, в которой |

    |для точного указания на элемент данных достаточно знания только одного |

    |числа (индекса). Мы с вами пока будем заниматься только линейными |

    |массивами, так как более сложные структуры строятся на их основе. |

    | Описание типа линейного массива выглядит так: |

    | Type =Array [] Of ; |

    | В качестве индексов могут выступать переменные любых порядковых типов.|

    |При указании диапазона начальный индекс не должен превышать конечный. Тип |

    |элементов массива может быть любым (стандартным или описанным ранее). |

    | Описать переменную-массив можно и сразу (без предварительного описания|

    |типа) в разделе описания переменных: |

    | Var : Array [] Of ; |

    Страницы: 1, 2, 3, 4, 5


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.