Алгоритмы подпрограмм очевидны из комментариев к программе.
Рис.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 с.
Алгоритмы и программы сортировки массива.
Цель: Изучение структуры алгоритмов и программирование задач, связанных с сортировкой массивов.
Условие задачи: выполнить сортировку массива действительных чисел заданного размера методом простого включения.
Метод решения: сортировка производится путём включения элемента в соответствующее место ранее отсортированного массива, находящегося в начале заданного массива.
Алгоритм основной программы :
Да нет
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 с.
Таблица 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. Символьные переменные в Паскале, операции и функции с ними
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.