- •Отладка программ пользователя в 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;
- •Из чисел в строки
Обработка строк
Задача: С клавиатуры вводится слово. Нужно на весь экран распространить это слово так, чтобы на 2-ой строке первая буква перескочила в конец. И т.д. Пример:
интернет
нтернети
тернетин
........ и т. д. .............
Итак, будем переставлять буквы. Сразу же определимся, где будет храниться введенная строка. Для этого нам подойдет тип String. План действий:
Введем переменную типа String с клавиатуры;
Будем переставлять буквы соответсвующим образом;
Сразу же будем выводить ее на экран;
Как видите, задач для написания этой программы не так уж и много. Но при их выполнении могут возникать еще и другие, не столь очевидные проблемы. Но все они, ествественно, решаемы - так что давайте двигаться дальше и разбираться, как будем осуществлять поставленные задачи.
1. Введите строку с клавиатуры. Ну, с этим, думаю, проблем не возникнет.
2. Будем переставлять буквы.
3. Выводить на экран.
Эти две задачи будут выполняться совместно, внутри цикла, который здесь просто необходим. Для начала давайте вспомним, что работать со строкой можно как и с массивом, то есть обращаться к каждому элементу в отдельности (см. пред. выпуски).
Теперь наглядно представим, как будет меняться наша строка по ходу перестановки элементов:
Исходная строка:
и н т е р н е т
2-й вариант:
н т е р н е т и
3-й вариант:
т е р н е т и н
4-й вариант:
е р н е т и н т
5-й вариант:
р н е т и н т е
6-й вариант:
н е т и н т е р
7-й вариант:
е т и н т е р н
8-й вариант:
т и н т е р н е
9-й вариант:
и н т е р н е т
Вот так и будет печататься и изменяться строка. Как вы видите, с каждым новым разом очередной символ переноситься в конец строки, после чего строка дополняется одним пробелом.
Собственно, это и все, в чем надо было разобраться для решения задачи. Осталось найти зависимость действий и составить алгоритм. Он будет следующего содержания:
1. Организуем цикл от 1-цы до Lenght(String); (см. пред. выпуски)
Добавлем к строке элемент, который соответсвует текущему элементу цикла: S := S + S[i];
Дополняем строку пробелами вначало: S := S + ' ';
Выводим строку на экран;
Это все. Теперь вам необходимо самостоятельно написать программу по приведенному алгоритму. Поверьте, вы сразу поймете, что все даже проще, чем кажется. Конечный вариант на сайте.
Задача №4
Титры фильма
Задача: Написать программу "титры фильма". Нужно, чтобы строчка выезжала сбоку экрана до середины, затем уходила вниз. Затем следующая выезжала.... После вывода всех строк цикл повторяется после некоторой паузы.
Перед тем, как начать пистать программу, как всегда давайте определимся, что же нужно для ее реализации. Здесь очевидно, что будет использоваться несколько строк, которые поочередно будут обрабатываться. Содержать эти строки удобно будет в массиве, с элементами которого мы и будем работать. Реализовать такой массив совсем несложно. Можно так:
|
var |
A: Array[1..10] of String; |
|
begin |
A[1] := 'Одна из строк массива'; |
A[2] := 'Очередная строка массива'; |
............ |
A[10] := 'Очередная строка массива'; |
end. |