- •«Сборник решения задач на языке Паскаль»
- •Введение.
- •Основные понятия системы программирования.
- •Среда программирования 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. Составить программу осуществляющую обработку цифр в строке:
- •Множества
- •Варианты заданий.
- •Текстовый режим
- •Варианты заданий.
- •Составить программу для вывода заданного слова, заданного цвета в заданной строке на заданном фоне:
- •Составить программу для вывода букв заданного слова, в заданной строке на заданном фоне:
- •Варианты заданий.
Литерные величины
Литерные величины представлены в Турбо Паскале следующими типами: символьным и строковым.
Символьная величина – это величина, значением которой являются символы, взятые в апостроф (одна верхняя запятая).
Для её обозначения используется служебное слово char.
Строковая величина – это величина значением, которой является произвольная последовательность символов, взятая в апостроф.
Для её обозначения используется служебное слово string.
Каждому символу, согласно таблице ASCII, соответствует его код.ASCII – это американская стандартный код для обмена информацией. Код любого символа есть число целого типа от 0 до 127. Также есть расширенная таблица ASCII, которая состоит из двух частей: первая стандартная (0..127), вторая (128..255) предназначена для букв национальных алфавитов.
Строковая величина представляет собой массив символов. Каждый символ в строке имеет свой порядковый номер, указав который мы можем обратиться к любому символу в строке. Нулевой символ в строке содержит длину данной строки.
Описываются символьные и строковые переменные следующим образом:
Var a,b,c:char;
S:string[20];
S1:string;
Операции над строками:
В Паскале имеется набор процедур и функций для работы со строками.
1. операция конкатенация (сцепление) двух строк. Обозначается «+»
Тоже самое делает функция Concat(s1,s2). К строке s1прикрепляется строка s2.
2. функция chr(n) – по коду символа получает сам символ.
3. функция ord(s) – по символу получает его код.
4. функция upcase(s) – делает строчные буквы латинского алфавита прописными.
5. функция length(s) – определяет длину строки
6. функция сору(s,p,n) – копирует n символов из строки s начиная с позиции p.
Например: srt:=copy(‘1234567abcd890’,8,4);
Даст результат str=abcd
7. функция Pos(s1,s2) – определяет начальную позицию вхождения строки s1 в s2.
Например: a:=pos(‘f(x)’,’let f(x)=2x’); a=5
8. процедура delete(s,p,n) – удаляет из строки s начиная с позиции p n символов.
Например: a:=’123abcde4567890’;
Delete(a,4,5); a=’1234567890’
9. процедура Insert(s1,s2,p) – вставляет строку s1 в строку s2 начиная с позиции p.
Например:
a:=’1237890’;
insert(‘456’,a,4);
а=’1234567890’;
10. процедура Str(n,s) – преобразует число n в строку s.
11. процедура Val(s,n,t) – преобразует строку s в число n. Параметр t имеет значение 0 если преобразование выполнилась успешно. Если нет то в нём хранится номер позиции ошибочно заданного символа.
К строкам можно применять операции отношения, т.е. сравнивать их. По сути дела сравниваются коды символов. Больший код символа имеет больший приоритет над меньшим. Более короткая строка всегда меньше более длинной.
Рассмотрим следующие примеры:
Пример № 1. В введенной литерной величине подсчитать количество букв «а» или «А».
Program Exemple_1;
Var s:string;
k,i,n:byte;
Begin
Write(‘Введите строку:’);
Readln(s);
n:=length(s);
for i:=1 to n do
if (s[i]=’a’) or (s[i]=’A’)
then inc(k);
Writeln(‘k=’,k);
End.
Пример № 2. В введенной литерной величине заменить буквы «а» или «А» на «о» или «О» соответственно.
Program Exemple_2;
Var s:string;
i,n:byte;
Begin
Write(‘Введите строку:’);
Readln(s);
n:=length(s);
for i:=1 to n do
begin
if s[i]=’a’
then s[i]:=’o’;
if s[i]=’A’
then s[i]:=’O’;
end;
Writeln(s);
End.
Пример № 3. В введенной литерной величине содержатся латинские строчные буквы. Заменить строчные буквы на прописные соответственно.
Program Exemple_3;
Var s:string;
i:byte;
Begin
Write(‘Введите строку:’);
Readln(s);
for i:=1 to ord(s[0]) do
s[i]:=upcase(s[i]);
Writeln(s);
End.
Пример № 4. Дано натуральное число n. Приписать к нему соответственно по цифре 1 слева и справа и вывести измененное число n. (например: n=345, тогда результат n=13451).
Program Exemple_4;
Var s:string;
i,n,t:longint;
Begin
Write(‘Введите число:’);
Readln(n);
str(n,s);
s:=’1’+s+’1’;
val(s,n,t);
Writeln(n);
End.
Пример № 5. В введенной литерной величине все слова разделены пробелами. Заменить окончания слов «ла» или «ЛА» на «ло» или «ЛО» соответственно.
Program Exemple_5;
Var s:string;
i,n:integer;
Begin
readln(s);
s:=s+' ';
for i:=1 to length(s)-2 do
begin
if copy(s,i,3)='ла '
then
begin
delete(s,i,3);
insert('ло ',s,i);
end;
if copy(s,i,3)='ЛА '
then
begin
delete(s,i,3);
insert('ЛО ',s,i);
end;
end;
writeln(s);
End.
Пример № 6. Составить программу, которая заменяет введенный текст по следующему правилу: А на B, B на C, C на D, и т.д.
Program char_bud;
Var s:string;
i,j:integer;
Begin
Writeln (‘Введите строку:’);
Readln (s);
for i:=1 to length(s) do
s[i]:=upcase(s[i]);
for i:=1 to length(s) do
s[i]:=char(ord(s[i])+1);
Writeln(s);
End.
