В. П. Грибанов Лабораторный практикум по дисциплине "Информатика и программирование" для студентов экономических специальностей Моск - polpoz.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Учебно-методический комплекс по дисциплине по выбору дв2 «логическое... 1 351.89kb.
Учебно-методический комплекс по дисциплине Функциональное и логическое... 4 432.76kb.
Учебно-методический комплекс По дисциплине «Информатика и икт»10... 1 205.87kb.
Программа дисциплины Программирование для направления 38. 03. 1 391.5kb.
Программа по дисциплине визуальное программирование маслянкин В. 1 56.07kb.
Рейтинговая оценка знаний студентов 5 курса Лечебного факультета... 1 198.26kb.
Учебно-методический комплекс по дисциплине «Тестирование программного... 1 373.8kb.
Линейное программирование 1 1201.82kb.
Рабочая программа по дисциплине 01«Программирование микроконтроллеров» 1 319.27kb.
Практикум для студентов небиологических специальностей 15 1054.11kb.
Программа для вступительного испытания "Математика и информатика"... 1 69.09kb.
Красные уши: общие вопросы и частные ответы. Нынешние итоги и реалии 1 269.05kb.
1. На доске выписаны n последовательных натуральных чисел 1 46.11kb.

В. П. Грибанов Лабораторный практикум по дисциплине "Информатика и программирование" - страница №1/1



МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ЭКОНОМИКИ, СТАТИСТИКИ И ИНФОРМАТИКИ
Кафедра Математического обеспечения

информационных систем и инноватики

В.П. Грибанов

Лабораторный практикум

по дисциплине "Информатика и программирование"
для студентов экономических специальностей


Москва 2012

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

по дисциплине «Информатика и программирование»

Общая постановка задачи лабораторной работы.
Составить на языке Паскаль программу, управляющуюся с помощью меню. Программа должна реализовать действия согласно варианту. Каждая подгруппа выполняет свой вариант задания.
В меню обязательно должны войти пункты:
1) ввод одномерного массива;

2) вывод одномерного массива ;

3) обработка одномерного массива (задача 1) с выдачей результатов;

4) обработка одномерного массива (задача 2) с выдачей результатов;

5) выход из программы (с подтверждением).
Технология разработки меню представлена в приложении к практикуму

и в файле »



Первый этап разработки программы
Перед разработкой программы следует создать тестовый (пробный) набор данных, и для него вручную решить поставленные задачи, чтобы, во-первых, до начала программирования отработать алгоритмы обработки данных, а, во-вторых, знать, каких результатов следует ожидать при выполнении программы на ПК.
После этого можно переходить к составлению программы, используя образец программы (см. приложение 1), приведённый в конце текста практикума , и дополняя образец конкретными фрагментами обработки данных в пунктах реализации меню с помощью оператора CASE.
Вначале отлаживается работа меню с отладочной печатью вместо задач, реализующих пункты 1 – 4.
Затем пишутся фрагменты программы, соответствующие пунктам 1 – 4 (желательно в том же порядке) и по очереди (опять в том же порядке) включаются в программу (см. приложение 2). Это даст возможность отлаживать задачи постепенно, а не все сразу; следовательно, появляется возможность подключать к уже отлаженным правильным частям программы всякий раз новую, чтобы проще было определить, верно ли она работает.

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


Варианты

Задача 1

Задача 2



Какая сумма элементов массива больше – с первого до элемента с номером К или от элемента с номером К+1 до последнего.

Получить среднее арифметическое всех чётных элементов массива, стоящих на нечётных местах;



Из элементов исходного массива сформировать два новых массива, один из положительных элементов исходного массива, другой – из отрицательных;

Получить среднее арифметическое всех нечётных элементов массива, стоящих на чётных местах;



Из положительных элементов исходного массива извлечь квадратный корень, отрицательные элементы возвести в квадрат;

Получить среднее арифметическое всех положительных нечётных элементов массива;



Поменять в массиве местами максимальный и минимальный элементы;

Определить, что больше – сумма элементов, стоящих до максимального элемента, или сумма элементов, стоящих до минимального элемента;




Вывести на экран элементы, стоящие между максимальным и минимальным элементами

Получить сумму всех элементов массива, больших, чем заданное с клавиатуры число;



Определить, какой элемент – максимальный или минимальный – стоит ближе к концу массива;

Определить, что больше – сумма элементов, стоящих до минимального элемента, или сумма элементов, стоящих после минимального элемента;



Определить, какой элемент – максимальный или первый нулевой (по порядку расположения в массиве) – стоит ближе к началу массива;

Определить, что больше – сумма элементов, стоящих до максимального элемента, или сумма элементов, стоящих после максимального элемента;



Какая сумма элементов массива больше – с первого до элемента с номером К или от элемента с номером К+1 до последнего.

Получить произведение всех отрицательных элементов массива и определить, чётное или нечётное их число было перемножено;



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

Задать с клавиатуры число к и определить, сумма скольких элементов массива (по порядку следования) превысит это число



Из положительных элементов исходного массива сформировать новый массив;

Определить, что больше – сумма элементов, стоящих после максимального элемента, или сумма элементов, стоящих после минимального элемента;

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

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



Требования к выполнению и оформлению лабораторных работ

по дисциплине «Информатика и программирование»
Для выполнения заданий практикума необходимо разработать и отладить программу на языке Pascal.
Разработка проекта выполняется подгруппой из двух-трех студентов. Возможна и индивидуальная разработка задания.
После полной отладки работа должна быть документирована.
Оформление лабораторной работы
Отчет должен быть представлен и в виде печатного документа, и в электронном виде на носителе (CD).

Отчёт в печатном виде содержит:

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

  2. протокол защиты (это либо чистый лист с соответствующим заголовком, либо протокол может быть размещён на обороте титульного листа);

  3. постановка задачи;

  4. тестовые примеры (примеры исходных данных для отладки программы и результаты их обработки);

  5. скриншоты этапов выполнения программы;

  6. распечатка исходных текстов программных файлов, составляющих проект;

  7. список использованной литературы, включая Интернет-адреса.


Электронный вариант отчета (копия распечатанного отчёта) должен быть записан на CD.
Отчет должен быть скреплён и подшит в папку. Папка может быть либо типа «скоросшиватель», либо иметь разъёмные кольца для подшивки страниц, либо состоять из «файлов» (прозрачных пакетов). В отчете должен быть предусмотрен специальный лист с конвертом для вложения CD.
Отлаженный проект должен быть защищён студентами в составе подгруппы.
Защита лабораторной работы
Защита лабораторной работы производится полным составом подгруппы разработчиков в заданные сроки. В особых случаях допустима индивидуальная защита работы.
На защиту представляется

  • полностью отлаженный проект,

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

  • заранее созданные наборы тестовых данных для демонстрации работы программы.


Без этих компонентов защита не принимается.
В процессе защиты разработчики должны продемонстрировать работу полностью отлаженного проекта как на правильных, так и на некорректных данных, а также ответить на теоретические вопросы и на вопросы, касающиеся разработки своего программного продукта.
Защита оценивается в соответствии с требованиями балльно-рейтинговой системы (БРС). При защите оцениваются демонстрация работы программы, оформление, качество работы, степень владения студентами материалом тех тем, на базе которых выполнена работа (как в теории, так и на практике).
По результатам защиты каждый член подгруппы получает свою индивидуальную оценку за защиту.
После защиты работы второй экземпляр титульного листа с оценками остаётся у подгруппы и хранится до экзамена.

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


  1. для проекта необходимо создать отдельную папку;

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

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

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

ПРИЛОЖЕНИЕ 1

Форма титульного листа :

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ЭКОНОМИКИ, СТАТИСТИКИ И ИНФОРМАТИКИ
Кафедра Математического обеспечения

информационных систем и инноватики

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


по дисциплине "Информатика и программирование"

Вариант N ____




Исполнители

студенты группы



Оценки по БРС

в баллах


Защита в срок




































Руководитель: профессор Грибанов В.П.


Дата защиты «_____»__________2012_ г.


Москва 2012

ПРИЛОЖЕНИЕ 2
Основные принципы разработки меню

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

  • выбрать один из нескольких предложенных вариантов вычислений (последовательность вариантов выбирает сам пользователь),

  • повторить какой-либо вариант,

  • завершить программу (программе нужно сообщить подтверждение выхода,

  • кроме того программа должна блокировать неправильные действия пользователя при выборе вариантов действий и по возможности сообщать пользователю о его ошибках.


Рассмотрим процесс создания меню по шагам. Рассматривается фрагмент программы в развитии соответствующий.
Собственно текст меню (предложены 4 условных варианта действий и 5 - выход из программы с подтверждением):
writeln(' Заголовок меню');

writeln('1. Первый вариант действий');

writeln('2. Второй вариант действий ');

writeln('3. Третий вариант действий’);

writeln('4. Четвёртый вариант действий ');

writeln('5. Выход из программы');

writeln('Ваш выбор:');
readln (choice2);{ввод ответа пользователя

для анализа и выбора действий}
Далее необходимо определить и выполнить вариант вычислений в соответствии с выбором пользователя. Для этого применяется оператор множественного выбора CASE . . . OF и переменная CHOICE2:
case choice2 of
1: begin

{ Реализация первого варианта действий }

{ операторы }

. . .

End;
2: begin

{ Реализация второго варианта действий }

{ операторы }

. . .

End;
3: begin

{ Реализация третьего варианта действий }

{ операторы }

. . .

End;
4: begin

{Реализация четвёртого варианта действий }

{ операторы }

. . .

End;
5:begin

writeln ('Вы действительно хотите’,

закончить работу? (Y/N)');



readln (exit_ans);

if exit_ans = 'Y'

then . . . { Реализация выхода }

end;
end; { case }

Пока данный вариант показывает, во-первых, меню в «линейном виде», а нормальное меню работает до отказа пользователя от работы, во-вторых, в нём нет блокировок от некорректных действий пользователя.

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

var

exit_ans : string;

choice2 : integer;

F : boolean;
{Тело главной вызывающей программы}

begin

F := true; { Флаг управления циклом меню }

while (F = true) do

begin
writeln(' Заголовок меню');

writeln('1. Первый вариант действий');

writeln('2. Второй вариант действий ');

writeln('3. Третий вариант действий’);

writeln('4. Четвёртый вариант действий ');

writeln('5. Выход из программы');

writeln('Ваш выбор:');
readln (choice2);


case choice2 of
1: begin

{ Реализация первого варианта действий }

{ операторы }

. . .

End;
2: begin

{ Реализация второго варианта действий }

{ операторы }

. . .

End;
3: begin

{ Реализация третьего варианта действий }

{ операторы }

. . .

End;
4: begin

{Реализация четвёртого варианта действий }

{ операторы }

. . .

End;
5:begin

writeln ('Вы действительно хотите’,

закончить работу? (Y/N)');



readln (exit_ans);

if exit_ans = 'Y'

then F:=false;{флаг управления циклом }

end;
end; { case }
end; { While }
writeln ('Спасибо! До свидания!');

readln;

end.
Защиты по-прежнему нет, символ, введённый вместо цифры, приведёт к аварийному завершению программы.

Нет никакой реакции, если значение ответа вне интервала от 1 до 5 включительно. Эта защита реализуется фрагментом
Else writeln ('Incorrect menu point',choice2);

поставленным в операторе CASE, перед завершающим его END

. . .

5:begin

writeln ('Вы действительно хотите’,

закончить работу? (Y/N)');



readln (exit_ans);

if exit_ans = 'Y'

then F:=false;

end;
Else writeln ('Incorrect menu point',choice);
end; { case }

. . .
Способ блокировки ввода пользователем «нецифры».
Для решения этой задачи пользователь может ввести символ, чтобы избежать контроля типа информации при вводе. Тип данных для переменной ответа – STRING. Но далее происходит принудительная попытка преобразовать символьную информацию (тип данных, в котором вводится значение пункта меню) в цифровую, для чего используется функция VAL(…).
readln (choice2);
val (choice2, choice, code);

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

val (choice2, choice, code);

преобразующей введённую в символьной форме информацию (choice2) в число (choice). Параметр Code показывает результат преобразования: если значение параметра Code = 0, то преобразование прошло успешно, иначе необходимо информировать пользователя об ошибке и заставить повторить ввод. Вариант реализации этой защиты

repeat
writeln(' Заголовок меню');

writeln('1. Первый вариант действий');

writeln('2. Второй вариант действий ');

writeln('3. Третий вариант действий’);

writeln('4. Четвёртый вариант действий ');

writeln('5. Выход из программы');

writeln('Ваш выбор:');
readln (choice2);
val (choice2, choice, code);

if (code<>0)

then writeln ('Вы ввели не число! ’,

choice2,

Повторите ввод! ');


until code=0 ;
case choice of

1: begin

. . .


Усложнённое задание
Дополнительно сформировать счётчик повторений попыток ввода ( на 3-5 неудачных попыток). Когда заданный лимит попыток будет превзойдён, программа прекращает работу, уведомив пользователя о том, что он исчерпал свои возможности.
Заблокировать, не допускать выполнения пунктов обработки информации, если не была введена исходная информация! Использовать «флажок», чтобы знать, введена информация или ещё нет




PROGRAM Menu;{Окончательный вариант }


var

exit_ans : string;

choice, code : integer;

F, Fl : boolean;
{Тело главной вызывающей программы}

begin

F := true; { Флаг управления циклом меню }

while (F = true) do

begin
repeat

writeln(' Заголовок меню');

writeln('1. Первый вариант действий');

writeln('2. Второй вариант действий ');

writeln('3. Третий вариант действий’);

writeln('4. Четвёртый вариант действий ');

writeln('5. Выход из программы');

writeln('Ваш выбор:');
readln (choice2);
val (choice2, choice, code);

if (code<>0)

then writeln ('Вы ввели не число!’,

Повторите ввод! ');


until code=0 ;
case choice of
1: begin

{ Реализация первого варианта действий }

{ операторы }

. . .

End;
2: begin

{ Реализация второго варианта действий }

{ операторы }

. . .

End;
3: begin

{ Реализация третьего варианта действий }

{ операторы }

. . .

End;
4: begin

{Реализация четвёртого варианта действий }

{ операторы }

. . .

End;
5:begin

writeln ('Вы действительно хотите’,

закончить работу? (Y/N)');



readln (exit_ans);

if exit_ans = 'Y'

then F:=false;

end;

Else writeln ('Incorrect menu point',choice);

end; { case }
end; { While }
writeln ('Спасибо за работу! До свидания!');

readln;

end.


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

1: begin

{Реализация первого варианта действий }

Writeln (‘Выбран и работает 1 пункт меню’);

End;

и т.д.по порядку.
После отладки можно приступать к «наполнению» составных операторов в ветвях оператора CASE, по очереди реализуя соответствующие варианты вычислений – ввод исходной информации, варианты обработки, выход из программы.
repeat
writeln(' Заголовок меню');

writeln('1. Первый вариант действий');

writeln('2. Второй вариант действий ');

writeln('3. Третий вариант действий’);

writeln('4. Четвёртый вариант действий ');

writeln('5. Выход из программы');

writeln('Ваш выбор:');


После отладки этого варианта программы можно приступать к «наполнению» составных операторов в ветвях оператора CASE, по очереди реализуя соответствующие варианты вычислений – ввод исходной информации, варианты обработки, выход из программы. Например, если в 1 пункте меню предусмотрен ввод одномерного массива, то вид этого пункта в CASE может быть таким.
case choice of
1: begin

{ Ввод одномерного массива }

Writeln (‘Введите фактическое количество’,

элементов массива, <= 30’);



Readln (N);

For i:= 1 to N do

Begin

Writeln (‘ Введите элемент №: ‘,i);

Readln ( A [i] );

End;

End;

И так далее, по пунктам.


Расположение меню на экране
Данное описанное меню имеет недостаток, оно расположено в левом верхнем углу экрана.

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

Чтобы опустить текст по вертикали, надо добавлять перед операторами печати Writeln; - вывод пустой строки столько раз, сколько окажется нужным.
repeat


Writeln;

Writeln;

Writeln;

Writeln;

writeln(' Заголовок меню');

writeln(' 1.Первый вариант действий');

writeln(' 2.Второй вариант действий ');

writeln(' 3.Третий вариант действий’);

writeln(' 4.Четвертый вариант действий’);

writeln(' 5. Выход из программы');

writeln(' Ваш выбор:');
. . .


Усовершенствованным способом управления расположением меню является следующий:
gotoxy(30,2); textcolor (13);

writeln('Заголовок меню ');
gotoxy(22,5);textcolor(11);

writeln('1. Первый пункт. . . . . . ');
gotoxy(22,7);

writeln('2. Второй пункт . . . .');
gotoxy(22,9);

writeln('3. Третий пункт . . . .');
gotoxy(22,11);

writeln('4. Четвёртый пункт . . . . . .');
gotoxy(22,13);

writeln('5. Выход из программы. . . . . . . .');
gotoxy(27,17); textcolor(3);

writeln('Ваш выбор : ');
Здесь используется процедура установки курсора в нужную позицию экрана GOTOXY (номер строки, номер символа в строке), за ней установка цвета шрифта, далее собственно печать текста. Этот способ требует подключения стандартной библиотеки (модуля) управления экраном CRT:
Program Labr1;
Uses CRT;
Далее как обычно.


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




РЕКОМЕНДАЦИЯ. Все возможные усовершенствования вида и размещения меню выполняются только после того, как полностью отлажена вся программа!!!







izumzum.ru