- •Отладка программ пользователя в turbo pascal.
 - •Ваша первая программа на Паскале.
 - •Синтаксис выражений.
 - •Тестирование программы.
 - •Что теперь?
 - •Использование программы Turbo Pascal 7.0
 - •Проверка на ошибки - "компиляция".
 - •Запуск программы - "выполнение".
 - •Программирование на Паскале
 - •Целые типы
 - •Пишем программу
 - •Домашнее задание по Паскалю
 - •Арифметические процедуры
 - •Вопросы - ответы
 - •Структура программы
 - •Новые типы данных
 - •If…then…else - Важная конструкция языка
 - •Процедура goto
 - •Повторить действие? (y/n):
 - •Практика
 - •Вопросы - ответы
 - •Цикл for
 - •Задание №1
 - •Задание №2
 - •Задание №3 (обширное)
 - •2.По теме "строки": напишите программу, присваивающую переменной Char последний символ введенной строки
 - •Вопрос 3. Может ли Паскаль считывать данные до нажатия "Ввода" (Например, как в Windows: нажмите Esc для отмены)?
 - •Вопрос 4. Можно ли сделать ввод данных скрытым звёздочками (***), например, как при вводе пароля?
 - •Вопрос 5. Есть ли в Паскале функция, с помощью которой внутренний динамик может "бипнуть" (Примерно, как при загрузке компьютера)?
 - •Звездное небо (аналог экранной заставки Norton Commander)
 - •Обработка строк
 - •А можно и так:
 - •Вопрос 1. Программа подсчитывает дискриминант! в конце запрос: "Вы хотите еще найти дискриминант? y/n" Как сделать чтобы при нажатии на "y" программа начаналась сначала, а при нажатии на "n" выходила?
 - •Вопрос 4. У меня вот такой вопрос- как в программе описать массив X, если заранее неизвестна его размерность (т.Е. Кол- во элементов, как я понимаю) ?
 - •Вопрос 5. Как можно запустить программу?
 - •Вопрос 7. При запуске Паскаля всё время появляется старая программа и приходится закрывать окно с этим текстом и открывать свежее. Как от этого избавится?
 - •Вопрос 8. В рассылке n11 Вы рассказывали про форматный вывод .Чтобы реализовать это, мы приписывали к переменной, стоящей в процедуре два числа, разделив их двоеточием: Write('Real: ', a:5:2);
 - •Список_переменных: тип
 - •Оформление процедуры
 - •Write(Add(n1, n2)); - печатаем значение, возвращаемое функцией Add;
 - •Из чисел в строки
 
Повторить действие? (y/n):
Здесь видно, что ввести нужно всего лишь одну букву - Y или N. Заводить для этого целую строку нецелесообразно, хотя и можно. Но при этом программа получается более громоздкой - целая строка используется для хранения всего лишь одного символа. При этом мы теряем память, засоряя ее; работа несколько замедляется, так как строки долго обрабатываются. В общем, здесь встает вопрос оптимизации, который волнует абсолютно всех программистов на свете.
Именно для таких целей - оптимизации - существует один тип, тоже символьный, он более простой, чем строки. Это тип Char.
Char - Переменная этого типа способна хранить всего лишь один символ. Это как бы строка, но с максимальной длиной, равной единице. Он очень удобен для некоторых случаев: невероятно экономит память, ускоряет работу и позволяет легче состалять программу.
Вот примеры присваивания значений переменной типа Char:
| 
				 
  | 
| 
				 Program UseCHAR;  | 
| 
				 var  | 
| 
				 C: Char;  | 
| 
				 begin  | 
| 
				 C := 'Y';  | 
| 
				 Write(C);  | 
| 
				 C := ':';  | 
| 
				 Write(C);  | 
| 
				 Readln(C);  | 
| 
				 If C <> 'Y' Then Write('C не является буквой Y!');  | 
| 
				 Readln;  | 
| 
				 end.  | 
Посмотрите внимательно на пример. Он очень простой, введите его в Паскале и посмотрите, что он делает. При его работе выводиться: Y: после чего программа ждет ввода. Если введенный символ не буква Y, то об этом сообщается пользователю. Необходимые пояснения к типу Char.
Переменной типа Char можно прямо в программе присвоить значение. Это делается посредством знака присваивания: ":=", после которого должен находиться символ, заключенный в одиночные кавычки (апострофы): 'A'.
Переменную можно с успехом использовать в конструкциях сравнения;
Ее можно читать с клавиатуры. При этом если мы введем строку, состоящую из нескольких символов, то значением переменной Char станет только 1-й символ.
Его можно прибавлять к строке:
Program UseCHAR;
var
C: Char;
S: String;
begin
Write('Введите строку: ');
Readln(S);
Write('Введите символ: ');
Readln(C);
S := S + C;
Write('Если это сложить, получиться: ',S);
Readln;
end.
Но вычитать нельзя!!! Запомните это.
Переменная типа Char может хранить совершенно любой символ, в том числе и букву русского языка (знак кириллицы).
Ну а теперь, напоследок, напишем программу, которая будет очень хорошо демонстрировать использование строк, символов, сравнения и goto.
Программа будет читать символы с клавиатуры, пока не прочитает символ "!" - восклицательный знак. Он будет служить сигналом окончания ввода. Все читаемые символы будут записываться в строку, которая по окончанию действия выведстя на экран. Начнем?
Для начала, как всегда, запишем алгоритм программы, то есть определимся, что она будет делать и расскажем это простым человеческим языком. Условимся, что мы имеем две переменных
- S: String; - в нее будут записываться все вводимые символы;
- C: Char; - этот символ будет постоянно читаться с клавиатуры.
А теперь алгоритм:
Читаем символ с клавиатуры;
Проверяем - если это не "!", то:
Добавляем введенный символ в строку (прибавляем его к строке);
Переходим у вводу символа - пункту 1.
Иначе (символ = !):
Выводим составленную строку на экран;
Ставим Readln; тем самым затормаживая программу;
Завершаем программу;
Вот вроде и все. Теперь текст программы:
| 
				 
  | 
| 
				 Program Primer;  | 
| 
				 label  | 
| 
				 A;  | 
| 
				 var  | 
| 
				 C: Char;  | 
| 
				 S: String;  | 
| 
				 begin  | 
| 
				 A;  | 
| 
				 Write('Введите символ: ');  | 
| 
				 Readln(С);  | 
| 
				 If C <> '!' Then  | 
| 
				 begin  | 
| 
				 S := S + C;  | 
| 
				 Goto A;  | 
| 
				 end  | 
| 
				 else  | 
| 
				 Write('Вы ввели эти символы: ',S);  | 
| 
				 Readln;  | 
| 
				 end.  | 
Введите эту программу и запустите. Как вам ее работа? Она делает все то, что и планировалось, помещает вводимые символы в строку и выводит ее на экран. Объяснять эту программу по шагам я не буду, разбирайтесь сами, это будет очень полезно. Советую написать что-нибудь самостоятельно в этом роде; придумайте условие и реализуйте его.
А пока на сегодня про Паскаль все, осталась небольшая практика.
