Сборник практических работ по программированию для 1 курса педагогических специальностей

Раздел Информатика
Класс -
Тип Другие методич. материалы
Автор
Дата
Формат doc
Изображения Есть
For-Teacher.ru - все для учителя
Поделитесь с коллегами:


ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ФГОУ ВПО «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

ПЕДАГОГИЧЕСКИЙ ИНСТИТУТ




Бордюгова Т.Н.





ЯЗЫК ПРОГРАММИРОВАНИЯ

TURBO PASCAL


часть III




практический курс

к учебному курсу «Программирование»



бакалаврам физико-математического образования













Ростов-на-Дону



УДК

ББК


Печатается по решению редакционно - издательского совета

Педагогического Института Южного Федерального Университета

Бордюгова Т.Н.

ЯЗЫК ПРОГРАММИРОВАНИЯ TURBO PASCAL.

Практический курс к учебному курсу «Программирование»

Ростов-на-Дону: ПИ ЮФУ, 2008.


Язык программирования Турбо Паскаль, названный в часть французского математика и философа Блеза Паскаля (1623-1662), разработан в 1968 -1671 гг. Николаусом Виртом, профессором, директором Института информатики Швейцаркой высшей Политехнической школы. Язык Паскаль, созданный первоначально для обучения программированию как систематической дисциплине, вскоре стал широко использоваться для разработки средств в профессиональном программировании.

Данное учебное пособие представляет собой практическую часть курса, который читается студентам 1 курса факультета математики и информатики.





Модуль I. Программирование линейных процессов

Практическое занятие №1. Тема: «Оператор присваивания, ввода и вывода информации»

В линейной алгоритмической конструкции операторы выполняются последовательно друг за другом. Для создания таких программ используются три оператора: оператор ввода, присваивания и оператор вывода информации.

Оператор присваивания. В операторе присваивания используется знак присваивания - :=. Причем слева всегда стоит имя переменной, а справа - значение, например: а:=b,

где а - имя переменной или элемента массива,

b -значение как таковое, выражение, переменная, константа или функция.

Типы переменных а и b должны совпадать или быть совместными для присваивания, т.е. тип, к которому принадлежит переменная b, должен находиться в границах типа переменных а.

В результате выполнения оператора а:=b переменной а присваивается значение а:=b, например:

var

a,b,c,d:real;

begin

c:=pi/2;

d:=sin(pi*c)*cos(c)*ln(c);

a:=(c+d)/(c-d)*exp(-c);

d:=sqrt(c)*exp(1/9*ln(c));

end.

Операторы ввода-вывода. Ввод информации с клавиатуры осуществляется с помощью оператора read. Он может иметь один из следующих форматов:

read(x1,x2,…xn) или readln(x1,x2,…xn);

где x1,x2,…xn- список вводимых переменных.

Когда в программе встречается оператор read, ее действие приостанавливается до тех пор, пока не будет введены исходные данные. Вводимые переменные отделяются друг от друга пробелом или Enter.

Оператор readln аналогичен оператору read, разница заключается в том, что после считывания последнего в списке значения для одного оператора readln данные для следующего оператора readln будут считываться с начала новой строки. Оператор readln без параметров не вводит значений переменных, но заставляет программу остановить свое выполнение да нажатия на клавишу <Enter>, после чего указатель переходит на следующую строку. Его используют именно для задержки программы, что бы пользователь мог увидеть результат работы, выведенной на экран.

Для вывода информации (чисел, строк и булевых значений) на экран дисплея служат операторы write и writeln. В общем случае эти операторы имеют следующий вид: writel(x1,x2,…xn) или writeln (x1,x2,…xn);

где x1,x2,…xn- представляет собой список выводимых переменных, констант, выражений (x1,x2,…xn не могут быть перечислимого типа).

Операторы write и writeln последовательно выводят все переменные на экран дисплея. Если используется оператор writeln, то после вывода информации курсор перемещается на новую строку.

Вещественные данные выводятся в формате с плавающей точкой. Ширина поля вывода в этом случае составляет 18 символов: #.# # # # # # # # # # #E# # #, где

# - любая десятичная цифра от о до 9,

Е- это степень, в которую необходимо возвести число10, и затем результат умножить на число, стоящее перед Е.

Оператор writeln('это подсказка') выводит текст, заключенный между апострофами, и переводит позицию, с которой начинается следующий ввод или вывод на начало следующей строки. Оператор write('это подсказка') выводит текс, называемый подсказкой или приглашением к вводу, но при этом указатель остается в той же строке. Оператор writeln без параметров на экран ничего не выводит, а указатель переводит в начало следующей строки, его используют именно для перехода на новую строку.

В операторах write и writeln имеется возможность указать константу или выражение целочисленного типа, определяющую ширину поля. Для целых и строковых выражений она указывается через двоеточие после имени выводимой переменной или выражения, например writeln('c='; с:6, а:2).

При выводе вещественных значений, кроме ширины поля вывода, через двоеточие надо указывать количество позиций, необходимых для дробной части числа, т.е. writeln('c=',c:5:2).

Приступая к решению задач этого раздела, следует помнить, что:

-программа с линейной структурой является простейшими и используется, как правил, для реализации обычных вычислений по формулам;

-в программах с линейной конструкцией выполняется последовательно, одна за другой.

Пример 1. Вычислите сопротивление электрической цепи, состоящей из двух параллельно соединенных элементов.

Program zadacha_1;

var

r1,r2,r:real;

begin

writeln('вычисление сопротивления электрической цепи');

write('величина первого сопротивления');

readln(r1);

write('величина второго сопротивления');

readln(r2);

r:=r1*r2/(r1+r2)

writeln('сопротивление равно',r);

readln;

end.

Пример 2. Заданы длины двух катетов в прямоугольном треугольнике. Вычислить длину гипотенузы, площадь треугольника, величины его углов.

Program zadacha_2;

var

a,b,c,s, alf, bet:real;

begin

writeln('введите длины катетов');

write('a=');

readln(a);

write('b=');

readln(b);

c:=sqrt(sqr(a)+sqr(b));

alf:=arctan(b/a);

bet:=pi/2-alf;

s:=a*b/2;

writeln('гипотенуза=', c);

writeln('площадь треугольника=',s);

writeln('углы треугольника alf=',alf,'bet=',bet);

readln;

end.

Пример 3.Пусть заданы четыре целых числа(hour, min,sec,time). Первые три из них - это время запуска ракеты в часах, минутах и секундах, четвертое определяет время полета в секундах. Найдите и напечатайте время возвращения ракеты на землю.

Program zadacha_3;

var

hour, min,sec,time: integerl;

begin

writeln('время запуска ракеты');

write('час');

readln(hour);

write('мин');

readln(min);

write('сек');

readln(sec);

writeln('введите время полета');

readln(time);

{вычисление времени возвращения ракеты на Землю}

sec:= sec+ time;

min:=min+sec div 60;

sec:=sec mod 60;

hour:=hour+min div 60;

min:=min mod 60;

hour:=hour mod 24;

writeln('результаты');

write('время полета=',time:3,эсек');

writeln('ожидаемое время прибытия=');

writeln(hour:2,'час', min:2,'мин',sec:2,'сек');

readln;

end.

Пример 4.Даны три положительных числа a, b,c. Определите, можно ли построить треугольник с такими длинами сторон.

Program zadacha_4;

var

a,b,c:real;

t: boolean;

begin

writeln('введите три числа');

write('a=');

readln(a);

write('b=');

readln(b);

write('c=');

readln(c);

t:=(a+b>c) and

(a+c>b) and

(b+c>a);

wrireln(t);

readln;

end.


Упражнения и задачи.


Профиль математика


  1. Найти произведение двух чисел.{1}

  2. Вычислить площадь треугольника по формуле Герона.{1}

  3. Вычислить расстояние между двумя точками с координатами (х1, у1) и (х22).{2}

  4. Напишите программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах.{3}

  5. Написать программу пересчета расстояния из верст в километры.{1}

  6. Вычислите доход по вкладу. Процентная ставка (в процентах годовых) и время хранения (в днях) задаются во время работы программы.{2}

  7. Вычислите площадь поверхности цилиндра, если известно основание и высота.{2}

  8. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат.{2}

  9. Поменяйте местами значения вещественных переменных х и у.{2}

  10. Даны координаты вершин некоторого треугольника. Вычислите его периметр. {3}

  11. * Определите число, полученное выписыванием в обратном порядке цифр заданного целого трехзначного числа х. Присвойте это число переменной.{4}

  12. *Напишите оператор присваивания, в результате выполнения которого логическая переменная t принимает значение true, если выполняется указанное условие, и значение false в противном случае:

а) числа x,y,z равны между собой;

б) из чисел x,y,z только два равны между собой.{5}

Профиль информатика


  1. Поменяйте местами значения вещественных переменных х и у.{1}

  2. Дано целое положительное число n. Присвойте переменной m последнюю цифру этого числа.{1}

  3. Подсчитайте, сколько очков набрала футбольная команда в первом круге чемпионата, если известно, что m встреч она выиграла, n встреч проиграла, k - закончились ничьим, пологая, что за выигрыш команда получает 2 очка, за ничью - 1, за проигрыш - 0.{1}

  4. Целой переменной х присвойте значение суммы цифр заданного трехзначного числа.{2}

  5. Определите число, полученное выписыванием в обратном порядке цифр заданного целого трехзначного числа.{2}

  6. Пусть идет k-я секунда суток. Определите, сколько целых часов h и целых минут m прошло к этому времени. {2}

  7. Пусть дано натуральное числоn, состоящее из 6 цифр. Определите сколько в нем сотен и тысяч.{2}

  8. Напишите оператор присваивания, в результате выполнения которого логическая переменная t принимает значение true, если выполняется указанное условие, и значение false в противном случае:

а) числа x,y,z равны между собой;

б) из чисел x,y,z только два равны между собой.{2}

  1. Напишите программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах. {1}

  2. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат.{2}

Контрольные вопросы.


  1. Укажите буквы, символы, составные символы:

^ , Y,<>,+,*,R,k,$,!,ы

  1. Что в списке можно рассматривать как идентификаторы:

FIO,ФИО,22222,X,Y,>=,&,Summa,_Result

  1. Сколько в следующем списке зарезервированных слов и укажите их:

X, Program,Y, Summa, MyMoney, произведение,Vova, begin ,end, if repeat, Read?

  1. Есть ли причины к невыполнению следующей программы и почему:

program Test;

begin

end.

  1. В чем состоит отличие действия write и writeln?

  2. В чем состоит отличие действия read и readln?

  3. Чем вызвана необходимость использования комментариев в программе?

  4. Где в программе можно написать комментарий?

  5. Для чего необходима компиляция программы?

  6. Для чего необходима отладка программы?



Тест №1


1.В каких случаях надо использовать переменные:

1)если в программе используется какое-то число?

2)если в вычислениях какой-то операнд постоянно меняет свое значение?

3) если операнд в выражении хотя бы один раз меняет значение?

2.Какие заголовки программ правильны:

1)program Zarplata?

2) program Сумма?

3) program Summa Nalogov?

4)программа Teach_Kurs?

5) program 12Kurs2?

6) program Summa_Elementov?

3.Какая структура программы правильна:

1) program MyProgram; 2) program MyFirst

begin begin

Writeln('Привет'); X:=Y+100

End. End.

4.Какой из перечисленных разделов обязателен в программе:

1) раздел var?

2) раздел const?

3) раздел type?

4) раздел begin..end.?

5) раздел label?

5. Какие из комментариев неправильны:

1){Программа вычисляет логарифм введенного числа};

2)(*Это тоже комментарий*)

3){{Комментарий в комментарии}}

4)(*{и это комментарий в комментарии }*)

5){(* Еще один вариант*)}
6)(*(*самый последний вариант*)*).

6. Для чего используется слово uses?

1) такого слова нет в языке Турбо Паскаль;

2)это какой-то пользовательский идентификатор;

3) с его помощью подключают стандартные библиотеки;

4) это стандартная константа, равная 3,14;

5) это логическая операция.

7. В разделе процедур и функций описываются только стандартные процедуры?

1) да, только стандартные;

2) нет, только пользовательские;

3) и стандартные, и пользовательские;

4) такого раздела вообще не может быть в программе.



Модуль II. Программирование разветвленных процессов

Практическое занятие №2. Тема: «Условный оператор»

Условный оператор if служит для организации процесса вычислений в зависимости от какого-либо логического условия. Оператор имеет краткую и полную форму.

Краткая форма оператора

if <условие> then <оператор_1>;

<оператор_2>;

…;

<оператор_n>;

где if - если, <условие>- логическое выражение, then- тогда, <оператор_1> - оператор.

Если логическое выражение истинно, то выполняется <оператор_1>, а затем программа переходит к выполнению операторов, следующих за оператором if.

Ели условие ложно, то не выполняется <оператор_1>, а сразу выполняются следующие за ним операторы.

Полная форма оператора

if <условие> then <оператор_1> else <оператор_2>;

<оператор_3>;

Если логическое выражение истинно, то выполняется <оператор_1>, а затем программа переходит к выполнению операторов <оператор_3>;…

Ели условие ложно, то выполняется <оператор_2>, затем программа переходит к выполнению операторов <оператор_3>;…

Оператор может быть простым или составным (блок операторов) - последовательность операторов, отделяемых друг от друга точкой с запятой, заключенных между операторными скобками begin end.

Условные операторы могут быть вложены в друг друга.

if <условие> then

if <подусловие> then

begin

end

else

begin

end

else

begin

end;

При вложенных всегда действует правило: альтернатива else считается принадлежащей ближайшему условному оператору if, имеющему ветвь else.

Любой из вложенных условных операторов может иметь сокращенную форму.

Приступая к решению задач этого раздела, следует помнить, что:

-инструкция if используется для выбора одного из двух направлений дальнейшего хода программы (последовательности, которые должны быть выполнены);

-выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от выполнения условия;

-условие - это выражение логического типа, которое может иметь одно из двух значений: (истина- условие выполняется) или false (ложь - условие не выполняется);

- при помощи логических операций and (логическое «и») или (логическое «или») из простых условий можно составить сложное.

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

Program zadacha_1;

var

r1,r2,r:real;

t:integer;

begin

writeln('вычисление сопротивления электрической цепи');

write('величина первого сопротивления');

readln(r1);

write('величина второго сопротивления');

readln(r2);

write('тип соединения');

readln(t);

if t=1 then r:=r1+r2 else r:=r1*r2/(r1+r2);

writeln('сопротивление равно',r:2,'ом');

readln;

end.

Пример 2. Написать программу, которая проверяет, является ли четным введенное пользователем цело число.

Program zadacha_2;

var

n:integer;

begin

writeln('введите целое число');

readln(n);

write('число',n,'-');

if n mod 2=0

then writeln ('четное')

else writeln('нечетное');

readln;

end.

Пример 3.Найти корни квадратного уравнения при любых коэффициентах.

program zadacha_3;

{Решение уравнения a*x*x+b*x+c=0}

uses crt;

var a,b,c,d,x1,x2:real;

begin

clrscr;

writeln ('Введите коэффициенты');

write ('a=');readln (a);

write ('b=');readln (b);

write ('c=');readln (c);

if (a=0) and (b=0) and (c=0) then

writeln('Корней бесконечно много')

else

if (a=0) and (b=0) and (c<>0) then

writeln ('Корней нет')

else

if (a=0) and (b<>0) then

begin

writeln ('Линейное уравнение');

x1:=-c/b;

writeln('x=',x1:4:2);

end

else

{Решение квадратного уравнения}

begin

d:=sqr(b)-4*a*c;

if d<0 then

writeln ('Действительных корней нет!')

else

if d=0 then

begin

x1:=-b/(2*a);

writeln('x=',x1:4:2);

end

else

begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

writeln ('x1=',x1:4:2, ' x2=',x2:4:2);

end

end;

readln

end.

Пример 4.Написать программу определения стоимости разговора по телефону с учетом скидки 20%, предоставляемой по субботам и воскресеньям.

Program zadacha_4;

var

Time, Day,Summa:integer;

begin

writeln('вычисление стоимости разговора по телефону');

write('количество минут');

readlnTtime);

write('день недели');

write('(1-понедельник, …,7-воскресенье');

readln(Day);

Summa:=2.3*Time;

if (Day=6)or(Day=7)

then begin writeln ('представляется скидка 20%');

Summa:=Summa*0.8;

end;

writeln('стоимость разговора',Summa:8:2,'руб');

readln;

end.

Упражнения и задачи


Профиль математика


  1. Выбрать наименьшее значение из трех чисел.{1}

  2. Составить программу для вычисления У по заданному Х, если Сборник практических работ по программированию для 1 курса педагогических специальностей Сборник практических работ по программированию для 1 курса педагогических специальностей{1}

  3. Написать программу, которая вычисляет частное от деления двух чисел. Программа должна проверять правильность введенных пользователем данных и, если они неверные, выдавать сообщение об этом.{1}

  4. Задана точка М с координатами (х,у). определить место расположение этой точки в декартовой системе координат (является ли эта точка началом координат, лежит на одной из координат осей или расположена в одном из координатных углов {3}

  5. Выяснить, у какого из трех прямоугольных треугольников площадь больше:

-гипотенуза с, угла 

-катет а, прилежащий угол {3}

- высота h, угол .

  1. Написать программу, которая проверяет кратно ли 3 введенное целое число. {1}

  2. Написать программу решения биквадратного уравнения.{2}

  3. Задан параллелограмм со сторонами a, b и углом α между ними. Определить тип параллелограмма (ромб, прямоугольник или квадрат), если это возможно.{2}

  4. *Определите, пересекаются ли парабола Сборник практических работ по программированию для 1 курса педагогических специальностей и прямая Сборник практических работ по программированию для 1 курса педагогических специальностей . При положительном ответе найти точки пересечения.{5}

  5. * Определить поместится ли равнобедренный треугольник с основанием с и высотой h в прямоугольник со сторонами а и b так, что бы высота треугольника была параллельна одной из сторон прямоугольника. {5}

Профиль информатика


  1. Проверить, поместится ли на диске компьютера музыкальная композиция, которая длится m минут и n секунд, если свободное дисковое пространство 6 мегабайт, а для записи одной секунды звука необходимо 16 килобайт.{2}

  2. Проверить, является ли введенное пользователем число кратным трем.{1}

  3. Выбрать наименьшее из трех чисел.{2}

  4. Написать программу проверки знаний даты основания Ростова-на-Дону. В случае неправильного ответа программа должна вывести соответствующее сообщение. {1}

  5. Известна цена монитора Samsung SuncMaster в январе 2006 г. и в январе 2008 г. ответьте на вопрос: «произошло ли удешевление или нет? На сколько процентов изменилась цена изделия?»{2}

  6. Координаты двух полей шахматной доски заданы в виде пар чисел х1,x2,y1,y2. На первом поле стоит ферзь, на втором конь. Определить, бьет ли ферзь коня, или конь ферзя, или фигуры не угрожают друг другу. или фигуры не угрожают друг другу.{4}

  7. Написать программу, которая вычисляет оптимальный вес пользователя, сравнивая его с реальным и выдает рекомендацию о необходимости поправиться или похудеть.{1}

  8. Количество цветов, которое может воспроизводить видеоадаптер, определяется количеством бит, отводимых в видеопамяти ПК для описания одной точки. Например, 2 бита позволяют воспроизводить 4 цвета, 4 бита - 16 цветов и т.д. видеопамять содержит информацию о цвете каждой точки экрана. Определить, может ли картинка на экране монитора с разрешающей способностью видеоадаптера 800х600 содержать 2048 цвета, если видеопамять ПК - 4 мегабайта.{3}

  9. Перераспределите значения переменных х и у таким образом, чтобы переменная х получила меньшее значение их этих значений, а у - большее.{2}


Контрольные вопросы


  1. Какие служебные слова могут использоваться при записи условного оператора?

  2. Какой тип должно иметь выражение, строящее в условном операторе между словами if и then?

  3. Напишите сокращенную форму условного оператора?

  4. Дайте определение разветвляющемуся алгоритму.

  5. Пусть дана следующая последовательность операторов:

if < выражение> then <оператор 1> else <оператор 2>;

<оператор 3>;

Установите:

А) значение < выражения>, при котором выполняется <оператор 3>;

В) возможность записи после слова then нескольких операторов;

С) условие выполнения оператора <оператор 1>;

Д) могут ли быть операторы if вложенным.

Тест №2

  1. При программировании вложенных циклов необходимо соблюдать следующие дополнительные условия:

а). все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла

б). все операторы внешнего цикла должны полностью располагаться в теле внутреннего цикла

в). все операторы внутреннего цикла должны частично располагаться в теле внешнего цикла

г). все операторы внешнего цикла должны частично располагаться в теле внутреннего цикла.


  1. Если оператор не содержит ни каких символов и не выполняет никаких действий, то он является:

а). пустым

б). составным

в). условным

г). оператором повтора

3. Дан условный оператор: if A=34 or D=15 then B=0 else B=1; Переменная В будет равна 0

а). только если А=34 и D<>15;

б). только если и А=34 и D=15;

в). При выполнении хотя бы одного из условий А=34 или D=15;

г). Ни при каких условиях;

д). только при условии, что А=34 и D<>0.

4. Дан условный оператор: if A>B then X:=A*B else X:=A+B. При входных данных

А=5 и В=4 получим:

а). Х=4;

б). Х=5;

в). Х=20;

г). Х=9.

5.При вложенных условных операторах всегда действует правило:

а). альтернатива else считается не принадлежащей ближайшему условному

оператору if, имеющему ветвь else;

б). альтернатива else считается принадлежащей ближайшему условному оператору if, имеющему ветвь else ;

в). альтернатива else считается принадлежащей ближайшему условному оператору if, имеющему ветвь if;

г). альтернатива else считается принадлежащей ближайшему условному оператору if, имеющему ветвь then.






Практическое занятие №3. Тема: «Конструкция выбора»

Оператор варианта (выбора) case представляет собой обобщение условного оператора:

if <условие_1> then<оператор_1> else

if <условие_2 > then <оператор_2> else

if <условие_n > then <оператор_n> ;

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

Формат оператора выбора:

сase <ключ выбора> of <список варианта> else <оператор> end;

где сase -случай,

<ключ выбора> - выражение любого типа, кроме типов real и string,

of - из,

<список варианта> - одна или более конструкций типа: <константа выбора>:<оператор>;

else- иначе,

<оператор> - произвольный оператор Pascal,

еnd-конец.

Оператор выбора работает следующим образом. В начале вычисляется значением выражения <ключ выбора>, а затем в последовательности операторов <список варианта> отыскивается такой, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает свою работу. Если в <список варианта> не будет найдена константа, соответствующему вычислительному значению ключа выбора, управления передается оператору, стоящему после else.

Часть else <оператор>можно опускать. Тогда при отсутствии в списке выбора нужной константы ничего не произойдет, и оператор выбора просто завершит свою работу.

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми.

Приступая к решению задач этого раздела, следует помнить, что:

-инструкция сase используется для выбора одного из нескольких направлений дальнейшего хода программы,

-выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от равенства значений константе, указанной перед группой инструкций.

Пример 1.При вводе одного из символов «у» или»У» выводиться на экран слово «ДА», а при вводе «n» или «N».

Program zadacha_1;

var

Ch:char;

begin

readln (Ch);

case Ch of

'n','N': writeln('нет');

'y','Y': writeln('да');

end;

Readln;

end.

Пример 2.Написать программу, вычисляющую стоимость междугороднего разговора(цена одной минуты определяется расстоянием до города, в котором находиться абонент). Исходными данными для программы являются код города и продолжительность разговора.

Program zadacha_1;

var

kod:integer;

cena:real;

dlit:integer;

sum:real;

begin

writeln('вычисление стоимости разговора');

write('код города');

readln (kod);

write('длительность разговора');

readln (dlit);

write('город');

case kod of

432:begin

writeln('Владивосток');

cena:=5.6;

end;

095:begin

writeln('Москва');

cena:=4,7;

end;

815:begin

writeln('Мурманск');

cena:=7,9;

end;

846:begin

writeln('Самара');

cena:=3,8;

end;

end;

sum:=cena*dlit;

writeln('цена минуты', cena:6:2,'руб.');

writeln('стоимость разговора',sum :6:2,'руб.');

Readln;

end.



Упражнения и задачи.


Профиль математика.


  1. Составим программу, имитирующую работу микрокалькулятора.{2}

  2. Написать программу, классифицирующую треугольники (остроугольные, прямоугольные, тупоугольные), если даны углы (только целые значения).{5}

  3. Дано целое число в диапазоне от 1-5. Вывести строку - совестное описание соответствующей оценки. {2}

  4. Единицы длины отрезка пронумерованы следующим образом: 1- дециметр, 2- километр, 3 - метр, 4 - миллиметр, 5 - сантиметр. Дан номер единицы длины и длина отрезка в этих единицах. Вывести длину данного отрезка в метрах. {3}

Профиль информатика.

1.Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. В случае, если пользователь указывает недопустимое число, программа должна вывести сообщение «Ошибка ввода данных». {2}

2.Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 999), обозначающего денежную единицу, дописывает слово «рубль» в правильной форме. Например, 12 рублей, 21 рубль и т.д.{5}

3. Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: «рабочий день», «суббота» или «воскресенье».{3}

4. Дано целое число в диапазоне от 1-5. Вывести строку - совестное описание соответствующей оценки.


Контрольные вопросы.


  1. Как описать оператор выбора?

  2. Когда необходимо применять оператор?

  3. Как работает оператор выбора?

  4. Может ли отсутствовать ключевое слово ELSE?

  5. Какие зарезервированные слова используются при описании оператора выбора?


Тест №3



Практическое занятие №4. Тема: «Метки и оператор перехода»

Метка-это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. Метка в стандарте языка Паскаль представляет собой целое неотрицательное число. Все используемые в программе метки должны быть перечислены в разделе описания меток, начинающимся служебным словом Label.

Одной меткой можно пометить только один оператор. Метка располагается непосредственно перед помеченным оператором и отделяется от него двоеточием.

Действие оператора goto состоит в передаче управления соответствующему помеченному оператору.

Правила при использовании меток:

-метка, на которую ссылается оператор goto, должна быть описана в разделе описания и она обязательно должна встречаться где-нибудь в теле программы;

-метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.

Пример. Найти НОД двух чисел (алгоритм Евклида).

Program zadacha;

Label 1,2;

var

x,у,m,n,c:integer;

begin

writeln ('введите натуральные числа n и m');

readln (n, m);

x:=m;

y:=n;

1: if x=y then goto 2;

if x>y then x:=x-y else y:=y-x;

goto 1;

2: c:=x;

writeln('НОД двух чисел',m,'и',n,'=',c);

readln;

end.

Упражнения и задачи.


Профиль математика.

1. Найти корни квадратного уравнения, учитывая, что при а=0 программа запрашивает ввод нового значения а. {2}

2. Даны произвольные числа a, b и с. Если нельзя построить треугольник с такими углами, то предложить ввести новые значения произвольных чисел, если можно, то вывести сообщение о типе треугольника. {3}

3. Найти корни биквадратного уравнения, учитывая, что при а=0 программа запрашивает ввод нового значения а.{3}

Профиль информатика.

1. Составим программу, имитирующую работу микрокалькулятора. В случае, если арифметическая операция не определена, необходимо снова ввести переменную. {2}

2. Составить программу, имитирующую компьютерный тест, в случае если оценка за тест неудовлетворительная предложить снова ответить на все вопросы. Вопросов должно быть 5 по любому разделу информатики. {5}

3. Ввести число по которому определить время суток. В случае если это число больше 24, необходимо снова ввести переменную.{3}


Контрольные вопросы.

1) Есть ли в следующих текстах пустые операторы?

а) if x>0 then x:=2 else; y:=x+1;

б) if odd(k) then else k:=0;

в) begin x:=2; y:=5; end;

г) begin a:=true;b:=b or a end;

д) begin if x=0 then goto 1; y:=x; 1:end

2) Если n=3, то какое значение будет иметь переменная f после выполнения следующего составного оператора?

begin f:=1; i:=2;

1: if i>n then goto 9;

f:=f*i; i:=i+1; goto 1;

9: end

3) Найдите ошибки в программе, записав исправленную программу:

Program Errors;

Const L=18;

Label 18,8;

Var x, y:integer;

Begin y:=0;

8: read(x); if x<0 then goto L;

y:=y+x; goto 18;

L:writeln(y)

End.

4) Найти ошибки в следующих операторах, запишите исправленные операторы:

begin 77: if |x|<1 then goto 5

begin x:=x/2; goto 77; 5: y:=sin(x) end

end;

5) Найти ошибки в следующих операторах, запишите исправленные операторы:

34: if 0

then if y<1 then goto 34 else goto 15

else 15: y:=sqr(y)

в) if 1

then

x:=x+1; y:=0;

else

x:=0; y:=y+1;.

Модуль II. Циклические алгоритмические конструкции

Операторы цикла используются в случае необходимости многократного повторения одних и тех же операторов. В языке Pascal имеется три различных оператора цикла: while, repeat и for.

Оператор (простой или составной), который повторяется многократно, называется телом цикла. До входа в цикл производятся начальные установки переменных, используемых в цикле.

На каждом шаге (итерации) цикла производится проверка условия продолжения цикла. Если она производится до тела цикла, то цикл называется с предусловием, если после - с постусловием.

Для проверки условия цикла используется переменная, называемая параметром цикла. Целочисленный параметр цикла называется счетчиком цикла.

Ели условие продолжения не выполняется, то происходит выход из цикла. Для принудительного (вне зависимого от параметра) выхода из цикла (текущего шага и перехода к следующему или выхода из всего цикла) могут использовать операторы break, continue и goto.

Практическое занятие №5. Тема: «Оператор цикла с параметром»

Для организации «строгих» циклов, которые должны быть выполнены заданное число раз используют оператор цикла с параметром.

В языке Pascal существует два типа такого оператора цикла:

Шаг равен +1: for i:=n to m do <оператор>;

где: for - для,

i - параметр цикла,

n - начальное значение параметра цикла,

to - до,

m -конечное значение параметра цикла,

do - делать,

<оператор> - тело цикла.

При этом должно выполняться условие n<m. Если n=m, то цикл выполняется один раз, а если n>m, то цикл не выполняется ни разу.

Переменная i (счетчик) увеличивается на единицу от начального значения n до конечного значения m, при каждом новом значении i исполняется оператор внутри цикла. Параметр цикла, начальное и конечное его значения должны быть описаны как integer.

Оператор, представляющий собой тело цикла, может быть простым или составным.

Шаг равен - 1: for i:=n downto m do <оператор>;

где: for - для,

i - параметр цикла,

n - начальное значение параметра цикла,

downto - до,

m -конечное значение параметра цикла,

do - делать,

<оператор> - тело цикла.

При этом должно выполняться условие n>m.

Приступая к решению задач этого раздела, необходимо помнить, что:

- инструкция for используется для организации циклов с фиксированным, определяемым во время разработки программы, числом повторений;

- количество повторений цикла определяется начальным и конечным значениями переменной-счетчика;

-переменная-счетчик должна быть целого типа.

Пример 1. Вычислить N!.

Program zadacha_1;

var

n, p,i:integer;

begin

writeln('Введите число n=');

readln(n);

p:=1;

for i:=1 to n d op:=p+1;

writeln('факториал числа n=');

readln;

end.

Пример 2. Среди чисел 1<n<100 найти все пары чисел, для которых их суммы равнялись бы их произведению.

Program zadacha_2;

var

k, a,b :integer;

begin

k:=1;

for a:=1 to 100 do

for b:=1 to 100 do

begin

if a+b=a*b then

begin

k:=k+1;

writeln('числа', a, 'u',b,'такая пара чисел');

end;

end;

if k=0 then writeln('таких чисел нет');

readln;

end.

Пример 3. Написать программу, которая проверяет, является ли заданное число совершенным.

Program zadacha_3;

var

i,n,s :inetger;

begin

writeln('Введите число');

readln(n);

s:=1;

for i:=2 to n div 2 do begin

if n mod i=0 then s:=s+i;

if s=n then writeln('число является совершенным');

else writeln('число не является совершенным') ;

end;

readln;

end.

Пример 4. Пусть дано 10 вещественных чисел, которые вводятся по одному. Вычисть разность между максимальным и минимальным числами.

Program zadacha_4;

var

i:integer;

x, max,min:real;

begin

writeln('Введите число');

readln(x);

min:=x;

max:=x;

for i:=2 to 10 do begin

read(x);

if x>max then max:=x else

if x< min then min:=x;

end;

readln;

writeln('разность между максимальным и минимальным числами:', max-min);

readln;

end.

Упражнения и задачи.

Профиль математика.

1.Вычилить Сборник практических работ по программированию для 1 курса педагогических специальностей .{2}

2.Опередлить, сколько из N заданных точек принадлежит графику Сборник практических работ по программированию для 1 курса педагогических специальностей .{2}

3.Написать программу, которая вычисляет сумму первых членов ряда Сборник практических работ по программированию для 1 курса педагогических специальностей .{1}

4. Вычислить факториал числа. {1}

5.Написать программу, которая выводит таблицу степеней двойки (от 0 до 9).{2}

6.Написать программу, которая вводит с клавиатуры последовательность из пяти дробных чисел и после ввода каждого числа выводит среднее арифметическое полученной части последовательности.{2}

7.Вывести на печать числа Фибоначчи от 1 до N.{3}

8.Написать программу, которая вычисляет частичную сумму ряда Сборник практических работ по программированию для 1 курса педагогических специальностей {2}

9.Среди чисел 1<N<10 найти все пары чисел, для которых их сумма равнялась бы их произведению. {1}

10.*Вычислите приближенное значение Сборник практических работ по программированию для 1 курса педагогических специальностей , используя формулу прямоугольников, если известно, что отрезок [a,b] разбит на n частей. {5}

11.* Пусть интервал (а,b) разбит точками на n равных частей; в каждой точке вычисляется значение функции Сборник практических работ по программированию для 1 курса педагогических специальностей . Найти точку, в которой функция достигает наибольшего значения. {5}

Профиль информатика.

1. Найти сумму всех четных чисел от 1 до 100.{1}

2. Составить программу, по которой компьютер печатает последовательность вида: 10, 100, 1000, ..., 10^n (n<10) {2}

3. Вычислить и напечатать первые 10 чисел Фибоначчи.{3}

4.Дано натуральное число n, действительное х. вычислить S=sinx+sin2x+…+sinnx.

5.Подсчитать сумму всех нечетных чисел от 10 до 100.{2}

6.Напечатать все натуральные четырехзначные числа, в десятичной записи которых нет одинаковых цифр. {3}

7. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n (0<n<18 - вводиться с клавиатуры). {3}

8.Дано натуральное число n (n<=9999). Определить, является ли оно палиндромом (перевертышем), с учетом четырех цифр. Например: палиндром - 2222, 6116…{5}

9. Вычислить сумму s=2/3+3/4+…+10/11/{1}

10.Напечатать числа в виде таблицы

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5 {5}

11.Напечатать числа в виде таблицы

0

1 0

2 1 0

3 2 1 0

4 3 2 1 0 {5}

Контрольные вопросы.

1. С помощью каких служебных слов записывается цикл с параметром?

2. Пусть цикл записан в виде: for v:=E1 to E2 do S;

а) как называется E1?

в) как называется Е2?

с) как называется v?

3. Сколько раз выполниться оператор S, если Е1=Е2, а цикл записан в виде: for v:=E1 to E2 do S?

4. Сколько раз выполниться оператор S, если Е1=Е2, а цикл записан в виде: for v:=E1 downto E2 do S?

5. Какой тип должен иметь параметр цикла в цикле for?

6. Сколько раз выполниться оператор S, если Е1>Е2, а цикл записан в виде: for v:=E1 to E2 do S?

7. Какой тип данных имеют Е1 и Е2?

8. Чему равно значение параметра цикла for после завершения цикла?

9. Какие циклы называются вложенными?

10. Какому условию должны удовлетворять вложенными циклы?

Практическое занятие №6. Тема: «Оператор цикла с предусловием»

Обращение к оператору while do переводиться как «пока … делать» и выглядит так:

while <условие> do<оператор>;

где

while- пока,

<условие> - логическое выражение,

do - делать,

<оператор> - оператор внутри цикла.

Оператор, стоящий после служебного слова do и называемый телом цикла, будет выполняться циклически, пока логическое условие истинно. Само условие может быть логической константой, переменной или логическим выражением.

Условие выполнения тела цикла while проверяется до начала каждой итерации. Поэтому, если условие сразу не выполняется, то тело цикла игнорируется, и управление передается оператору, стоящему сразу за телом цикла.

При написании циклов с предусловием важно помнить: что цикл должен когда-нибудь закончиться, содержимое его тела должно обязательно влиять на условие цикла, а так же, что условие должно состоять из корректных выражений и значений, определенных еще до первого выполнения тела цикла.

Приступая к решению задач этого раздела, необходимо помнить:

-число повторений инструкций цикла while определяется ходом выполнения программы;

-инструкция цикла while выполняется до тех пор, пока условие, записанное после слова while, истинно;

-после слова while надо записывать условие завершения цикла;

-цикл r while - это цикл с предусловием, т.е. инструкции тела цикла вообще могут быть не выполнены;

- цикл while, как правило, используется для организации приближенных вычислений, задач поиска и обработки данных, вводимых с клавиатуры или из файла.

Пример 1. Подсчитать сумму всех нечетных чисел от 101 до 301.

Program zadacha_1;

var

s,i:integer;

begin

s:=0;

i:=101;

while i<301 do

begin

s:=s+i;

i:=i+2;

writeln('сумма нечетных чисел от 101 до 301=',s);

readln;

end.

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

Program zadacha_2;

var

n:integer;

p,t,elem:real;

begin

p:=0;

n:=1;

elem:=1;{начальное значение}

writeln('зададим точность t');

readln(t);

while elem >=t do

begin

elem:=1/(2*n-1);

if (n mod2)=0

then p:=p- elem

else p:=p+ elem;

n:=n+1;

end;

p;=p*4;

writeln('значение Сборник практических работ по программированию для 1 курса педагогических специальностей ',p);

writeln('просуммировано',n,'членов ряда');

readln;

end.

Пример 3. Вычислить значение у, соответствующие значению х (xn≤x≤xk, шаг изменения х равен dx), по формуле Сборник практических работ по программированию для 1 курса педагогических специальностей . Вычислить сумму положительных значений у, произведение ненулевых у, количество отрицательных у.

Program zadacha_3;

var

x, xn,xk,dx,y,s :real;

k:integer;

begin

writeln('xn');

readln(xn);

writeln('kn');

readln(kn);

writeln('dn');

readln(dn);

s:=0;

p:=1;

k:=0;

{присвоение параметру цикла начального значения}

x:=xn;

{пока условие истинно, выполнять тело цикла}

while x<>=xk do

begin {начало цикла}

y:=exp(sin(x))*cos(x);

writeln('x=',x:1:2,'y=',y:1:2);

if y>=0 then s:=s+y elsek:=k+1;

if y<>0 then p:=p*y;

x:=x+dx; {наращивание параметра цикла}

end;

readln;

writeln('s=',s:1:2,'p=',p:1:2,'k=',k);

readln;

end.

Упражнения и задачи.

Профиль математика.

1. Подсчитать произведение всех четных чисел от 10 до 25.{1}

2. Для заданных значений х и n вычислите Сборник практических работ по программированию для 1 курса педагогических специальностей , где n-натуральное число. {2}

3. Вычислить значения у, соответствующее каждому значению х (хnxxk, шаг изменения х равен dx) по формуле Сборник практических работ по программированию для 1 курса педагогических специальностей . Вычислить сумму положительных значений у, произведение ненулевых у, количество отрицательных у.{5}

4.Вычислить значение z, которое соответствует каждому значению х(х=1, dx=0,5), по формуле Сборник практических работ по программированию для 1 курса педагогических специальностей . Считать z до тех пор, пока подкоренное выражение больше или равно 0,02. определить k- количество вычисленных z. {4}

5.Вычислить НОД двух натуральных чисел.{4}

Профиль информатика.

1. Подсчитать сумму всех четных чисел от 20 до 33.{1}

2.Дано натуральное число n. Подсчитать количество цифр данного числа. {3}

3.Напечатать таблицу значений функций sinх и cosх на отрезке [0.1] с шагом 0,1 в следующем виде:

X sin(x) cos(x)

- - -- - - - - - - - - - - - - - - - - - -

0.0000 0.0000 1.000

0.1000 0.0998 0.9950 {3}

1.0000 0.8415 0.5403

4. Вычислить значение z, которое соответствует каждому значению х(х=1, dx=0,5), по формуле Сборник практических работ по программированию для 1 курса педагогических специальностей . Считать z до тех пор, пока подкоренное выражение больше или равно 0,02. определить k- количество вычисленных z. {4}

5. Вычислить НОД двух натуральных чисел.{4}

Тест

1. Какие значения может принимать переменная х после исполнения

следующей команды цикла:

x:=10

пока х>7 делай х :=х-1

а) 10

б) 7

в) 6

г) 0

2. Какие значения может принимать переменная х после исполнения

следующей команды цикла:

x:=0

пока х‹=7 делай х:=х+1

а) =10

б) =7

в) <=7

г) =8

3. Определите, какие значения получат переменные s, i после исполнения

следующих команд:

s:=0, i:=1

пока i ‹=3

нц

s:=s+i

i:=i+1

кц

а) s =10, i=3

б) s=7, i=4

в) s=6, i=4

г) s=6, i=3

4.Определите, какие значения получат переменные s, i после исполнения

следующих команд: s:=0, i:=0

пока i ‹=3

нц

i:=i+1

s:=s+i

кц

а) s=10, i=3

б) s=10, i=4

в) s=6, i=3

г) s=6, i=4

5. Определите, какие значения получат переменные i и р после исполнения

следующих команд: p:=0, i:=1

пока i ‹=3

нц

p:=p*i

i:=i+1

кц

а) p =24, i=3

б) p=24, i=4

в) p=6, i=3

г) p=0, i=4

6. Определить зависимости между a и s, которые устанавливаются

после выполнения серий команд:

s:=-a i:=2

пока i ‹=3

нц

s:=s+a

i:=i+1

кц

а) s=2*a,

б) s=1*a,

в) s=3*a,

г) s=4*a,

7. Для решения какой задачи предназначены следующие фрагменты

программ: а: = 3, в: = 1

пока а >0

нц в: = в*2

а:= а-1

кц

вывод в

а) вычисляется 2^3

б) вычисляется 2^8

в) вычисляется в*2

г) вычисляется а*в

8. Для решения какой задачи предназначены следующие фрагменты

программ:

а:=6

пока mod ( а,2) =0

нц

а:=div(а,2)

кц

а) вычисляется наибольший четный делитель числа а

б) вычисляется наибольший нечетный делитель четного числа а

в) вычисляется модуль числа а

г) вычисляется наибольший общий делитель (НОД) числа а

9. Алгоритм, в котором одна и та же последовательность шагов

(предписаний) выполняется несколько раз, называется:

а) линейным алгоритмом;

б) алгоритмом с ветвлением;

в) алгоритмом с повторением;

г) вспомогательным алгоритмом

10. Повторение в алгоритме задается с помощью ключевых слов:

а) если;

б) то;

в) иначе;

г) все;

д) пока;

е) ввод

ж) вывод.

11. Неверным является условие…

а) а=sin(3.14*alpha/180)*2)

б) (а=0) или (в>2)

в) не(d=-2)

г) (а<>0) и (в>-2)

12. Что напечатается в результате выполнения программы?

B:=16;A:=10;

Пока A>=1

нц B:=B-1;

Вывод(B);

A:=A-3;

кц

а) 12 13 14 15

б) 15 14 13 12 11

в) 16 15 14 13

г) 1 2 3 4 5 6 7

д) 15 14 13 12


Практическое занятие №7. Тема: «Оператор цикла с постусловием»

В цикле с предусловием предварительной проверкой определяется, выполнять тело цикла или нет, до первой итерации. Если это не соответствует логике алгоритма, то можно использовать цикл с постусловием, т.е. цикл, в котором проверяется, делать или нет очередную итерацию, лишь после завершения предыдущей. Это имеет принципиальное значение лишь на первом шаге, а далее циклы ведут себя идентично. Оператор repeatuntil реализует цикл с постусловием. Цикл с постусловием всегда будет выполнен хотя бы раз.

repeat

<оператор_1>

<оператор_2>

<оператор_n>

until <условие>;

где

repeat - повторять,

<оператор_1>

<оператор_2>

<оператор_n>- последовательность операторов внутри цикла(тело цикла),

until-до

<условие>; - логическое выражение.

В цикле repeat действует алгоритм: выполнять тело цикла, пока не станет истинным условие, т.е. пока условие ложно, выполняется цикл.

Приступая к решению задач этого раздела, необходимо помнить:

-число повторений инструкций цикла repeat определяется ходом выполнения программы;

-инструкция цикла repeat выполняется до тех пор, пока условие, стоящее после слова until, ложно;

-после слова until надо записывать условие завершения цикла;

-цикл repeat- это цикл с постусловием, т.е. инструкции тела цикла будут выполнены хотя бы один раз;

- цикл repeat, как правило, используется для организации приближенных вычислений, задач поиска и обработки данных, вводимых с клавиатуры или из файла.

Пример 1. Распечатать числа Фибоначчи от 1 доN (каждое число в последовательности, начиная с третьего, получается сложением двух предыдущих чисел. Например: 1,1,2,3,5,8,13,21 …)

Program zadacha_1;

var

a,b,c,n, i:integer;

begin

writeln('Введите число n');

readln(n);

a:=1;

b:=1;

writeln (a,b);

i:=3;

repeat

c:=a+b;

writeln( c);

a:=b;

b:=c;

i:=i+1

until i>n;

readln;

end.

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

Program zadacha_2;

var

n, i:integer;

y:real;

begin

y:=0;

i:=1;

repeat

y:=y+1/i;

i:=i+1;

until i>n;

writeln ('y=',y);

readln;

end.

Пример 3. Программа вводит два числа в первой строке и один из знаков +,-,*,/ во второй строке и выводит на экран результат соответствующего арифметического действия.

Program zadacha_3;

var

operation:char;{знак операции}

x, y,z: real;{операнды и результат}

s;

begin

s;

repeat

writeln;

writeln('x,y=');

readln (x,y);

writeln('операция');

readln (operation);

case operation of

'+':z:=x+y;

'-':z:=x-y;

'*':z:=x*y;

'/':z:=x/y;

else

s""> end;

if not stop then

writeln ('зультат=',z)

until stop

readln;

end.

Пример 4.Пусть дан прямоугольник, длины сторон которого а и b - натуральные числа. На сколько квадратов, стороны которых выражены натуральными числами, можно разрезать данный прямоугольник, если от него каждый раз отрезать квадрат максимально возможной площади?

Program zadacha_4;

var

a, b: integer;{длины сторон прямоугольника}

n: integer;{наименьшее число квадратов}

k: integer;{число одинаковых квадратов}

х: integer;

begin

n:=0;

writeln('введите длины сторон прямоугольника');

readln (a,b);

writeln('дан прямоугольник',a:2,'*',b:2);

writeln('квадраты');

repeat

if a

x:=a;

a:=b;

b:=x

end;

k:=a div b;

a:=a mod b;

writeln (b,'*',b,'',k);

n:=n+k

until (a=0);

writeln ('всего квадратов:',n);

readln;

end.

Упражнения и задачи.

Профиль математика.

1.Написать программу наводнения НОД двух чисел.{1}

2.Найти приближенное значение суммы ряда Сборник практических работ по программированию для 1 курса педагогических специальностей , учитывающие все слагаемые, от начала ряда до первого, величина которого меньше ε=0,0001.{3}

3.составить программу подсчета суммы первых 100 членов гармонического ряда 1+1/2+1/3+..+1/n.{1}

4. Вычислить значение функции Сборник практических работ по программированию для 1 курса педагогических специальностей , используя рекуррентную формулу Сборник практических работ по программированию для 1 курса педагогических специальностей . вычисления прекратить при Сборник практических работ по программированию для 1 курса педагогических специальностей , определить количество итераций.{5}

5. Распечатать числа Фибоначчи от 1 до N. {1}

Профиль информатика.

1.Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину.{1}

2.Пусть дано натуральное число n. А) сколько цифр в числе n, В) как выглядит запись цифр числа n в обратном порядке? {4}

3. Вывести на экран одну из строк формулы Сборник практических работ по программированию для 1 курса педагогических специальностей , для заданного натурального числа N.{3}

4. Распечатать числа Фибоначчи от 1 до N.{3}

Тест.


1.при программировании вложенных циклов необходимо соблюдать следующие дополнительные условия:

1.все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла

2. все операторы внешнего цикла должны полностью располагаться в теле внутреннего цикла

3. все операторы внутреннего цикла должны частично располагаться в теле внешнего цикла

4. все операторы внешнего цикла должны частично располагаться в теле внутреннего цикла

2.операторами повтора являются следующие операторы:

1.while

2.repeаt

3.for

4.if

5.go to

3.какой из перечисленных ниже операторов обеспечивает выбор из двух альтернатив:

1.if

2.case

3.while

4.for

4.если оператор не содержит ни каких символов и не выполняет никаких действий, то он является:

1.пустым

2.составным

3.условным

4.оператором повтора

5.оператор повтора repeat отличается от оператора while, тем что:

  1. условие проверяется после очередного выполнения операторов тела циклов

  2. критерием приращения цикла является равенство выражений констант True.

  3. условие проверяется перед очередным выполнением операторов тела цикла.



Модуль IV. Массивы. Алгоритмы обработки массивов.

Практическое занятие №8. Тема: «Одномерные массивы»

Массив - структурированный тип данных, состоящий из фиксированного числа элементов одного типа. Регулярный тип массива получили за то, что в них объединены однотипные элементы, упорядоченные по индексам, определяющим положение каждого элемента в массиве.

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

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

Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным. Вообще количество индексов элемента массива определяет размерность массива. По этому признаку массивы делятся на одномерные (линейные), двумерные, трехмерные и т.д.

Для описания массива служит служебное слово array of. Сама же процедура может выполняться двумя способами:

1. Ввести новый тип данных, а потом описать переменные нового типа.

Type

<имя массива>=array[<тип_индекса>] of <тип_компонентов>;

В качестве тип_индекса можно использовать перечисляемый тип. Тип_компонентов - это любой ранее определенный тип даны.

2. Можно не вводить новый тип, а просто описать переменную следующим образом:

Var <переменная>:array[<тип_индекса>] of <тип_переменой>;

Для описания массива можно использовать ранее определенные константы.:

Const

m=10;

Var

<aarray[1..m] of integer>;

Размер массива не может превышать 64 Кб.

Доступ к каждому элементу массива осуществляется с помощью индекса, т.е. порядкового номера элемента массива. Для обращения к элементу надо указать имя массива и порядковый номер элемента: А[6]- обращение к 6-му элементу массива А.

При вводе массива необходимо последовательно вводить 1-й,2-йи т.д. элементы массива, аналогичным образом поступают и при выводе. Следовательно, для ввода-вывода необходимо организовывать цикл, в котором практически все операции с массивами необходимо производить поэлементно. Для обработки массива удобно использовать цикл с параметром.

Над элементами массива чаще всего выполняются такие действия:

1.поиск значений,

2. сортировка элементов в порядке возрастания или убывания,

3.подсчет элементов массиве, удовлетворяющих заданному условию.

Сумма элементов массива подсчитывается по формулу S:=S+A[i], первоначально задав S=0. Количество элементов массива можно подсчитать по формуле К:=К+1, первоначально задав К=0. Произведение - Р:=Р* A[i], первоначально задав Р=1.

Можно одной переменной массива присваивать значения другой переменной, как этого, так и другого массива, при это необходимо, чтобы тип данных у этих был совместим.

Примеры

Пример №1.Заполнение массив элементов случайными числами.

Program zadaha1 (input. output); {вод-вывод элементов массива}

var

a: array[1..10] of integer;

i: integer;

begin

randomize;

for i:=1 to 10 do begin

a[i]:=random (30);

writeln('A(', I , ')=', a[i])

end;

end.

Пример №2. Дан массив А(30), заполненный датчиком случайных чисел. Найдите экстремум.

Program zadaha2 (input. output); {нахождение наибольшего и наименьшего}

var

a: array[1..30] of integer;

i, min,max: integer;

begin

randomize;

for i:=1 to 30 do begin

a[i]:=random (50);

writeln('значение', I,' элементы массива =', a[i]);

end;

min:=a[1];

max:=a[1];

for i:=1 to 30 begin

if a[i]

if a[i]>max then max:=a[i];

end;

writeln ('max=', max, 'min=', min);

readln;

end.

Пример №3.Дан массив, состоящий из 20 элементов. Произвести вставку числа 10 в позицию m данного массива. Позиция m должна соответствовать диапазону 1< m < n.

Program zadaha3(input. output); {вставка элементов в массив}

Cons n=20;

var

a: array[1..(n+1)] of integer;

i, m,n: integer;

begin

for i:=1 to n do read(a[i]);

wtiteln ('введите номер индекса элемента для вставки');

read(m);

for i:=n+1 downto m+1 do a[i]:=a[i-1] to 30 ;

a[m]:=10;

for i:=1 to n+1 do writeln(a[i])

if a[i]

if a[i]>max then max:=a[i];

readln;

end.

Упражнения и задачи.


Профиль математика.

1.Дан одномерный массив А(15). Найти сумму и произведение значений элементов массива, больших некоторой величины t.

2.Дан массив, состоящий из 20 элементов. Произвести вставку числа 10 в позицию m данного массива. Позиция m должна соответствовать диапазону 1≤m≤n.

3. Отсортировать исходный массив по возрастанию методом вставки.

4.Отсортировать исходный массив по возрастанию методом поиска максимума.

5. Отсортировать одномерный массив по убыванию методом «пузырька».

6.Уплотнить исходный массив путем удаления отрицательных элементов.

7.Уплотнить исходный массив путем удаления элементов, стоящих на четных позициях.

8.Дан одномерный массив. Элементы, кратные 5, заменить на число 15, а остальные заменить на -15.

9. Задан массив А(15), заполненный датчиком случайных чисел из интервала [-20,20]. Найти и вывести на печать минимальный элемент.

10.Дан массив Х(20), заполненный датчиком случайных чисел. Сформировать новый массив из 10 отрицательных элементов массива.

11.Дан массив Х(20), заполненный датчиком случайных чисел. Поменять местами 1-й с последним, 2-й с предпоследним и т.д.

Профиль Информатика.

1.Дан одномерный массив А(15). Найти сумму и произведение значений элементов массива, больших некоторой величины t.

2.Дан массив, состоящий из 20 элементов. Произвести вставку числа 10 в позицию m данного массива. Позиция m должна соответствовать диапазону 1≤m≤n.

3. Отсортировать исходный массив по возрастанию методом вставки.

4.Отсортировать исходный массив по возрастанию методом поиска максимума.

5. Отсортировать одномерный массив по убыванию методом «пузырька».

6.Уплотнить исходный массив путем удаления отрицательных элементов.

7.Уплотнить исходный массив путем удаления элементов, стоящих на четных позициях.

8.Дан одномерный массив. Элементы, кратные 5, заменить на число 15, а остальные заменить на -15.

9. Задан массив А(15), заполненный датчиком случайных чисел из интервала [-20,20]. Найти и вывести на печать минимальный элемент.

10.Дан массив Х(20), заполненный датчиком случайных чисел. Сформировать новый массив из 10 отрицательных элементов массива.

11.Дан массив Х(20), заполненный датчиком случайных чисел. Поменять местами 1-й с последним, 2-й с предпоследним и т.д.

12.Дан массив А(n). Найти количество и суму элементов массива, принадлежащих отрезку [-7,7].

13.Задан массив А(15). Посчитать количество элементов, кратных 3.

14.Дан массив из n вещественных чисел, заполненный случайным образом из интервала [-10,50].посчитать количество чисел, кратных 7.

15. Дан массив Х(20), заполненный датчиком случайных чисел. Сформировать новый массив из положительных элементов массива.

Контрольные вопросы по теме: «Массивы».


  1. Что такое массив?


  1. Как определить местоположение элемента в массиве?


  1. Каким образом задается описание массива, что в нем указывается?


  1. Что называется сортировкой массива?


  1. Какие методы сортировки вы знаете, опишите их существенные отличия.


  1. Что вы понимаете под поиском? Отличительные черт линейного и бинарного поиска.


  1. В каких случаях целесообразнее использовать линейные или бинарный поиск?

Тест №4.

Тема: «Массивы»


  1. в качестве типа данных для элемента массива можно использовать:

а) любые типы данных Турбо Паскаль

б) любые типы данных Турбо Паскаль кроме файловых

в) только целые и вещественные

с) любые типы данных Турбо Паскаль кроме целых и литерных.


  1. в массиве для поиска элемента с нужными свойствами применяют:

а) алгоритм линейного поиска

б) алгоритм частичного поиска

в)алгоритм поиска с барьером

с) алгоритм бинарного поиска

д)алгоритм выборочного поиска


  1. Простейшая задача сортировки заключается в :

а) упорядочивании элементов массива по возрастанию

б) упорядочивании элементов массива по убыванию

в) упорядочивании элементов массива по убыванию или возрастанию

с) сортировка в массиве запрещена

  1. идея метода сортировки состоит в том, что каждый раз , имея упорядоченный массив их К элементов, мы:

а) добавляем один элемент, включая его таким образом, чтобы упорядоченность не нарушалась.

б) удаляем один элемент, исключая таким образом, чтобы упорядоченность не нарушалась.

в) переставляем первый и последний элемент местами , а затем меньший из них исключаем таким образом, чтобы последовательность не нарушалась.





Оглавление

Модуль I. Программирование линейных процессов 3

Практическое занятие №1. Тема: «Оператор присваивания, ввода и вывода информации» 3

Упражнения и задачи. 6

Модуль II. Программирование разветвленных процессов 10

Практическое занятие №2. Тема: «Условный оператор» 10

Практическое занятие №3. Тема: «Конструкция выбора» 17

Тест №3 20

Практическое занятие №4. Тема: «Метки и оператор перехода» 20

Контрольные вопросы. 21

Модуль II. Циклические алгоритмические конструкции 23

23

Практическое занятие №5. Тема: «Оператор цикла с параметром» 23

Практическое занятие №6. Тема: «Оператор цикла с предусловием» 27

Практическое занятие №7. Тема: «Оператор цикла с постусловием» 33

Модуль IV. Массивы. Алгоритмы обработки массивов. 39

Практическое занятие №8. Тема: «Одномерные массивы» 39

Оглавление 44

ЛИТЕРАТУРА 45



ЛИТЕРАТУРА


  1. Алексеев Е.Р., Чесноченко О.В. Турбо Паскаль 7.0.Учебный курс. М.%NT Press,2006.-268с.

  2. Адаменко А.Н. Pascal на примерах из математики. Санкт-Петербург: «БХВ-Петербург», 2005.-394с.

  3. Ремнев А.А. , Федотова С.В. Курс программирования для начинающих. Полигон нестандартных задач. М.:Солон-пресс, 2007.-359с.

  4. Пильщиков В.Н. Сборник упражнений по языку Паскаль. М.: Наука, 1989.- 160с.

  5. Шаньгин В.Ф., Поддубная Л.М. Программирование на языке Паскаль. М.: Высш.шк., 1991. - 142с.

  6. Попов В.Б. Turbo Pascal для школьников. М.: Финансы и статистика, 1996. - 464с.

  7. Епанешников А., Епанешников В. Программирование в среде . Turbo Pascal 7.0. М.: «ДИАЛОГ-МИФИ», 1997.- 288с.

  8. Усковой О.Ф. программирование на языке Паскаль. Задачник. Санкт-Петербург: «Питер», 2003.-335с.

  9. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. М.: «Нолидж», 1997. - 616с.

  10. Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учебный курс. Санкт-Петербург: «Питер», 2001.-239с.

  11. Юркин А.Г.Задачник по Программированию. Санкт-Петербург: «Питер», 2002.-182с.

37


© 2010-2022