- •А.И. Газейкина Основы структурного программирования на языке Паскаль
- •Тема 1. Линейные программы 4
- •Некоторые стандартные функции языка Турбо Паскаль
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 2. Разветвляющиеся программы Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 3. Циклические программы Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 4. Обработка данных строкового типа Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 5. Система типов языка Паскаль Краткое изложение теоретического материала
- •Тема 6. Перечисляемый тип Краткое изложение теоретического материала
- •Тема 7. Тип-диапазон Краткое изложение теоретического материала.
- •Тема 8. Множество (множественный тип) Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 9. Массивы в языке Паскаль Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 10. Графика в языке Паскаль Краткое изложение теоретического материала
- •Контрольные задания
- •Тема 11. Подпрограммы в языке Паскаль Краткое изложение теоретического материала
- •Процедуры в языке Турбо Паскаль
- •Функции в языке Турбо Паскаль
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 12. Тип данных запись (Record) Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 13. Работа с файлами в языке Паскаль Краткое изложение теоретического материала
- •Текстовые файлы
- •Примеры решаемых задач
- •Типизированные файлы
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 14. Динамические переменные в языке Паскаль Краткое изложение теоретического материала Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированные указатели
- •Динамические структуры данных
- •Примеры решаемых задач
- •Контрольные задания
- •Список литературы
Примеры решаемых задач
Пример 1. Составить программу, которая выведет на экран числа от 1 до N.
Пояснение: составим три программы, т.е. решим данную задачу с использованием трех различных циклических конструкций.
Цикл с предусловием |
Цикл с постусловием |
Цикл со счетчиком |
Program Numbers; Uses Crt; Var k, n : Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); k:=1; While k<=n do Begin Writeln(k); k:=k+1 End; Readln End. |
Program Numbers; Uses Crt; Var k, n : Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); k:=1; Repeat Writeln(k); k:=k+1 Until k=n+1; Readln End. |
Program Numbers; Uses Crt; Var k, n : Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); For k:=1 To n Do Writeln(k); Readln End. |
Пример 2. Составить программу, которая будет запрашивать пароль до тех пор, пока не будет введен верный ответ.
Программа:
Program Password;
Uses Crt;
Const Pass=’паскаль’; { верный ответ }
Var S : String;
Begin
Clrscr;
Repeat
Write (‘Пароль ’);
Readln (S); { вводим пароль }
If S <> Pass Then Writeln(‘Неверно!’)
Until S=Pass; { цикл закончен, если ввели верный пароль }
Writeln (‘Верно!’);
Readln
End.
Пример 3. Составить программу, которая выведет на экран все положительные члены арифметической прогрессии с разностью D= -1.5 и первым членом A.
Программа:
Program Progress;
Uses Crt;
Const D= -1.5; { Константа – разность прогрессии }
Var A : Real; { В А будут храниться по очереди все члены прогрессии }
Begin
Clrscr;
Write (‘Введите первый член прогрессии ’);
Readln (A);
While A > 0 Do {пока очередной член прогрессии положителен}
Begin
Writeln(A); { печатаем число – член прогрессии }
A := A + D { вычисляем следующий член прогрессии и записываем его в ту же переменную А }
End;
Readln
End.
Пример 4. Составить программу, которая вычислит общее количество «5», «4», «3» и «2», полученных студентами группы за экзамен по программированию, а также средний балл за экзамен, если известны количество студентов в группе и отметки каждого из них.
Программа:
Program Students;
Uses Crt;
Var N, K, K5, K4, K3, K2, S, M : Integer;
{ N – количество студентов в группе,
K – счетчик всех студентов,
K5 – счетчик «5»,
K4 – счетчик «4»,
K3 – счетчик «3»,
K2 – счетчик «2»,
S – сумма всех отметок,
M – отметка очередного студента }
Sb : Real; { Sb – средний балл за экзамен }
Begin
Clrscr;
Write (‘Сколько студентов в группе? ’);
Readln (N);
For K := 1 To N Do { перебираем всех студентов }
Begin
Writeln (‘введите отметку ’, K, ‘студента ’);
Readln (M); {В переменную М вводим все отметки по очереди}
S := S+M; { В переменной S накапливается сумма всех отметок}
Case M Of { Увеличиваем нужный счетчик }
5 : K5 := K5 + 1;
4 : K4 := K4 + 1;
3 : K3 := K3 + 1;
2 : K2 := K2 + 1
End
End;
Sb := S / N; { Вычисляем средний балл }
Writeln (‘Количество «5» ’, К5);
Writeln (‘Количество «4» ’, К4);
Writeln (‘Количество «3» ’, К3);
Writeln (‘Количество «2» ’, К2);
Writeln (‘Средний балл группы за экзамен ’, Sb :5:2);
Readln
End.
Пример 5. Составить программу, которая определит наибольшее из N вводимых чисел.
Алгоритм поиска экстремума (максимума или минимума) числовой последовательности: сначала вводится первое число, оно полагается максимальным (или минимальным). После этого вводятся все остальные числа (от 2-го до N-го), каждое из них сравнивается с максимумом (минимумом), и если оно больше (меньше), то максимуму (минимуму) присваивается введенное число.
Программа:
Program Maximum;
Uses Crt;
Var Max, X : Real;
K, N : Integer;
Begin
Clrscr;
Write (‘Сколько чисел? ’);
Readln (N);
Write (‘Введите первое число ’);
Readln (Max);
For K := 2 To N Do
Begin
Writeln (‘Введите ’, K, ‘ число ’);
Readln (X);
If X > Max Then Max := X
End;
Writeln (‘Наибольшее из введенных чисел ’, Max);
Readln
End.
Пример 6. Составить программу, которая рисует в алфавитно-цифровом режиме звездное небо из N разноцветных звезд, расположенных на экране случайным образом.
Указание: Для решения данной задачи необходимо использовать специальную функцию – датчик случайных чисел. Она вызывается следующим образом: Random (N). Датчик случайных чисел возвращает случайное целое число из интервала от 0 до N-1. Таким образом, после выполнения команды
A := Random (10);
значением переменной А будет какое-то число (неизвестное заранее) из интервала от 0 до 9. Для того, чтобы при каждом запуске программы генерировалась новая последовательность случайных чисел, необходимо перед вызовом функции Random выполнить инициализацию датчика случайных чисел. Она выполняется командой Randomize (т.е. вызывается процедура с таким именем).
Кроме того, для решения данной задачи может потребоваться использование следующих процедур из модуля CRT:
ClrScr; - очистка экрана;
TextColor(c); - цвет выводимого текста, 0 с 15. Параметр С – это номер цвета (см. Приложение 1).
TextBackGround(c); - цвет фона, 0 с 7. Параметр С – это номер цвета (см. Приложение 1).
GotoXY(x,y); - позиционирование курсора в точку с координатами (x,y): 1 x 80, 1 y 25 (или 1 y 40 в зависимости от установленного максимального количества строк в алфавитно-цифровом режиме).
Delay(n); - приостановка (задержка) работы программы на n миллисекунд.
Программа:
Program Sky;
Uses Crt;
Var n, i, x, y, c : Integer;
Begin
ClrScr;
Write (‘Сколько звезд будет на небе ? ’);
Readln (n);
ClrScr;
Randomize;
For i := 1 To n Do
Begin
x := random (80) + 1;
y := random (24) + 1;
c := random (15) + 1;
TextColor (c);
Gotoxy (x, y);
Write (‘ * ’)
end;
Readln
End.