- •Отладка программ пользователя в 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;
- •Из чисел в строки
А можно и так:
|
Const |
A: Array[1..10] of String = |
('Одна из строк массива', |
'Очередная строка массива', |
............ |
'Очередная строка массива'); |
|
begin |
....... |
end. |
Это знакомый нам вариант с предопределением переменных.
После того, как мы создали такой массив, весь рабочий материал для программы готов и можно думать о алгоритме. Начнем с того, что разберемся с самим движением строк.
Представьте себе строку, движущуюся по экрану - сначала горизонтально к центру, а потом падающую вниз. Что это? Это пример самой, что ни на есть анимации. Реализовываться она путем вывода строки с последующим ее затиранием. Похожий пример мы разбирали в задаче N1, где выводились здезды с последующим затиранием их пробелом.
Итак, мы нужно выводить строки и после их затирать. Это несложно, как мне кажестся. Дальше нужно разобраться с самим движением, а точнее со способом передвижения строки по экрану. Из предыдущих задач известно, что для отображения строки в определенном месте экрана надо перевести курсор в место с необходимыми координатами, после чего уже вывести строку. Координаты нужно изменять в двух циклах - сначала будем двигаться горизонтально от края к центру, после вниз до конца. И опять, по новой - но уже с другим элементом массива, то есть с другой строкой.
Циклы предстоит реализовать вам :) равно как и необходимые действия по анимации. Я же расскажу, как состаить общий план алгоритма работы, которого вам предстоит придерживаться.
Итак, программа будет работать следующим образом:
Пока пользователь не захочет выйти (не нажата клавиша Esc и т.п.) делаем:
Увеличиваем индекс строки (новая строка массива)
Выводим текущую строку в ее координаты (горизонтально);
Выполняем необходимые действия по анимации;
Изменяем координаты;
Выводим текущую строку в ее координаты (вертикально);
Выполняем необходимые действия по анимации;
Изменяем координаты;
Вот такие вот действия. Все достаточно просто, однако вам уже предстоит выполнить больше действий, чем в прошлых программах. Но они очень простые, так что думаю, что сложностей не возникнет. Посмотреть, как работает предложенный нами вариант программы можно как всегда на сайте http://prog.agava.ru.
Домашнее задание
Предлагаю вашему вниманию несколько задач для самостоятельного рассмотрения. Очень рекомендую попробовать решить их, используя приведенные мной примеры составления решений и алгоритмов. Поседите с бумагой и ручкой, возможно что-то и не будет получаться с первого раза - не беда, дальше обязательно выйдет. Главное - помните, при хорошем рассмотрении и разложении по полочкам любая из этих задач вам по силам.
Итак, задачи:
|
| |
1 |
Написать программу, чтобы слово съезжалось с боков экрана по буквам | |
2 |
Написать программу, к-ая переворачивает вводимое слово задом наперед. | |
3 |
Написать программу-меню. Выбор какого-либо пункт осуществляется по вводу его номера с клавуатуры. При этом должны писаться разные сообщения. | |
4 |
Написать программу "строки состояния". Строка экрана постепенно заполняется минусами "-". Строка останавливается каждый раз в разном месте. В следующей строчке выводится процент заполнения. Вариант: строка до конца, процент заполнения выводится динамически. | |
5 |
Написать программу-калькулятор (Мы также вместе замемся этим в дальнешем, я предложу свой вариант калькулятора) | |
6 |
Написать программу "ввода пароля". Запрашивается пароль, очищается экран, затем дается три попытки его ввести. |
Решения всех задач будут к следующему выпуску выложены на сайте рассылки. Кроме того, сегодня я уже поместил туда несколько дополнительных задач, которые, возможно, будут вам полезны при выполнении ДЗ. В любом случае, они содержат новые алгоритмы и приемы программирования, так что советую посмотреть и поразбираться самостоятельно.
Занимайтесь, ибо это и есть двигатель на пути к успеху!
Вопросы- ответы