Главная страница
Навигация по странице:

  • Описание материала

  • 2. Разветвляющиеся алгоритмы 2.1 Условный оператор IF

  • 3. Циклические алгоритмы 3.1 Оператор цикла FOR

  • 3.2 Оператор цикла WHILE

  • Задача 7.

  • 4. Обработка массивов 4.1 Одномерные массивы

  • Паскаль. Сборник задач по программированию на языке Паскаль Автор Селезнева Наталья Николаевна, учитель информатики и икт моу


    Скачать 350.82 Kb.
    НазваниеСборник задач по программированию на языке Паскаль Автор Селезнева Наталья Николаевна, учитель информатики и икт моу
    АнкорПаскаль
    Дата16.02.2021
    Размер350.82 Kb.
    Формат файлаpdf
    Имя файлаsb-pascal.pdf
    ТипСборник задач
    #176960
    страница1 из 4
      1   2   3   4

    Сборник задач по программированию на языке Паскаль
    Автор: Селезнева Наталья Николаевна, учитель информатики и ИКТ МОУ
    Рязанцевской СОШ

    2
    Описание материала: Сборник задач посвящен вопросам программирования на языке программирования Pascal 7.0. В нем подробно рассматриваются решения большого количества задач, от простых до достаточно сложных.
    Сборник адресован учащимся, преподавателям, ведущим занятия по информатике и программированию, а также всем желающим самостоятельно овладеть искусством программирования на языке Pascal 7.0.
    Сборник содержит условия задач и одно или два варианта их решения на языке программирования Pascal 7.0.
    Задачи в сборнике классифицированы по основным разделам: линейные алгоритмы, разветвляющиеся алгоритмы, циклические алгоритмы, обработка массивов, обработка строк и создание графических изображений. После каждого раздела предлагаются задачи для самостоятельного решения. Внутри каждого раздела задачи по мере возможности расположены по возрастанию степени трудности.

    3
    СОДЕРЖАНИЕ
    1.
    Линейные алгоритмы ................................................................................. 4 2. Разветвляющиеся алгоритмы ...................................................................... 5 2.1 Условный оператор IF............................................................................. 5 2.2 Условный оператор CASE ...................................................................... 6 3. Циклические алгоритмы .............................................................................. 8 3.1 Оператор цикла FOR ............................................................................... 8 3.2 Оператор цикла WHILE .......................................................................... 9 4. Обработка массивов ................................................................................... 12 4.1 Одномерные массивы ........................................................................... 12 4.1.1 Алгоритмы поиска и присвоения значений элементам массива 12 4.1.2 Алгоритмы нахождения суммы, произведения и количества элементов массива. Работа с индексами элементов массива ................................. 14 4.1.3 Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса .............................................................................. 18 4.1.4 Алгоритмы удаления, вставки и перестановки элементов ......... 21 4.1.5 Алгоритмы сортировки числового массива ................................. 22 4.2 Двумерные массивы ............................................................................. 23 4.2.1 Алгоритмы действий над элементами двумерного массива ....... 23 4.2.2 Алгоритмы формирования одномерного массива ....................... 28 4.2.3 Алгоритмы нахождения наибольшего и наименьшего элементов двумерного массива ................................................................................. 31 4.2.4 Алгоритмы удаления, вставки и перестановки элементов ......... 33 5. Обработка строк ......................................................................................... 34 5.1 Подсчет и вывод символов ................................................................... 34 5.2 Удаление символов ............................................................................... 35 5.3 Вставка символов .................................................................................. 36 5.4 Сложные варианты ................................................................................ 37 6. Создание графических изображений. Модуль Graph ............................. 39

    4
    1.
    Линейные алгоритмы
    Задача 1. Даны две целые переменные A, B. Составить фрагмент программы, после исполнения которого, значения переменных поменялись бы местами (новое значение A равно старому значению B и наоборот).
    USES Crt;
    VAR
    A, B, T : INTEGER;
    BEGIN
    ClrScr; {
    Чистка экрана }
    Write
    (‘ Введите два значения ‘);
    ReadLn(A,B);
    {Введем дополнительную целую переменную T}
    T := A; A := B; B := T;
    Write(A,B);
    END.
    Задача 2. Решить предыдущую задачу, не используя дополнительных переменных (и предполагая, что значениями целых переменных могут быть произвольные целые числа).
    USES Crt;
    VAR
    A, B : INTEGER;
    BEGIN
    ClrScr;
    Write
    (‘ Введите два значения ‘);
    ReadLn(A,B);
    A := A + B; B := A - B; A := A - B;
    Write(A,B);
    END.
    Задача 3. Задан радиус окружности. Найти площадь и длину окружности.
    USES Crt;
    VAR
    R : INTEGER;
    S,L: REAL;
    BEGIN
    ClrScr;
    Write
    (‘ Введите радиус окружности ‘);
    ReadLn(R);
    {Pi - зарезервированное значение}
    S:=Pi*R*R
    ; {Вычисление площади окружности}
    L:=2*Pi*R
    ; {Вычисление длины окружности}
    WriteLn
    (‘ Площадь окружности = ’,S:4:2);
    WriteLn
    (‘ Длина окружности = ‘,L:4:2);
    END.
    Практические задания
    1.
    Даны три действительных положительных числа. Найти среднее геометрическое и среднее арифметическое этих чисел.
    2.
    Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.
    3.
    Мальчик купил несколько тетрадей по сто рублей и несколько обложек по 50 рублей.
    Составить программу, которая могла бы подсчитать стоимость всей покупки.

    5
    2. Разветвляющиеся алгоритмы
    2.1 Условный оператор IF
    Задача 1. Определить является ли данное целое число R четным. Дать словесный ответ.
    USES Crt;
    VAR
    R: INTEGER;
    BEGIN
    ClrScr;
    WriteLn('
    Введите число');
    ReadLn(R);
    IF R MOD 2 = 0 Then WriteLn('
    Число четное')
    Else WriteLn('Число не четное');
    END.
    Задача 2. Даны три целых числа. Выбрать из них те, которые принадлежат интервалу [1,3]
    USES Crt;
    VAR
    X, Y, Z: INTEGER;
    BEGIN
    ClrScr;
    WriteLn('Введите три целых числа');
    ReadLn(X,Y,Z);
    IF (X>=1) AND (X<=3) Then WriteLn('Первое число принадлежит заданному интервалу')
    Else
    WriteLn('Первое число не принадлежит заданному интервалу');
    IF (Y>=1) AND (Y<=3) Then WriteLn('Второе число принадлежит заданному интервалу')
    Else WriteLn('Второе число не принадлежит заданному интервалу');
    IF (
    Z>=1) AND (Z<=3) Then WriteLn('Третье число принадлежит заданному интервалу')
    Else WriteLn('Третье число не принадлежит заданному интервалу');
    END.
    Задача 3. Даны положительные целые числа A, B, C. Выяснить существует ли треугольник с длинами сторон A, B, C.
    USES Crt;
    VAR
    A, B, C: INTEGER;
    BEGIN
    ClrScr;
    WriteLn('
    Введите три числа');
    ReadLn(A,B,C);
    IF (A+B>C) AND (A+C>B) AND (B+C>A) Then WriteLn('
    Треугольник построить можно')
    Else WriteLn('Треугольник построить нельзя');
    END.
    Практические задания
    1.
    Заданы два числа X, Y. Меньшее из двух значений заменить на 0. Если же они равны – заменить нулями оба.
    2.
    Поменять местами значения целых переменных A, B, C таким образом, чтобы оказалось
    A
    ≥B≥C.
    3.
    Заданы три числа X, Y, Z. Найти min(XYZ, X+Y+Z).

    6
    2.2 Условный оператор CASE
    Задача 1. Составить программу, которая по введенному значению 1, 2, 3, 4 вычисляет площадь треугольника:
    1.
    По основанию и высоте
    2.
    По трем сторонам
    3.
    По двум сторонам и углу между ними
    4.
    Выход
    USES Crt;
    LABEL M1,M2;
    VAR
    X:INTEGER; A,H,S,B,L,C,P:REAL;
    BEGIN
    M1:ClrScr;
    WriteLn('Вычисление площади треугольника'); WriteLn;
    WriteLn('1.По основанию и высоте');
    Write
    Ln('2.По трем сторонам');
    WriteLn('3.По двум сторонам и углу между ними');
    WriteLn('4.
    Выход');
    WriteLn;
    WriteLn('
    Введите номер пункта'); ReadLn(X);
    CASE X OF
    1: Begin
    ClrScr;
    Write('Введите основание и высоту треугольника '); ReadLn(A,H);
    S:=A*H/2;
    WriteLn('Площадь треугольника = ',S:5:2); ReadLn;
    GOTO M1;
    End;
    2: Begin
    ClrScr;
    Write('Введите значения сторон треугольника ');
    ReadLn(A,B,C);
    P:=(A+B+C)/2;
    S:=Sqrt(P*(P-A)*(P-B)*(P-C));
    WriteLn('Площадь треугольника = ',S:5:2); ReadLn;
    GOTO M1
    End;
    3: Begin
    ClrScr;
    Write('Введите значения двух сторон и угол между ними ');
    ReadLn(A,B,L);
    S:=A*B*Sin(L*Pi/180)/2;
    WriteLn('Площадь треугольника = ',S:5:2); ReadLn;
    GoTo M1;
    End;
    4: Begin
    ClrScr;
    WriteLn('Программа закончила свою работу'); ReadLn;
    GoTo M2;
    End;
    ELSE
    ClrScr;
    WriteLn('
    Номер пункта ввели неверно'); ReadLn;
    GoTo M1;
    End;

    7
    M2:END.
    Задача 2. Составить программу, которая по введенному значению выводит оценки по математике, физике, информатике.
    USES Crt;
    LABEL R1,R2;
    VAR X: INTEGER; M:CHAR;
    BEGIN
    R1:ClrScr;
    WriteL
    n('ПРГ выводит оценки по математике, физике и химии');
    WriteL
    n('1.Вывод оценок по предметам');
    WriteLn('2.
    Выход');
    WriteL
    n('Введите номер пункта');
    ReadLn (X);
    CASE X OF
    1: Begin
    ClrScr;
    WriteLn(' По какому предмету Вы хотите увидеть оценки');
    WriteLn(' М - математика');
    WriteLn('
    Ф - физика');
    WriteLn('
    Х - химия');
    ReadLn(M);
    CASE M OF
    '
    М','м':WriteLn('5 5 4 4 5 5 3 5 5 ');
    '
    Ф','ф':WriteLn('5 4 5 3 5 4 5 5 5 ');
    '
    Х','х':WriteLn('4 3 5 3 4 4 4 5 ');
    End;
    End;
    2: Begin
    WriteLn('
    Программа закончена');
    GoTo R2;
    End;
    Else
    WriteLn('
    Номер неверен'); ReadLn;
    GoTo R1;
    End;
    R2:End.
    Практические задания
    1.
    Составить программу, которая по введенному значению 1, 2, 3 вычисляет:
    1.
    Площадь параллелограмма
    2.
    Периметр параллелограмма
    3.
    Выход
    2.
    Составить программу «Календарь XX столетия», которая определяет день недели любого дня XX-го столетия. По введенному значению 1, 2, 3 вычисляет
    1. номер дня недели по формуле, где D- день, М-месяц, G-год:
    ♦ S=[(12-M)/10]
    ♦ K=[(G-1900-S)*365,25]+[(M+12*S-2)*30,59]+D+29
    ♦ N=K-7[K/7] (N- вычисляется от 0-воскресенье до 6-суббота, []-целая часть)
    2. день недели по его номеру
    3. выход

    8
    3. Циклические алгоритмы
    3.1 Оператор цикла FOR
    Задача 1. Найти произведение положительных, сумму и количество отрицательных из 10 введенных целых значений.
    USES Crt;
    VAR
    X: INTEGER; S, K, P: INTEGER; I: BYTE;
    Begin
    P:=1; S:=0; K:=0;
    FOR I:=1 TO 10 DO Begin
    WriteLn(‘
    Введите ‘,I,’ -е значение’); ReadLn(x);
    IF X>0 Then P:=P*X
    ; { произведение положительных }
    IF X<0 Then Begin
    S:=S+X
    ; { сумма отрицательных }
    K:=K
    +1; { количество отрицательных }
    End;
    End;
    WriteLn
    (‘ Произведение положительных значений = ‘,p);
    WriteLn
    (‘ Сумма отрицательных значений = ‘,s);
    WriteLn(‘
    Количество отрицательных значений = ‘,k);
    END.
    Задача 2. Из N целых чисел найти минимальное значение.
    USES Crt;
    VAR MI, X: INTEGER; I,N: BYTE;
    BEGIN
    WriteLn('Введите количество значений'); ReadLn(n);
    WriteLn('Введите первое значение'); ReadLn(mi);
    FOR I:=2 TO N DO Begin
    WriteLn(‘
    Введите ‘,I,’ -е значение’); ReadLn(x);
    IF X End;
    WriteLn
    (‘Минимальное значение = ‘,MI);
    END.
    Задача 3. Из N целых чисел найти минимальное среди положительных и максимальное среди отрицательных значений.
    USES Crt;
    VAR
    MI, MA, N, I, X: INTEGER; FL, FL1: BYTE;
    BEGIN
    WriteLn('Введите количество значений'); ReadLn(N);
    FL:=0; FL1:=0;
    FOR I:=1 TO N DO Begin
    WriteLn('
    Введите ',I,' значение'); ReadLn(X);
    IF (FL=0) AND (X<0) Then Begin
    MA:=X; FL:=1;
    End;
    IF (FL1=0) AND (X>0) Then Begin
    MI:=X; FL1:=1;
    End;
    IF (X<0) AND (X>MA) Then MA:=X;
    IF (X>0) AND (X End;
    IF FL=1 Then W
    riteLn('максимальное среди отрицательных = ',ma)

    9
    E
    lse WriteLn('отрицательных нет');
    IF FL1=1 Then W
    riteLn('минимальное среди положительных = ',mi)
    E
    lse WriteLn('положительных нет');
    END.
    Практические задания
    1.
    Найти среднее арифметическое минимального и максимального элементов из 10 введенных.
    2.
    Напечатать лучший результат заплыва среди 8 участников.
    3.
    Из n введенных чисел найти максимальное значение среди положительных элементов.
    4.
    В группе определить самого высокого мальчика и самую маленькую девочку.
    5.
    В ЭВМ вводятся результаты соревнований по прыжкам в высоту. Число участников произвольно. Напечатать сообщение о победителе.
    3.2 Оператор цикла WHILE
    Задача 1. Дано целое число а и натуральное (целое неотрицательное) число n. Вычислить а в степени n. {Введем целую переменную k, которая меняется от 0 до n, причем поддерживается такое свойство: b = (a в степени k).}
    USES Crt;
    VAR
    A, N, B, K : INTEGER;
    BEGIN
    ClrScr;
    Write(‘
    Введите два значения ‘); ReadLn(A,N);
    K := 0; B := 1;
    While K <> N DO Begin
    K := K + 1; B := B * A;
    End;
    Write(‘ A в степени N = ’,B);
    END.
    Другое решение той же задачи:
    USES Crt;
    VAR
    A, N, B, K : INTEGER;
    BEGIN
    ClrScr; {
    Чистка экрана }
    Write
    (‘ Введите два значения ‘); ReadLn(A,N);
    K := N; B := 1;
    {A в степени N = B * (A в степени K)}
    While K <> 0 DO Begin
    K := K - 1; B := B * A;
    End;
    Write(‘ A в степени N = ’,B);
    END.
    Задача 2. Даны натуральные числа а, b. Вычислить произведение а*b, используя в программе лишь операции +, -, =, <>.
    USES Crt;
    VAR
    A, B, C, K : INTEGER;
    BEGIN
    Write(‘
    Введите два значения ‘); ReadLn(A,B);
    K := 0; C := 0;

    10
    While K <> B DO Begin
    K := K + 1; C := C + A;
    End;
    {C = A * K и K = B, следовательно, C = A * B}
    Write(‘ A*B= ‘,C);
    END.
    Задача 3. Дано натуральное (целое неотрицательное) число A и целое положительное число
    D
    . Вычислить частное Q и остаток R при делении A на D, не используя операций DIV и
    MOD.
    (
    Согласно определению, А = Q * D + R, 0 <= R < D.)
    USES Crt;
    VAR
    A, D, R, Q : INTEGER;
    BEGIN
    ClrScr;
    Write(‘
    Введите два значения ‘); ReadLn(a,d);
    R := A; Q := 0;
    While Not (R < D) DO Begin
    R := R - D; {R >= 0}
    Q := Q + 1;
    End;
    WriteLn
    (‘ Частное = ’,Q);
    WriteLn(‘
    Остаток = ’,R);
    END.
    Задача 4. Каждый год урожайность повышается на 5%. Через сколько лет урожай удвоится?
    USES Crt;
    VAR
    YR, KL: BYTE; YRG: REAL;
    Begin
    ClrScr;
    Write('
    Введите урожайность '); ReadLn(YR);
    YRG:=YR;
    While (YRG <2*YR) Do Begin
    YRG:=YRG+0.05*YRG;
    KL:=KL+1;
    End;
    WriteLn('
    Новый урожай ',YRG:5:0);
    W
    rite('Через ',KL,' лет урожай удвоится');
    END.
    Задача 5. Деду M лет, а внуку N лет. Через сколько лет дед станет вдвое старше внука. И сколько при этом лет будет деду и внуку.
    USES Crt;
    VAR
    M,N: BYTE; Kl: BYTE;
    BEGIN
    ClrScr;
    Write('Введите количество лет деда '); ReadLn(m);
    Write('Введите количество лет внука '); ReadLn(n);
    KL:=0;
    While (M>2*N) DO Begin
    M:=M+1; N:=N+1; KL:=KL+1;
    End;
    WriteLn(M,' лет деду');
    WriteLn(N,' лет внуку');
    WriteLn('Через ',KL,' лет дед вдвое станет старше внука');
    END.

    11
    Задача 6. Поле засеяли цветами двух сортов на площади S1 и S2. Каждый год площадь цветов первого сорта увеличивается вдвое, а площадь второго сорта увеличивается втрое.
    Через сколько лет площадь первых сортов будет составлять меньше 10% от площади вторых сортов.
    USES Crt;
    VAR
    S1,S2:WORD; KL:BYTE;
    BEGIN
    ClrScr;
    Write('Введите площадь, которую засеяли цветами 1-го сорта '); ReadLn(S1);
    Write(
    'Введите площадь, которую засеяли цветами 2-го сорта '); ReadLn(S2);
    KL:=1;
    While (S1>0.1*S2) DO Begin
    S1:=S1*2; S2:=S2*3; KL:=KL+1;
    End;
    WriteLn('Площадь, которую засеяли цветами 1-го сорта ',S1);
    WriteLn('Площадь, которую засеяли цветами 2-го сорта ',S2);
    WriteLn('
    Через ', kl,' лет');
    END.
    Задача 7. Составить программу перевода числа из 10 системы счисления в 2 систему счисления.
    Для этой задачи представлено два решения.
    a)
    USES Crt;
    VAR
    DES, OST, I, DW:INTEGER;
    BEGIN
    ClrScr;
    Write('
    Введите десятичное число '); ReadLn(DES);
    I:=1;
    While (DES>=2) DO Begin
    OST:=DES mod 2;
    DES:=DES div 2;
    DW:=DW+OST*I;
    I:=I*10;
    End;
    DW:=DW+DES*I;
    Write('Двоичная запись числа ',DW);
    END.
    b)
    USES Crt;
    Const A=10;
    VAR
    DES, OST, I:INTEGER;
    DW:Array[1..100] OF INTEGER;
    BEGIN
    ClrScr;
    Write('
    Введите десятичное число '); ReadLn(des);
    I:=1;
    While (des>=2) DO Begin
    OST:=DES mod 2;
    DES:=DES div 2;
    DW[I]:=OST;
    I:=I+1;
    End;

    12
    DW[I]:=DES;
    FOR I:=I DownTo 1 DO
    Write(DW[I]);
    END.
    Практические задания
    1.
    Составить программу, печатающую квадраты всех натуральных чисел от 0 до заданного натурального n.
    2.
    Дано натуральное n, вычислить n! (0!=1, n! = n * (n-1)!).
    3.
    Последовательность Фибоначчи определяется так: a(0)= 1, a(1) = 1, a(k) = a(k-1) + a(k-2) при k >= 2. Дано n, вычислить a(n).
    4.
    К старушке на обед ходят кошки. Каждую неделю две кошки приводят свою подружку. В доме у старушки 100 мисок. Через какое время появятся лишние кошки, и сколько кошек при этом останется голодными.
    5.
    Известна сумма номеров страниц, определить номер страницы.
    6.
    Лягушка каждый последующий прыжок делает в два раза короче предыдущего.
    Достигнет ли она болота и за сколько прыжков. Длину первого прыжка задайте самостоятельно.
    4. Обработка массивов
    4.1 Одномерные массивы
    4.1.1 Алгоритмы поиска и присвоения значений элементам массива
      1   2   3   4


    написать администратору сайта