- •«Сборник решения задач на языке Паскаль»
- •Введение.
- •Основные понятия системы программирования.
- •Среда программирования Turbo Pascal.
- •Окно среды программирования тр7 состоит:
- •Функциональные клавиши:
- •Текстовый редактор:
- •Элементы языка программирования Паскаль. Алфавит языка тр7.
- •Типы данных в языке Pascal.
- •Идентификаторы. Константы и переменные. Выражения. Комментарий.
- •Операции тр7. Операции в языке Паскаль подразделяются на:
- •Вещественное деление Целочисленное деление Деление по модулю
- •Общий вид программы в тр7.
- •Операторы тр7.
- •Операторы ввода-вывода.
- •Моя первая программа
- •Число шестнадцать записывается так: 16
- •Оператор присваивания.
- •Составной и пустой оператор. Линейные программы и алгоритмы.
- •Варианты заданий
- •Составить программу для вычисления значения функции, при целых аргументах:
- •Составить программу для решения следующих задач:
- •Составить программу для выполнения целочисленных арифметических действий (Условный оператор, оператор выбора, операторы повтора, массивы и строки не использовать):
- •Условные и безусловные операторы в языке Паскаль.
- •Варианты заданий Используя условный оператор выполните следующие задания:
- •Составить программу для вычисления значения функции при целых аргументах:
- •2. Используя сокращенную форму записи условного оператора выполнить следующие задания:
- •3 Используя вложенные условные операторы выполнить следующие задания:
- •Составить программу для выполнения следующих действий:
- •5. Используя оператор выбора выполните следующие задания:
- •Операторы повтора в языке Паскаль.
- •Циклом с предусловием;
- •Циклом с постусловием;
- •Циклом с параметром;
- •Принцип действия цикла While:
- •Пример 1: Составить программу для вычисления суммы первых 10 натуральных чисел.
- •Общая форма записи цикла Repeat…Until
- •Принцип действия цикла Repeat…Until:
- •Общий вид цикла For…to
- •Существует ещё одна форма записи цикла с параметром:
- •Варианты заданий
- •Составить программу для организации вывода по требуемому формату:
- •Составить программу для нахождения суммы конечного ряда:
- •Составить программу для обработки данных во время ввода:
- •4. Используя цикл с предусловием выполните следующие задания:
- •5. Используя цикл с постусловием выполните следующие задания:
- •6. Используя любой удобный цикл выполните следующие задания:
- •7. Решение простейших олимпиадных задач:
- •Одномерные и двумерные массивы
- •Варианты заданий Одномерные массивы
- •Составить программу для обработки элементов массива:
- •Составить программу для анализа элементов массива:
- •Использование цикла с условием при обработке элементов массива:
- •Перестановка, вставка и удаление элементов массива:
- •Логические задачи:
- •Двумерные массивы
- •Составить программу для обработки двумерного массива.
- •Литерные величины
- •Операции над строками:
- •Варианты заданий.
- •Составить программу осуществляющую поиск в строке:
- •Составить программу осуществляющую поиск и замену в строке:
- •Составить программу осуществляющую обработку цифр в строке:
- •Подпрограммы.
- •Подпрограммы-функции.
- •Подпрограммы-процедуры.
- •Область видимости идентификаторов.
- •Формальные и фактические параметры.
- •Параметры-значения, параметры-переменные, нетипизированные параметры.
- •Модули.
- •Варианты заданий.
- •Файловый тип данных
- •Варианты заданий.
- •1. Составить программу осуществляющую поиск в строке:
- •2. Составить программу осуществляющую поиск и замену в строке:
- •3. Составить программу осуществляющую обработку цифр в строке:
- •Множества
- •Варианты заданий.
- •Текстовый режим
- •Варианты заданий.
- •Составить программу для вывода заданного слова, заданного цвета в заданной строке на заданном фоне:
- •Составить программу для вывода букв заданного слова, в заданной строке на заданном фоне:
- •Варианты заданий.
Условные и безусловные операторы в языке Паскаль.
Условный оператор.
Условный оператор используется для составления разветвляющихся программ.
Разветвляющаяся программа – это программа, содержащая хотя бы одно логическое условие, в соответствии с которым будет выполнятся то или иное действие.
У
словный
оператор существует в двух формах
записи: полной и сокращённой.
Полная форма записи: да нет
IF <условие>
THEN
<оператор 1>
ELSE
<оператор 2>;
Служебные слова IF, THEN, ELSE означают соответственно: ЕСЛИ, ТО, ИНАЧЕ.
Принцип работы полного условного оператора: вначале проверяется условие стоящие после зарезервированного слова IF. Если оно истинно, то выполняется оператор 1, стоящий после зарезервированного слова THEN, а иначе, если условие оказывается ложным, то выполняется оператор 2 стоящий после зарезервированного слова ELSE.
Следует обратить внимание, что перед словом ELSE « ; » не ставится!
С
окращённая
форма записи:
IF <условие> да нет
THEN
<оператор >;
Принцип работы сокращённого условного оператора: если условие стоящие после зарезервированного слова IF истинно, то выполняется оператор, стоящий после зарезервированного слова THEN, и на этом действие условного оператора прекращается. Если условие ложное, то условный оператор не выполняет ни каких действий.
Условие, фигурирующее в условном операторе, может быть как простым, так и сложным. Простым называется условие, в котором присутствует лишь один знак отношения. Сложным называется такое условие, которое состоит из двух и более простых условий соединенных между собой логическими союзами.
Наиболее часто используемые логические союзы – это конъюнкция и дизъюнкция.
Рассмотрим подробнее эти два союза:
Конъюнкция (от латинского conjunctio - связываю) или логическое умножение.
соответствует союзу И (AND)
обозначается &
Схематичное обозначение:
Формула:
С=А&В=АВ
Логический смысл: Сложное условие С будет истинным тогда и только тогда, когда будут истинным одновременно и условие А и условие В.
Т
аблица
истинности:
А |
В |
С |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
Дизъюнкция (от латинского disjunctio - различаю) или логическое сложение.
соответствует союзу ИЛИ (OR)
обозначается
Схематичное обозначение:
Формула
С=АВ=А+В
Логический смысл: Сложное условие С будет ложным тогда и только тогда, когда будут ложными одновременно и условие А и условие В.
Т
аблица
истинности:
А |
В |
С |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
При использовании сложных условий необходимо помнить:
что каждое простое условие, входящие в состав сложного условия должно заключаться в круглые скобки;
логический союз AND имеет больший приоритет, чем логический союз OR.
Рассмотрим примеры.
Пример1. Составить программу для вычисления значения функции:
Program Fuction;
Var x : integer;
y : real;
Begin
Write(‘Введите х=’);
Readln(x);
IF x>=0
THEN
Y:=sqrt(x)
ELSE
Y:=sqr(x);
Writeln(‘X=’,x,‘ Y=’,y);
End.
Пример2. Составить программу для нахождения модуля действительного числа (стандартную функцию ABS не использовать).
Program Modul;
Var а,b: integer;
Begin
Writeln(‘Введите а=’);
Readln(a);
IF а>=0
THEN b:=а
ELSE b:= –а;
Writeln(‘Модуль числа’,a,’=’,b);
End.
Пример 3. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что (х< >0) и (y< >0).
Program Chet;
Var x,y:integer;
Begin
Write(‘введите координаты x и y:’);
Readln(x,y);
If (x>0) and (y>0)
Then
Writeln(1)
Else
If (x>0) and (y<0)
Then
Writeln(4)
Else
If (x<0) and (y>0)
Then
Writeln(2)
Else
Writeln(3);
End.
Пример 4. Даны два натуральных двузначных числа М и K. В большем из этих чисел проверить содержит ли оно цифру N или кратно ли оно N.
Program Number;
Var m,k,n,mx:integer;
Begin
Writeln(‘Введите три числа:’);
Readln(m,k,n);
If m>k
Then
mx:=m
Else
mx:=k;
If (mx div 10=n) or (mx mod 10=n) or (mx mod n=0)
Then
Writeln('Да')
Else
Writeln('Нет');
End.
Оператор выбора.
Для
ситуаций, где имеется несколько (три и
более) альтернатив, вместо условного
оператора больше подходит оператор
выбора.
Общая форма записи:
case <выражение-селектор> of
<список значений 1> : <оператор 1>;
<список значений 2> : <оператор 2>;
…………………………:………………… ;
<список значений N> : <оператор N>;
else <оператор>;
end;
Принцип работы оператора выбора: при выполнении данного оператора вначале вычисляется значение выражения-селектора стоящего после зарезервированного слова case. Затем выбирается тот список значений, которому принадлежит полученное значение, и выполняется соответствующий оператор, следующий за двоеточием. Оператор стоящий после зарезервированного слова else выполняется если ни один из списков значений не удовлетворил значению выражения-селектора и может отсутствовать. В списках значений допустимыми являются скалярные типы переменных, которые включают целые и исключают вещественные типы. Любое заданное значение выражения-селектора может входить в список значений неоднократно, но выполнятся будет лишь первая подходящая ветвь.
Рассмотрим примеры.
Пример1. Вывести на экран словесную интерпретацию введенного однозначного натурального числа.
Program ramdjon;
Digit:integer;
Begin
Write (‘ввести одно число’);
Readn (digit);
If (digit<0) or (digit>9)
Then
Writeln (‘Вы ввели не однозначное число!‘)
Else
Case digit of
0:writeln ('ноль’);
1:writeln(‘один’);
2:writeln(‘два’);
3:writeln(‘три’);
4:writeln(‘четыре’);
5:writeln(‘пять’);
6:writeln(‘шесть’);
7:writeln(‘семь’);
8:wirteln(‘восемь’);
9:writeln(’девять’);
End;
End.
Пример2. Дано натуральное число N. Преобразовать его в зависимости от остатка деления числа N на число 17 по правилу:
если остаток равен 0, то N должно стать равным тоже 0;
если остаток равен 1 или 6, то N должно стать равным -N;
если остаток равен 2,3 или 5, то N должно стать равным 2N;
если остаток равен 4, то N должно стать равным 3N;
в остальных случаях N равняется 5N.
Program Ost;
Var n:word;
Begin
Write(‘Введите число n=’);
Readln(n);
Case n mod 17 of
0:n:=0;
1,6:n:=-n;
2,3,5:n:=2*n;
4:n:=3*n;
Else n:=5*n;
end;
Writeln(‘n=’,n);
End.
Пример2. Дано целое число N (N<10000 и N>-10000). Определить какое это число (однозначное, двузначное, трехзначное или четырехзначное).
Program Nat;
Var n:integer;
Begin
Write(‘Введите число n=’);
Readln(n);
Case n of
-9..9:Writeln(‘число ’,n,’ однозначное’);
-99..99:Writeln(‘число ’,n,’ двузначное’);
-999..999:Writeln(‘число ’,n,’ трехзначное’);
-9999..9999:Writeln(‘число ’,n,’ четырехзначное’);
Else Writeln(‘число ’,n,’ больше 10000 или меньше -10000’);
end;
End.
Оператор безусловного перехода
В языке Паскаль предусмотрен специальный оператор, который осуществляет насильственный переход в ту точку программу, на которую указывает специальная метка.
Общая форма записи:
Goto <Метка>;
Принцип действия: при выполнении программы, когда встречается данный оператор, то независимо от того какие ниже следуют операторы, выполнение программы передается в начало того оператора, перед которым стоит указанная метка с двоеточием (соответственно данная метка должна быть обязательно описана в разделе описания меток Label).
В качестве примера можно привести листинг следующей программы:
Program AAA;
Label M;
Var a,b:integer;
Begin
A:=2;
B:=3;
Goto M;
A:=A+B;
B:=B+A;
M: writeln(a,’ ‘,b);
End.
Результат выполнения программы: А=2, В=3.
Хочется отметить, что использование меток и оператора безусловного перехода не целесообразно при составлении программ и в программировании считается «дурным тоном». Поэтому, по возможности, следует избегать использовать данный оператор, хотя встречаются такие ситуации, когда без оператора Goto просто не обойтись.
