- •Оглавление
- •Предисловие
- •Введение
- •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] столбцы, состоящие из одних и тех же элементов, если такие есть, выдавать номера одинаковых столбцов, если нет – выдать сообщение.
- •Варианты заданий для самостоятельной работы Вычисление значений выражений
- •Вычислить значение функции с использованием условных операторов
- •Программирование циклических алгоритмов с заданным числом повторений
- •Программирование циклических алгоритмов с предусловием
- •Программирование циклических алгоритмов с постусловием
- •Программирование алгоритмов обработки одномерных массивов
- •Программирование алгоритмов обработки двумерных массивов
- •Программирование с использованием функций
- •Программирование с использованием процедур
- •Обработка символьных и строковых данных
- •Графика
- •Оператор
Решение задач на языке программирования Паскаль
ПРИМЕР 1. Найти произведение десяти произвольных чисел. Числа вводить по очереди в переменную X (среди вводимых чисел нулевых нет) .
Пояснение. P – переменная для хранения произведения, до цикла ей присваивается значение 1; I – параметр цикла.
Программа
program Zadacha;
var P, X:real; I:integer;
begin
P:=1;
for I:=1 tо 10 do begin
write(‘Введите число: ’); read(X);
P:=P*X;
end;
write(‘Произведение равно ‘, P);
end.
ПРИМЕР 2. Цифры вводимого числа N выдать в обратном порядке.
Пояснение. В данной программе используется цикл с постусловием, т.е. как только целая часть при делении числа на 10 станет равна 0, программа прекращает свою работу.
Программа.
program Zadacha;
var
N, K, I : integer;
begin
write (‘введите число ’);
readln (N);
repeat
K:=N mod 10;
write (K);
N:=N div 10;
until N=0;
end.
ПРИМЕР
3. Задано N троек произвольных положительных
чисел A, B, C. Вводя их по очереди и
интерпретируя как длины сторон
треугольника, определить, сколько троек
может быть использовано для построения
треугольника. (Числа A, B, C при вводе
располагать в порядке возрастания
).
Пояснение. Три произвольных положительных числа могут трактоваться как стороны треугольника тогда и только тогда, когда сумма любых двух сторон будет больше третьей (неравенство треугольника). В нашем случае, когда , достаточно проверить, чтобы самое большое число C было меньше суммы двух других, т.е. А + В. Переменная N задает количество троек чисел; в переменной K накапливается количество троек чисел, удовлетворяющих заданному условию, I-параметр цикла, изменяющийся от 1 до N с шагом 1.
Программа.
program Zadacha;
var
N, K : integer; A, B, C : real;
begin
write( ‘Введите количество троек чисел ’);
readln(N);
K := 0;
for I:=1 to N do
begin
write (‘ Введите A, B, C’); readln(A, B, C);
if C < A + B then K:= K + 1;
end;
write(‘K= ‘, K);
end.
ПРИМЕР 4. Дан массив А размером N . Требуется удалить K–й элемент из массива.
Пояснение.
Удалить элемент, расположенный на K–м
месте в массиве, можно, сдвинув весь
“хвост” массива, начиная с (K +1) -го
элемента, на одну позицию влево, т.е.
выполняя операции
для I=K, ...,N-1.
Программа.
program Zadacha;
var
N, K, I :iInteger;
A : array [1..100 ] of real;
begin
{Ввод элементов массива}
write ( ‘ введите количество элементов массива’);
readln(N);
write (‘введите номер элемента для удаления’);
readln (K);
{Ввод исходного массива}
for I := 1 tо N do read(A [I]);
{удаление K-того элемента}
for I := K tо N -1 do A[ I ] := A [I + 1];
{вывод полученного массива}
for I := 1 tо N-1 do write (A [I],’ ’);
end.
ПРИМЕР 5. Дан массив А размером N. Требуется удалить элементы из массива равные вводимому Х.
Пояснение. Сравнивая элементы массива с заданным значением Х, в случае если элемент равен Х, удаляем элемент, сдвинув весь «хвост» массива, начиная с номера найденного элемента, на одну позицию влево, т.е. выполняя операции для I=K, ...,N-1. Проверку продолжаем до тех пор, пока не просмотрим все элементы массива.
Программа.
program Zadacha;
var
N, Х, I, I1 : integer;
A : array [1..100 ] Of Real;
begin
{Ввод элементов массива}
write ( ‘ введите количество элементов массива’);
readln(N);
write (‘введите значение элемента для удаления’);
readln (Х);
{Ввод исходного массива}
for I := 1 tо N do read(A [I] );
{удаление элемента равного Х}
I:=1;
while I<= N do
begin
if A[I] = X then
begin
for I1:= I tо N -1 do A[ I1 ] := A [I1 + 1];
N:=N-1;
end
else I:=I+1;
end;
{вывод полученного массива}
for I := 1 tо N do write (A [I],’ ’);
end.
ПРИМЕР 6. Дан массив A размером N. Определить среднее значение элементов массива. Найти далее номер элемента массива, наиболее близкого к среднему значению.
Пояснение. Расстояние между двумя числами a и b определяется как модуль разности между ними | a – b |. Поэтому для определения элемента, наиболее близкого к среднему значению, необходимо рассматривать модули разностей между элементами массива и средним арифметическим и определять номер элемента массива, для которого этот модуль минимален.
Программа.
program Zadacha;
Var
I, N, K : integer;
M, S : real;
A : array[ 1..100 ] of real;
begin
write( ‘Введите количество элементов ’ );
readln (N);
write ( ‘Введите элементы массива’);
for I := 1 tо N do readln (A [ I ]);
{Нахождение суммы элементов}
S := 0;
for I := 1 tо N do S := S + A [ I ];
S := S/N; {Определение среднего арифметического}
K := 1; M := abs (A [ 1 ] - S);
for I := 2 tо N do
if M > abs (A [ I ] - S) then begin
M := abs( A [ I ] - S);
K := I;
end;
write (‘ номер элемента равен ‘, K);
end.
ПРИМЕР 7. Дан целочисленный массив A размером MxN. Составить программу сортировки элементов каждого столбца в порядке возрастания.
Пояснение. Сравнивая два элемента заданного J столбца, в зависимости от результата сравнения меняем элементы в столбце местами или оставляем все без изменения.
Программа.
program Zadacha;
var
A : array[1..10,1..10] of integer;
I, M, N, J, I1, 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;
writeln;
{ перестановка элементов столбца массива A}
for J:=1 to N do
begin
for I:=1 to M-1 do
begin
for I1:=I+1 to M do
iF A[I1,J]<A[I,J] then
begin
T:=A[I,J];
A[I,J]:=A[I1,J];
A[I1,J]:=T;
end;
end;
end; { Печать преобразованного массива}
for I:=1 to M do
begin
for J:=1 to N do write(A[I,J],’ ’);
writeln;
end;
end.
ПРИМЕР 8. Дан целочисленный массив A размером MxN. Составить программу перестановки строк в данном массиве в порядке убывания произведений элементов в каждой строке.
Пояснение. Высчитывая произведения двух строк и сравнивая их между собой, в зависимости от результата сравнения либо меняем строки массива A, либо оставляем все без изменения.
Программа.
program Zadacha;
var
A : array[1..10,1..10] of integer;
I, J, M, N, I1, T, PI, PI1 : 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 M-1 do
begin
for I1:=I+1 to M do
begin
PI:=1; PI1:=1;
for J:=1 to N do
begin
PI:=PI*A[I,J];
PI1:=PI1*A[I1,J];
end;
if PI<PI1 then
begin
for J:=1 to N do
begin
T:=A[I,J];
A[I,J]:=A[I1,J];
A[I1,J]:=T;
end;
end;
end;
end; { Печать преобразованного массива}
for I:=1 to M do
begin
for J:=1 to N do write(A[I,J],’ ’);
writeln;
end;
end.
