| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Структура программы
Читать про это стоит подписчикам не подготовленным, то есть тому, кто понимает, что не знает как оформлять программу. Потом нам с вами нужно будет вспомнить про типы данных - это очень важная вещь, мы говорили о ней в прошлых выпусках (см. архив рассылки). В принципе вы должны знать много типов (помните выпуск 3 и его зеленую табличку с диапазоном значений каждого типа?), но все известные вам типы могут хранить только целые числа. Сегодня займемся другими типами данных. И после всего этого мы с вами освоим новую вещь, невероятно полезную и довольно простую. Это будет возможность сравнения, так называемая конструкция If...then.....else, но обо всем по порядку, читайте рассылку....
Вспоним, в программе есть несколько основных вещей - переменные и разного рода операторы, процедуры, выражения. Операторы и процедуры представляют собой непосредственно текст программы, так наз. тело программы. Эти разные части оформляются в различных разделах отдельно друг то друга. То есть переменные находяться отдельно, тело программы - отдельно. Я думаю, Вы это знаете. Заметьте, я не говорю, что это все части, есть и другие, но об этом будем говорить позже. Итак, решили мы писать программу. Она будет использовать какие-нибудь данные, так ведь? Складывать числа, выводить строки. Для этого заводим переменные, чтобы хранить все эти значения.
Итак, схема программы на Паскале:
Вот, собственно и все. Я на этом теперь точно закончу эту тему, а то скоро большинству подписчиков надоест рассылка со своими разговорами об одном и том же. Если Вам непонятно что-то, разбирайтесь, читайте прошлые выпуски. А нам пора двигаться дальше...
Помните, мы с вами разговаривали о типах переменных? О том, как присвоить какой-либо тип и зачем это делается? Тогда мы с вами обсуждали всего лишь типы-числа, причем целые числа, дробные значения им присвоить нальзя. Основные из тех типов были Integer, Byte, Word и LongInt, имеющие замый разный диапазон значений (не пишите мне, что вам не ясно, см. выпуск #3), в которых вам нужно научиться ориентироваться. Здесь я еще сделаю немаловажный комментарий - типы, схожие друг с другом можно вычитать, складывать, умножать и делить. То есть можно писать так:
Видите, как все происходит? Конечно, это примитивный пример, но он замечательно демонстрирует использование совместимости типов. Если начинаете сейчас путаться, не пугайтесь. Здесь нет абсолютно ничего сложного. Разберем. Вот, смотрите: Если имеем два числа, A: Integer; B: Word;. Определимся, что они могут? Переменная А - может хранить значения от -32000 до +32000 (я примерно пишу) Переменная В - может хранить значания от 0 до 65500 (тоже не точно, см. зеленую таблицу в 3) А теперь представьте, число А = 12, а число В = 15. Ну как, мы разве не сможем их сложить? Еще как. А вычесть? Тоже. А умножить? И это у нас выйдет. Теперь такая ситуация - если результат помещается в переменную В (тип Word), но он отрицательный? (Следите за ходом моих мыслей). Что выйдет? Ведь тип Word не может хранить отрицательные числа, а я только что вел разговор о совместимости. Выйдет то, что значение числа B будет испорчено. Совместимость есть, Паскаль ошибки не выдаст. Но значение будет потеряно. Поэтому лучше использовать совершенно одинаковые типы, с этим будет меньше проблем, либо точно знать, что за результат будет (по крайней мере его диапазон). Если вы здесь не разобрались, ничего. Дальше все станет ясно, и если что, будете знать где это найти. В общем, информация в копилку. Нормально напомнил, вспомнили? Как бы там ни было, все эти типы позволяют хранить только числа. Считывая переменную процедурой Readln мы может прочитать в такую переменную только число. Но этого очень мало и в программе никак не обойтись без других данных. Кроме этих типов существуют еще числовые, но позволяющие хранить дробные числа. Правда, о этой группе типов отдельный разговор, их мы будем обсуждать после, пока они нам не нужны. Гораздо более интересными сейчас будут другие, которые позволяют хранить строки и символы. Тем более, их всего два и они очень простые и понятные. Итак, зачем же нам иметь переменные, позволяющие хранить символы? Давайте вспомним приводимый мной как-то пример программы, выводящей Hello, world!, написанной для демонстрации работы процедуры Write. Помните? Она печатала строку, которая как бы слита с программой и не может быть изменена во время ее работы. Давайте перестроим эту программу и напишем ее модифицированный вариант. Действовать будем так (напоминаю, последовательность действий называется алгоритм):
Начинаем писать программу и как всегда определимся, что нам нужно.
Тип "строка" изображается так: String. И, следовательно для того, чтобы завести такую переменную, запишем в разделе var:
Ну а теперь вроде все разобрали, все понятно и можно писать программу. Ее текст будет выглядеть так:
Откройте Турбо Паскаль и напечатайте эту программу. Запустите ее и посмотрите, как она работает. Все нормально? Действительно, она выводит имя, введенное при запросе. Это вам конкретный пример использвания типа String. На самом деле возможности использования строк невероятно высоки, вы это дальше поймете. Не думаю, что стоит разбираться в этой программе по шагам. Если вам не понятно что-то - используемые процедуры или проблемы с синтаксисом (вы только подписались) - то скачивате архив с сайта рассылки и изучите предыдущие уроки Паскаля. Но хоть разбирать каждую строку и я не буду, все же один прием требует комментариев: Write('Привет, ',Name,'!'); Эта строка выводит именно "Привет, ИМЯ!". Заметили, восклицательный знак находиться после переменной? То есть переменная получается как бы внутри выводимой строки. Именно для того, чтобы это сделать я использовал несколько параметров процедуры Write; - т.е. чередовал символы с переменной. Так можно напечатать любой текст, содержащий где угодно в себе переменные. Запомните этот прием, а то некоторые ломают голову над этим - используют несколько процедур Write для вывода всех частей строки отдельно и т.д. В общем, про этот раздел все. Здесь нет ничего сложного или особо непонятного, разбирайтесь. Советую написать несколько программ, использующих тип String - здесь я предоставляю вам полное творчество и очень советую им воспользоваться. Но приведу несколько примеров возможных модификаций - например, запрашивайте несколько больше данных и выводите их все как результат выполнения; выводите запросы на ввод тоже как строки (придавайте им значение прямо в программе). В общем, занимайтесь! Типам нужно уделять много внимания, Паскаль того требует. Вообще, это язык который славиться своей жесткостью по отношению к типам. Но вы это и сами скоро поймете, точно вам говорю.
IF…THEN…ELSE - Важная конструкция языкаИтак, мы с вами подошли к изучению конструкций языка. Что же такое конструкция? До этого мы учили только синтаксис и некоторую теорию, например типы. Писали программы, состоящие только из переменных и нескольких процедур. Но разве этого программисту достаточно? Конечно, нет. Нужны некоторые стандартные вещи, которые позволяли бы как-то усложнять программу, реализовывать ее написание не только через чередование процедур и переменных, но и заставлять ее походить какие-нибудь проверки, как-то влиять на ход ее работы непосредственно при ее выполнении. Для этого в языках программирования существуют специальные конструкции - стандартные языковые средства, которые позволяют проверять что-либо прямо внутри программы, повторять ее несколько раз и т.д., в общем, влиять на ее выполнение. Одна из самых заметных конструкций - это проверка каких-то условий. Что это значит? Для того, чтобы вам это лучше понять, я приведу пример задачи, которую нужно решить: Нам нужно написать программу, которая:
В программе явно нет ничего сложного. Но есть одна деталь - как мы проверим эти числа на БОЛЬШЕ/МЕНЬШЕ? Вот здесь нам и понадобиться конструкция If...Then...Else, о которой я вам сейчас и расскажу. IF..Then..Else - (англ. Если....То...Иначе). Очень важная и необходимая конструкция Паскаля. Используется для проверки каких-либо условий. В этой конструкции используются знаки сравнения, которые в Паскале обозначаются так:
Запомните эти знаки, они вам дальше очень понадобятся. И не пугайтесь, если что-то не понятно. Сейчас все разъясниться, как только я приведу пример и сделаю к нему комментарий. Итак, как же оформить конструкцию if...then...else? Для начала давайте запишем словами сравнение двух чисел А и В: 1. Если А > B То Write(A,' больше чем ',B,'!') 2. Иначе Write(B,' больше чем ',A,'!'); Посмотрите внимательней на приведенный пример. Разобрались? Теперь посмотрим, как выглядит эта конструкция на Паскале:
If A > B Then Write(A,' больше чем ',B,'!') else Write(B,' больше чем ',A,'!'); Вот вам и пример использoвания изучаемой конструкции. Посмотрите, разве сложно? На самом деле нет, хотя это и может так показаться с первого взгляда. Вот все комментарии, которые здесь требуются.
Замечание. Слова Else может и не быть. Это используется тогда, когда нужно выполнить всего одно условие и не делать ничего, если оно не верно. В таком случае после действия, указанного за словом Then ставиться ";". Вот такой пример:
If A > B Then Write(A,' больше чем ',B,'!'); Собственно, это и все про проверку. Теперь вспомним нашу программу, которую мы захотели написать. (Смотрите ее выше). Сейчас мы наконец-то напишем ее, текст будет выглядеть так:
Комментировать программу я не буду, так как нам уже нужно как-то усложнять материал. Разберитесь в ней, введите в Паскале и запустите. Видите, она реагирует на величину чисел? А теперь вспомните, что мы проходили сегодня новый тип - String. Его тоже можно с успехом использовать, поэтому привожу еще пример:
Ну как? Это уже немного другой пример, реагирующий на неравенство, в отличии от предыдущего, реагирующего на знак "больше". Введите его и запустите. Видите, эта программа сравнивает две введенные строки, реагируя на то, равны ли они. Теперь еще один пример, проверяющий, отрицательное ли число.
Разберитесь самостоятельно в этих всех программах. Запускайте их, меняйте - смотрите, как измениться работа. Ну а пока к сожалению я исчерпываю лимит письма и на этом заканчиваю. Но на последок немного домашних заданий. Правда, эти мне присылать не нужно, я придумал их для того, чтобы Вы смогли попрактиковаться самостоятельно в написании программ и использовании конструкции if...then...else. Программы как всегда в порядке возрастания сложности. Итак, практика:
Ну вот и все на сегодня про Паскаль. Этот урок получился довольно большим, но вы узнали достаточно нового. Хочу вам напомнить, что нужно разобраться во всем, о чем я говорю - иначе вы не добьетесь больших результатов. Осваивайте, пишите свои программы - и обязательно решайте мое домашнее задание! Если оно вам покажется довольно нудным, не обращайте внимания и сделайте просто для закрепления пройденного. Далее придется очень часто и развернуто использовать if...then...else, поэтому добейтесь уверенности в своих знаниях этой конструкции. В следующем уроке мы займемся тем же самым, но гораздо серьезней и напишем пару программ посложнее.
Вопросы - ответыМожно ли программу, напечатанную в текстовом файле скопировать в Turbo Pascal? Если можно то как?
Рубрика: Работа с Pascal
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|