- •Оглавление
- •Предисловие
- •Введение
- •1. Общие сведения о языках программирования
- •1.1. Краткая история эвм и языков программирования
- •1.2. Трансляторы
- •1.3. Основные понятия алгоритмических языков
- •2. Интегрированная среда borland pascal
- •2.1. Краткая характеристика. Запуск программы
- •2.2. Основы работы в редакторе
- •2.3. Система меню
- •2.3.1. Меню опции file
- •2.3.2. Меню опции edit
- •2.3.3. Меню опции search
- •2.3.4. Меню опции run
- •2.3.5. Меню опции compile
- •2.3.6. Меню опции debug
- •2.3.7. Меню опции tools
- •2.3.8. Меню опции options
- •2.3.9. Меню опции window
- •2.3.10. Меню опции help
- •3. Синтаксис языка borland pascal
- •3.1. Элементы языка
- •3.2. Служебные (зарезервированные слова), директивы и идентификаторы
- •3.3. Основные элементы программирования
- •3.4. Структура программы
- •4. Типы данных
- •4.1. Простые типы
- •4.1.1. Целые типы.
- •4.1.2. Логический тип
- •4.1.3. Символьный тип
- •4.1.4. Перечисляемый тип
- •4.1.6. Вещественные типы
- •4.2. Структурированные типы
- •4.2.1. Массивы
- •4.2.2. Записи
- •4.2.3. Множества
- •4.2.4. Файловый тип
- •Процедуры и функции ввода-вывода
- •4.3. Указатели
- •4.4. Строки
- •4.5. Совместимость и преобразование типов
- •4.6. Константы и константные выражения
- •5. Операторы и процедуры языка
- •5.1. Поразрядные оператоpы. Логические оператоpы. Опеpатоpы отношения
- •5.2. Оператор присваивания
- •5.3. Процедуры ввода и вывода
- •5.4. Условные операторы
- •5.4.1. Оператор If
- •5.4.2. Оператор case
- •5.5. Операторы цикла
- •5.5.1. Оператор while (цикл с предусловием )
- •5.5.2. Оператор repeat..Until (Цикл с постусловием)
- •5.5.3. Оператор цикла For (цикл с заданным количеством повторений)
- •5.6. Оператор безусловного перехода
- •5.7. Функции и процедуры для работы со строковыми и символьными данными
- •5.8. Комментарии в программе
- •6. Процедуры и функции
- •6.1. Параметры подпрограмм
- •7. Использование графики в borland pascal
- •7.1. Константы модуля Graph
- •7.1.1. Константы цвета
- •7.1.2. Константы типов и толщины линий
- •7.1.3. Константы шаблона штриховки
- •Заключение
- •Библиографический список
- •Решение задач на языке программирования Паскаль
- •Пример 9. Определить, имеются ли в массиве а[5,4] столбцы, состоящие из одних и тех же элементов, если такие есть, выдавать номера одинаковых столбцов, если нет – выдать сообщение.
- •Варианты заданий для самостоятельной работы Вычисление значений выражений
- •Вычислить значение функции с использованием условных операторов
- •Программирование циклических алгоритмов с заданным числом повторений
- •Программирование циклических алгоритмов с предусловием
- •Программирование циклических алгоритмов с постусловием
- •Программирование алгоритмов обработки одномерных массивов
- •Программирование алгоритмов обработки двумерных массивов
- •Программирование с использованием функций
- •Программирование с использованием процедур
- •Обработка символьных и строковых данных
- •Графика
- •Оператор
Пример 9. Определить, имеются ли в массиве а[5,4] столбцы, состоящие из одних и тех же элементов, если такие есть, выдавать номера одинаковых столбцов, если нет – выдать сообщение.
Пояснение. Сортируем элементы столбцов. Сравнивая элементы в столбцах, в случае если количество одинаковых элементов совпадает с количеством элементов в столбце выдаем номера этих столбцов на печать и изменяем флажок S. Если флажок свое значение не поменял значит, столбцов с одинаковыми элементами нет о чем выдается сообщение.
Программа.
program Zadacha;
var
A : array[1..5,1..4] of integer;
I, J, I1, N, S, T, : integer;
begin
{Ввод массива A}
for I:=1 to 5 do
begin
for J:=1 to 4 do read(A[I,J]);
end;
{ сортировка элементов столбца массива A}
for J:=1 to 4 do
begin
for I:=1 to 4 do
begin
for I1:=I+1 to 5 do
if A[I1,J]I<A[I,J] then
begin
T:=A[I,J];
A[I,J]:=A[I1,J];
A[I1,J]:=T;
end;
end;
end;
{Проверяем имеются ли столбцы с одинаковыми элементами }
S:=0;
for J:=1 to 3 do
begin
for J1:=J+1 to 4 do
begin
N:=0;
for I:=1 to 5 do if A[I,J]=A[I,J1] then N:=N+1;
if N=5 then
begin
S:=1;
writeln (‘одинаковые столбцы’, J:3,J1:3);
end;
end;
end;
if S=0 then writeln(‘одинаковых столбцов нет’);
end.
ПРИМЕР. 10. Дан целочисленный массив A размером NxN. Составить программу, которая меняет местами элементы, расположенные ниже главной диагонали с элементами, расположенными выше главной диагонали в зеркальном отображении относительно главной диагонали.
Пояснение. Определяем участок сектора, расположенный ниже главной диагонали и меняем элементы местами.
Программа 7.34.
program Zadacha;
var
A : array[1..100,1..100] of integer;
I, M, N, J, T : integer;
begin
read(M,N); { Ввод размерности массива A}
{Ввод массива A}
for I:=1 to M do
begin
for J:=1 to N do read(A[I,J]);
end;
{ перестановка элементов массива A}
for I:=2 to N do
begin
for J:=1 to I-1 do
begin
T:=A[I,J];
A[I,J]:=A[J,I];
A[J,I]:=T;
end;
end;
{ Печать преобразованного массива}
for I:=1 to M do
begin
for J:=1 to N do write(A[I,J],’ ’);
writeln;
end;
end.
ПРИМЕР. 11. Дан целочисленный массив A размером NxN. Составить программу, которая меняет местами элементы, расположенные ниже побочной диагонали с элементами, расположенными выше побочной диагонали в зеркальном отображении относительно побочной диагонали.
Пояснение. Определяем сектор элементов, расположенных выше побочной диагонали и, используя закономерности изменений номера столбца и номера строки, меняем элементы местами.
Программа.
program Zadacha;
var
A : array[1..100,1..100] of integer;
I, M, N, J, T : integer;
begin
read(M,N); { Ввод размерности массива A}
{Ввод массива A}
for I:=1 to M do
begin
For J:=1 To N Do read(A[I,J]);
end;
{ перестановка элементов массива A}
for I:=1 to N-1 do
begin
for J:=1 to N-I do
begin
T:=A[I,J];
A[I,J]:=A[N-J+1,N-I+1];
A[N-J+1,N-I+1]:=T;
end;
end;
{ Печать преобразованного массива}
for I:=1 To M Do
begin
for J:=1 to N do write(A[I,J],’ ’);
writeln;
end;
end.
ПРИМЕР. 12. В тексте заменить все буквы “A” на буквы “B”.
Программа
program Zadacha;
var
ST : string;
I : integer;
begin
write (‘Введите текст’);
readln (ST);
{ Замена букв ‘A’ на буквы ‘B’}
for I:=1 to length(ST) do If ST[I] = ‘A’ then ST[I] := ‘B’;
writeln (‘Вывод полученного текста:’); Write(ST);
end.
ПРИМЕР. 13. Если в заданном тексте между словами встречается более одного пробела, убрать лишние.
Пояснение. Определяем номер позиции, с которой в тексте стоит два пробела. Удаляем один из них и повторяем действие, пока между словами не останется по одному пробелу.
Программа.
program Zadacha;
var
ST : String;
N : byte;
begin
write (‘Введите текст’); readln (ST);
{ Удаление лишних пробелов}
N:=Pos(‘ ‘,ST);
while N <> 0 Do
begin
delete(ST, N, 1);
N:=pos(‘ ‘,ST);
end;
writeln (‘Вывод полученного текста:’); Write(ST);
end.
ПРИМЕР. 14. Найти N первых простых чисел (решение может быть дано с использованием объектно-ориентированного программирования).
Пояснение. Практически любую задачу, которую возможно реализовать стандартными методами, можно решить, используя принципы объектно-ориентированного программирования, хотя его преимущество в полной мере можно оценить только при разработке программных систем большого объема.
При решении задач с помощью концепции объектно-ориентированного программирования необходимо провести исследование предметной области, в данном случае это будет область целых чисел. Так как мы будем исследовать числа, то в роли основного объекта будет выступать объект «число», в котором определим методы внесения значений в поле объекта и метод, определяющий является ли число простым. То есть вначале программист описывает все свойства и задает все методы объекта, а только затем приступает к разработке основного текста программы, манипулируя уже созданными компонентами. Это одно из основных отличий принципов разработки программ в структурном и объектно-ориентированном программировании.
Программа
type number = object
X: word;
procedure Get(cur_x: word);
function Simple: boolean;
end;
procedure Number.Get;
begin
X := cur_x;
end;
function Number.Simple: boolean;
war i, kol: word;
begin
Kol:=0;
for i:=2 to (X div 2) do if (X mod i=0) then inc(kol);
if kol=0 then simple := true else simple := false;
end;
var num: number;
Count, n: byte;
Cur_n:word;
begin
write(‘ Введите количество ’);
readLn(n);
Count:=0;
Cur_n:=2;
while Count<=n do begin
Num.Get(Cur_x);
If Num.Simple then begin Inc(Count);write(Num.X:4);
End;
end;
end.
При решении задач, использующих принципы ООП, текст основной программы обычно получается не очень большим, так как все основные алгоритмы принято включать в методы заданных объектов, которые могут объединяться в более общие. Тем самым создается развернутая иерархическая структура, которая является более легкой для отладки программы и понимания принципов ее работы. При решении нашей задачи мы все же не полностью придерживались концепции ООП, так как она предполагает использование переменных только объектного типа данных. Если в нашем случае мы будем придерживаться строгой концепции, то текст программы значительно возрастет, поэтому при решении задач, в частности, на языке программирования Паскаль очень часто приходится сочетать объектные и стандартные типы данных.
ПРИЛОЖЕНИЕ 2
