Цели и задачи дисциплины, ее место в учебном процессе. Основное содержание курса

Страницы работы

Фрагмент текста работы

Алгоритмы подпрограмм очевидны из комментариев к программе.


Рис.1

нет

formfstud      да

Рис.1(продолжение)

stipendia

printfstud

да нет


Текст основной программы:

Program studstip;

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

{автор    дата 10.04.01}

Uses crt,dos;

Const ko =5;

Type stud = record

nom : integer;

Fio : string[20];

Bal : array[1..ko] of integer;

Stip : char;

End;

fstud = title of stud;

Var    i,j,knf     : integer;             

Fst1,fst2 : fstud;   

Str1,str2 : string;{строки, определяющие пути к файлам – иск. и нов.}

Sqt,tmax,tmin,tn : real;

Rst : stud;

Ch : char;

stp : char;  {назначенная стипендия}

Procedure formfstud(var fst:fstud);

{формирование файла о студентах}

var     i,j,kst : integer;

rst     : stud;

begin

rewrite(fst);

ch:=’y’;

while (ch<>’n’) and (ch<>’т') do {цикл ввода по принципу пока не надоест}

begin

{ввод данных о ст-те в запись}

writeln(‘Введите № студента, ФИО и 5 оценок от 2 до 5’);

with rst do

begin

read(nom);

readln(fio);

for j:=1 to ko do

read(ball[i]);

end;  {with}

write(fst,rst); {занесение записи в файл}

writeln(‘будете ли вы вводить новые данные y/n’);

ch:=readkey;

end;   {while}

close (fst);

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

end; { proc.formfstud}

procedure printfstud(var fst : tstud);

{распечатка файла о студентах}

var     i,knf : integer;

rst : stud;

begin

reset(fst);

knf:=0;

while not eof (fst) do

begin 

read(fst,rst);  {чтение записи из файла}

knf:=knf+1;

{вывод (распечатка) записи}

writeln;

with rst do

begin

write (‘ст-т ‘,nom:2,’  ’,fio);

for  i :=1 to ko do

write(bal[i]:3);

write(stip:3);

end;  {with}

end;  { while}

close (fst);

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

writeln;

writeln(‘кол-во ст-тов knt= ‘,knt:5);

end; {proc. printfstud}

procedure stipendia(var rst : stud;var stp : char);

{Анализ успеваемости студента и назначение стипендии}

var     i,j : integer;

kbal : array [2..5] of integer; {массив кол-ва оценок каждого вида}

begin

{обнуление кол-ва оценок}

for j:= 2 to 5 do

kbal[j]:=0;

{анализ записи}

with rst do

begin

for i:=1 to ko do

{подсчёт кол-ва оценок различного вида}

kbal[bal[i]:=kbal[bal[i]]+1;

{анализ кол-ва оценок различного типа}

if kbal[5]=5 then

stp:=’V’

else

if(kbal[5]>1) and ((kbal[5]+kbal[4])=5) then

stp:=’P’

else

if ((kbal[3]+kbal[2])=0) then

stp:=’S’

else

if kbal[2]>2 then

stp:=’O’

else

stp:=’N’;

end;  {with}

end; {proc. stipendia}

begin

write(‘Введите путь и имя исх. Файла :’);

readln(str1); 

{str1:=’d:\vib\fdst1’;}      {для отладки}

assign (fst1,str1); {связывание файловой переменной с файлом}

writeln(‘требуется формирования файла(Y\N)?');

readln(ch);

if (ch='Y') or (ch='y') then

formfstud(fst1);

{анализ каждого студента и назначении стипенедии}

reset (fst1); {открытие исходного файла для чтения}

knt:=0;  {кол-во записей в исходном файле}

write(‘Введите путь и имя нового файла : ’);

readln(str2);

{srt2:=’d:\vib\fdst2’;}                 {для отладки}

assign (fst2,str2); {связывание файловой переменной с новым файлом}

rewrite(fst2);

{цикл для чтения записей из исх.файла, их анализа, заполнения поля (графы) о стипендии и  запись в новый файл}

while not eof(fst1) do

begin

read (fst1,rst); {чтение записи о студенте}

knt:=knt+1;

{анализ успеваемости студента}

stipendia(rst,stp);

write (fst2,rst); {запись в новый файл}

{подсчёт кол-ва стипендий каждого вида}

end;  {while}

close(fst1);  {закрытие исх.файла}

close(fst2); {закрытие нов.файла}

{распечатка нов.файла о студентах}

printfstud(fst2);

ch:=readkey;

end.

Тестовые примеры:

Исходные данные:

1 Анисимов С.А.

3 4 3 5 4

2 Бобров В.И.

4 5 4 5 4

>3 Герасимов А.Н.     <

5 5 5 5 5

4 Иванов В.И.

2 3 3 4 3

5 Кубатко И.В.

4 5 5 5 4

Файл после анализа:

1 Анисимов С.А.

3 4 3 5 4 N

2 Бобров В.И.

4 5 4 5 4 S

>3 Герасимов А.Н.  <

5 5 5 5 5 V

4 Иванов В.И.

2 3 3 4 3 O

5 Кубатко И.В.

4 5 5 5 4 P

Описание процедур и функций:

Процедура Formfstud(var fst:fstud): формирование файла о студентах; входные данные:

файловая переменная fst,которая связана с исходным файлом;

выходные:

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

Процедура printfstud(var fst : tstud): распечатка файла о студентах; входные данные: файловая переменная fst2,которая связана с файлом о студентах;

выходные: вывод на экран содержимого файла о студентах.

Процедура stipendia(var rst : stud;var stp : char): анализ успеваемости студента и назначение стипендии:

входные данные:

rst - запись о студенте;

выходные:

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

Инструкция к программе:

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

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

Количество операторов: 90

Объем pas файла:~9K

Объем exe файла:~6K

Время работы при размерности: 5 записей в файле менее 1 с.

Лабораторная работа № 4

Алгоритмы и программы сортировки массива.

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

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

Метод решения: сортировка производится путём включения элемента в соответствующее место ранее отсортированного массива, находящегося в начале заданного массива.

Алгоритм основной программы :

 


Да                                               нет

sortvst
Текст основной программы:

Program lab4;

Uses crt;

Const

m=50;

Type

vector = array[1..m] of real;

Var   mas : vector;

i,n      : integer;

Procedure sortvst(n : integer; var mas: vector);

{Процедура сортировки массива mas размера n простым включением}

var    b,x   : real;

i,j,k : integer;

begin

for i:= 2 to n do

begin

b:= mas[i];

j:= 1;

while (b > mas[j]) do

j:= j+1;

for k:= (i –1) downto j do

mas[k +1]:= mas[k];

mas[j]:= b;

end;   {for i}

end;   {proc.sortvst}

Begin       {текст основной программы}

Clrscr;

writeln('Введите n: ');readln(n);

writeln('Произвести произвольный ввод массива(Y/N)?');

c := readkey;

if (c='n') or (c='N') then

begin            

writeln('Введите массив : ');

for i:=1 to n do                   {ввод массива вручную}

begin

write(i,': ');

read(mas[i]);

end;     {for i}

end

else

begin

Randomize;

For i:= 1 to n do

Begin

X:= random(99);

mas[i] := x*100 + 50;  {формирование произвольного массива}

end;

End;

Writeln(‘Не отсортированный массив ’);

For i:= 1 to n do

Write(mas[i]:9:3,’   ‘);    {вывод не отсортированного массива }

Writeln;

Sortvkl(n, mas);

Writeln(‘Отсортированный массив ’);

For i:= 1 to n do

Write(mas[i]:9:3,’   ‘);{вывод отсортированного массива }

End.

Тестовые примеры:

Введите n: 4

Произвести произвольный ввод массива(Y/N)?n

Введите массив :

1: 2

2: 4

3: 1

4: 8

Не отсортированный массив

2.000   4.000   1.000   8.000

Отсортированный массив

1.000   2.000   4.000   8.000

Введите n: 3

Произвести произвольный ввод массива(Y/N)?y

Не отсортированный массив

2.454   4.122   7.435   8.765

Отсортированный массив

2.454   4.122   7.435   8.765

Введите n: 6

Произвести произвольный ввод массива(Y/N)?n

Введите массив :

1: 7

2: 6

3: 5

4: 4

5: 3

6: 2

Не отсортированный массив

7.000   6.000   5.000   4.000   3.000   2.000

Отсортированный массив

2.000   3.000   4.000   5.000   6.000   7.000

Инструкция к программе:

Для её запуска необходимо запустить файл n4.exe  и далее следовать по инструкциям, которые появятся по ходу работы программы. Входными данными являются количество элементов массива n. Затем вводятся действительные элементы массива. Выходными данными является  упорядоченный массив путём по- элементного вывода.

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

Количество операторов: 35

Объем pas файла:~7K

Объем exe файла:~5K

Время работы при размерности: 6 элементов менее 1 с.

Приложение 2

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ К КОНТРОЛЬНЫМ И ЛАБОРАТОРНЫМ РАБОТАМ

Таблица 1

Номер  студен-та по журналу

Номер лабораторной работы, шифр группы,  номер задачи по [13]

Работа № 1

Работа №2

Работа №3

Работа №4

ЗЭВМ-1

ЗЭВМ-2

ЗЭВМ-1

ЗЭВМ-2

ЗЭВМ-1

ЗЭВМ-2

ЗЭВМ-1

ЗЭВМ-2

1

189

190

370а

371

507б

506в

650в

650в

 2

193

194

376а

378а

508б

507в

646в

630б

 3

197

198

379д

383

509б

508в

628в

631б

 4

201а

201б

385

386

510б

509в

640в

640б

 5

202б

203

390а

393а

506а

510в

630б

646б

 6

206

207

397б

398

507а

511в

631б

650б

 7

210

211

423д

423е

508а

512

640б

628а

 8

214

215а

404

405

509а

513в

646б

629

9

216а

217

410а

379г

510а

514в

650б

630а

10

178в

223е

379б

376б

511а

515

628а

631а

11

179в

219в

412а

390б

512

516

629

633

12

181в

220б

415

413а

513а

517в

630а

634

13

185

215б

394а

367

514а

511б

631а

635

14

221

201е

374а

373а

515

513б

633

636

15

222а

178е

377

380

516

514б

634

637

16

223в

180

403б

412в

517а

506а

635

640а

17

226

182

410в

394б

506в

507а

636

641

18

227

212

382

374б

507в

508а

637

643

19

219б

186

373

410е

508в

509а

640а

644

20

201д

222г

423а

423в

509в

510а

641

645

21

220в

228

401

402а

510в

511а

643

646а

22

229

229

394г

413б

511в

512

644

647

23

230

230

393г

423д

512

513а

645

648

24

231

231

410д

423г

513в

514а

646а

649

25

232

232

423б

394д

514в

515

647

650а

26

233

233

379в

515

516

648

27

234

234

423б

516

517д

649

28

272

272

376а

517в

650а

29

236

236

405

511б

628а

30

237

237

390б

514б

630в

Приложение 3

Вопросы к экзамену

1. Классификация ЭВМ.

2. Области и способы применения ЭВМ.

3. Этапы решения задач на ЭВМ и участие в них человека.

4. Понятие об алгоритме и требования к нему.

5. Схема прохождения задачи через ЭВМ

6. Источники ошибок при решении задачи на ЭВМ.

7. Типы вычислительных процессов.    

Структура линейного вычислительного процесса.

8. Структуры разветвляющихся вычислительных процессов.

9. Структуры циклических вычислительных процессов.

10. Правила структурного программирования.

11. Вложенные циклы. Работа с матрицами.

12. Алфавит языка Pascal. Коментарии.

13. Понятие синтаксической диаграммы.

14. Структура блока в языке Pascal.

15. Идентификатор в Pascal. Синтаксическая диаграмма, правила образования.

16. Обьявления: виды и структурная диаграмма.

17. Константы в Pascal.

18. Стандартные типы данных в Паскале. Скалярный тип.

19.Простые типы данных в Паскале. Структурная диаграмма простого типа.

20. Оператор присваивания,  построение и запись выражений в Паскале. Совместимость типов в выражениях.

21. Стандартные функции в Паскале.

22. Операторы ввода и вывода.

23. Управляющие структуры Паскаля. Структуры следования и группировки.

24. Структура и операторы вывода в Паскале.

25. Условные операторы в Паскале. Их вложенность.

26. Оператор цикла с перечислением в Паскале.

27. Оператор цикла с предусловием в Паскале.

28. Оператор цикла с постусловием в Паскале.

29. Логические операторы и выражения в Паскале.

30. Оператор безусловного перехода в Паскале.

31. Массивы в Паскале. Объявления и работа с ними.

32. Типы структур программ в Паскале. Преимущества модульных программ.

33. Процедуры в Паскале.

34. Функции в Паскале.

35. Символьные переменные в Паскале, операции и функции с ними

Похожие материалы

Информация о работе

Тип:
Методические указания и пособия
Размер файла:
195 Kb
Скачали:
0