Архив‎ > ‎

Математическое обеспечение, практикум по программированию (весна 2009)

144 гр, осень 2008
Если Вы обнаружили в тексте опечатку, содержательную ошибку, неточность или просто хотите что-то сообщить автору, можете оставить отзыв.

Требования

Критерии получения зачета

Задачи делятся на 3 категории (см. таблицу успеваемости).

  1. СО - сверхобязательные задания. Не выполнив их, зачет получить не получится. Сделав только их и побеседовав устно, зачет можно получить, но не раньше конца сессии. И при этом обязательные задачи останутся долгом на следующий семестр. Это экстренный вариант, и ориентироваться на него не стоит.
  2. О - обязательные задачи. Выполнив их и сверхобязательные, можно получить зачет немедленно.
  3. НО - необязательные. Выполнив их, можно набить руку, получить удовольствие от мирного труда и творчества, повысить самооценку.

Пример правильно оформленой и откомментированной программы

Успеваемость

Данные об успеваемости публикуются с устного согласия студентов группы. Для просмотра таблицы требуется браузер с поддержкой JavaScript. Без JavaScript таблицу можно посмотреть по ссылке.


Формулировки задач

  1. sqeq - написать сценарий на bash, решающий квадратное уравнение. Коэффициенты запрашиваются с консоли или передаются параметрами. Вычисления можно выполнять при помощи программы bc. Сценарий должен выводить либо вещественные корни, либо комплексные. Коэффициенты уравнения д.б. вещественными.
  2. make - написать программу, состоящую из модулей main.c, sort1.c, sort2.c с общим для двух последних заголовочным файлом sort.h, содержащим объявление функции void sort(int n, int a[]), сортирующей массив из n целых чисел. sort1 и sort2 должны содержать разные реализации функции sort, main должен содержать код для ввода длины массива, содержимого массива, вызова сортировки и выдачи элементов массива. В качестве результата должны строиться программы sort1 и sort2, для построения программ и очистки каталога должен использоваться makefile.
  3. javabench - написать программу, состоящую, по крайней мере, из двух классов (предка и наследника) и, кроме main, включающую в себя 1 статическую функцию, 1 виртуальную и переопределяющую её и одну final функцию, которую java-машина по косвенным признакам отнесет к "невиртуальным". Тела функций д.б. пустыми. Программа должна вывести для большого числа N, за сколько миллисекунд выполнились N вызовов статической функции, N вызовов виртуальной и N вызовов "невиртуальной". Для данной программы хорошим тоном будет создать отдельный класс Main, содержащий функцию main, т.к. она в равной степени не относится ни к классу-предку, ни к калссу-наследнику.
  4. javathreadbench - написать программу, запускающую функцию с длительными вычислениями, выдающую, сколько времени они заняли, а потом запускающую ту же самую функцию, но параллельно в двух потоках, ждущую, пока оба вызова завершатся и тоже выдающую занятое время. При возможности сравнить результаты на одно- и многопроцессорных (многоядерных) машинах.
  5. javasimples - реализовать класс, лениво считающий список простых чисел с функцией long getIth(int), возвращающей i-й элемент, а если он не вычислен, предварительно инициирующей его (и всех недостающих) вычисление. Реализовать второй класс, служащий для проверки функционирования первого (например, выдающий 10000-е простое число).
Comments