Егорова С. А. Алгоритмизация и программирование..


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОУВПО ©СИБИРСКАЯ ГОСУДАРСТВЕННАЯ ГЕОДЕЗИЧЕСКАЯ АКАДЕМИЯ»









С.А. Егорова





АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ


Утверждено редакционно
-
издательским советом академии в качестве

сборника
описаний лабораторных работ
д
ля студентов 1го курса специальности 230201
©Информационные системы и технологии» по дисциплине ©Информатика»






















Новосибирск

СГГА

2010
УДК 683.1

ББК 32.973

Е28


Рецензент:

кандидат

технических наук, доцент, НГТУ

В.А. Кондратьев


доцент СГГА

Н.В.

Деева


Егорова С.А.

Е28 Алгоритмизация и программирование [Текст]: сборник описаний
лабораторных работ / С.А. Егорова.


Новосибирск: СГГА, 2010.


57 с.


ISBN 9785876934192


Сборник

подготовлен доцентом кафедры прикладной информатики
Сибирской государственной геодезической академии С.А. Егоровой и
предназначен студентам 1го курса специальности 230201 ©Информационные
системы и технологии» для выполнения лабораторных работ Описан поряд
ок
выполнения четырех лабораторных работ, подготовлены варианты исходных
данных к ним, приведен библиографический список.


Ответственный редактор: кандидат технических наук, профессор
Сибирской государственной геодезической академии

А.С. Суздалев


УДК
681.3


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













© ГОУ ВПО ©Сибирская государственная

ISBN

9785876934192

геодезическая академия» (СГГА), 2010

С
ОДЕРЖАНИЕ

Введение

................................
................................
................................
...............

4

Лабораторная работа № 1. Линейные алгоритмы

................................
............

6

Лабораторная работа № 2. Разветвляющиеся алгоритмы. Условные
операторы

................................
................................
................................
...

16

Лабораторная работа № 3. Циклические алгоритмы. Операторы цикла

.....

27

Лабораторная работа № 4. Обработка массивов данных

..............................

36

Список вопросо
в для подготовки к экзамену

................................
.................

44

Библиографический список рекомендуемой литературы

.............................

45

Приложение
................................
................................
................................
........

46



ВВЕДЕНИЕ

Данный
сборник

предназначен студентам для выполнения лабораторных
работ раздела ©Алгоритмизация и программирование» по курсу
©Информатика».

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

Основная цель выполнения лабораторных работ


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

При прохождении данного курса студент должен уметь правильно
составлять математическую формулировку задачи, оформлять алгоритмы

и
писать программы, проводить тестирование и
анализировать полученные
результаты.

Сборник содержит примеры выполнения и варианты исходных данных для
лабораторных работ.

Предполагается, что студенты уже знакомы с основами
Excel

или
MathCAD

для возможности проведения тестирования своих задач,
иначе про
водится простое тестирование (или ручное).

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

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

Программиров
ать можно как в среде
Windows
,
используя приложения
Borland

C
++

Builder
,
Visual

C
++ и в
Delphi
, так и в
DOS
, используя
интегрированную среду разработки
Borland

C
++
Version

3.1 и
Turbo

Pascal

Version

7.0, которые, безусловно, могут быть запущены и из
Windows
.

В приложении описана профессиональная, высокоэффективная среда
разработки
Borland

C
++ 3.1 (схожая с

Turbo

Pascal

7.0), наилучшим образом
подходящая для изучения языка
C
++, и как наиболее переносимая

с одной
ЭВМ на другую и не требующая особой уст
ановки.

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

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

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


В вариантах задания каждой лабораторной работы по три задачи. Две из
них выполняются на занятиях в компьютерных классах, а третья


самостоятельно.

По результатам выполнения лабораторной работы оформляется отчет
(редактор

Word
, формат
А
4,

односторонняя печать
)
.


Титульный лист отчета необходимо оформить по стандартной форме.

Отчет должен содержать следующие компоненты:


П
остановка задачи;


Н
еобходимые математические выкладки (и/или поясняющая картинка);


А
лгоритм решения
задачи (схема алгоритма);


Т
ексты программы;


Т
естовые наборы

(
тест



это проверка работоспособности программы
по контрольным значениям данных);


Р
езультаты вычислений по каждому тесту.


Отчет для лабораторной работы составляется в одном экземпляре на
бригаду

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

В данных лабораторных работах используются ЭВМ, на которых
установлена операционная система семейства
Wind
ows
, а также языки
программирования уровня
С
++ и
Pascal
.


ЛАБОРАТОРНАЯ РАБОТА
№ 1
. ЛИНЕЙНЫЕ АЛГОРИТМЫ

Время выполнения


2 часа.

Цель работы
: научиться
работать в интегрированной среде
программирования и приобрести навыки

составления линейных алгоритмов.

Задачи лабораторной работы

При выполнении данной лабораторной работы студент должен
научиться:


В
водить и редактировать текст (манипуляции с символами,
строками,
блоками как в пределах одного окна, так и между ними);


П
олучать справку от ИСП (индустриальная среда программирования);


К
омпилировать и запускать на выполнение программу;


И
скать и исправлять синтаксические и семантические ошибки;


В
ыполнять трасси
ровку (пошаговую отладку) программы;


И
нициировать и изменять значения переменных;


П
исать текст программы по схеме алгоритма, и, наоборот, по тексту
программы составить схему ее алгоритма;


П
исать текст программы как на формальном языке (псевдокоде), так и
н
а языках программирования C++ и Pascal;


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


П
роводить тестирование программы, используя изв
естные ему
приложения (например, Excel или MathCAD).


Перечень обеспечивающих средств

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

С
++ и
Pascal
.

Общие теоретические сведения

Основные эта
пы процесса решения задач на ЭВМ

Процесс решения задачи на ЭВМ состоит из следующих этапов.

1.

Математическая формулировка задачи


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

2.

Разработка методики решения задачи


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

3.

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

4.

Программирование: запись решающего алгоритма на языке
программирования, и последующая трансляция на машинный язык.

5.

Отладка программы: ус
транение в программе синтаксических,
семантических и алгоритмических ошибок.

6.

Решение задачи на ЭВМ и анализ полученных результатов.


Основы языков С++ и
Pascal

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

1)

П
рограмма должна оформляться в
соответствии со структурой,
предназначенной для данного языка программирования (табл. 1.1);

2)

П
рограмма должна иметь начало и конец, обозначенные операторным

блоком (в
С
++ это { … }, а в
Pascal

это
begin


end
);

3)

К
аждая переменная программы должна быть объяв
лена в начале
программы с указанием ее типа. Переменная может быть инициализирована
некоторым значением. В имени переменной могут использоваться цифры и
буквы латинского алфавита. Базовые типы данных представлены в табл. 1.2;


Таблица 1.1
.
Структура програ
мм

Назначение

Язык

С

Язык
Pascal

1. Заголовок

2. Директивы
препроцессора

3. Раздел
объявлений и
соглашений





4. Раздел описания
процедур и функций






5. Основная
программа


#
include

< Имя библиотеки>

#
define

Имя Макрос

label

Номер метки;

const


Имя константы = Значение
константы;

Имя типа переменной Список имен
переменных;


function

Имя функции (входные и
выходные данные)

{


Тело функции

}




main

( )

{ Тело программы }

program

Имя программы;



label

Номер метки;

const


Имя константы =
Значени
е константы;

type
Имя типа = Описание ти
па;

var
Список имен переменных:
Имя типа переменной;

procedure

Имя процедуры
(входные и выходные данные)

begin


Тело процедуры

end
.

function

Имя функции (входные
данные)

begin


Тело функции

end
.

begin


Тело программы

end
.

Таблица 1.2
.
Типы данных и диапазон представления чисел


Язык
C


байт

Язык
Pascal

Д
иапазон

Т
ип


Д
иапазон

Т
ип

Ц
елые числа

0

255

uns

char

1

0

255

byte

128

127

char

1


128

127

s
hortint

32
768

32

767

int
,

short

2


32

768

32

767

integer

0

65

535

uns short

2

0

65

535

word


2147483648

2147483647

long

4


2147483648

2
147483647

longint

0

4

294

967

295

uns long

4


В
ещественные

числа

3,4
Е
38

3,4
Е
38

float

6

2,9
Е
39

1,7
Е
38

rea
l


4

1,5Е45

3,4Е38

single

1,
7
Е
308

1
,
7
Е3
0
8

double

8

5,0Е324

1,7Е308

double

3
,
4
Е49
32

1,1Е4932

long
double

10

1,9Е4951

1,1Е4932

extended


8

2Е+64

2Е+62

comp


(только целые числа)

С
имвольный

тип

char

4)

В
се арифметические выражения состоят из операндов, которые должны
расписываться в одну строчку. Если в
формуле имеется дробь, то числитель и
знаменатель указывается в круглых скобках. Основные операции, применяемые
в выражениях, представлены табл. 1.3. Операции %,

mod

и
div

выполняются
только с целыми числами, и результатом вычисления является целое число.
В
языке С++ операции инкремента (++) и декремента (
––
) могут появляться перед

или после своего операнда. Когда операция является префиксом своего
операнда, то операнд инкрементируется или декрементируется и его новое
значение является результатом

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

его инкрементированием или
декрементированием. После этого результат используется в контексте,

а

операнд

инкрементир
уется или декрементируется;

Таблица 1.3
.
Операции

Вид операции

Назначение

Язык

С

Язык
Pascal

аддитивные

арифметические

+,


+,


мультипликативные

*, /

*, /

остаток от деления

%

mod

целая часть от деления


div

отношений

равно

==

=

не равно

!=

 00;

больше





меньше





больше или равно

�=

�=

меньше или равно

=

=

логические

и

&&

and

или

||

or

отрицание

!

not

присваивания

простое присваивание

=

:
=

сложение с присваиванием

+=


вычитание с присваиванием


=


умножение с
присваиванием

*=


деление с присваиванием

/=


остаток от деления с
присваиванием

%=


унарный инкремент

++

inc

унарный декремент





dec

5)

В
ычисления в выражениях выполняются в соответствии с приоритетом
операций, распределенных по категориям (табл.

1.4);



Таблица 1.4
.
Приоритет выполнения операций

Язык
C

Язык
Pascal

Приоритет

Категория

!
,

++,





not

Первый

Унарные

*,

/,

%,

&&

*, /,
div
,

mod
,

and

Второй

Мультипликативные

+,


,

||

+,

,
or

Третий

Аддитивные

=
=
,
!=
, , 0;, , =, =4,;&#x -90;=

=, 䀀, , 0;, , =&#x-5=4;&#x, 00;,
=

Четвертый

Отношения

=, *=, /=, %=, +=,

=

:=

Низший

Простое и составное

6)

К
аждый оператор должен заканчиваться символом ©;»



признаком
окончания действия;

7)

Д
ля ввода и вывода информации используются специальные функции
(табл. 1.5). После вывода информации курсор устанавливается в этой
же
строке. Если есть необходимость переслать курсор на начало следующей
строки, то используются процедуры
Write
ln

и

Readln



в
Pascal
, а в
С
++


специальные управляющие символы ©
\
n
» и ©
endl
»;


Таблица 1.5
.
Функции и процедуры ввода и вывода


Язык
C

Язык
Pascal

Спецификаторы

форматов и
управляющие
символы

Функции

Процедуры

Ввод

Библиотека:
stdio
.
h

%
d
, %
i



целые

%
f



вещественные

%
с



символьные

%
s



строковые

scanf

(“специф“, & идентификатор);

н
апример,

scanf

(“%
d
%
f
”, &
a
, &
b
);

scanf
(“%
c
”, &
ch
);

scanf
(“%
s
”,
st
);

read
(идентификатор);

readln
(идентиф);


н
апример,

read
(
a
);

read

(
a
,
b
);

readln
(
c
);

readln

(
d
,
b
);

Библиотека:
iostream
.
h


cin
>>идентификатор;

н
апример,

cin
��
a
;
cin
��
b
��
ch
;

cin
��
st
;

Вывод

Библиотека:
stdio
.
h

%
d
, %
i



целые

%
f



вещественные

%
с



символьные

%
s



строковые

\
n



перевод строки

printf

(“текст специф“, идентиф);

н
апример,

printf

(“Значение
а
= %
d
\
n
”,
a
);

printf

(“
а
= %
d
\
n
и

b=
%
f
\
n
”,
a, b
);



printf

(“
\
n
символ
= %
c
\
n
”,
ch
);


printf

(“
строка
: %
s
\
n
”,
st
);

write
(„текст‟, идент);

writeln
(„текст‟, идент);


н
апример,

write
(„Значение‟,
a
);

write
(„Значение‟,
a
,
„Значение
b
=
‟,
b
);

writeln

(„
Значение
‟,
a
);

writeln

(„
символ
:‟,
ch
);

writeln

(„
строка:
‟,
st
);



Библиотека:
iostream
.
h

\
n

и

endl



перевод
строки

cout
<<текст<<идентификатор;

н
апример,

cout
<<”Значение
a
=”<<
a
<<”
\
n

;

cout
<<”
a
=”<<
a
<<”
b=
”<<
bendl
;

cout
<<”
символ
: ”<<
ch

endl
;

cout
<<”
строка
: ”<<
st

endl
;

8)

В

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


Таблица 1.6
.
Часто используемые стандартные функции

Назначение

Язык
C

Язык
Pascal

абсолютное значение по
модулю

abs

(
int x
),

fabs

(
double x
),

labs
(
longint x
)

abs

(
x

:
integer
,
real
) :
integer
,
real

тригонометрические функции (в
радианах)

double

cos
(
double x
)

double

sin
(
double x
)

double atan

(
double x
)

double tan

(
double x
)

cos

(
x

:
real
) :
real


sin

(
x

:
real
) :
real


arctan
(

x

:
real
) :
real


экспонента числа


exp
x

double

exp

(
double x
)

e
xp

(
x

:
integer
) :
real

вычисляет остаток от

числа

double

fmod

(
double x
,

double
y
)

f
rac

(
x

:
real
) :
real

вычисляет целую часть от числа

struct div
(
int x
;
int y
)

i
nt

(
x

:
real
) :
integer

натуральный логарифм числа

double log

(
double x
)

ln
(
x
:
integer, real
) :

real

десятичный логарифм

double
log
10

(
double x
)

log
(
x
:

integer, real
)

:

real

квадрат числа

double sqr

(
double x
)

sqr
(
x
:

integer, real
)

:

integer
,
real

квадратный корень числа

double sqr
t

(
double x
)

sqrt
(
x
:

integer, real
)

:

real

вычисляет число
x

в степени
y

double
pow
(
double x
,

double
y
)

exp
(
y
*
ln
(
abs
(
x
)))

возвращает случайное число в
диапазоне 0

x
;

int rand
()

r
andom

(
x

:

integer
) :

integer

округляет число до целого

double floor

(
double x
)

r
ound

(
x

:

real
) :

integer

Составление линейных алгоритмов

Линейными называются

алгоритмы,

процесс

пошагового

выполнения

которых

можно изобразить прямой линией


сверху вниз.

Пример 1.1. Вычислить значение
.

Текстуальная форма алгоритма вычисления
z
:

1)

В
вести

числовые значения
х
,
t

и

у

с клавиатуры в ЭВМ;

2)

В
ыполнить математические действия в соответствии с формулой;

3)

П
олученный результат
z

выдать на экран дисплея.



Рис. 1.1
.

Схема линейного
алгоритма


Графическая форма представления алгоритма
дана в виде схемы

(рис.
1.1),
использующей

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

С

и

Pascal
.

Псевдокод алгоритма

алг

Пример1

нач вещ

x
,
y
,
t
,
z


вывод

“Введите числа

x
,
y

и

t

через пробел: ”

ввод

x, y,
t

z = (

x
^(1/3) +
abs
(
t
*
y
) ) / (
sqr
(
sin
(
x
)
)

+

+
2.8*
cos
(
x
^3) )

вывод



Значение
z

равно

”,

z

кон

Программа на
C

#
include


stdio
.
h


#
include


math.h


main
()

{
float x
,
y
,
t
,
z
;

printf

(“

Введите числа
х
,
t

и
y

через про
бел: “);

scanf
(“%
f

%
f

%
f
”, &
x
, &
t
,

&
y
);

z

= (
pow
(
x
,(1/3)) +
abs
(
t
*
y
)) / (
sin
(
x
)*
sin
(
x
)


2.8*
cos
(
x
*
x
));

printf

(“

Значение
z

равно %
f

\
n
”,
z
);

}

Программа

на

Pascal

Program abc ;

Var x, t,
у
, z : real;

begin

write

(' Введите числа х,
t

и
y

через пробел: ');

readln (x, t, y);

z := (
exp((1/3)*ln(x) + abs(t*y) ) / ( sin(x)*sin(x)


2.8*cos(x*x
) );

writeln

(' Значение
z

равно ',
z
);

end
.

Пример 1.2. Дано двухзначное целое число
b
. Найти сумму его цифр.

Текстуальная форма алгоритма задачи:

1)

В
вести

число
b

с клавиатуры в ЭВМ;

2)

Д
ля выделения

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

на 10 и взять целое число от этого деления;

3)

Д
ля выделения второй цифры разделить число
b

на 10, и взять дробную
часть от этого деления;

4)

Н
айти сумму найденных цифр;

5)

П
олученный рез
ультат выдать на экран дисплея.


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

Pascal

и

С
.


Псевдокод алгоритма

алг

Пример2

нач

цел
b
,
x
,
y
,
z

вывод

“Введите целое число ”

ввод

b

x

=
b

div

10

{находим целую часть}

y

=
b

mod

10

{находим дробную часть}

z

=
x

+
y

{сумма цифр }

вывод

“Сумма цифр числа ”,

b
, “ равна ”,
z

кон

Программа

на

Pascal

Program primer2 ;


var b, x,
у
, z : integer;

begin

write

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

readln

(
b
);

x

:=
b

div

10;

{находим целую часть}

y

:=
b

mod

10;

{находим дробную
часть}

z

:=
x

+
y
;

writeln

(„ Сумма цифр числа „,
b
, „ равна „,
z
);

end
.

Программа

на

C

#
include


iostream.h


#
include


math.h


#
include


stdlib.h


main
()

{
int

b
,

x
,
y
,
z
;

div
_
t

res
;




// описание структуры функции
div
:







//

struct div_t
(

int quit
;

int rem
;)

div
(
n
,

d
);







// где
n



числитель,
d



знаменатель,







//

quit



целая часть от деления,







//

rem



дробная часть от деления.


cout




Введите целое число : “ ;

cin

��
b

��
endl

;

res

=
div

(
b
, 10) ;


// делим число
b

на 10, и расчленяем на

x

=

res
.
quit

;



//


целую часть и

y

=

res
.
rem

;




//


дробную часть

z

=
x

+
y

;

cout




Сумма цифр числа ”<<
b

<< “ равна “ <<
z


endl
;

}

Задание

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

и на
языке программирования, отладить программу на ПК.

Написать
тест

Рис.
1.
2
.

Схема алгоритма


программы. Все результаты предъявить преподавателю.
Оформить отчет в
соответствии с методическими рекомендациями, представленными
во введении
данного издания.
Подготовить ответы на контр
ольные вопросы.

Технология выполнения работы

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


В

задаче под пунктом а) вычисляет арифметическое выраж
е
ние.

(Отладить программу, сохранить ее на диске.

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

Вставить в

программу строку переприсвоения значения функции

y

переменной

z
.

Выполнить

повторную

трассировку

программы

от

начала

и

до

строки,

где

используется
z
. Изменить значение
х

на 2.8, открыв окно изменения
значений

переменной. Продолжить трассировку до конца программы.

Выполнить тестирование задачи, используя
Excel
.
)
;


В

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

(
Выполнить тестирование задачи, используя
Excel
.
)
;


В

задаче под пунктом в) использует целочисленную арифметику.

(
Выполнить тестирование задачи, используя
Excel
.
)
.

Варианты исходных данных к лабораторной работе № 1

Номер
варианта

Задачи

1.

а)

.

б)
С
опротивление электрической цепи. Пересчитать формулу из Ом в кОм.
Выдать все результаты на экран
.

в)
Д
ано трехзначное число. Найти число, полученное при прочтении его цифр
справа налево

2.

а
)
.

б)
В
ычислить объем цилиндра. Выдать результат на экран
.

в)
Д
ано натуральное число
n

(
n

> 9). Найти число единиц в нем

3.

а)

.

б)
С

начала суток прошло
n

секунд. Определить, сколько полных секунд прошло
с начала очередной минуты
.

в)
Д
ано трехзначное число. Найти сумму его крайних цифр

4.

а)

.

б)
Д
ано вещественное число
а
. Пользуясь только операцией умножения,
получить
а
5

и
а
13

за пять операций
.

в)
Д
ано четырехзначное число. Найти произведение и сумму второй и

последней
цифр заданного числа

5.

а)
.


Номер
варианта

Задачи

б)
В
ычислить объем конуса. Выдать результат на экран
.

в)
Д
аны два целых числа. Разделить каждое число на целое число
d
. Найти
произведение их остатков от деления

6.

а)
.

б)
Д
ан прямоугольник с размерами 543

×

130 мм. Сколько квадратов со стороной
130 мм можно отрезать от него?


в)
Д
аны два целых числа. Переменой
d

присвоить результат деления первого
числа на второе число, а переменой
f

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

7.

а)

.

б)
В
ычислить объем полого цилиндра. Выдать результат на экран
.

в)
Д
ано четырехзначное число. Найти сумму и произведение его цифр

8.

а)

.

б)
В
ычислите площадь поверхности и объем цилиндра
.

в)
Д
ано натуральное число

n

(
n

> 99). Найти число десятков в нем

9.

а)

.

б)
В
ычислить площадь трапеции. Выдать результат на экран.

в)
Д
аны два целых числа. Разделить каждое число на целое число
d
. Найти сумму
их целой части от деления

10.

а)
.

б)
Д
ано вещественное число
а
. Пользуясь только операцией умножения,
получить
а
4
,
а
12

и
а
28

за шесть операций
.

в)
Д
ано
трехзначное число. Найти число, полученное при перестановке первой и
последней цифр заданного числа

11.

а)

.

б)
С

некоторого момента прошло 234 дня. Сколько полных недель прошло за
этот период
.

в
) Дано четырехзначное число. Найти

сумму и произведение второй

и третьей
цифр заданного числа

12.

а)
.

б)
О
пределить силу притяжения между телами массы

m
1 и
m
2, находящимися на
расстоянии

r

друг от друга
.

в)
Д
ано трехзначное число. Найти число, полученное при
перестановке первой и
второй цифр заданного числа

Вопросы для защиты работы

1.

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

2.

Что понимают под вычислительным алгоритмом?


3.

Какие требования предъявляются к алгоритмам?

4.

В чем суть основных этапов подготовки и
компьютерного решения
задач?

5.

Общие правила построения программ.

6.

Как получают исполняемую программу?

7.

Какие операции можно выполнять над величинами целого типа?
Укажите приоритет их выполнения при расчете значения арифметического
выражения.

8.

Как определить ос
таток от деления одной величины целого типа на
другую?

9.

Как оформляется оператор вывода результатов на экран? Что можно
указывать в качестве элементов списка вывода? Какой символ используется для
разделения элементов списка вывода? Как должен быть оформлен
оператор
вывода, чтобы информация выводилась на экран с новой строки?

10.

Как оформляется оператор ввода? Что можно указывать в качестве
элементов списка ввода? Как работает оператор ввода (что происходит при его
выполнении)?

11.

Почему перед оператором ввода в пр
ограмме целесообразно записывать
оператор вывода?

12.

Как оформляется оператор присваивания? Как он работает (что
происходит при его выполнении)?

13.

Как проверить, правильно ли работает программа, в которой
проводятся какие
-
то вычисления?


Л
АБОРАТОРНАЯ РАБОТА
№ 2
. РАЗВЕТВЛЯЮЩИЕСЯ АЛ
ГОРИТМЫ.
УСЛОВНЫЕ ОПЕРАТОРЫ

Время выполнения


4 часа.

Цель работы
: научиться пользоваться условными операторами и
офор
млять разветвляющиеся схемы алгоритма.

Задачи лабораторной работы

1.

Изучить правила написания
текста программы как на формальном
языке (псевдокоде), так и на языке программирования
.

2.

Сформировать умение по схеме алгоритма написать текст программы,
и, наоборот, по тексту

программы составить схему ее алгоритма
.

3.

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

4.

Сформировать умение проводить тестирование программы, используя
известные ему приложения (например,

Ex
cel

или
MathCAD
).


Перечень обеспечивающих средств

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

С
++ и
Pascal
.

Общие теоретические сведения

Разветвляющимся является алгоритм, если
последовательность
выполнения

шагов

решения задачи изменяется в зависимости от некоторых
условий.

Условие


это логическое выражение, принимающее одно из двух
значений, которое может содержать логические операции и знаки отношений
(табл. 1.3): ©Да»


если
условие верно, и ©Нет»


если

условие неверно.

На рис. 2.1 изображены структурные схемы разветвляющихся алгоритмов.



а
)









б
)

Рис. 2.1
.
Схемы разветвляющихся алгоритмов:

а
) укороченной формы;
б
) полной формы

Разветвляющиеся алгоритмы оформляются

операторами полной или
укороченной формы (табл. 2.1).
В условном операторе

выполняется всегда
одна
из веток (©Да» при истинном условии или
©Нет»
, если оно ложно),

и никогда
не выполняются обе вме
сте.


Таблица 2.1
.
Формы записи операторов условного перехода

Формы

Для
С

Для
Pascal

краткая

if

(условие) {

операторыДа

}

if

условие

then

begin

операторыДа

end
;

полная

if

(условие) {

операторыДа

}

else

{ операторыНет}

if

условие

then

begin

операторыДа

end

else

begin

операторыНет

end
;

К условным операторам
относится оператор выбора, или оператор

переключатель (табл. 2.2
)
, который замечателен тем, что может заменить
вложенные операторы условия.

Таблица 2.2
.
Оператор выбора (или оператор

переключатель)

Для
С

Для
Pascal

switch

выражение

{

case

значение1:

{
операторы}



case

значение
N
:

{ операторы}

default

{ операторы}

}

case

выражение

of

значение1:

begin

операторы
end
;



значение
N
:

begin

операторы

end
;

else

begin

операторы

end
;

end;

Выражение



это
целочисленная или строковая

переменная,

значение
которой определяет ветвь. Каждая ветвь, определяемая
case
, может
заканчиваться оператором прерывания
break
. Можно объединять ветви, через
список значений, перечисляемые через запятую (или в
Pascal



в виде
интервала через две точки).
Например:

для
С

для
Pascal

switch

(
f

+
k
) {

case

0 : {
k

++;
break
;}

case

3, 8 : {
f

;
k

;
break
;}

case

9
:

case 11

: { d = ++ f; break;}

default

d = f;

}

case

as

of

0

: begin a = b + c; break; end;

3, 8

: begin a = b c; k = m / v; break; end;

9 .. 11: begin a = b* c; break; end;

else

a = b / c;

end;

Пример 2.1. Дано целое число
a
. Узнать, четное ли оно.

Текстуальная форма алгоритма задачи:

1)

В
вести

число
а
с клавиатуры в ЭВМ;

2)

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

на 2; если остаток равен нулю, то число


четное;

3)

В
ыдать на экран дисплея ©Введенное число четное»: если

число
а

четное, или выдать ©Введен
ное число нечетное»,

если число
а

нечетное
.



На рис. 2.2 представлена схема алгоритма этой задачи. Ниже описаны
программы на языках Псевдокод,

С

и
Pascal
.

Псевдокод алгоритма

алг

Поиск четного числа

нач цел
а

вывод

“Введите целое число а: ”

ввод

а

если

(
a

mod

2

=
0
)

то вывод

“ Число”, а, “ четное”

иначе выво
д “ Число”, а, “ нечетное”

кон

Программа на языке
C

#
include


iostream
.
h



#include math&#x 4m1;zt-;h-3;&#x.h 0;.h

main()

{
int

a
;

cout



” Введите целое число а: ”;

cin� �
а
;

if

(
a

% 2 == 0 )


cout

<<”
Число
” <<
a

<<”
четное
”<<
endl
;

else


cout
<<”
Число
”<<
a
<<”
нечетное
”<<
endl
;

}

Программа

на

языке

Pascal

Program

Sos
;

var

а

:
integer
;

begin

write

(' Введите целое число а:

');

readln (
а
);


Рис. 2.2.

Схема алгоритма


if

( a mod 2 =
0)

then

writeln

( „
Число

„,
а
, „
четное

„ )

else

writeln

( „Число „, а, „ нечетное „)

end
.

Пример 2.2. Найти значение функции
y
, за
данной графически.


Для решения подобных задач
необходимо, в первую очередь, найти уравнения всех прямых (и кривых)
данного графика. Например, даны графики функций (рис. 2.3), ограничиваемые
по оси
x

интервалами:

прямой


[

1; 0], параболой


[0;+∞], а на остальном
участке
y

= 0. Уравнение прямой можно найти,
например, по известной формуле
у =
kx

+
b
.

Подставляя в это уравнение координаты каждой точки прямой
(находящиеся на осях) и решая систему
уравнений, получим

уравнение

прямой,
заданной на графике

у =


х


1
.
На
рис
. 2.4 представлена схема алгоритма этой
задачи. Ниже описаны программы на языках
С
,
Pascal

и Псевдокод.

Программа на языке
C

#
include


iostream
.
h



#
include


math
.
h



main
()

{
float

x
,
y
;

cout



” Введите координату
x
:”;

cin

��
x
;

if

(
x�

1 && x 0 )

y =

x


l;


else

if

( x� = 0)

y = sqrt (x);

else

y = 0;

cout << ”y=” << y<
}

Программа

на

языке

Pascal

Program a_2a;



var x,
у

: real;


Рис. 2.3. Графики функций


Рис. 2.4. Схема разветвляющегося
алгоритма


begin

write

('
Введите

координату

x

: ');

readln (x);

if

(
х



1) and (x 0)

then

y :=

x


l;

else if

( x� = 0)

then

y := sqrt (x)

else y := 0;

writeln ( „ y= „, y)

end
.

Псевдокод алгоритма

алг

Работа с условиями

нач вещ
x
,
y

вывод
“Введите координату
x
: ”

ввод

x

если

(
x




1) и

(
x

0)


то

y

=


x



1


иначе


если

x



0



то

y

=
x
^(1/2)


иначе

y

= 0


всѐ


всѐ


вывод


y

= ”,
y

кон

Пример 2.3. Узнать, принадлежит ли точка с координатами (
x
,
y
) указанной
области (рис. 2.5).

Для решения подобных задач

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

Например, пусть дана область (рис.
2.5).

Разбиваем е
е

на две подобласти (
I

и
II
).
Для каждой составляем ограничения, сведя
их в высказывания (
А

и
В
):

А

= {0 ≤

х




2

0 ≤

у



2

у



2


х
}



для
I

области;

В

= {

1 ≤

х



1

0 ≤

у



2

+

1}



для
II

области;


Рис. 2.5. Область


F
(
A
,
B
) = (
A


B
) = {(0 ≤

х


2

0 ≤

у


2

у


2


х
)
(

1 ≤

х
≤ 1

0 ≤


у


2
+

1)}.

На рис.
2.6

представлена схема алгоритма этой задачи. Ниже описаны
программы на языках
C
,
Pascal

и Псевдокод.

Программа на
С

#
include


iostream
.
h



#include math&#x 4m1;zt-;h-3;&#x.h 0;.h

main()

{ float x, y;


cout

<< ”
Введите

координаты

x

и

y
”;



cin

��
x

��
y
;


if

( (
x

�=
0

&&
x
<= 2 && у >=
0
&& у <= 2 &&
y

=

2


x
)



(х >=

1

&&

x

= 1 &&

у >=
0
&& у <= 2 &&
y
=

(
sqrt

(1


x
*
x
)

+
1))


cout

<< “ Точка находится в области “;


else

cout



“ Точка вне области “;

}


Рис. 2.6. Схема алгоритма

Программа

на

Pascal

Program a_2b;

var

x
,
у

:
real
;

begin


write

('Введите координаты
x

и у :

');


readln (x,
у
);



if

( (
х

�=
0
) and (x = 2) and (
у

�=
0
) and

(
у

= 2) and

(y = 2


x) ) or




( (
х

�=

1
) and (x = 1) and (
у

�=
0
) and

(
у

= 2) and

(y
= (sqrt (1


x*x)

+
1) )

then

writeln

( ' Точка находится в области ')

else

writeln

( ' Точка вне области ');

end
.

Псевдокод алгоритма

алг

Работа с условиями

нач вещ

x
,
y


вывод

“Введите координаты
x

и у”


ввод

x
,
у


если

(
x


0

и

x


2 и
у

0
и

у



2 и
y



2


x
)

и
ли



(
х



1

и

x



1 и

у

0

и

у



2

и

+1 )


то

вывод

“Точка находится в области ”


иначе вывод

“Точка вне области ”




всѐ

кон

Задание

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

Написать
тест
программы по
всем ветвям.

Все результаты представить преподавателю.

Оформить отчет в
соответствии с требованиями, пр
едставленными во введении данного издания.
Подготовить ответы на контрольные вопросы.

Технология выполнения работы

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


В

задаче под пунктом а) определяет, принадлежит ли точка с
координатами (
x
,
y
) области
F
, ограниченной линиями.

1.

Нарисовать графики функций.

2.

Составить математическую формулировку задачи в виде высказываний,
состоящих из ограничивающих
область линий.

3.

По математической формулировке оформит схему

алгорит
ма.

4.

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


Выполнить тестирование задачи, используя
Excel
.
);


В

задаче под пунктом б) использует оператор варианта (выбора).

(Выполнить

простое тестирование задачи.);


В

задаче под пунктом б) использует сложные условия и вложенные
условные операторы
.

(Выполнить простое

тестирование задачи
.
).


Варианты исходных данных к работе № 2

Номер
варианта

Задачи

1

а)
F
(
x
,
y
) =


б) С начала 1990 года по некоторый день прошло
n

месяцев и 2 дня. Определить
название месяца (январь, февраль и т.

п.) этого дня.

в) Определить, верно ли, что при делении неотрицательного целого числа
а

на
положительное число
b

получается остаток, равный одному из двух заданных
чисел
c

или
d

2

а)
F
(
x
,
y
) =


б) Мастям игральных карт условно присвоены следующие порядковые номера:
масти ©пики»


1, масти ©трефы»


2, масти ©бубны»


3, масти ©черви»


4. По
заданному номеру масти
m

(1 ≤


m



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

в) Дано натуральное четы
рехзначное число
n
. Выяснить, различны ли все четыре
цифры этого числа. Например, в числе 3

678 все цифры различны, в числе 0230


нет

3

а)
F
(
x
,
y
) =


б) Дано целое число
k

(1 ≤


k



365). Определить, каким днем недели
(понедельником, вторником, …, воскресеньем) является
k
й день невисокосного
года, в котором 1 января
d
й день недели (если 1 января


понедельник, то
d

= 1,
если вторник


d

= 2, …).

в) Имеется стол прямоугольной формы с р
азмерами
a

×

b

(
a

и
b



целые числа,
a


b
) и кости домино с размерами
c

×

d

×

e

(
c
,
d

и
e



целые числа,
c


d


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

4

а)
F
(
x
,
y
) =

б) Составить программу, которая в зависимости от порядкового номера месяца (1,
2, …, 12) выводит на экран

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

в
) Дано целое число
k

(1 ≤
k

≤ 365). Определить, каким будет
k
й день года: выходным
(суббота и воскресенье) или рабочим, если 1 января


пон
едельник

5

а)
F
(
x
,
y
) =

б) Игральным картам условно присвоены следующие порядковые номера
в
зависимости от их достоинства: ©валету»


11, ©даме»


12, ©королю»


13
, ©тузу»


14. Порядковые номера остальных карт соответствуют их названиям (©шестерка»,

Номер
варианта

Задачи

©девятка» и т.

п.). По заданному номеру карты
k

(6



k



14) определить
достоинство соответствующей карты.

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


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

6

а)
F
(
x
,
y
) =

б) Составить программу, которая в зависимости от порядкового номера дня
недели (1, 2, …, 7) выводит на экран его название (понедельник, вторник, …,
воскресенье).

в) Даны вещественные положительные числа
a
,

b
,

c
,
d
. Выяснить, можно ли
прямоугол
ьник со сторонами
a
,

b

уместить внутри прямоугольника со сторонами

c

и

d

так, чтобы каждая из сторон была параллельна или перпендикулярна каждой

стороне второго прямоугольника

7

а)
F
(
x
,
y
) =

б) Дата некоторого дня характеризуется тремя натуральными числами:
g

(год),
m

(порядковый номер месяца) и
n

(число). По заданным
g
,

n

и
m

определить дату
следующего дня, если год не является високосным.

в) Вывести на экран номер четверти координатной плоск
ости, которой
принадлежит точка с координатами (
x
,

y
), при условии, что
x



0 и
y



0

8

а)
F
(
x
,
y
) =

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


желтый, в течение двух минут


красный, в течение
трех минут


опять зеленый и т.

д. Дано вещественное число

t
, означающее время
в минутах, прошедшее с начала очередного часа. Определить, сигнал какого цвета
г
орит для водителей в этот момент.

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


вторым.

Определить, принадлежат ли все точки одного

из
прямоугольников

другому

9

а)
F
(
x
,
y
) =

б) Составить программу, которая в зависимости от порядкового номера месяца (1,

Номер
варианта

Задачи

2, …, 12) выводит на экран время года, к которому относится этот ме
сяц.

в) Даны вещественные положительные числа
a
,

b
,

c
,

x
,

y
. Выяснить, пройдет ли
кирпич с ребрами
a
,

b
,

c

в прямоугольное отверстие со сторонами

x

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

10

а)


б) Дата некоторого дня характеризуется тремя натуральными числами:
g

(год),
m

(порядковый номер месяца) и
n

(число). По заданным
g
,

n

и
m

определить дату
предыдущего дня, если год

является високосным.

в) Дано четырехзначное число. Определить, входят ли в него цифры 3, 6 или 9

11

а)


б) В старояпонском календаре был принят 60летний цикл, состоящий из пяти
12летних подциклов. Подциклы обозначались названиям
и цвета: зеленый,
красный, желтый, белый и черный. Внутри каждого подцикла года носили
названия животных: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца,
обезьяна, курица, собака и свинья. Например, 1984 год


год начала очередного
цикла


назывался

годом зеленой крысы. Составить программу, которая по
заданному номеру года нашей эры
n

печатает его название по старояпонскому
календарю.

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


вторым. Определить, пересекаются ли эти прямоугольники

12

а)


б) Составить программу, которая в зависимости от порядкового номера
месяца (1,
2, …, 12) выводит на экран количество дней в этом месяце при условии, что год
не является високосным (информация об этом вводится с клавиатуры).

в) Дано четырехзначное натуральное число
n
. Выяснить, является ли оно
палиндромом (©перевертышем»),
как, например, числа 7777, 8338, 0330 и т.

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

Вопросы для защиты работы

1.

Что такое простое условие? Какие используются операции отношения?

2.

Что являе
тся результатом выполнения операции отношения?

3.

Что такое составное условие? Какие логические операции
используются в нем? Каков приоритет их выполнения и можно ли их изменить?


4.

В логическом выражении (составном условии) используются три
величины логического

типа (три простых условия):
А
,
В
и
С
. Сколько возможно
различных вариантов сочетаний значений
А
,
В
и
С
?

5.

Как работает оператор выбора? Какой тип может принимать
контрольное выражение? Почему?


ЛАБОРАТОРНАЯ РАБОТА
№ 3
. ЦИКЛИЧЕСКИЕ
АЛГОРИТМЫ.
ОПЕРАТОРЫ ЦИКЛА

Время выполнения


4 часа.

Цель работ
ы: научиться составлять программы, используя операторы
цикла. Научиться оформлять циклические схемы алгоритма.

Задачи лабораторной работы

1.

Изучить правила написания текста программы как на
формальном
языке (псевдокоде), так и на языке программирования; правила использования
операторов условия и циклов; назначение и работу каждого оператора в
программе;

2.

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


Перечень обеспечивающих средств

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

С
++ и
Pascal
.

Общие

теоретические сведения

Циклическим является алгоритм, если определенная последовательность
шагов выполняется некоторое целое число раз. На рис. 3.1 изображены
циклические алгоритмы.


Рис. 3.1. Циклические алгоритмы:

а
) цикл с преду
словием;
б
) цикл с постусловием;
в
) цикл с параметром

У каждого из операторов цикла имеются особенности в их использовании
(табл. 3.1): условные циклы выполняются пока условие истинно (в
Pascal



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

Таблица 3.1
.
Операторы циклов


Для
С

Для
Pascal

Условные
циклы

while

(
условие
)



{

операторы
}

while
условие

do


begin

операторы

end
;

do


{

операторы
}

repeat


begin
операторы

end


while

(
условие
)


until
условие
;


С
пара
мет
ром

for

(
переменная

=
нач_знач;

переменная

=
кон знач; шаг)


{ операторы }

for

переменная

=
нач_знач
to

кон_ знач

do



begin

операторы
end
;

Пример 3.1.
Вычислить функциональный ряд с известным количеством
элементов.

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

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


В данном примере это знакопеременный ряд, значения элементов
ряда
которого вычисляются в цикле (где
n



порядковый номер элемента ряда).

Схема алгоритма задачи представлена на рис. 3.2. Ниже даны программы
на языках
С
,
Pascal

и Псевдокод.


Рис. 3.2. Схема циклического алгоритма


Программа на
C

#include iostreami4;&#xo-3s;t-3;&#xream;.h;.h

#include
math.h�

main ()

{ float x, s; int n;


cout

<< ” Введите значение
x

:” ;
cin

��
x
;


if (
х

� 0)
s = cos (x) / sin (x);

else {
s = 0;


for ( n = 2; n =10; n ++)

s = s+((pow (

1, n) * n) / ((n*n1)))*sin (n*x);


}

cout << ”s =” << s

endl;

}

Программа

на

Pascal

Program a
_3
a
;

var x
,
s

:
real
;
n
:
integer
;

begin

write

( „Введите значение
x
‟ );

readln

(
x
);

if

x

� 0
then

s

:=
cos

(
x
) /
sin
(
x
)


else


begin s

:= 0;



for n
:= 2
to

10
do

s
:=
s
+((
exp
(
n
*
ln
(
abs
(1)))*
n
/((
n
*
n
)))*
sin
(
n
*
x
);


end
;

writeln

(„
Результат

= ‟,
s
);

end
.

Псевдокод алгоритма

алг Работа с циклами

нач вещ
x
,
s


цел
n

вывод “Введите значение
x


ввод
x

если
x

� 0


то

s

=
ctg

(
x
)


иначе

s

= 0


нц для
n

= 2 до 10




кц

все

вывод “
S

= ”,
s

кон


Пример 3.2. Вычислить функциональный ряд с неопределенным
количеством элементов.


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

меньше величины
e
.

Если же в выражении имеется факториал (
n
!), то его необходимо
вычислять в цикле до основного вычисления элемента.

Например, найти сумму ряда:
.

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

С

и

Pascal
.

Псевдокод алгоритма

алг Работа с условными циклами

нач вещ
y
,
s
,
e


цел

n
,
k
,
f


нц
f

= 1


нц для
k

= 1 до
n




f

=
f

*
k


кц


y

=

n

/
f



s

=
s

+
y


n

=
n

+ 1


пока
y


e


кц


вывод “Результат = ”,
s

кон

Программа на языке
С

#
include


iostream
.
h


#include math.h


main ()

{ float y, s = 0.0, e = 0.05; int n =1, k;
longint f;


do { f = 1;


for ( k = 1; n = n; n ++) f = f * k;


y

=
n

/
f
;


s

=
s

+
y
;


n

++:


}


while

(
y


e
); // Цикл выполн
яется
пока условие истинно


cout

<< ”Результат = ” <<
s


endl
;


}




Рис. 3.3. Схема алгоритма


Программа

на

языке

Pascal

Program

a
_3
b
;

Var y, s, e

:
real
;
n, k
:
integer
;

f

:
longint
;

begin

s

:= 0.0;
n

:= 1;
e

= 0.05;

Repeat


begin f
:
=
1
;



for k
:= 1
to

n

do f

:=
f * k
;


y
:

=
n
/

f
;


s

:=
s
+
y
;



n

:=
n
+ 1;


end;

Until

y


e
; {
Цикл выполняется пока условие ложно
}

writeln

(„
Результат

= ‟,
s
);

end
.

Задание

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

Технология выполнения работы

Для каждой задачи нарисовать в тетради картинку, поясняющую логику
решения задачи, написать м
атематическую формулировку и составить
алгоритм. Показать преподавателю. Написать программу, которая:


В

задаче под пунктом а) в зависимости от введенного вещественного
числа
x

вычисляет или сумму пяти элементов ряда, или данное арифметическое
выражение.


сходные данные для задачи вводить вещественного типа с клавиатуры.
Результаты вычислений вывести на экран монитора. Выполнить задачу в
Excel

(или в
MathCad
).);


В

задаче под пунктом б) находит сумму первых
N

членов ряда с
точность
ю до

(т.е. пока величина
очередного вычисленного члена ряда не
станет меньше
, где

> 0). Число

программа должна запрашивать

у
пользователя. Найти количество элементов в ряду.

(Число

вводить вещественного типа с клавиатуры. Результаты
вычислений вывести на экран монитора. Вы
полнить задачу в
Excel

(или в
MathCad
));


В

задаче под пунктом в) использует вложенные циклы.

(
Исходные

данные для задачи вводить целого типа с клавиатуры.
Результаты вычислений вывести на экран монитора. Выполнить задачу в
MathCad
)
.


Варианты исходных
данных к работе № 3

Номер

варианта

Задачи

1

а)

, если 0,0 <
x

< 5,0, иначе
s

=
x
5
.

б)
.

в) Найти натуральное число из интервала от
a

до
b
, у которого количество
делителей максимально

2

а)
, если

1,0 ≤

x



1,0, иначе
s

=
x
4
.

б)
.

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

и повторять этот процесс пока в результате будет получено
однозначное число (цифра), которая и называется цифровым корнем

3

а)

, если

2,0
x



1,0, иначе
s

=
x
3
.

б)
.

в) Дано натуральное число
n
.
Напечатать разложение этого числа на простые
множители

4

а)

, если

2,5
x



1,0, иначе
s

=
x
2
.

б)

.

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

5

а)

, если 5,0 ≤

x



10,0, иначе
s

=
x
3
.

б)

.

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

и стороны которых выражены натуральными числами

6

а)

, если

2,0 ≤

x



1,0, иначе
s

=
x
4
.


Номер

варианта

Задачи

б)

.

в) Найти все совершенные числа, меньшие 100

000 (натуральное число
называется совершенным, если оно равно сумме своих делителей, включая 1
и
исключая это самое число). Например, число 6 совершенное (6 = 1 + 2 + 3)

7

а)
, если

2
,0
x



1,0, иначе
s

=
x
5
.

б)

.

в) Найти все пары натуральных дружественных чисел, меньших 50

000 (два
натуральных числа называются дружественными, если каждое из них равно
сумме всех делителей другого; само другое число в
качестве делителя не
рассматривается)

8

а)
, если

1,0 ≤

x



1,
5,
иначе
s

=
x
3
.

б)

.

в) Составить программу для нахождения всех натуральных решений уравнения
, где
х
,
у

и
k

лежат в интервале от 1 до 30

9

а)

, если

2,5 ≤

x

< 2,5, иначе
s

=
x
2
.

б)

.

в) Дано натуральное число
n

(
n




27). Найти все трехзначные числа, сумма цифр
которых равна
n

10

а)
, если 0,0 ≤


x




1,0, иначе
s

=
x
5
.

б)

.

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

11

а)
, если

2,0
x



0,0, иначе
s

=
x
4
.

б)

.

в) Дано натуральное число
n
. Получить все натуральные числа, меньшие
n

и

Номер

варианта

Задачи

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

1)

12

а)
, если

1,0 ≤

x




1,0, иначе
s

=
x
2
.

б)

.

в) Напечатать в возрастающем порядке все трехзначные числа, в десятичной
записи которых нет одинаковых цифр

Вопросы для защиты работы

1.

В каких
случаях используется оператор цикла с параметром? Как он
оформляется? Как он работает (что происходит при его выполнении)?
Нарисуйте графическую схему выполнения.

2.

Что такое ©тело оператора цикла»? Может ли тело оператора цикла с
параметром не выполниться н
и разу?

3.

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

4.

Чему равно кол
ичество повторений тела оператора цикла с параметром,

если параметр цикла принимает:

а)

В
се целые значение от 1 до 10?

б)

В
се нечетные значения от 1 до 30?

в)

В
се значения от 10 до 100 с шагом 7?

г)

В
се значе
ния от 1,5 до 10,3 с шагом 0,4?


5.

Можно ли в теле цикла с
параметром не использовать величину


параметр цикла? Почему?

6.

В каких случаях используются операторы цикла с условием?

7.

В каких случаях используется оператор цикла с предусловием? Как он
оформляется? Как он работает (что происходит при его выполнении)?
Нари
суйте графическую схему выполнения.

8.

В каких случаях используется оператор цикла с постусловием? Как он
оформляется? Как он работает (что происходит при его выполнении)?
Нарисуйте графическую схему выполнения.

9.

Может ли тело оператора цикла с условием не вып
олниться ни разу? А
может выполняться бесконечное число раз (или до тех пор, когда пользователь
прервет его выполнение)?

10.

Всегда ли можно вместо оператора цикла с параметром использовать
оператор цикла с условием? А наоборот?


11.

Какие вы знаете операторы для п
ринудительного (преждевременного)
выхода из оператора цикла? Можно ли вместо такой конструкции использовать
оператор цикла с постусловием? А оператор цикла с предусловием?

Дан фрагмент программы на псевдокоде:

нц для
а

от 1

до 10

вывод
а

если
а

= 10

то
а

:=
а



1

всѐ

кц

12.

Чему равна величина переменной
a

после выполнения программы?


ЛАБОРАТОРНАЯ РАБОТА
№ 4
. ОБРАБОТКА МАССИВОВ

ДАННЫХ

Время выполнения


4 часа.

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

Задачи лабораторной работы

1.

Изучить правила написания текста программы как на формальном
языке (псевдокоде), так и на языке программирования; правила использования
операторов цикла; наз
начение и работу каждого оператора в программе;

2.

Научиться по схеме алгоритма писать текст программы, и наоборот


по
тексту программы составлять схему ее алгоритма; объявлять массивы и
определять элементы массивов; проводить тестирование программы.


Перечень обеспечивающих средств

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

С
++ и
Pascal
.

Общие

теоретические сведения

Массив


это упорядоченная совокупность элементов одного типа, кот
орые
адресуются с помощью индекса. Доступ к элементу массива осуществляется по
его порядковому номеру (индексу). Индексная переменная должна иметь целый
тип. Нумерация элементов массивов в языке
С
++ начинается с нуля, а в языке
Pascal



с единицы.

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

Массив называется
двухмерным,

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


номер столбца элемента в массиве. Обработка таких
массивов ведется с использова
нием вложенных циклов. Двухмерные массивы
называют еще матрицами.

Для объявления массива необходимо указать тип элементов, имя массива и
количество элементов в нем (табл. 4.1).

Таблица 4.1
.
Объявлени
е массивов

Массив

Для
С

Для
Pascal

О
дномерные

тип_данных

имя_массива [количество_
элементов];

Например,

float a

[10];


Var

имя_массива :

array

[нач.индекс

..
кон.индекс]
of

тип_данных;

Например
,

var

a

:

array
[1..10]
of real
;

Д
вухмерные

тип_данных имя_массива
[количество_строк][количество_столбцов];

Например,

float

b
[
5
]
[5]
;

Var

имя_массива :

array

[нач.индекс

..
кон.индекс_строки,
[нач.индекс
..
кон.индекс_столбца]

of



тип_данных;

Например
,

var

b
:
array
[1.. 5, 1..5]
of real
;

Пример 4.1. Найти наименьший элемент одномерного массива
Y
,
состоящего из
n

элементов, и выдать его порядковый номер. Схема алгоритма
(рис.
4.1
) и программы на языках
C

,
Pascal

и Псевдокод этой задачи
представлены ниже.

Программа

на

языке

С

#include iostreami4;&#xo-3s;t-3;&#xream;.h;.h #include math.h&#xm19a;&#xt-3h;&#x-3.h;怀

main()

{ int Y [100], n, i, min, b;

cout

” Сколько элементов в массиве?”;
cin
��
n
;

cout
<<” Введите числа через пробел”<<
endl
;

for ( i = 0; i n; i ++ ) cin&#x 4n4;&#x;-3 ;&#xi +9;&#x+ 4;&#x cin;&#x-6 0;&#x 4n4;&#x;-3 ;&#xi +9;&#x+ 4;&#x cin;&#x-6 0;

Y [i]
;

min = Y [0]; b = 0;

for ( i = 1; i n; i ++ )

if (
Y [i] min) {

min = Y [i];
b = i; }

cout

<<” Минимальное число = ”<<
min


endl

;


cout

<<” Его порядковый номер = ”<<
b


endl
;

}



Рис. 4.1. Схема алгоритма

Программа

на

языке

Pascal

Program a
_4;

var
Y

:
array

[1..100]
of integer
;


n
,

i
,
min
,
b

:
integer
;

begin

write

( 'Сколько элементов в
массиве? ' );


readln

(
n

);


writeln

( „Введите числа через
пробел' );

for i

:= 1
to n do read

(
Y
[
i
] );

min

:=
Y
[l];

b

:=
1;

for i
:= 2
to n

do


begin


if Y
[
i
]
min

then


begin min
:=
Y
[
i
];
b

:=

i
end


end
;


writeln

(' Минимальное число =',
min
);


writeln

(„ Его порядковый номер
=‟,
b
);


end
.

Псевдокод алгоритма

алг Работа с массивами

нач цел
Y
[100],
n
,

i
,
min
,

b


вывод “Сколько элементов в массиве?”


ввод
n


вывод “Введите числа через
пробел ”


нц для

i

= 1 до
n




ввод
Y
[
i
]


кц



min

=
Y
[1] {
запоминание величины первого элемента}


b

= 1


{
запоминание номера первого элемента}


нц для

i

= 2 до
n




если
Y
[
i
]
min




то
min

=
Y
[
i
] {
запоминание величины текущего
элемента}




b

=

i

{
запоминание номера текущего элемента}



все




кц



вывод “Минимальное число = ”,
min



вывод “Его порядковый номер = ”,
b


кон

Пример 4.2. Проверить, отсортирован ли массив по возрастанию.

Текстуальный алгоритм задачи:

1)

З
аполнить массив числами;

2)

У
становить флаг (счетчик), равный единице;

3)

В

цикле пров
ерить величин
у

текущего элемента с величиной
последующего;

4)

Е
сли она больше предыдущего, то флаг меняет свое значение на 0;

5)

П
роверить флаг на истинность: если он равен 1, то последовательность
неубывающая.


Программа на языке
С

#
include


stdio
.
h


#include
conio.hÈo4;&#xn-3i;o-3;&#x.11h;&#x-300;

#define KOL 10

main ()

{ int D [KOL], n, ok;


printf

(” Введите числа через пробел и нажмите <
Enter

\
n
” );


for (n = 0; n < KOL; n++ ) scanf (“%i”, &D[n]);


n

= 0;

// управляющая переменная цикла (индекс элемента)




ok

= 1;

// 1



последовательность неубывающая




do

{
if

(
D
[
n
]�
D
[
n
+1])
ok

= 0;


n++
; }



while (n KOL


1 && ok) ;


printf

(” Элементы массива ” );





if

(!
ok
)
printf

(” не упорядочены
\
n

” );
printf

(” упорядочены по
возрастанию
\
n

” );





printf

(”
\
n

Для

завершения нажмите

Enter


” );




}

Пример 4.3. Вычислить длину введенной с клавиатуры строки.

При обработке символьных массивов необходимо помнить, что каждому
символу соответствует число


ко
д символа. В программировании строка


это
массив символов. Последним символом строки обязательно должен быть нуль
-
символ, код которого равен 0, и который в тексте программы изображается как
©/0», поэтому длина строки увеличится на единицу. Вводимая во вре
мя работы
программы строка заканчиваться нажатием клавиши <
Enter
> (ее код


13). Для
обработки символьных массивов удобно использовать ус
ловные циклы.

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

1)

В
в
ести строку с клавиатуры;


2)

В

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

3)

В
ывести количество с
имволов и весь массив на экран.


Псевдокод алгоритма

алг Работа с символьным массивом

нач симв
S
[80]


цел
i


вывод “Введи строку”


ввод
S


i

= 0


нц пока (
НЕ КОНЕЦ СТРОКИ
)


i

=
i

+ 1


кц



вывод “Введенная строка: ”,
S


вывод “Количество символов в строке
= ”,
i


кон

Программа на языке С

#
include


stdio
.
h


#include conio.hఐo;n-3;&#xi4o-;.11;&#xh-30;

main ()

{ char S [80];

//
введенная

строка


int

i

= 0;


// длина строки


puts

( “
\
n

Введи строку символов и нажми клавишу <
Enter
�:
\
n
“ );



(
st

);


while

(
st

[
i
++] ) ;

// цикл выполняется, пока не закончатся все символы
в строке


printf

( “ Введенная строка: %
s

\
n
”,
s

);


printf

( “ Количество символов в строке = %
d

\
n
”,
i

); }

Программа

на

языке

Pascal

Program prim
9;

var
st

:
char
;

i
:
byte
;

begin

writeln

( ' Введи строку символов и нажми клавишу <
Enter
�: ' );


readln

(
st

);



i

:= 0
;




{
текущая

длина

строки
}


while

(

st
[
i
]

)
do inc
(
i
);


writeln

( '
Введенная

строка
: ',
st

);


writeln

( '
Длина

строки

= ',
i

);


end
.

Задание

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

преподавателю. Оформить отчет в соответствии с требованиями,
представленными во введении данного пособия. Подготовить ответы на
контрольные вопросы.

Технология выпол
нения работы

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


В

задаче под пунктом а)
обрабатывает числовой вектор.

(Исходные данные целого типа дл
я задачи вводить с клавиатуры.
Размерность одномерного массива
достаточно иметь 10 элементов.

Выполнить задачу в
MathCad
.)
;


В

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

(Исходные данные целого типа для задачи вводить с клавиатуры.
Размерность дв
умерного массива
достаточно иметь 16 элементов (4×4).

Выполнить задачу в
MathCad
.);


В

задаче под пунктом в) обрабатывает символьный массив.

(Исходные данные для задачи вводить с клавиатуры.)
.

Варианты исходных данных к работе № 4

Номер
варианта

Задачи

1

а)
Вычислить произведение тех элементов вектора
N
,
которые удовлетворяют
условию [
a
,
b
]
.
Найти их порядковые номера.

б) Найти суммы тех строк матрицы
M
, у которых на главной диагонали
отрицательный элемент.

в)
Переставить элементы строк массива в порядке

возрастания.

Найти количество
элементов в каждой строке

2

а)
Подсчитать количество положительных и количество отрицательных
элементов вектора
N
. Найти их порядковые номера.

б) Найти сумму всех тех элементов матрицы
M
, которые расположены в строках,
содержащих отрицательный элемент на главной диагонали.

в)
Найти количество максимальных элементов строк.

Найти количество
элементов в каждой строке и номер строки, содержащий максимальное
количество элементов

3

а) Найти количество наибольших и наименьших элементов вектора
N

и выдать их
порядковые номера.

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

в) Переставить в строках гласные и согл
асные элементы.

Найти количество
переставленных элементов в каждой строке

4

а)
Переменной
R

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

б) Найти суммы элементов тех столбцов матрицы
M
, у
которых первый элемент
(в первой строке
)

меньше 1.

в)
Переставить строки массива в алфавитном порядке.

Найти количество строк

5

а) У вектора
N

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

б) Найти
сумму всех элементов матрицы
M
, расположенных ниже главной
диагонали.


Номер
варианта

Задачи

в)
Выбрать все строки, содержащие гласные, расположив их элементы в
алфавитном порядке.

Найти количество таких элементов в каждой строке и
количество строк, участвующих в перестановке

6

а) Из вектора
N

получить новый вектор
Y

по правилу:
Y
i

=
N
i
, если
Y
i

� 0
и
Y
i

=
2
N
i
,

если
Y
i

< 0. Найти порядковые номера положительных элементов.

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

в)
Подсчитать количество гласных элементов в каждой строке и вывести его на
экран, если оно меньше 5, то добавить гласные после каждого согласного

7

а) Переставить элементы вектора
N
так, чтобы вначале располагались все
отрицательные элементы, а затем все по
ложительные элементы.

б)

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

в) Переставить элементы в каждой строке в обратном порядке.
Найти количество
элементов в каждой строке

8

а) Переставить
местами перв
ый встретившийся положительный
и первый
встретившийся отрицательный элементы вектора
N.
Найти их порядковые
номера.

б) Найти сумму всех элементов
матрицы
M
, расположенных выше главной
диагонали.

в) Подсчитать в каждой строке количество слов. Ес
ли оно меньше 5, то добавить
до 7 слов в начало строки. Вывести номера таких строк

9

а)

Переставить местами последний встретившийся отрицательный и первый
встретившийся положительный элементы вектора
N.
Найти их порядковые
номера.

б) Найти максимальный и минимальный элементы матрицы
М
среди
отрицательных элементов.

в)

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

10

а) Переставить элементы
вектора
N

по возраст
анию. Найти порядковые номера
переставленных элементов.

б)

Сосчитать количество нулевых элементов матрицы
М
в каждом столбце.

в) Выбрать в каждой строке слова, оканчивающиеся на букву ©е», и переставить
их в конец строки. Найти количество таких слов в
каждой строке

11

а)
Перес
тавить местами наибольший отрицательный и наибольший
положительный элементы вектора
N
. Найти их порядковые номера.

б) Все положительные элементы матрицы
M

умножить на квадрат наименьшего
из чисел, а все отрицательные


на квадрат
наибольшего.

в)
Выбрать все строки, содержащие согласные, расположив их элементы в
алфавитном порядке.

Найти номер и количество таких строк

12

а)

Первый и последний элементы вектора
N
поставить в середину вектора.
Найти их порядковые номера.

б) Найти прои
зведение элементов тех столбцов матрицы
М, у
которых последний
элемент (в последней строке) отрицательный.

в)

Выбрать в каждой строке слова, начинающиеся на букву ©
в
», заменить их на
букву ©
d
» и переставить замененные элементы в начало строки.

Найти количество таких слов в
каждой строке и номер
строки


Вопросы и задания для защиты работы

1.

Какую структуру данных описывает двумерный массив? Как в програм
ме
использовать значение конкретного элемента? Какой индекс двумерного
массива изменяется
быстрее при последовательном размещении элементов
массива в оперативной памяти?

2.

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

3.

Внешний цикл образован оператором цикла с параметром
i
,
меняющимся от 1 до 5, внутренний


с параметром
j
, меняющимся от 3 до 7.
Опишите последовательность изменения значений
i

и
j
.

4.

Сколько раз выполнится тело внутреннего цикла, если во внешнем
цикле параметр цикла меняется от 1 до 4, а во внутреннем


от 1
до 3?

5.

Может ли тело внутреннего оператора вложенного цикла не
выполниться ни разу? Выполняться бесконечное число раз?

6.

Вложенный цикл образован двумя операторами цикла с параметром.
Можно ли во внешнем и внутреннем циклах использовать один и тот же
параметр

цикла (переменную цикла)?

7.

Внешний цикл образован оператором цикла с постусловием.
Можно ли
в качестве внутреннего цикла использовать оператор цикла

с параметром? А
оператор цикла с предусловием?

8.

Для чего используются величины, представляющие собой символь
ные
строки? Как они описываются?

9.

Опишите, что представляет собой таблица
ASCII
.

10.

Дан текстуальный алгоритм решения некоторой задачи:


1.

i

:= 2

8.
Если

a
[
i
]�
a
[
max
],
то

max

:=
i

2.
max

:= 1

9.
i

:=
i
+ 1

3.
otr

:= 0

10. Перейти к п. 5

4.
Если
a
[1]

0, то
k

:= 1,
otr

:= 1

11.
vsp

:=
a
[
k
]

5.
Сравнить
i

с
n

12.
a
[
k
] :=

a
[
max
]

6.
Если
i



n
, перейти к п. 11

13.
a
[
max
] :=
vsp

7.
Если

a
[
i
] 0
и

otr

= 0,
то

k

:=
i
,
otr
:= 1

14.
Стоп

11.

Что он выполняет? Переведите его на язык программирования.


СПИСОК ВОПРОСОВ ДЛЯ
ПОДГОТОВКИ К ЭКЗАМЕН
У

1.

Понятие об ал
горитмизации:


А
лгоритмы и способы их описания;


С
труктурные схемы алгоритмов;


Л
инейные, разветвляющиеся и циклические алгоритмы;


Э
тапы подготовки и решения задач на ЭВМ.


2.

Общ
ие

сведения о программировании:


Э
волюция языков высокого уровня;


С
тили программирования;


И
сходный и объектный модули, исполняемая программа;


К
омпиляция и интерпретация, компоновка программ.


3.

Языки пр
ограммирования высокого уровня:


С
труктура программы;


С
интаксис

и семантика;


А
лфавит, имена;


С
труктуры данных, их типы;


В
ыражения
;


О
перации
;


О
перации

арифметические, логические;


О
ператоры

повтора и выбора;


В
вод и

вы
вод.


4.

Осн
о
вы технологии программирования:


П
рограммный

продукт, его жизненный цикл;


М
одульность
;


С
труктурное

про
граммирование;


П
роектирование
: восходящее и нисходящее;


С
тратегии

разработки и отлад
ки.


5.

Классификация ошибок:


С
емантические
;



С
интаксические
;


А
лгоритмические.


6.

Способы

тестирования программ.

7.

Способы

обнаружения оши
бок.

8.

Интегрированная

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


БИБЛИОГРАФИЧЕСКИЙ СП
ИСОК РЕКОМЕНДУЕМОЙ Л
ИТЕРАТУРЫ

1.

Сырецкий, Г.А. Информатика. Фундаментальный курс. Том
II
.
Информационные технологии и системы /
Г.А. Сырецкий.


СПб.: БХВ


Петербург, 2007.


848 с.

2.

Павловская, Т.А. С/С++. Структурное программирование: практикум /
Т.А. Павловская.


СПб.: Питер, 2005.


239 с.

3.

Павловская, Т.А. С/С++. Программирование на языке высокого уровня:
учебник для студентов

вузов, обучающихся по направлению ©Информатика и
вычислительная техника» / Т.А. Павловская.


СПб.: Питер, 2005.


461 с.

4.

Лабораторный практикум по информатике: учеб. пособие для вузов /
под ред. Острейковского.


М.: Высшая школа, 2003.


375 с.

5.

Информат
ика. Базовый курс: учебник для вузов / под ред. С.В.
Симоно
вича.


М.: Финансы и статистика, 2000.

6.

Фаронов, В.В. Турбо Паскаль 7.0: учеб. пособие / В.В. Фаронов.


М.:
Нолидж, 1999.


616 с.

7.

Фаронов, В.В.

Турбо Паскаль: в 3х кн. Кн.3. Практика
программиро
вания /
В.В. Фаронов
.


М.: Учебно
-
инженерный центр
©МВТУФЕСТОДИДАКТИК», 1993.


256 с.


ПРИЛОЖЕНИЕ

Интегрированная среда программирования
Borland

С++ и
Turbo

Pascal

Интегрированная среда программирования для
Borland

C
++ (
BC
)

и для
Turbo

Pascal

(
TP
) очень схожи, поэтому здесь описаны команды для среды
BC
.
Окно среды ИСП
состоит
из 4х основных частей:
главного меню
,
окна
редактирования
,
окна сообщений и

строки состояния
, в каждую из которых
можно войти с помощью ©мыши».



Главное

меню


Окно

редактиров
ания







Окно

сообщений


Строка

состояния

©
Главное меню»

доступно клавишей <
F
10> или путем нажатия
комбинаций клавиш <
ALT
> и первой буквы соответствующего элемента меню
.

File



команды работы с файла
м
и:

New




открыть новое окно редактирования;

Open
...

F
3



открыть существующий файл с диска;

Save

F
2



сохранить программу под старым именем;

Save

as
.
..




сохранить программу под новым именем;

Save

all




сохранить все файлы из всех окон;

Change

dir
...




сменить
каталог;

Print




печать программы;

Print

...





установка параметров печати;

Dos

shell




временный выход
в
MS

DOS
;

Exit


Alt
+
X



выход из ИПС.

Edit



команды редактирования:

Undo


Alt
+
BksSp



отменить последнее действие;

Redo



повторить последнее действие;

Cut

Shift
+
Del

вырезать выделенный фрагмент;

Copy


Ctrl
+
Ins


копировать выделенный фрагмент в буфер обмена;

Paste

Shift
+
Ins


вставить содержимое буфера обмена;

Clear


Ctrl
+
Del



удалить выделенный фрагмент;


Show

clipboard



по
казать окно буфера обмена;

Search




команды поиска;

Find
...



найти фрагмент, указанный в окне;

Replace
...


найти фрагмент и заменить его на указанный в окне;

Search

again


повторить поиск;

Go

to

line

number


перейти к указанному номеру строки;

S
how last

compiler error

показать

последнюю

ошибку компиляции;

Find

error
...



найти ошибку;

Find

procedure
...



найти процедуру, заданную в окне;

Previous

browser



показать информацию предыдущего окна;

Objects



показать в окне ©дерево» объектных файлов;

Units



показать в окне ©дерево» модулей;

Global



показать все глобальные переменные;

Symbol
...



задать идентификатор для выдачи номеров строк с ним.

Run



команды запуска расчета:

Run

Ctrl
+
F
9


запуск программы на исполнение;

Step

over

F
8


пошаговое выполнение процедур;

Trace

into

F
7


пошаговое выполнение операторов;

Go

to

cursor

F
4


выполнение фрагмента до курсора;

Program


Ctrl
+
F
2


завершение сеанса отладки;

...



настройка параметров.

Compile



компиляция программы:

Co
mpile

Alt
+
F
9


компиляция файла;

Make

F
9


перекомпиляция только измененных модулей;

Build



перекомпиляция всех модулей;

...

Real




выбор режима

приложения;

Primary

file
...



указание главного файла для команд
Make

и

Build
;

Clear

primary



отмена указания главного файла;

Information
...



информация о скомпилированном файле.


Debug



команды отладки:

Breakpoints



управление точками прерывания;

Call

stack

Ctrl
+
F
3


показ имен процедур до работающей процедуры;

Register



информация о регистрах процессора;

Watch



информация о значениях переменных и выражений;

Output



отображение результатов без графики;

User

screen

Alt
+
F
5


просмотр результатов программы;

Evaluate

modify
...
Ctrl
+
F
4


просмотр и изменение значений переменны
х;

Add

watch
...


Ctrl
+
F
7


просмотр конкретных значений переменных;

Add

breakpoint
...



установка условных и безусловных точек
прерывания.

Tools



команды работы с сообщениями ИПС и утилитами отладки:

Messages



переход в окно сообщений;

Go

to

next

Alt

+
F
8


переход к следующему элементу окна;

Go

to

previous

Alt
+
F
7


переход к предыдущему элементу окна;

Grip

Shift
+
F
2


вызов программы
Grip
;

Turbo Assembler
Shift+F
3


вызов

программы

Assembler
;


Turbo Debugger
Shift+F
4


вызов

программы

Debugger
;

Turbo Profiler

Shift+F
5


вызов

программы

Profiler
.


Options



команды установки параметров интегрированной среды:

Compiler



параметры, определяющие работу компилятора;

Memory

Sizes



размеры стека, размер памяти;

Linker



параметры компоновщика;

Directories



задает каталоги для помещения и извлекания файлов;

Browser



опции, связанные с просмотром;

Tools



местоположение программных компонентов меню;

Environment



параметры работы с мышью, редактором и т.

п.;

Open



открывает файл конфигурации;

Save



сохраня
ет файл конфигурации;

Save

as




сохраняет файл конфигурации с запросом имени.

Window



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

Tile



показать все открытые окна редактирования;

Cascade



показать в каскадном виде все открытые окна
редактирования;

Close

all



закрыть все открытые окна;

Refresh

display



восстановление изображения ИПС после сбоев;

Save

Move

Ctrl
+
F
5


изменение размеров окна;

Zoom

F
5


раскрытие окна до полного размера экрана;

Next

F
6


переход в следующее окно;

Previous

Shift
+
F
6



переход в преды
дущее окно;

Close

Alt
+
F
3


закрытие окна;

List

Alt
+
0



перечисление всех окон с момента работы ИПС.

Help



вызов справочной информации:

Contents



вывод оглавления справки;

Index

Shift
+
F
l


вывод алфавитного перечня терминов;

Topic

search


Ctrl
+
F
l

вывод
справки о термине, указанном курсором;

Previous

topic

Alt
+
F
l


переход к предыдущей справке;

Using

help


вывод инструкции по работе со справочной информацией;

...



добавление и удаление информационных файлов;

Compiler

directives



вывод списка всех д
иректив компилятора;

Procedures

and

functions


вывод алфавитного перечня процедур и функций;

Reserved

words



вывод зарезервированных слов;

Standards

units


вывод стандартных модулей;

Error

messages


вывод о сообщениях ошибок;

About

...



служебная информация.


Для входа в ©
Окно редактирования»

нажать комбинацию клавиш <
Alt


и
<цифра>, где <цифра>


номер окна.
С окнами можно:

создавать новое





Alt
�+
F
�+N00;N
(или
File
/
New
);

закрывать текущее



Alt
�+
F
3�.

При редактировании
текста исп
ользуются клавиши:


Insert




переключение режима вставки/замены символов;







удаление символа, находящегося над курсором;


Backspace





удаление символа, находящегося слева от курсора;




End





перемещение курсора в конец текущей строки;


Home





перемещение курсора в начало текущей строки;


Enter





для перехода на новую строку и разрезания текущей строки
на две;


Page

Up





©прочитывание» текста на один экран вперед;


Page

Down




©прочитывание» текста на один экран назад;

<Сар
s

Lock





переключение режима прописные/строчные буквы;


Shift





временное переключение режима прописные/строчные буквы;


Ctrl
� +
y




позволяет удалить текущую строку.

Выделенный фрагмент текста (блок) можно:

копировать




Ctrl
> + <К> + <С>

(или

Ctrl
� +
Insert

);

перемещать




Ctrl
> + <К>
+

V


(или

Shift
� +
Insert

);

удалять









Ctrl
> + <К> +

Y

(или

Ctrl

+

Delete

);

отменять выделение блока




Ctrl
> + <К> + <
H

.

Отредактированный текст можно:

сохранить в файле на диске




F
2> (или

Alt
� +
F
2
�);

считать из файла с диска




F
3> (для существующего),

указатель в открывшемся окне можно перемещать при помощи <
Tab

.

Для создания исполняющего файла необходимо:


П
рограмму проверить на ошибки (откомпилировать)



Alt
�+
F
�9
;


Е
сли обнаружены ошибки, то
для получения информации о конкретной
ошибке в строке надо установить курсор на интересующую конструкцию и
нажать комбинацию клавиш <
Ctrl
�+
F
1�;


Со
здать файл с расширением ©
.ехе
»



Ctrl
� +
F
9
�;


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

результатов выполнения программы, нажав <
Alt
� +
F
5>, а для возврата в окно
редактирования нажать любую клавишу.


Для обнаружения алгоритмических ошибок можно воспользоваться
следующими операциями, условно состоящими из нескольких шагов:


У
становить индик
ацию
(или просмотреть значения переменных) в
проц
ессе выполнения программы



Ctrl
�+
F
7>. В открывшемся окне ввести

имя переменной;


П
ровести трассировку
(т. е. построчно выполнить)


нажимать на <
F
7�
(или <
F
�8



для исключения функций);


И
зменить

(если требуется)
значения

переменной в процессе
трассировки программы



Ctrl
�+
F
4>. Набрать в окне ©
Expression
»

имя
интересующей переменной, после чего в окне ©
Result
»

высветится ее значение.
Если в окне ©
New

Value
»

ввести новое значение, то дальнейшие в
ычисления
будут выпол
няться уже с ним.


Во всех операциях указатель можно передвигать с помощью клавиши

Tab

.


Для входа в ©
Окно сообщений»
можно воспользоваться командой
главного
меню
Tools
/
Messages
. Переход к следующему элементу сообщения: <
Alt
� +
F
8�.
Переход к предыдущему элементу сообщения: <
Alt
� +
F
7�.

©Строка состояния»
содержит пояснения о назначении пунктов
выпадающего меню (см. начало приложения).

С учетом представленной ИСП может быть рекомендован следующий план
работы при создании и отладке но
вой программы.

1.

Открыть новое окно редактирования для ввода новой программы
(
File
/
New
)
.

2.

Набрать текст новой программы.

3.

Записать текст програ
ммы на диск
(
File
/
Save

или <
F
2�)
.

4.

Запустить программу на выполнение
(
Run
/
Run

или <
CTRL
�+
F
9�).

5.

Посмотреть результаты выполнения программы
(
ALT
�+
F
5�).

6.

Сохранить отлаженную программу на диске
(
F
2�)
.


Приложенные файлы

  • pdf 8820894
    Размер файла: 921 kB Загрузок: 0

Добавить комментарий