Главная страница

Программирование Паскаль. ЛБ 1 паскаль. Формулировка задачи 1


Скачать 347.3 Kb.
НазваниеФормулировка задачи 1
АнкорПрограммирование Паскаль
Дата30.03.2022
Размер347.3 Kb.
Формат файлаdocx
Имя файлаЛБ 1 паскаль.docx
ТипПрограмма
#427983


Оглавление


Введение 2

1.Формулировка задачи №1 3

2.Анализ задачи №1 3

2.1.Описание используемых переменных 3

2.2.Описание алгоритма 3

3.Тестирование программы №1 5

Приложение 1. Листинг программы №1 8

4.Формулировка задачи №2 9

5.Анализ задачи №2 9

5.1.Описание используемых переменных 9

5.2.Описание алгоритма задачи №2 9

5.3.Блок-схема алгоритма программы №2 10

6.Тестирование программы №2 11

Приложение 2. Листинг программы №2 14

Заключение 15




Введение


Целью работы является создание программ с использованием простых управляющих структур без использования массивов. В задаче №1 используется простые типы данных, условный оператор и циклы, в задаче № 2 используется строковый тип данных.
  1. Формулировка задачи №1


Даны натуральные n, m. Получить все меньшие n натуральные числа, сумма цифр которых равна m.
  1. Анализ задачи №1


Программа должна запросить натуральные числа n и m и вывести результат в виде чисел, которые меньше n и сумма цифр, которых равна m.
    1. Описание используемых переменных


В программе используются следующие переменные и типы:

Natural: n, m, i, k, s – натуральные числа т.к. по условию задачи предполагается использование натуральных чисел.
    1. Описание алгоритма


Программа с помощью процедуры “Writeln” получает на ввод два натуральных числа n и m, и считывает их с помощью процедуры “Readln”. Используя цикл “For” и вложенного в него цикла “While” находим сумму цифр всех чисел меньших n. Применяя условный оператор “If...then” сравниваем полученные суммы c m и в случае совпадения производим вывод с помощью процедуры “Writeln”.

Конец

write('0');

if (n=0) or (m=0)

да

Write (i,' ')

if s=m

s:=s+k mod 10; k:=k div 10;

да

While k>0

s: =0;

k: =i;

For i:=1 to n-1

Ввод n и m

Начало

    1. Блок- схема алгоритма программы № 1
  1. Тестирование программы №1


Скриншот 1. Ввод данных.



Скриншот 2. Вывод данных.



Скриншот 3. Если n или m равны нулю.


Приложение 1. Листинг программы №1


type

natural=0..maxint;{описание типа}
Var

n,m,i,k,s: natural;{описание переменных}
Begin

Writeln('Введите N ');{ввод данных}

Readln(n);

Writeln('Введите M ');

Readln(m);

For i:=1 to n-1 do{Получение суммы цифр всех чисел меньше n}

Begin

s:=0;

k:=i;

While k>0 do

begin

s:=s+k mod 10;

k:=k div 10;

end;

if s=m then {Сравнение сумм цифр n и m}

write(i,' ');{Вывод результата}

end;

if (n=0) or (m=0) then write('0');

end.
  1. Формулировка задачи №2


Проверить, правильно ли в данной строке расставлены круглые скобки (т.е. находится ли справа от каждой открывающей скобки соответствующая закрывающая скобка, а слева от каждой закрывающей — соответствующая открывающая). Ответ — «да» или «нет».
  1. Анализ задачи №2


Программа должна запрашивать строку символов и при просмотре этой строки считывать количество открывающихся и закрывающихся скобок. Необходимо использовать строковый тип данных.

    1. Описание используемых переменных



String: S – Строковый тип данных необходим по условию задачи.

Word: I, a– Целочисленный тип данных для счета с диапазоном 0..65535 т.к не предполагается использования отрицательных чисел.

    1. Описание алгоритма задачи №2



Программа с помощью процедуры “Writeln” получает на ввод строку символов и считывает ее с помощью процедуры “Read”. С помощью цикла “For” и условного оператора “If …then” производится просмотр строки и если встречает ‘(’, то увеличивает счетчик на, если ‘)’, то уменьшает В случае если скобки расставлены верно, то программа выводит ответ “Да” в противном случае – “Нет”.

    1. Блок-схема алгоритма программы №2



конец

write('Нет');

write('Да')

нет

да

if a=0

да

inc(a);

dec(a);

да

if s[i]='('

if s[i]= ')'

for i:=1 to length(s);+1

Ввод S

Начало



a:=0;

  1. Тестирование программы №2


Скриншот 3. Ввод данных.


Скриншот 4. Вывод данных.


Скриншот 5.

Приложение 2. Листинг программы №2


Var

s: string; {Описание типов данных}

a,i:integer;
Begin

Writeln('Введите строку символов '); {Ввод данных}

Read(s);

a:=0;

For i:=1 to length(s) do {Просмотр строки в цикле For}

begin

if (s[i]='(') and (a>=0) then

inc(a);

if s[i]=')' then

dec(a);

end;

if a=0 then write('Да') else

write('Нет');

end.

Заключение



В ходе выполнения лабораторной работы №1 было сформулировано задание, разработан алгоритм, составлена и протестирована программа. Проведенные тесты показали, что программа работает правильно.



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