Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
Познать источники страхового права означает вскрыть дей­ствительные причины и ближайшие основания его возникновения, изменения и развития. В этом кон­...полностью>>
'Документ'
а) Для каждого хронометража и типа цены (в том числе и заданных вручную) введен Pay duration, который будет использован приложением для автоматическог...полностью>>
'Пояснительная записка'
Значение физики в школьном образовании определяется ролью физики как науки в жизни современного общества, ее влиянием на темпы развития научно-техниче...полностью>>
'Пояснительная записка'
Город Сочи – курорт федерального значения на территории Краснодарского края Российской Федерации, крупнейший в России бальнеологический и климатически...полностью>>

Главная > Документ

Сохрани ссылку в одной из сетей:
Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

В. Биллиг

Алгоритмы и задачи

(Для программирования на языке C#)

Введение

Данный задачник дополняет учебник автора «Основы программирования на C#». При написании учебника я ориентировался на тех, кто знает основные алгоритмы, знаком со структурами данных и умеет программировать на каком либо языке. Главной целью ставилось не столько обучение новому языку программирования C#, (хотя он подробно рассмотрен в учебнике) сколько обучение основам объектно-ориентированного программирования, освоение технологии программирования в классах на языке, специально спроектированном для поддержки этой технологии работы.

Случилось так, что мне пришлось учить программированию тех, кто только начал постигать азы программирования, тех, для кого нахождение максимума и сортировка массива являлись трудными задачами. К тому времени ответ на вопрос, можно ли начинать обучение с объектных языков и объектной технологии, лично для меня был решен. Мой ответ – да, можно и нужно.

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

В данном контексте понятие языка включает и среду программирования, в которую погружен язык. Поэтому неявно подразумевается, что разработка программ на C# ведется в среде Visual Studio .Net с использованием возможностей каркаса Framework .Net. Но на начальных этапах обучения о среде программирования следует говорить как можно меньше. Современные среды программирования тем и хороши, что напоминают официантов в хорошем ресторане – прекрасное обслуживание, не обращающее на себя внимания.

Многие годы в обучении лидирующую роль первого языка играл язык Паскаль. Он и сегодня сохраняет свои позиции, хотя и появились другие претенденты, среди которых назову двух – Java и C#.

Правильно устроенный программистский мир является многоязычным миром. Поэтому, не настаивая на исключительности, рассмотрим, почему C# может претендовать на роль первого языка программирования. Отмечу следующие его достоинства:

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

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

  • предоставляет большой набор образцов программирования, представленных классами библиотеки Framework .Net.

На начальном этапе задачи обучения связаны не столько с языком, сколько с выработкой алгоритмического мышления. Эти задачи многообразны и достаточно сложны. Требуется понимание новых понятий: переменных и типов данных. Требуется умение описывать процесс вычислений ограниченным набором управляющих структур – выбора, циклов, рекурсии. Требуется знание основ представления данных и классических алгоритмов. И нужно не только знать, но и уметь. Нужно уметь писать программы! И с первых шагов программирования нельзя забывать об эффективности и корректности разрабатываемых программ.

Алгоритмическая мысль, как и всякая мысль, требует оформления. Роль слова, роль языка немаловажна. Язык программирования является важной частью начального процесса обучения программированию. С чего начинается обучение ребенка – скажи «мама».

Работая над задачником, я ориентировался на возможность его применения вместе с учебником для обучения началам программирования при выборе языка C# в качестве первого языка программирования. Методические указания к задачнику должны помочь начинающим в понимании материала учебника, ориентированного на подготовленного слушателя. Некоторые разделы учебника при первом чтении могут быть опущены.

Во многом от лектора зависит, как скоро и в какой мере вводить объектный стиль программирования. В методических указаниях к задачнику рассматриваются различные модели программирования, все из которых используют язык C# и среду Visual Studio. И на C# можно писать программы, ничего не зная о классах и объектах.

В заключение этого краткого введения хочу принести благодарности моим коллегам Михаилу Дехтярю и Сергею Архипову. Они прочитали отдельные разделы этого текста и сделали весьма полезные замечания. Вся вина за оставшиеся ошибки лежит целиком на мне. Моя особая благодарность Евгению Веселову, работающему теперь в корпорации Майкрософт. Он прочитал одну из глав задачника и сделал ряд важных замечаний по стилю программирования. Я планирую провести ревизию кода, представленного в задачнике, и добавить специальный раздел, посвященный стилю программирования.

Глава 1 Начала

Задачи этой главы для тех, кто не имеет достаточного опыта в программировании. Они должны помочь преодолеть психологический рубеж создания первых программ. Они полезны и тем, кто уже умеет программировать, но не писал программы на C# и не работал в среде Visual Studio 2005.

Методические указания к главе 1

Модели программ

Что должны знать и что должны уметь студенты, осваивающие начала программирования? Вот возможный перечень основных тем:

  • переменная и ее обобщение – объект;

  • тип переменных и его обобщение – класс;

  • встроенные типы (классы);

  • процесс вычислений, как последовательное выполнение операторов языка;

  • ввод и вывод данных;

  • ветвление процесса вычислений – альтернатива и разбор случаев;

  • циклические вычисления;

  • модульность построения программ;

  • процедуры и функции, как простейшие виды программных модулей;

  • строковый тип и работа с текстами;

  • массивы как структуры данных;

  • рекуррентные вычисления;

  • память и время – два основных ресурса, используемых программами;

  • корректность программ;

  • основы отладки программ и инструментарий среды разработки Visual Studio .Net ;

  • Windows-приложения, визуальное программирование, управляемое событиями;

  • формы и основные элементы управления – командные кнопки, текстовые окна, списки.

Какой лучший способ проверки того, что все эти понятия действительно освоены? Недостаточно знания ответов на все эти вопросы. Необходимо умение писать качественные программы, включающие процедуры и функции. С объектной точки освоение начал программирования означает умение реализовать достаточно содержательный класс. Если задачи из раздела «Проекты» первых глав задачника не вызывают трудностей, то можно смело считать, что начала программирования освоены.

Что можно не требовать от студентов, осваивающих начала программирования? Можно не требовать умения создавать программную систему, представляющую множество классов, связанных теми или иными отношениями. Более того, вначале можно не требовать создания собственного класса, - можно исходить из более простых моделей программирования, вполне реализуемых в рамках программирования на C# в среде Visual Studio .Net.

Модель 60-х годов – модель языка Pascal и структурного программирования

Консольное приложение, строящееся по умолчанию, позволяет полностью и без проблем реализовать эту модель. В основе этой модели лежит понятие выполняемой программы, состоящей из описания переменных программы и исполняемого блока операторов. Управление процессом вычислений такой программы определяется ее текстом и означает последовательное выполнение операторов исполняемого блока согласно порядку их следования в тексте программы. Описания переменных – это декларативная часть выполняемой программы, служащая для определения тех объектов, над которыми выполняются вычисления.

В консольном приложении роль выполняемой программы играет процедура Main. На начальных этапах у программиста нет необходимости создавать собственные классы. Все, что от него требуется, – это добавить в процедуру Main объявления переменных встроенных типов и записать исполняемый блок – последовательность выполняемых операторов. В зависимости от предпочтений преподавателя можно требовать, чтобы все объявления переменных были собраны в начале программы и предшествовали исполняемому блоку, как это требовалось в Pascal-программах 60-х годов.

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

Вот как может выглядеть решение одной из задач первой главы задачника, полностью отвечающее этой модели:

using System;

namespace CH2_Example1

{

///

/// Класс, содержащий выполняемую программу

///

class Class1

{

///

/// Выполняемая программа!

/// нахождение корней квадратного уравнения:

/// ax^2 +bx +c =0

///

[STAThread]

static void Main(string[] args)

{

//объявление переменных

double a,b,c; //коэффициенты уравнения

double x1, x2; // корни уравнения

double d; //дискриминант уравнения

string mes; //сообщение о результатах вычислений

string init; //строка ввода

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

Console.WriteLine("Введите три вещественных числа - a, b, c ");

init = Console.ReadLine();

a = Convert.ToDouble(init);

init = Console.ReadLine();

b = Convert.ToDouble(init);

init = Console.ReadLine();

c = Convert.ToDouble(init);

//вычисления и вывод результатов

d = b*b -4*a*c;

if(d>0)

{

mes="Уравнение имеет два вещественных корня!";

Console.WriteLine(mes);

x1 = (-b + Math.Sqrt(d))/(2*a);

x2 = (-b - Math.Sqrt(d))/(2*a);

Console.WriteLine("Корни уравнения: x1={0}, x2={1}",

x1,x2);

}

else if(d==0)

{

mes="Уравнение имеет кратный корень!";

Console.WriteLine(mes);

x1 = -b/(2*a); x2 = -b/(2*a);

Console.WriteLine("Кратный корень уравнения: x={0}",x1);

}

else

{

mes="Уравнение не имеет вещественных корней!";

Console.WriteLine(mes);

}



Похожие документы:

  1. Дискурс и речевой акт в новой онтологии 12 4 Вероятностные зависимости и правила диалога 13

    Документ
    ... С другой стороны, М. Биллиг отмечает универ­сальность анкоринга: « ... формальных критериев, допускающих алгоритми­ческую верификацию. Автономности ... Г. М. Диалог в процессе совместного решения мыслительных задач // Проблема общения в психологии. — М., ...
  2. Учебное пособие можно использовать в других учебных заведениях

    Литература
    ... . – М.: Русская редакция, 1998 г Биллиг В.А. VBA в Office 2000. Офисное программирование ... различные способы его вызова. Алгоритм выполнения работы Создание текстового ... команд для многих рутинных задач. Вместо повторения последовательности команд ...
  3. Методика системного анализа

    Документ
    ... . Управление в технических системах. Задачи стабилизации и слежения. Понятие о ... Рекурсивные функции и алгоритмы. Примеры рекурсивных алгоритмов и программ. Основные ... Рекомендуемая литература: Основная: 1. Биллиг В.А. Основы программирования на C#: ...
  4. Программа учебной дисциплины основы программирования и баз данных специальность среднего профессионального образования

    Программа
    ... ОК 8. Самостоятельно определять задачи профессионального и личностного развития ... Практические занятия 2 2. Составление алгоритма работы программы с использованием ветвления ... «Академия», 2007. –432 с. Биллиг В.А. Основы объектного программирования на C# ...
  5. Шихирев П. Н. Современная социальная психология Москва

    Реферат
    ... университетские архивы. Однако накатанный алгоритм лабораторного эксперимента оказывается идеальным ... и межгрупповые отношения> М. Биллига [1976], цитированная выше < ... социальной психологии эти задачи трансформировались в задачи критики идеологических ...

Другие похожие документы..