Смекни!
smekni.com

Основы программирования на языке Си (стр. 2 из 27)

основных можносчитатьзнаниеязыкапрограммирования, средыразработкиисис-

темных технологийбазовойоперационнойсистемы. Рассматриваемыйучебный курс

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

граммирования Си++ применительнокразработкепрограммвОСсемейства Win32.

При анализедоступныхвИнтернетзарубежныхкурсов, связанныхсобучени-

ем практическомупрограммированиюврамкахподготовкипоспециальностям Computer

Science, оказаласьзаметнаследующаятенденция: существуюткурсыпоизуче-

нию языкаСи++, курсыпоизучениюобъектно-ориентированногопрограммирования

на базе, чащевсего, Java иреже, Си++, ипрактическистандартныйкурс "Операцион-

ные системы", посвященныйструктуре Unix-совместимыхоперационныхсистем. Ха-

рактерной особенностьюзарубежныхуниверситетскихкурсовявляетсяотсутствие

разделов, посвященныхизучениюпрактическогопрограммированиявсредекоммер-

ческих ОСмассовогораспространения, впервуюочередь, ОС Windows. Сдругой

стороны, изучениепрограммированиядляэтихОСпредлагаетсярядом коммерческих

учебных организаций, носрокиобученияпорядка 3-5 днейпредполагаютобучение

уже грамотногоспециалиста, имеющегонавыкипрограммированиявкакой-либодру-

гой ОСилинадругомязыкепрограммирования.

В сегодняшнихроссийскихусловиях, неотрицаянеобходимостифундамен-

тальной подготовкиспециалистовповычислительнойтехникевобластитеорииалго-

ритмов иустройствавычислительныхипрограммныхсистем, можноотметитьполез-

ность изучения технологийпрактическогопрограммирования–использованиясред

разработки ибиблиотекпрограммированиядляОСмассовогораспространения. Этим

обусловлена направленностьрассматриваемогокурса–начальнаяподготовкапро-

граммистов наСи++ длясредыОС Windows.

Сложность обученияпрактическомупрограммированию, нанашвзгляд, за-

ключается втрудностисочетанияобученияабстрактнымпонятиямпрограммирова-

ния (таким, какструктурыданных, понятие алгоритма, основныекомпонентыалго-

ритмического языка, методологияпроектированияпрограммногообеспечения), с

изучением технологийисредпрограммированиянабазекакой-либоконкретнойОС.

Эти практическиетехнологиипребываютвпостоянномразвитии, поэтомуможет

быть сложновыделитькакие-либоконкретныесредстваразработкивкачествепред-

мета изучения.

Несмотря наширокоераспространениесредбыстройразработкиПрО (напри-

мер, Visual Basic, Inprise Builder и Inprise Delphi), выборихвкачествеучебнойсреды

представляется нецелесообразным, т.к. вэтихсредахкажущаясяпростотаразработки

ПрО касаетсятолькоформированиякаркасаприложенияизнабораготовыхкомпо-

нент, аустройствоэтихкомпонентилиизменениеструктурыкаркасатребуетсерьез-

ных знанийнетолькопоструктуребазовойОС, ноипосистемнойархитектуресреды

программирования.

Программа данногокурсапредназначенадляобучениялиц, имеющих навыки

пользовательской работынаперсональномкомпьютере, основнымпонятиямимето-

дам современногопрактическогопрограммирования. Предметомизучениякурсаяв-

ляется объектно-ориентированноепрограммирование наязыкеСи++ всредесовре-

менных 32-хразрядныхоперационныхсистемсемейства Windows. Программакурса

6

разбита на 4 части:

1) ВведениевпрограммированиенаязыкеСи++ (9 лекций)

2) Основыпрограммированиятрехмернойграфики (8 лекций)

3) Объектно-ориентированноепрограммированиенаязыкеСи++ (9 лекций)

4) Программированиедля Microsoft Windows сиспользованием Visual C++ и

библиотеки классов MFC (9 лекций)

На каждоелекционное занятиедолжнобытьпредусмотреноминимумодно

практическое (2 академическихчаса) иеще, всреднем, 4 часасамостоятельныхзаня-

тий. Т.о., наизучениекурсаотводится 72 лекционныхчаса, 72 практических (т.о., 144

аудиторных часа) и 144 часасамостоятельныхзанятий.

Методические материалыдлякурсасформированынаосновепримерно 10-ти

зарубежных изданий, частьизкоторыхпереведенанарусскийязык.

В первойчастикурсарассматриваютсяпроцедурныеосновы языка Си++. Они

включают всебяоформлениетекстапрограмм, правилазаписивыраженийнаСи++,

рассмотрение простыхтиповданныхиалгоритмическихконструкцийусловныхопе-

раторов, циклов_______идр. Вконцеэтойчастикурсаподробнорассматриваютсясоставные

типы данных. Приэтомделаютсязамечанияодостоинствахинедостаткахэтихтипов

данных, чтовпоследствииупрощаетвведениепонятийобъектно-ориентированного

программирования.

Вторая частькурсапосвященаприменениюязыкаСи++ дляпрограммирования

задач вконкретнойпредметнойобласти–трехмернойкомпьютернойграфики. Вка-

честве базовойграфическойбиблиотекивыбранабиблиотека OpenGL, являющаяся

открытым стандартомвданнойобласти. Изучениеэтойбиблиотекидемонстрирует

методику освоенияготовогоинструментария, сформированноговрезультатеприме-

нения методовструктурногопроектированиявконкретнойпредметнойобласти. По-

нятия, относящиесякмашиннойграфике, понятиекаркасаприложенияиобработки

событий иллюстрируютсяпростымипримерамиивдальнейшемиспользуютсяпри

изучении программированиявсреде Windows.

Третья частькурсаизучаетсяпослеусвоениястудентамипроцедурногопро-

граммирования. Основныевопросыобъектно-ориентированногопрограммирования

на Си++ излагаются напримерепрограммированияконсольныхприложений Win32.

Рассматриваются элементарныеприемыобъектно-ориентированногопроектирования

–проектированиенаосновераспределенияобязанностей, метод CRC-карточек.

В четвертойчастикурсаизучаетсяархитектураоперационныхсистемсемейст-

ва Windows иметодыпрограммированиядляэтихОС. Примернотретьэтойчастипо-

священа рассмотрениюосновныхкомпонентоперационныхсистем Windows 9x/NT,

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

этих ОСнаязыкеСи++ науровне Win32 API. Воставшейсячастирассматриваются

приемы программированиядляОС Windows набазебиблиотекиклассов MFC. Эта

библиотека классовявляетсяпромышленнымстандартом, упрощающимразработку

программ ииспользование Win32 API. Подробноописываетсякаркасприложения

MFC, основныеклассыэтойбиблиотеки, приемыиспользованияэтихклассоввсоб-

ственных программах, архитектура однодокументныхприложений "документ/вид".

После изучениякурсастудентполучаетдостаточнополноепредставлениео

содержании современногообъектно-ориентированногопрограммирования, обуст-

ройстве современныхоперационныхсистем Win32 иособытийно-управляемомпро-

граммировании. Напрактическихзанятияхвырабатываютсянавыкипрограммирова-

ния наСи++ винтегрированнойсредеразработки Microsoft Visual C++ 5.0.

7

ЛЕКЦИЯ 1. Основы Си++

1. Несколько замечаний о назначении программирования

Программирование –этотехническаятворческаядеятельность, целькоторой

заключается врешенииважныхдлячеловеказадачиливыполненииопределенных

действий спомощьюкомпьютера. Нарис. 1 представленаидеализированнаясхема

решения типичнойзадачипрограммирования.

Подробное описание

задачи илинеобходимых

действий КОМПЬЮТЕР

Решение задачиили

выполнение действий

Рис. 1. Схема решениязадачиспомощьюкомпьютера.

В рамкахтакойсхемынеобходимымикомпонентамикомпьютераявляются

центральный процессор, устройстваввода/выводаипамять (рис. 2).

Рис. 2. Основные компонентыкомпьютера.

Конечно, вдействительностиделообстоитнетакпросто, какпоказанона

рис. 1. Например, "подробноеописание (спецификация) задачи" наестественномязы-

ке длякомпьютеранегодится (внастоящеевремя). Болеетого, длярешениязадачина

компьютере недостаточнополногоописаниязадачи, необходимотакжеснабдить

компьютер информациейотом, какименноследуетрешатьзадачу–т.е. составитьал-

горитм. Дляописанияалгоритмоврешениязадачилиалгоритмоввыполнениякаких-

либо действий (например, управлениероботом-манипулятором) спомощьюкомпью-

тера применяютсяязыкипрограммирования.

На рис. 3 показанаболееподробнаясхемарешениязадачиспомощьюкомпью-

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

люстрация этойсхемынаконкретномпримереприведенавтаблице 1.

Существует большоеколичестворазличныхязыковпрограммированияимного

способов ихклассификации. Например, "языкамивысокогоуровня" считаютсяте

языки, синтаксискоторыхсравнительно близоккестественномуязыку, втовремякак

синтаксис "низкоуровневых" языковсодержитмноготехническихподробностей, свя-

занных сустройствомкомпьютераипроцессора.

8

Рис. 3. Схема решениязадачинакомпьютересиспользованиемязыкапрограммирования.

Таблица 1. Основные этапырешениязадачипопроверкечисланапростоту.

Спецификация задачи Требуется определить, являетсялиданноечислопростым.

Алгоритм Ввести x

Для каждого целого числа z из диапазоне от 1 до x

Если остаток от деления x на z равен 0, то

вывести сообщение "число не простое" и закончить работу

Если такого числа z не найдено, то

вывести сообщение "число простое" и закончить работу

Описание алгоритма на

языке высокого уровня

#include <iostream.h>

int main()

{

int x;

cout << "Введите число:&bsol;n";

cin >> x;

for (int z=2; z<x; z++)

if (x % z == 0)

{

cout << "Это не простое число.&bsol;n";

return 0;

}

cout << "Это простое число.&bsol;n";

return 0;

}

Объектный код (внут-

ренний код конкретного

компьютера)

Двоичные командыпроцессора (частично)

Исполняемый файл для

конкретного компьютера

Двоичные командыпроцессора (полностью)

"Императивные" или "процедурные" языкипозволяютпрограммистуописать, в

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