МЕНЮ


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

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


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

    |=(D1*(45-2)) |

    | S<>'ABC' {Значение переменной S не равно строковой константе 'ABC'} |

    | Приведем пример решения еще одной задачи: "Из двух чисел выбрать |

    |наибольшее". |

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

    |кажется. |

    |Program Example; |

    |Var A,B,C : Real; {A,B - для хранения аргументов, C - результат} |

    |Begin |

    |Writeln('Введите два числа'); |

    |Readln(A,B); {Вводим аргументы с клавиатуры} |

    |If A>B Then C:=A Else C:=B; Если A>B, то результат - A, иначе результат - |

    |Writeln(C); {Выводим результат на экран} |

    |End. |

    | Еще один классический пример: "По заданным коэффициентам решить |

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

    |программу составим алгоритм, записав его в виде блок-схемы. |

    |Сначала вводим коэффициенты, затем вычисляем дискриминант. Теперь возникает|

    |две возможности: либо отсутствие действительных корней в случае |

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

    |вывести на экран в случае неотрицательного дискриминанта (случай равенства |

    |дискриминанта нулю входит сюда же, корней - два, только они одинаковые J). |

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

    |ветви "нет" не одно действие, а три, поэтому следует применить составной |

    |оператор. Арифметические выражения не забывайте записывать в соответствии с|

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

    | |

    | |

    | |

    |Program Sq1; |

    |Var A, B, C, D, X1, X2 : Real; |

    |Begin |

    |Writeln ('Введите коэффициенты квадратного уравнения'); |

    |Readln (A,B,C); |

    |D:=B*B-4*A*C; |

    |If D Do ; |

    | Правда, лаконично? По-русски можно прочитать так: "Пока истинно |

    |условие, выполнять оператор". Здесь, так же как в формате условного |

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

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

    |составной оператор. Тогда формат оператора принимает такой вид: |

    |While Do |

    |Begin |

    |; |

    |; |

    |; |

    |. . . |

    |End; |

    | |

    |Цикл "ДО" |

    | Этот вид цикла отличается от предыдущего в основном тем, что проверка |

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

    |"До" называют циклом "с постусловием", а "Пока" - "с предусловием". |

    | Обратите также внимание на то, что новая итерация (повторное |

    |выполнение тела цикла) происходит не тогда, когда условие справедливо, а |

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

    |(выполнять тело цикла до выполнения соответствующего условия). |

    | Интересно, что в случае, когда условие цикла изначально истинно, тело |

    |цикла все равно будет выполнено хотя бы один раз. Именно это отличие "до" |

    |от "пока" привело к тому, что в программировании они не подменяют друг |

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

    | Формат цикла на языке Pascal: |

    |Repeat |

    |; |

    |; |

    |; |

    |. . . |

    |Until ; |

    | Читается так: "Выполнять оператор #1, оператор #2. : до выполнения |

    |условия". |

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

    |сами слова Repeat и Until являются операторными скобками. |

    | |

    |Цикл "С параметром". |

    | В данном случае параметром будет являться целочисленная переменная, |

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

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

    |точно установить количество выполнений тела цикла. Нарисовать блок-схему |

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

    | Форматов у этого вида цикла предусмотрено два: |

    | For := To Do ; |

    | For := Downto Do ; |

    | Здесь И.П. - имя переменной-параметра, Н.З. - его начальное значение, |

    |К.З. - соответственно конечное значение параметра. В качестве начального и |

    |конечного значений |

    | Читается данная структура так: "Для переменной (далее следует ее имя) |

    |от начального значения до конечного выполнять оператор (являющийся телом |

    |цикла)". Иногда цикл с параметром даже называют "Для" или "For". В первом |

    |случае параметр с каждой итерацией увеличивается на единицу, во втором - |

    |уменьшается. |

    | Выполняется этот цикл по следующему алгоритму: |

    | 1. переменной-параметру присваивается начальное значение; |

    | 2. выполняется тело цикла; |

    | 3. переменная-параметр автоматически увеличивается на 1 (в первом |

    |случае формата); |

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

    |цикла, иначе - переход к пункту 2. |

    | Примечание: при использовании Downto параметр автоматически |

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

    |становится меньше конечного значения. |

    | Таким образом, в отличие от первых двух видов цикла, этот цикл |

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

    |цикла. |

    | Вообще говоря, цикл "Пока" является универсальным, то есть любая |

    |задача, требующая использования цикла, может быть решена с применением этой|

    |структуры. Циклы "До" и "С параметром" созданы для удобства |

    |программирования. |

    | Пример. |

    | Найти сумму квадратов всех натуральных чисел от 1 до 100. |

    | Решим эту задачу с использованием всех трех видов циклов. |

    |I. С использованием цикла "Пока". |

    |Program Ex1; |

    |Var |

    | A : Integer; |

    | S : Longint; |

    |Begin |

    |A:=1; S:=0; |

    |While A100; |

    |Writeln(S) |

    |End. |

    |III. С использованием цикла "С параметром". |

    |Program Ex3; |

    |Var |

    | A : Integer; |

    | S : Longint; |

    |Begin |

    |S:=0; |

    |For A:=1 To 100 Do S:=S+A*A; |

    |Writeln(S) |

    |End. |

    | Теперь вам известны все основные алгоритмические структуры языка |

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

    |конечно, если таковое существует. Тем не менее, изучение языка на этом не |

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

    |уважаемого Никлауса Вирта (за время моей работы у меня не появилось |

    |оснований в этом сомневаться) нужны кроме алгоритмических, еще удобные |

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

    |каждого вида определены свои команды и операции. К их рассмотрению мы и |

    |переходим. |

    | |

    |Строковые операции |

    | До сих пор мы с вами рассматривали программы, реализующие алгоритмы |

    |обработки числовых данных. Однако хоть ЭВМ изначально и были созданы только|

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

    |оцифровывать данные других типов, хранить их в памяти машины, |

    |перерабатывать, выводить во внешний по отношению к компьютеру мир. Проще |

    |всего можно было так поступить с текстовой информацией. Если не ставить |

    |перед машиной задачу "понимания" смысла текста, то задача оцифровки |

    |сводится к установлению правил замены символов (литер) при вводе в |

    |компьютер на их коды и обратной замены при выводе информации на экран или |

    |принтер. Такие правила, конечно же, были составлены. Как водится, сначала |

    |их было множество (вспомните разнообразие таблиц кодировки), затем весь мир|

    |остановился на ASCII. |

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

    |литерными величинами. Паскаль - не исключение. Как вам уже известно, в |

    |стандарте языка описаны два типа переменных для литерных величин. Это - |

    |String и Char. Напомню - переменная типа Char может содержать в себе только|

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

    |величин до 255 символов длиною. Кстати, вы знаете не все о типе String. При|

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

    |символов, которое можно занести в нее. Конечно же, это число не должно |

    |превышать 255. Делается это так: |

    |Var |

    |S : String[30]; |

    | Для чего это нужно? |

    | Дело в том, что при компиляции для каждой переменной отводится свой |

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

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

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

    |собираемся хранить, например, фамилию пользователя, то тридцати символов |

    |(тридцати байт) для этого вполне достаточно. Таким образом, экономится |

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

    | Переменным строкового типа можно присваивать строковые величины |

    |(внутри программы они заключаются в апострофы), значения выражений, которые|

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

    |При этом апострофы не используются. Как вам известно, в числовую переменную|

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

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

    |последовательность символов (цифр), поэтому в арифметических выражениях |

    |участвовать не может. |

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

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

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

    |поставить после имени переменной типа String в квадратных скобках. |

    | Пример: S[5] - пятый символ строки S. |

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

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

    |экран, участие в выражениях и т.д.). |

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

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

    |результатом которого является целое число. Главное чтобы символ с таким |

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

    |момент находится в строковой переменной? Для этого существует специальная |

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

    |функция Length. Ее формат: Length(S) |

    | Здесь S - либо строковая величина, либо строковая переменная. |

    | Приведенная далее программа выводит на экран длину введенной |

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

    |Program Str1; |

    |Var |

    |S : String; |

    |Begin |

    |Writeln('Введите последовательность символов'); |

    |Readln(S); |

    |Writeln('Вы ввели строку из ',Length(S), ' символов') |

    |End. |

    | Другой пример: |

    |Решим задачу: "Введенную строку вывести на экран по одному символу в строке|

    |экрана". |

    |Program Str2; |

    |Var |

    |S : String; |

    |I : Byte; |

    |Begin |

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

    |Readln(S); |

    |For I:=1 to Length(S) do {организуем цикл, начиная с первого символа} |

    |Writeln(S[I]) {строки, до последнего (номер последнего} |

    |{совпадает с количеством символов строки S) } |

    |End. |

    | Какие же еще действия можно выполнять с переменными строкового типа? |

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

    |конкатенацией и обозначается знаком "+". |

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

    | R:= 'kadabra'; |

    | H:= 'abra'; |

    | S:=H+R; |

    |в переменной S будет значение 'abrakadabra'. |

    | Для конкатенации результат зависит от порядка операндов (в отличие от |

    |операции сложения). Следует помнить о том, какой максимальной длины может |

    |быть результирующая переменная, так как в случае превышения значением |

    |выражения числа, указанного после String в описании переменной, "лишние" |

    |символы в переменную не попадут. |

    | Строковые величины можно сравнивать между собой. Это относится также и|

    |к строковым переменным. Но как же компьютер определяет, какая строка |

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


    Приглашения

    09.12.2013 - 16.12.2013

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

    09.12.2013 - 16.12.2013

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




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