Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка для заочников_практика.doc
Скачиваний:
1
Добавлен:
10.12.2018
Размер:
5.2 Mб
Скачать

В. Ю. Наумов, Л. Г. Акулов, О. А. Авдеюк

Информатика

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

Практика.

М

ИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ВОЛГОГРАДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

В. Ю. Наумов, Л. Г. Акулов, О. А. Авдеюк

Информатика для студентов

заочной формы обучения.

Практика.

Учебное пособие

Волгоград

2

011

УДК 681.3 (075)

Рецензенты:

зав. кафедрой «Информатика и методика обучения информатике» ВГПУ д-р педагог. наук, профессор Т. К. Смыковская;

доцент кафедры «Теория и методика обучения физике и информатике» ВГПУ канд. педагог. наук Л. Ю. Кравченко

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

Волгоградского государственного технического университета

Наумов, В. Ю.

Информатика для студентов заочной формы обучения. Практика : учеб. пособие / В. Ю. Наумов, Л. Г. Акулов, О. А. Авдеюк. – Волгоград : ИУНЛ ВолгГТУ, 2011. – 67с.

ISBN 978–5–9948–0725–5

ISBN 978–5–9948–0725–5 © Волгоградский государственный

технический университет, 2011

© Коллектив авторов, 2011

Содержание

4. Разветвляющиеся вычислительные процессы. 14

4.1 Условие задачи 1 14

4.2 Условие задачи 2 15

5. Циклические вычислительные процессы 19

5.1 Условие задачи 1 19

5.2 Условие задачи 2 21

5.3 Условие задачи 3 26

6. Одномерные массивы 29

6.1 Условие задачи №1 29

6.2 Условие задачи №2 30

6.3 Условие задачи №3 32

7.1 Условие задачи №1 36

7.2 Условие задачи №2 37

7.3. Условие задачи №3 39

8. Подпрограммы 45

8.1 Условие задачи 1 45

8.2 Условие задачи 2 49

9. Файлы. 57

9.1 Условие задачи 1 57

9.2 Условие задачи 2 59

9.3 Условие задачи 3 62

Введение.

Контрольная работа по курсу «Информатика» предлагается на первом курсе обучения.

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

Задание на контрольную работу выбирается по сумме трех последних цифр зачетной книжки студента. Например, если номер зачетки 20111234, то номер варианта 2+3+4=9.

Контрольная работа состоит из 20 заданий, из них 15 обязательных, необходимых для допуска к контрольным мероприятиям по предмету, 5 повышенной сложности (отмечены символом *), решение которых будет зачтено как экзаменационная работа (при этом студенту могут быть заданы вопросы по сути алгоритма решения).

Задание 1. Закодировать свою фамилию имя отчество Кодом Шеннона-Фано с мощностью кода 4.

Задание 2. Закодировать свою фамилию имя отчество Кодом Хаффмена с мощностью кода 4.

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

Задания 4-17. Берутся из учебного пособия «Сборник заданий для лабораторных работ по информатике» авторы Наумов В. Ю., Гостевская О. В., Лемешкина И. Г., Павлова Е. С., Богатырёв Р. С., Акулов Л. Г., Литовкин Р. В., Авдеюк О. А.

Задания 8-20. Берутся из учебного пособия «Сборник заданий для семестровых работ по информатике. Часть II: учеб.» авторы Наумов В. Ю., Лемешкина И. Г., Павлова Е. С., Богатырёв Р. С., Акулов Л. Г., Литовкин Р. В., Авдеюк О. А.

Задание 4. Линейные вычислительные процессы. Тема 1.

Задание 5. Разветвляющиеся вычислительные процессы. Тема 2.3.

Задание 6. Разветвляющиеся вычислительные процессы. Тема 2.4.

Задание 7. Циклические вычислительные процессы Тема 3.4.

Задание 8. Циклические вычислительные процессы Тема 3.5.

Задание 9*. Циклические вычислительные процессы Тема 3.1.

Задание 10. Одномерные массивы. Тема 4.1.

Задание 11. Одномерные массивы. Тема 4.2.

Задание 12*. Одномерные массивы. Тема 4.3.

Задание 13. Двумерные массивы. Тема 5.1.

Задание 14. Двумерные массивы. Тема 5.2.

Задание 15*. Двумерные массивы. Тема 5.3.

Задание 16. Подпрограммы. Тема 6.1.

Задание 17*. Подпрограммы. Тема 6.2.

Задание 18. Файлы. Тема 1.1.

Задание 19. Файлы. Тема 1.2.

Задание 20*. Файлы. Тема 1.3.

Оформляется работа в тетради (в этом случае при оформлении блок-схем необходимо использовать карандаш и линейку) либо в печатном виде на листах формата А4.

На титульном листе работы должны быть указаны:

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

  2. Номер группы.

  3. ФИО студента (полностью).

  4. Номер зачетной книжки.

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

1. Кодирование

1. 1 Кодирование Шеннона-Фано

Закодировать свою фамилию имя отчество Кодом Шеннона-Фано с мощностью кода 4.

Наумов Вадим Юрьевич

Длина строки 20 символов. Определим вероятности для каждого символа и выпишем их в порядке убывания вероятностей:

Буква

Вероятность

Шаг 1

Шаг 2

Шаг 3

Итог

В

3/20

0

0

00

А

2/20

1

01

И

2/20

1

0

10

М

2/20

1

11

_

2/20

2

12

Д

1/20

2

0

20

О

1/20

1

21

Н

1/20

2

22

У

1/20

3

0

230

Ю

1/20

1

231

Р

1/20

3

0

30

Ь

1/20

1

31

Е

1/20

2

32

Ч

1/20

3

33

Шаг 1. Разбиваем вероятности на 4 группы, в каждой из которых суммарная вероятность примерно равна 20/4=5. Каждой группе ставим в соответствии код от 0, 1, 2 или 3 (т.к. мощность 4).

Шаг 2. Каждую группу, полученную на шаге 1, делим на необходимое количество частей с примерно одинаковыми вероятностями. Каждой группе ставим в соответствии код от 0, 1, 2 или 3. Причем в каждой новой группе нумерация начинается заново.

Шаг 3. Единственная подгруппа, в которой нет окончательного кода для символов это группа из букв «У» и «Ю», ставим в соответствие каждой букве еще по одному кодовому символу. В итоге получаем код, соответствующий каждой букве исходного алфавита.

1.2 Кодирование Хаффмена.

Закодировать свою фамилию имя отчество Кодом Хаффмена с мощностью кода 4.

Наумов Вадим Юрьевич

Длина строки 20 символов. Для кодирования методом Хаффмена с мощностью кода 4 нам не хватает 2 буквы, поэтому добавим две фиктивные буквы с нулевыми вероятностями. Затем определим вероятности для каждого символа и выпишем их в порядке убывания вероятностей.

Буква

Вероятность

Шаг 1

Шаг 2

Шаг 3

Шаг 4

В

3/20

3/20

4/20 (2)

5/20 (3)

8/20 (4)

А

2/20

2/20

3/20

4/20

5/20

И

2/20

2/20

2/20

3/20

4/20

М

2/20

2/20

2/20

2/20

3/20

_

2/20

2/20

2/20

2/20

Д

1/20

2/20 (1)

2/20

2/20

О

1/20

1/20

2/20

2/20

Н

1/20

1/20

1/20

У

1/20

1/20

1/20

Ю

1/20

1/20

1/20

Р

1/20

1/20

Ь

1/20

1/20

Е

1/20

1/20

Ч

1/20

Х1

0/20

Х2

0/20

На каждом шаге «склеиваем» 4 (по мощности кода) нижних вероятности и переупорядочиваем преобразованные вероятности по убыванию. «Склеиваемые» вероятности выделены жирным курсивом, а место куда попала суммарная вероятность отмечено в скобках номером шага.

Теперь идем в обратную сторону. Каждому символу в последней группе

(шаг 4) ставим в соответствии код от 0, 1, 2 или 3 (т.к. мощность 4).

Шаг 4

Код

8/20 (4)

0

5/20

1

4/20

2

3/20

3

Теперь кодовые комбинации 1, 2, 3 переносятся в столбец «Шаг 3» в неизменном виде, а код 0, который соответствует четырем «склеенным» вероятностям уточняется дополнительным символом 0, 1, 2, 3.

Шаг 3

Код

Шаг 4

Код

5/20 (3)

1

8/20 (4)

0

4/20

2

5/20

1

3/20

3

4/20

2

2/20

00

3/20

3

2/20

01

2/20

02

2/20

03

Аналогичным образом на шаге 2 получается следующая картина.

Шаг 2

Код

Шаг 3

Код

Шаг 4

Код

4/20 (2)

2

5/20 (3)

1

8/20 (4)

0

3/20

3

4/20

2

5/20

1

2/20

00

3/20

3

4/20

2

2/20

01

2/20

00

3/20

3

2/20

02

2/20

01

2/20

03

2/20

02

2/20

10

2/20

03

1/20

11

1/20

12

1/20

13

Аналогичным образом на шаге 1 получается следующая картина.

Шаг 1

Код

Шаг 2

Код

Шаг 3

Код

Шаг 4

Код

3/20

3

4/20 (2)

2

5/20 (3)

1

8/20 (4)

0

2/20

00

3/20

3

4/20

2

5/20

1

2/20

01

2/20

00

3/20

3

4/20

2

2/20

02

2/20

01

2/20

00

3/20

3

2/20

03

2/20

02

2/20

01

2/20 (1)

10

2/20

03

2/20

02

1/20

11

2/20

10

2/20

03

1/20

12

1/20

11

1/20

13

1/20

12

1/20

20

1/20

13

1/20

21

1/20

22

1/20

23

И окончательно получаем.

Буква

Вероятность

Код

Шаг 1

Код

Шаг 2

Код

Шаг 3

Код

Шаг 4

Код

В

3/20

3

3/20

3

4/20 (2)

2

5/20 (3)

1

8/20 (4)

0

А

2/20

00

2/20

00

3/20

3

4/20

2

5/20

1

И

2/20

01

2/20

01

2/20

00

3/20

3

4/20

2

М

2/20

02

2/20

02

2/20

01

2/20

00

3/20

3

_

2/20

03

2/20

03

2/20

02

2/20

01

Д

1/20

11

2/20 (1)

10

2/20

03

2/20

02

О

1/20

12

1/20

11

2/20

10

2/20

03

Н

1/20

13

1/20

12

1/20

11

У

1/20

20

1/20

13

1/20

12

Ю

1/20

21

1/20

20

1/20

13

Р

1/20

22

1/20

21

Ь

1/20

23

1/20

22

Е

1/20

100

1/20

23

Ч

1/20

101

Х1

0/20

102

Х2

0/20

103

2. Системы счисления.

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

Пусть номер студенческого билета 20112178. Тогда последние цифры 2178 в обратном порядке 8712.

Переведем числа в двоичную систему счисления.

Переведем числа в восьмеричную систему счисления.

Переведем числа в шестнадцетиричную систему счисления.

Произведем сложение в каждой из систем счисления.

Произведем вычитание в каждой из систем счисления (из большего числа вычтем меньшее).

3. Линейные вычислительные процессы.

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

Блок-схема

Листинг программы на Pascal

program abc;

var

A,B,C,X,Y,Y1,Y2 : real;

begin

// ввод данных

writeLn('введите A, B, C');

readLn(A,B,C);

// вычисление промежуточных данных

// сначала числитель

Y1:=sqrt(sqr(A)+sqr(B))/(0.5 + A*B) - 1/A;

// потом знаменатель

Y2:=C+abs(A-B);

// потом их отношение

Y:= Y1/Y2;

//теперь всю формулу:

X:= exp(-A/B)*(sin(Y)+cos(Y));

//вывод результата

writeLn(' X= ' , X);

end.

4. Разветвляющиеся вычислительные процессы.

4.1 Условие задачи 1

Ввести число x, выяснить что больше: целая часть числа x, или его дробная часть, умноженная на 10. Если первое, то число разделить на 10, если второе, то дробную часть от него отнять.

Блок-схема к задаче 1

Листинг программы на языке Pascal к задаче 1

program Zad4_1;

var x,y,z:real;

begin

writeLn('введите x');

readLn(x);

// рассчитываем целую часть

y:=trunc(x);

writeLn('целая часть числа равна ', y);

// рассчитываем дробную часть

z:=frac(x);

writeLn('дробная часть числа равна ', z);

// проверка условия

if y>z*10 then

begin

writeLn('целая часть больше');

x:=x*10;

end

else

begin

writeLn('дробная часть, умноженная на 10 больше');

writeLn('удесятеренная дробная часть равна ',z*10);

x:=x-z;

end;

writeLn('число после изменения x=',x);

end.

4.2 Условие задачи 2

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

Блок-схема к задаче 2

Листинг программы на языке Pascal к задаче 2

Program Zad4_2;

var X,Y,x1,x2,x3,x4: integer;

begin

cls;

writeLn('Введите четырёхзначное число');

readLn(X);

// чтобы не потерять исходное число,

// копируем его в Y

Y:=X;

x1:=Y div 1000; // первая цифра

Y:= Y mod 1000; // отбрасываем первую цифру

x2:=Y div 100; // вторая цифра

Y:= Y mod 100; // отбрасываем вторую цифру

x3:=Y div 10; // третья цифра

Y:= Y mod 10; // отбрасываем третью цифру

x4:=Y div 1; // четвёртая цифра

// проверяем правильно ли мы разложили число

Y:= 1000*x1 + 100*x2 + 10*x3 + x4;

writeLn('на входе было ', X, ', на выходе получилось ', Y);

writeLn('1-я цифра:', x1);

writeLn('2-я цифра:', x2);

writeLn('3-я цифра:', x3);

writeLn('4-я цифра:', x4);

if x1=x4 then

begin

if x1 mod 2=0 then

begin

writeLn('первая и последняя цифры четны и равны');

x1:=x1 div 2;

x4:=x4 div 2;

end

else

writeLn('первая и последняя цифры равны, но они не четны');

end

else

begin

writeLn('первая и последняя цифры не равны');

if x1>x4 then

begin

Y:=x1;

x1:=x4;

x4:=Y;

end

else

begin

Y:=x2;

x2:=x3;

x3:=Y;

end

end;

X:= 1000*x1 + 100*x2 + 10*x3 + x4;

writeLn('в результате преобразований получено число ', X);

end.

5. Циклические вычислительные процессы

5.1 Условие задачи 1

Трижды определить значение выражения, используя три различных цикла .

Блок-схемы к задаче 1

Листинг программы на Pascal к задаче 1 (вариант с циклом for)

program Zad5_1_For;

var n,k:integer;

x,S:real;

begin

cls;

writeLn('Введите k, x');

readLn(k,x);

for n:=1 to k do

S:=S+sqr(n)/sqrt(n+x);

writeLn(' полученная сумма S= ' , S:8:3);

end.

Листинг программы на Pascal к задаче 1 (вариант с циклом repeat)

program Zad5_1_Repeat;

var n,k:integer;

x,S:real;

begin

cls;

writeLn('Введите k, x');

readLn(k,x);

S:=0;

n:=1;

repeat

S:=S+sqr(n)/sqrt(n+x);

n:=n+1;

until n>k;

writeLn(' полученная сумма S= ',S:8:3);

end.

Листинг программы на Pascal к задаче 1 (вариант с циклом while)

program Zad5_1_While;

var n,k:integer;

x,S:real;

begin

cls;

writeLn('Введите k, x');

readLn(k,x);

S:=0;

n:=1;

while n <= k do

begin

S:=S+sqr(n)/sqrt(n+x);

n:=n+1;

end;

writeLn(' полученная сумма S= ' ,S:8:3);

end.