Технология программирования

Цели и задачи дисциплины "Технология программирования". Программные средства ПК. Состав системы программирования и элементы языка. Введение в систему программирования и операторы языка Си. Организация работы с файлами. Особенности программирования на С++.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 07.12.2011
Размер файла 126,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Цикл do-while

В Си имеется еще один вид цикла, do-while, в котором эта проверка делается внизу после каждого прохождения тела цикла, т. е. после того, как тело выполнится хотя бы один раз. Цикл do-while имеет следующий синтаксис:

do

инструкция

while (выражение);

Сначала выполняется инструкция, затем вычисляется выражение. Если оно истинно, то инструкция выполняется снова и т. д. Когда выражение становится ложным, цикл заканчивает работу. Цикл do-while эквивалентен циклу repeat-until в Паскале с той лишь разницей, что в первом случае указывается условие продолжения цикла, а во втором -- условие его окончания.

Инструкция for

for (выр1; выр2; выр3)

инструкция(тело цикла)

Например, начало цикла, обрабатывающего первые n элементов массива, имеет следующий вид:

for (i = 0; i < n; i++)

...

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

i = 0

выполняется один раз перед тем, как войти в цикл. Второе - проверка условия продолжения цикла

i < n

Условие вычисляется, и если оно истинно, выполняется тело цикла. Затем осуществляется приращение шага:

i++ // i= i+1;

и условие вычисляется снова. Цикл заканчивается, когда условие становится ложным.

Контрольные вопросы:

1. Формат оператора цикла с предусловием.

2. Формат оператора цикла с предусловием

3. Каким образом выполняется оператор for?

Лекция №9

Тема: Функции

План:

1. Функции ввода и вывода. Описание, определение функции.

2. Примеры функций. Объявление и определение функций

3. Возвращаемое значение. Параметры функции. Рекурсивные функции.

4. Функция main(). Функции стандартной библиотеки.

Функции представляют собой центральный вопрос программирования на Turbo C++. Такие языки программирования, как Паскаль, делают различие между процедурами и функциями. В Turbo C++ функции играют обе роли.

Объявление и определение функций

Функция -- это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие. Функция может принимать параметры и возвращать значение.

Любая программа на C++ состоит из функций, одна из которых должна иметь имя main (с нее начинается выполнение программы). Функция начинает выполняться в момент вызова. Любая функция должна быть объявлена и определена. Как и для других величин, объявлений может быть несколько, а определение только одно. Объявление функции должно находиться в тексте раньше ее вызова. Для того, чтобы компилятор мог осуществить проверку правильности вызова.

Объявление функции (прототип, заголовок, сигнатура) задает ее имя, тип возвращаемого значения и список передаваемых параметров.

Определение функции содержит, кроме объявления, тело функции, представляющее собой последовательность операторов и описаний в фигурных скобках:

[ класс ] тип имя ([ список_параметров ])[throw ( исключения )] { тело функции }

Возвращаемое значение

Механизм возврата из функции в вызвавшую ее функцию реализуется оператором

return [ выражение ];

Функция может содержать несколько операторов return (это определяется потребностями алгоритма). Если функция описана как void, выражение не указывается. Оператор return можно опускать для функции типа void, если возврат из нее происходит перед закрывающей фигурной скобкой, и для функции main. В этой книге для экономии места оператор return в функции main не указан, поэтому при компиляции примеров выдается предупреждение. Выражение, указанное после return, неявно преобразуется к типу возвращаемого функцией значения и передается в точку вызова функции.

Параметры функции

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

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

Рекурсивные функции

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

Классическим примером рекурсивной функции является вычисление факториала (это не означает, что факториал следует вычислять именно так). Для того чтобы получить значение факториала числа n, требуется умножить на n факториал числа (п-1). Известно также, что 0!=1 и 1!=1.

Рекурсивные функции чаще всего применяют для компактной реализации рекурсивных алгоритмов, а также для работы со структурами данных, описанными рекурсивно, например, с двоичными деревьями. Любую рекурсивную функцию можно реализовать без применения рекурсии, для этого программист должен обеспечить хранение всех необходимых данных самостоятельно. Достоинством рекурсии является компактная запись, а недостатками -- расход времени и памяти на повторные вызовы функции и передачу ей копий параметров, и, главное, опасность переполнения стека.

Функция main()

Функция, которой передается управление после запуска программы, должна иметь имя main. Она может возвращать значение в вызвавшую систему и принимать параметры из внешнего окружения. Возвращаемое значение должно быть целого типа. При запуске программы параметры разделяются пробелами. Имена параметров в программе могут быть любыми, но принято использовать argc и argv. Первый параметр (argc) определяет количество параметров, передаваемых функции, включая имя самой программы, второй параметр (argv) является указателем на массив указателей типа char*. Каждый элемент массива содержит указатель на отдельный параметр командной строки, хранящийся в виде С-строки, оканчивающейся нуль-символом. Первый элемент массива (argv[0]) ссылается на полное имя запускаемого на выполнение файла, следующий (argv[l]) указывает на первый параметр, argv[2] -- на второй параметр, и так далее. Параметр argv[argc] должен быть равен 0.

Если функция main () ничего не возвращает, вызвавшая система получит значение, означающее успешное завершение. Ненулевое значение означает аварийное завершение. Оператор возврата из mainO можно опускать.

Функции стандартной библиотеки

Любая программа на C++ содержит обращения к стандартной библиотеке, в которой находятся определения типов, констант, макросов, функций и классов. Чтобы использовать их в программе, требуется с помощью директивы #iinclude включить в исходный текст программы заголовочные файлы, в которых находятся соответствующие объявления. В программах на C++ могут использоваться функции, унаследованные от библиотеки С.

Функции библиотеки можно разбить на группы по их назначению: ввод/вывод, обработка строк, математические функции, работа с динамической памятью, поиск и сортировка и т.д.

Контрольные вопросы:

1. Дайте определение функции.

2. Назовите примеры функций.

3. Рекурсивные функции.

Лекция №10

Тема: Указатели и адресная арифметика

План:

1. Организация памяти

2. Адресация

Для большинства типов T T* является типом арифметический указатель на T. То есть, в переменной типа T* может храниться адрес объекта типа T.

Указатели делятся на две основные категории: указатели объектов и указатели функций. Указатели обоихтипов представляют собой специальные объекты, хранящие адреса памяти.

Два этиклассауказателей имеют отличные друг от друга свойства, назначения и правила манипулирования, хотя и те и другие разделяют между собойопределенные операцииTurbo C++. Вообще говоря, указатели функций используются для доступа к функциям и для передачиодних функцийдругим в качествеаргументов; выполнение арифметических операцийс указателямифункций не допускается. И напротив, указателиобъектов при сканировании массивов или более сложных структур памяти регулярно инкрементируются и декрементируются.

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

Объявления указателей

Объявление указателя всегда должно устанавливать его на некоторый конкретный тип, даже если этот тип void (что фактическиозначает указатель на любой тип). Однако, уже после объявления указатель обычно может быть переназначен на объект другого типа. Turbo C++ позволяет переназначать указатели без приведения в соответствие типа, но компилятор выдаст при этом предупреждение, если только первоначально указатель не был объявлен с типом void. В С (но не в С++) вы можете назначить указатель void* на указатель, не имеющий тип void*.

Если type есть любой предопределенный или определенный пользователем тип, включая void, то объявление

type *ptr;/* Опасно - неинициализированный указатель */

объявит ptr как "указатель на тип type". К объявленному таким образомобъекту ptr применимы все правила, связанные с контекстом, продолжительностью и видимостью.

Указатель со значением null это адрес, гарантированно отличный от любого допустимого указателя, используемого в программе. Присвоение указателю целой константы 0 присваивает указателю значение null.

Указатель типа "указатель на void" не следует путать с нулевым (null) указателем.

Арифметические операции с указателями

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

Арифметические операции с указателями ограничены сложением, вычитанием и сравнением. Арифметические операции с указателями объектов типа "указатель на тип type" автоматически учитывают размер этоготипа, то есть число байт, необходимое для хранения в памяти объекта данного типа. При выполнении арифметических операций с указателями предполагается, что указатель указывает на массив объектов. Таким образом, если указатель объявлен как указатель на type, то прибавление к нему целочисленного значения перемещает указатель на соответствующее количество объектов type. Если type имеет размер 10 байтов, то прибавление целого числа 5 к указателю этого типа перемещает указатель в памяти на 50 байт. Разность представляет собой число элементов массива, разделяющих два значения указателей. Например, если ptr1 указывает на третий элемент массива, а ptr2 на десятый, то результатом выполнения вычитания ptr2 - ptr1 будет 7э

Контрольные вопросы:

1. Объясните организацию памяти и адресацию.

2. Расскажите про указатели.

Лекция №11

Тема: Массивы

План:

1. Одномерные массивы и указатели.

2. Двумерные массивы.

3. Использование указателей для двумерных массивов.

Массивы - это группа элементов одинакового типа (double, float, int и т.п.). Из объявления массива компилятор должен получить информацию о типе элементов массива и их количестве. Объявление массива имеет два формата:

спецификатор-типа описатель [константное - выражение];

спецификатор-типа описатель [ ];

Описатель - это идентификатор массива .

Спецификатор-типа задает тип элементов объявляемого массива. Элементами массива не могут быть функции и элементы типа void.

Константное-выражение в квадратных скобках задает количество элементов массива. Константное-выражение при объявлении массива может быть опущено в следующих случаях:

- при объявлении массив инициализируется,

- массив объявлен как формальный параметр функции,

- массив объявлен как ссылка на массив, явно определенный в другом файле.

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

Каждое константное-выражение в квадратных скобках определяет число элементов по данному измерению массива, так что объявление двухмерного массива содержит два константных-выражения, трехмерного - три и т.д. Отметим, что в языке СИ первый элемент массива имеет индекс равный 0.

Примеры:

int a[2][3]; /* представлено в виде матрицы

a[0][0] a[0][1] a[0][2]

a[1][0] a[1][1] a[1][2] */

double b[10]; /* вектор из 10 элементов имеющих тип double */

int w[3][3] = { { 2, 3, 4 },

{ 3, 4, 8 },

{ 1, 0, 9 } };

В последнем примере объявлен массив w[3][3]. Списки, выделенные в фигурные скобки, соответствуют строкам массива, в случае отсутствия скобок инициализация будет выполнена неправильно.

В языке СИ можно использовать сечения массива, как и в других языках высокого уровня (PL1 и т.п.), однако на использование сечений накладывается ряд ограничений. Сечения формируются вследствие опускания одной или нескольких пар квадратных скобок. Пары квадратных скобок можно отбрасывать только справа налево и строго последовательно. Сечения массивов используются при организации вычислительного процесса в функциях языка СИ, разрабатываемых пользователем.

Примеры:

int s[2][3];

Если при обращении к некоторой функции написать s[0], то будет передаваться нулевая строка массива s.

int b[2][3][4];

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

Пример объявления символьного массива.

char str[] = "объявление символьного массива";

Следует учитывать, что в символьном литерале находится на один элемент больше, так как последний из элементов является управляющей последовательностью '\0'.

Контрольные вопросы:

1. Расскажите про одномерные массивы и указатели.

2. Что такое двумерные массивы?

3. Понятие массива.

4. Как можно нумеровать элементы массива?

5. Каким образом происходит сортировка массива?

Лекция №12

Тема: Структуры данных

План:

1. Описание структур.

2. Указатели и структуры данных.

3. Обработка строк.

Структуры (struct)

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

Традиционный пример структуры - строка платежной ведомости. Она содержит такие сведения о служащем, как его полное имя, адрес, номер карточки социального страхования, зарплата и т. д. Некоторые из этих характеристик сами могут быть структурами: например, полное имя состоит из нескольких компонент (фамилии, имени и отчества); аналогично адрес, и даже зарплата. Другой пример (более типичный для Си) - из области графики: точка есть пара координат, прямоугольник есть пара точек и т. д.

Объявление структуры начинается с ключевого слова struct и содержит список объявлений, заключенный в фигурные скобки. За словом struct может следовать имя, называемое тегом структуры (от английского слова tag -- ярлык, этикетка. -- Примеч. пер.), point в нашем случае. Тег дает название структуре данного вида и далее может служить кратким обозначением той части объявления, которая заключена в фигурные скобки.

Перечисленные в структуре переменные называются элементами (members - В некоторых изданиях, в том числе во 2-м издании на русским языке этой книги structure members переводится как члены структуры. - Примеч. ред). Имена элементов и тегов без каких-либо коллизий могут совпадать с именами обычных переменных (т. е. не элементов), так как они всегда различимы по контексту. Более того, одни и те же имена элементов могут встречаться в разных структурах, хотя, если следовать хорошему стилю программирования, лучше одинаковые имена давать только близким по смыслу объектам.

Перечисления(enum)

При написании программ часто возникает потребность определить несколько именованных констант, для которых требуется, чтобы все они имели различные значения (при этом конкретные значения могут быть не важны). Для этого удобно воспользоваться перечисляемым типом данных, все возможные значения которого задаются списком целочисленных констант. Формат:

enum [ имя_типа ] { список констант };

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

Контрольные вопросы:

1. Дайте определение структуре.

2. Расскажите про указатели и структуры данных.

3. Как производится обработка строк?

Лекция №13

Тема: Строки

План:

1. Обработка строк

Приступая к решению задач этого раздела, следует вспомнить, что:

1. каждому символу соответствует число -- код символа;

2. в Cи строка -- это массив символов;

3. последним символом строки обязательно должен быть нуль-символ, код которого равен 0, и который в тексте программы изображается так: ' \ 0 ';

4. сообщения или подсказки, используемые в программе, удобно представить как массив указателей на строки и инициализировать массив, задать сообщения в инструкции объявления массива:

5. char *mes[] ={"Сообщение 1","Сообщение 2", ... , "Сообщение"};

6. если вводимая во время работы программы строка содержит пробелы, то функция scanf вводит только часть строки до первого пробела, а функция gers -- всю строку, в том числе и соответствующий клавише <Enter> символ ' \п'.

Приведем примеры решения задач на строки:

Задача 165

// Приветствие #include <stdio.h> #include <conio.h> void main() {

char name[15]; // имя

char fam[20]; // фамилия

printfC'KaK Вас зовут?\п");

printf("Введите свое имя и фамилию,");

printf("затем нажмите <Enter>") ;

printf("-> ");

scanf("%s", &name);

scanf("%s", sfam);

// функция scanf читает из буфера клавиатуры символы

//до разделителя - пробела

printf("Здравствуйте, Is %s!\n", name, f am) ;

printf("\пДля завершения нажмите <Enter>"); getch()

Задача 166

// Приветствие (посимвольный ввод строки) #include <stdio.h> #include <conio.h> void main()

char name[40]; // имя и отчество пользователя char ch; int i;

printfC'KaK Вас зовут?\п");

printf("(введите свое имя, отчество и нажмите <Enter>"); printf("-> "); i = 0;

while ((ch=getch()) != 13 && i < 40) // пока не нажата

/¦/ клавиша <Enter>

142 h); name[i++] - ch; }

namefi] = '\0'; printf("ХпЗдравствуйте, %s!\n", name); И

И printf("\пДля завершения нажмите <Enter>"); I getch О; И

Задача 167

II // Вычисляет длину строки HI #include <stdio.h> #include <conio.h> void main()

III { char st[80]; // введенная строка int i = 0; // длина строки IB

1 II HI puts("ХпВведите строку и нажмите <Enter>"); Н printf("->"); 111 gets(st); while( st[i++])

III

¦ HI printf("Длина введенной строки: %i\n", i) ; printf("Для завершения работы нажмите <Enter>"); 8^o,

Контрольные вопросы:

1. Какое число соответствует каждому символу?

2. Как выполняется обработка строк?

Лекция №14

Тема: Файлы

План:

1. Описание структуры файлов

2. Организация работы с файлами

Обычная СИ-программа представляет собой определение функции main, которая для выполнения необходимых действий вызывает другие функции. Приведенные выше примеры программ представляли собой один исходный файл, содержащий все необходимые для выполнения программы функции. Связь между функциями осуществлялась по данным посредством передачи параметров и возврата значений функций. Но компилятор языка СИ позволяет также разбить программу на несколько отдельных частей (исходных файлов), оттранслировать каждую часть отдельно, и затем объединить все части в один выполняемый файл при помощи редактора связей.

При такой структуре исходной программы функции, находящиеся в разных исходных файлах могут использовать глобальные внешние переменные. Все функции в языке Си по определению внешние и всегда доступны из любых файлов. Например, если программа состоит из двух исходных файлов, как показано на рис.2., то функция main может вызывать любую из трех функций fun1, fun2, fun3, а каждая из этих функций может вызывать любую другую.

main ()

{ ...

}

fun1()

{ ...

} . fun2()

{ ...

}

fun3()

{ ...

}

file1.c file2.c

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

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

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

Все функции в СИ имеют глобальное время жизни и существуют в течение всего времени выполнения программы.

Область видимости - это часть текста программы, в которой может быть использован данный объект. Объект считается видимым в блоке или в исходном файле, если в этом блоке или файле известны имя и тип объекта. Объект может быть видимым в пределах блока, исходного файла или во всех исходных файлах, образующих программу. Это зависит от того, на каком уровне объявлен объект: на внутреннем, т.е. внутри некоторого блока, или на внешнем, т.е. вне всех блоков.

Если объект объявлен внутри блока, то он видим в этом блоке, и во всех внутренних блоках. Если объект объявлен на внешнем уровне, то он видим от точки его объявления до конца данного исходного файла.

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

Контрольные вопросы:

1. Что представляет собой обычная СИ-программа?

2. Дайте определение термину «время жизни».

3. Перечислите графические функции библиотеки Turbo C++.

Лекция №15

Тема: Работа с окнами. Графика

План:

1. Графические функции

2. Черчение

3. Заполнение

Turbo C++ поставляется с полной библиотекой графических функций, позволяющих создание экранных графиков и диаграмм. Рабочий режим экрана определяется, когда ваша программа вызывает одну из функций определения режима (textmode, Initgraph или setgraphmode).

- В графическом режиме экран компьютера делится на пиксели; каждый пиксель представляет собой отображение на экране одной точки. Число пикселей на экране (т.е. его разрешающая способность) зависит от типа подключенного к вашей системе видео адаптера и режима, в который установлен этот адаптер. Для получения на экране графических изображений Turbo C++ предоставляет библиотеку графических функций: вы можете создавать на экране линии и формы, заполненные шаблонами замкнутые области, а также управлять цветом каждого пикселя.

В текстовом режиме позиция верхнего левого угла экрана определяется координатами (1,1),где x-координата растет слева -направо, а y-координата растет сверху-вниз. В графическом режиме позиция верхнего левого угла определяется координатами (0,0), с теми же направления возрастания координат.

В графическом режиме вы также можете определить некоторую прямоугольнуюобласть экрана PC; эта область называется графическим окном. Когда ваша графическаяпрограмма выполняет вывод рисунков и т.д., графическое окно действует каквиртуальный экран. Остальная часть экрана (вне графического окна) остается без изменений.

За исключением функций определения текстовых играфических окон,все остальныефункции, как текстового, так и графического режимов, даются в локальных координатах активного текстовогоили графческого окна, а не в абсолютных экранных координатах. При этом верхний левый угол текстового окна будет являться началом координат (1,1); в графическомрежиме начало координат графического окна будет равно (0,0).

Turbo C++ имеет отдельную библиотекус более чем 70 графическими функциями, начиная от функций высокого уровня (таких как setviewport, bar3d и drawpoly) и кончая бит-ориентированными функциями (ипа getimage иputimage). Графическая библиотека поддерживает многочисленные стили линий и заполнителей, а также предоставляютвам различныетекстовые шрифты, которые вы можете изменять по размерам, способу выравнивания, а также ориентировать их либо по горизонтали, либо по вертикали.

Эти функции находятся в библиотечном файле

GRAPHICS.LIB, а их прототипы - в файле заголовка graphics.h. Кроме этих двух файлов, в состав графического пакета входят драйверы графических устройств (файлы *.BGI) и символьные шрифты (*.CHR-файлы)..

Графические функции Turbo C++ делятся на несколько категорий:

- управления графической системой

- черчения и заполнения

- манипулирования экранами и графическими окнами

- вывода текстов

- управления цветами

- обработки ошибок

- запроса состояния

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

И наконец, закончив работу в графике,вы должны вызвать функцию closegraph для того, чтобы закрыть графическую систему. closegraph выгружаетдрайвер из памятии восстанавливает первоначальный видео режим

(через обращение к restorecrtmode).

Ниже приводится краткий обзор функций черчения и заполнения:

Черчение:

arc Чертит дугу окружности.

circle Чертит окружность.

drawpoly Чертит контур многоугольника.

ellipse Чертит эллиптическую дугу.

getarccoords Возврашает координаты последнего вызова

arc или ellipse.

getaspectratio Возвращает коэффициент сжатия для текуще

го графического режима.

getlinesettings Возвращает текущий стиль линии, шаблон

линии и толщину линии.

line Чертит линию из (x0,y0) в (x1,y1).

linerel Чертит линию в точку, задаваемую относитель

ным расстоянием от текущей позиции (CP).

lineto Чертит линию из текущей позиции (CP) в (x,y).

moveto Перемещает текущую позицию (CP) в (x,y).

moverel Перемещает текущую позицию (CP) на относитель

ное расстояние.

rectangle Рисует прямоугольник.

setaspectratio Изменяет коэффициент сжатия по умолчанию.

setlinestyle Устанавливает ширину и стиль текущей линии.

Заполнение:

bar Чертит и заполняет столбик.

bar3d Чертит и заполняет трехмерный столбик.

fillellipse Чертит и заполняет эллипс.

fillpoly Чертит и заполняет многоугольник.

getfillpattern Возвращает определяемый пользователем

шаблон заполнения.

getfillsettings Возвращает информацию о текущкм шаблоне

и цвете заполнения.

pieslice Чертит и заполняет сектор окружности.

sector Чертит и заполняет эллиптический сектор.

setfillpattern Выбирает шаблон заполнения, определяемый

пользвателем.

setfillstyle Устанавливает шаблон и цвет заполнения.

При помощи функций черчения и раскрашивания Turbo C++ вы можете вычерчивать цветные линии, дуги, окружности, эллипсы, прямоугольники, секторы, дву- и трехмерные столбики, многоугольники, а такжеразличные правильные или неправильные формы, являющиеся комбинациями перечисленныхграфических примитивов. Ограниченную форму изнутри или снаружи можно заполнить одним из 11 предопределенных шаблонов, либо шаблоном, определенным пользователем. Можнотакже управлять толщиной и стилем линии вычерчивания, а также местоположением текущей позиции.

Контрольные вопросы:

1. Каким образом можно включить и выключить графический режим?

2. Какие координаты имеют углы экрана?

Лекция №16

Тема: Особенности программирования на С++

План:

1. Основы программирования на языке С++

2. Операторы while, for.

программирование файл оператор

Си - универсальный язык программирования. Он тесно связан с системой UNIX, так как был разработан в этой системе, которая как и большинство программ, работающих в ней, написаны на Си. Однако язык не привязан жестко к какой-то одной операционной системе или машине. Хотя он и назван "языком системного программирования", поскольку удобен для написания компиляторов и операционных систем, оказалось, что на нем столь же хорошо писать большие программы другого профиля.

Многие важные идеи Си взяты из языка BCPL, автором которого является Мартин Ричардс. Влияние BCPL на Си было косвенным - через язык B, разработанный Кеном Томпсоном в 1970 г. для первой системы UNIX, реализованной на PDP-7.

BCPL и B - "бестиповые" языки. В отличие от них Си обеспечивает разнообразие типов данных. Базовыми типами являются символы, а также целые и числа с плавающей точкой различных размеров. Кроме того, имеется возможность получать целую иерархию производных типов данных из указателей, массивов, структур и объединений. Выражения формируются из операторов и операндов. Любое выражение, включая присваивание и вызов функции, может быть инструкцией. Указатели обеспечивают машинно-независимую адресную арифметику. В Си имеются основные управляющие конструкции, используемые в хорошо структурированных программах: составная инструкция ({. . .}), ветвление по условию (if-else), выбор одной альтернативы из многих (switch), циклы с проверкой наверху (while, for) и с проверкой внизу (do), а также средство прерывания цикла (break). В Си нет прямых операций над составными объектами, такими как строки символов, множества, списки и массивы. В нем нет операций, которые бы манипулировали с целыми массивами или строками символов, хотя структуры разрешается копировать целиком как единые объекты. В языке нет каких-либо средств распределения памяти, помимо возможности определения статических переменных и стекового механизма при выделении места для локальных переменных внутри функций. Наконец, в самом Си нет средств ввода-вывода, инструкций READ (читать) и WRITE (писать) и каких-либо методов доступа к файлам. Все это - механизмы высокого уровня, которые в Си обеспечиваются исключительно с помощью явно вызываемых функций. Большинство реализованных Си-систем содержат в себе разумный стандартный набор этих функций. В продолжение сказанного следует отметить, что Си предоставляет средства лишь последовательного управления ходом вычислений: механизм ветвления по условиям, циклы, составные инструкции. Компактность языка имеет реальные выгоды. Поскольку Си относительно мал, то и описание его кратко, и овладеть им можно быстро. Программист может реально рассчитывать на то, что он будет знать, понимать и на практике регулярно пользоваться всеми возможностями языка.

Си не является "строго типизированным" языком, но в процессе его развития контроль за типами был усилен.

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

Си, как и любой другой язык программирования, не свободен от недостатков. Уровень старшинства некоторых операторов не является общепринятым, некоторые синтаксические конструкции могли бы быть лучше. Тем не менее, как оказалось, Си - чрезвычайно эффективный и выразительный язык, пригодный для широкого класса задач.

В целом, С++ является над-множеством языка С. Это означает, что, вообще говоря, можно компилировать программы С в среде С++, однако компилировать программы С++ в среде С при наличии в них каких-либо специфических для С++ конструкций нельзя. Некоторые ситуации требуют специального внимания.

Одна и та же функция func, дважды объявленная в С с различными значениями аргументов, вызовет ошибку повторения имен. Однако, в С++ func интерпретируется как перегруженная функция - а то, допустимо это или нет, зависит от других обстоятельств.

Контрольные вопросы:

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

2. Перечислите все бестиповые языки.

3. Какие основные операторы используются на языке Си?

Календарно-тематический план консультаций в режимах F2F, on-line (СРСП), off-line

с№

срсп

Тема

Кол. час

F2F

оn-line, off-line

Кол. час

Неделя

11

Тема: Введение. Цели и задачи дисциплины

Вопросы: Цели и задачи дисциплины.

Роль вычислительной техники в информационных системах.

Примеры использования информационных систем в различных отраслях производства. Компьютеризация учебного процесса.

Тема: Программные средства ПК

Вопросы: Методы автоматизации программирования. Алгоритмические языки.

Назначение алгоритмического языка и требования предъявляемые к нему.

Понятие о процедурно-ориентированных языках и ООП.

Понятие о программном обеспечении ПК. Диалоговые средства связи пользователей с ПК. Интегрированные системы программирования.

Тема: Методология программирования

Вопросы: Этапы и уровни разработки программ.

Техническое задание на разработку программ.

Этап технического проектирования программ.

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

Организация данных.

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

1

2

1,2,3

2

Тема: Основы технологии программирования

Вопросы: Методы проектирования программного обеспечения.

Нисходящее и восходящее проектирование программ и их сочетание.

Структурное программирование. Модульное программирование.

Выбор языка программирования.

Стиль программирования. Показатели качества программирования.

Читаемость программ, комментарии.

Программирование с защитой иот ошибок. Этап отладки и испытания программ. Документирование программ. Вид программной документации, установленной ГОСТом. Единая система программной документации (ЕСПД).

Тема: Введение в систему программирования Си.

Вопросы: Директивы препроцессора.

Состав системы программирования, элементы языка.

1

2

4,5

63

Тема: Типы данных:

Вопросы: Типы данных: int, short, long, unsigned, float, double.

Объявления.

Выражения и присваивания.

Операции языка Си.

Тема: Операторы языка Си.

Вопросы: Условный оператор.

Оператор выбора.

Операторы goto, break, continue.

Тема: Операторы цикла.

Вопросы: Цикл while

Цикл do-while

Инструкция for

1

1

6,7,8

4

Тема: Функции.

Вопросы: Функции ввода и вывода.

Описание, определение функции.

Примеры функций.

Объявление и определение функций.

Возвращаемое значение.

Параметры функции.

Рекурсивные функции.

Функция main().

Функции стандартной библиотеки.

Тема: Указатели и адресная арифметика.

Вопросы: Организация памяти и адресация.

1

2

9,10

5

Тема: Массивы

Вопросы: Одномерные массивы и указатели.

Двумерные массивы.

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

Тема: Структуры данных.

Вопросы: Описание структур.

Указатели и структуры данных.

1

1

11,12

6

Тема: Строки.

Вопросы: Обработка строк.

Тема: Файлы.

Вопросы: Описание структуры файлов.

Организация работы с файлами.

1

1

13, 14

7

Тема: Работа с окнами. Графика.

Вопросы: Графические функции.

Черчение.

Заполнение.

Тема: Особенности программирования на С++.

Вопросы: Основы программирования на языке С++.

1

1

15

Всего:

7

10

15

Календарно-тематический план СРС

Содержание заданий

Кол.

часов

Срок

сдачи

Форма

контроля

1.

Обработка символьной информации

2

4-нед

Графические режимы работы с экраном

2

Вычерчивание графических объектов.

1

Движение графических объектов.

2

Разработка программ с использованием классов.

2

Библиотека графических подпрограмм.

1

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

1

Примеры использования модульного программирования при решении сложных задач.

2

Всего:

13

Материалы для СРС:

Содержание заданий

Форма контроля

1. Категории типов данных

2. Целый тип данных

3. Данные плавающего типа

4. Указатели

Подготовить конспект по данным темам

Подготовить конспект по данной теме

Подготовить конспект по данной теме

Подготовить конспект по данной теме

5. Оператор return . Оператор goto.

6. Указатели на многомерные массивы

7. Операции с указателями

8. Массивы указателей

Подготовить конспект по данной теме

Подготовить конспект по данной теме

Подготовить конспект по данной теме

Подготовить конспект по данной теме

9. Прямая и косвенная рекурсия

10. Графика в С++. Написать программу, которая выводит на экран гистограмму успеваемости учеников класса, например, по итогам контрольной работы.

Подготовить конспект по данной теме

Диаграмма.

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

12. «Глобальные переменные».

13. Реализация динамических структур с помощью массивов.

Файл на электронном носителе.

Подготовить конспект.

Подготовить конспект.

Контрольно-измерительные средства по дисциплине

История развития языка С++. Сравнительная характеристика языков С и С++.

1. Алфавит языка.

2. Идентификаторы. Комментарии. Ключевые слова. Константы.

3. Унарные операции.

4. Бинарные операции.

5. Основные типы данных.

6. Структура программы.

7. Выражения

8. Оператор ветвления.

9. Оператор выбора.

10. Операторы break и continue

11. Цикл с предусловием.

12. Цикл с постусловием.

13. Цикл с параметром.

14. Операторы передачи управления.

15. Указатели.

16. Одномерные массивы.

17. Двумерные массивы.

18. Строки.

19. Переименование типов (typedef).

20. Перечисления (enum).

21. Структуры (struct).

22. Использование массивов структур.

23. Объединения (union).

24. Функции. Параметры функции.

25. Возвращаемое значение функции. Оператор return.

26. Рекурсивные функции.

27. Перегрузка функций.

28. Функции ввода-вывода.

29. Ввод/вывод в поток

30. Функция main().

31. Шаблоны функций.

32. Функции стандартной библиотеки.

33. Математические функции

34. Директива #include.

35. Директива #define .

36. Директивы условной компиляции.

37. Директива #undef.

38. Графический режим.

39. Графические функции.

40. Черчение. Заполнение.

41. Внешние объявления.

42. Поименованные области.

43. Кодирование и документирование программы

44. Проектирование и тестирование программы.

45. Динамические структуры данных.

46. Линейные списки.

47. Стеки.

48. Очереди.

49. Бинарные деревья.

Рекомендуемая литература

Основная литература

1. Павловская Т.А. С/С++. Программирование на языке высокого уровня. - СПб.: Питер, 2000.

2. Дэвис С. С++ для «чайников».- К.: Диалектика, 1996.

3. Неформальное введение в С++ и Turbo Vision. - Галерея «Петрополь». 1992.

Дополнительная литература

1. Хортон А. Visual C++ 2010: полный курс. Диалектика г.Киев.2010. - 1216 c.

2. Мошилев А.В., Пак Н.И. Хеннер Е.К. Практикум по информатике - М.: Академия, 2001. - 608 с.

3. Павловская Т.А. С/С++. Программирование на языке высокого уровня. - Спб.: Питер, 2001. - 464 с.

4. Пратта С. Язык программирования С++. Лекции и упражнения - М.: Диа-Софт, 2003. - 656 с.

5. Семакин И.Г., Шестаков А.П. Основы программирования - М.: Мастерст-во, 2001. - 432 с.

6. Страуструп Б. Дизайн и эволюция языка C++. Объектно-ориентированный язык программирования. - М.: ДМК-Пресс, 2000. - 448с.

7. Шилд Г. С/С++. Справочник программиста - М.: Вильямс, 2000. - 448 с.

8. Шмидский Я.К. Программирование на языке С/С++ - М.: Диалектика, 2003. - 352 с.

9. Стефан Р. для `чайников`, 6-е издание Дэвис . C++. Вильямс г.Киев. 2010 . - 336 c.

10. Шилдт Г. C++ для начинающих. Шаг за шагом. ЭКОМ г.Москва. 2010. - 640 c.

11. Дэвид Р. Мюссер. C++ и STL: справочное руководство, 2-е изд. Вильямс г.Киев. 2010. - 432 c.

12. Ишкова Э.А. C++. Начала программирования 3-е изд. стер. БИНОМ г.Москва. 2011. - 368 c.

13. Герберт Шилд. C++: базовый курс, 3-е изд. Вильямс г.Киев. 2010. - 624 c.

Размещено на Allbest.ru


Подобные документы

  • Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.

    курсовая работа [738,1 K], добавлен 17.05.2010

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

    курсовая работа [290,9 K], добавлен 05.12.2008

  • Функции и основные компоненты систем программирования. Средства создания программ. Трансляторы языков программирования. Принципы и фазы работы компилятора, трансформация языка программирования в машинный код. Механизм преобразования интерпретатора.

    презентация [3,3 M], добавлен 07.02.2012

  • Понятие и специфические особенности языка программирования Си, история его создания. Интегрированная система Borland C. Процесс программирования с помощью данного языка. Графические примитивы в языках программирования. Преобразования на плоскости.

    курс лекций [782,2 K], добавлен 04.10.2011

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

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Основные сведения о языках программирования и их состав. Программа для компьютера. Использование компилятора и операторы. Языки программирования высокого уровня. Концепции объектно-ориентированного программирования. Языки искусственного интеллекта.

    презентация [6,3 M], добавлен 14.08.2013

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

    дипломная работа [2,4 M], добавлен 13.08.2011

  • Понятие математического программирования. Класс как тип структуры, позволяющий включать в описание типа не только элементы данных, но и функции. Рассмотрение основных особенности языка программирования C++. Характеристика среды MS Visual Studio 2008.

    контрольная работа [318,0 K], добавлен 13.01.2013

  • Этапы создания программы. Транслятор как средство для преобразования текстов из одного языка в другой. Понятие языков программирования, основные моменты их истории. Некоторые операторы языка QBasic. Понятие переменной, ее наглядное представление.

    презентация [22,9 K], добавлен 16.06.2011

  • Разработка на языке программирования C# в среде Microsoft Visual Studio 2010 на базе Microsoft NET Framework 4 (4.5) программного средства, реализующего компилятор модельного языка программирования. Лексический, синтаксический и семантический анализатор.

    курсовая работа [1,3 M], добавлен 24.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.