- •«Утверждаю»
- •Учебно-методический комплекс
- •Астана График выполнения и сдачи заданий по дисциплине
- •Карта учебно-методической обеспеченности дисциплины Учебники, учебные пособия
- •Конспект лекционных занятий
- •Тема 1. Введение в программирование на Си. Структура программы. Директивы препроцессора. Типы данных.
- •Основные операции в языке Си.
- •Преобразование типов
- •Тема 2. Управляющие структуры. Выбор вариантов. Структура выбора If, If – Else, логические операции, операция условия, множественный выбор.
- •Тема 3. Управляющие структуры. Структуры повторения While, do – While, For. Управляющие операторы break и continue.
- •Тема 4. Массивы. Разработка программ с использованием одномерных и двумерных массивов.
- •Тема 5. Функции в Си. Создание и использование функций.
- •Тема 6. Классы памяти и разработка программ.
- •Тема 7. Указатели в Си.
- •Тема 8. Использование указателей при обработке одномерных и двумерных массивов.
- •Тема 9. Символы и строки в Си.
- •Тема 10. Функции операции над строками.
- •Функции сравнения из библиотеки обработки строк. Прототипы функций и краткое описание каждой из них приведены в таблице 6.
- •Функции поиска из библиотеки обработки строк. Прототипы функций и краткое описание каждой из них приведены в таблице 7.
- •Другие функции из библиотеки обработки строк. В таблице 8 приведены прототипы и краткое описание остальных функций из библиотеки обработки строк.
- •Ниже приведены примеры программы, использующих функции работы со троками.
- •Тема 11. Структуры данных в Си.
- •Тема 12. Динамические структуры данных.
- •Тема 13. Работа с файлами в Си.
- •Тема 14. Графика в Си.
- •Тема 15. Объектно-ориентированное программирование.
- •Методические рекомендации по выполнению лабораторных заданий
- •Лабораторная работа № 3. Использование операторов цикла при решении задач.
- •Лабораторная работа №4. Разработка программ с использованием одномерных массивов.
- •Лабораторная работа №5. Разработка программ с использованием двумерных массивов.
- •Лабораторная работа № 6. Программирование задач с использованием нескольких функций на языке Си.
- •Лабораторная работа № 8. Программирование задач обработки структур данных.
- •Лабораторная работа № 9. Разработка программ с использованием файловых переменных.
- •Лабораторная работа № 10. Разработка программ с использованием графических функций языка Си.
- •Содержание отчета по выполнению лабораторной работы
- •1 Задание
- •Тема 1. Запись констант, стандартных функций, выражений, операторов присваивания. Запись программ линейных структур алгоритмов.
- •Тема 2. Алгоритмическое описание, запись программ линейных, разветвляющихся.
- •Тема 3. Алгоритмическое описание, запись программ циклических структур алгоритмов.
- •Тема 4. Алгоритмическое описание, составление программ обработки одномерного массива.
- •Тема 5. Алгоритмическое описание, составление программ обработки двумерного массива.
- •Тема 6-7. Составление программ решения задач с использованием функции.
- •Рекомендуемая литература:
- •Тема 8-9. Составление программ решения задач обработки массивов с использованием указателей.
- •Тема 10-11. Программирование задач обработки символьных и стрковых данных.
- •Рекомендуемая литература.
- •Тема 12. Методы сортировки.
- •Тема 13. Составление программ решения задач с использованием структур данных.
- •Тема 14. Составление программ решения задач с использованием файла произвольного доступа.
- •Рекомендуемая литература.
- •Тема 15. Алгоритмизация графических построений.
- •Варианты заданий:
- •Сведения
- •Перечень экзаменационных вопросов по пройденному курсу
- •Глоссарий
Конспект лекционных занятий
Тема 1. Введение в программирование на Си. Структура программы. Директивы препроцессора. Типы данных.
Структура программы, написанной на языке Си
Любая Си-программа состоит из одной или более «функций», являющихся основными модулями, из которых она собирается. Приведем пример программы на языке Си.
#include < stdio.h> /* директивы препроцессора */
main( ) /* имя функции с аргументами */
{ int m; /* оператор описания */
m=1; /* оператор присваивания */
printf (“%d нач. знач. \n “ , m); } /* оператор вызова функции печати*/
Командные строки препроцессора (директивы). Препроцессор Си обрабатывает исходный текст программы на Си, прежде чем последний поступил на вход компилятора. Препроцессор расширяет все макровызовы и подставляет все внешние файлы. Для обозначения команд препроцессора используется символ #.
Пример:
# define – определение макро;
# include – подстановка текста из внешнего файла.
# include <stdio.h> – для подстановки текста из файлов stdio.h (стандартный ввод/вывод).
(подставляемые файлы содержат описание интерфейсов с функциями, включенными в библиотеку).
<math.h> – математическая функция.
Итак, программа состоит из одной или более функций, причем какая-то из них обязательно должна называться main( ). Описание функции состоит из заголовка и тела. Заголовок в свою очередь состоит из директив препроцессора типа #include и т.д. и имени функции. Отличным признаком имени функции служат круглые скобки, причем аргумент, вообще говоря, может отсутствовать. Тело функции заключено в фигурные скобки {} и представляет собой набор операторов, каждой из которых оканчивается символом '';''.
Типы данных в языке Си.
В стандарте языка Си используется семь ключевых слов, указывающих на различные типы данных: int, long, short, unsigned, char, float, double. Первые четыре ключевых слова используется для представления целых, т.е. целых чисел без десятичной дробной части. Они могут появляться в программе по отдельности или в некоторых сочетаниях, как, например, unsigned short. Слово char предназначено для указания на буквы и некоторые другие символы, такие, как #, $, % и &. Последние два ключевых слова используются для представления чисел с десятичной точкой.
Типы int, short, long. Данные этих типов являются «числами со знаком», т.е. допустимыми значениями переменных этих типов могут быть только числа – положительные, отрицательные и нуль. При описании данных необходимо ввести только тип, за которым должен следовать список имен переменных. Приведем пример описания:
int m1, m2; short k1, k2, k3; long l1, l2;
Использование сочетания ключевых слов, как, например, long int или short int является более длинной записью ключевых слов long и short.
Целые константы. Согласно правилам языка Си, число без десятичной точки и без показателя степени рассматривается как целое. Например:
25 – 239 – целые; 25.0, 25Е2 – нецелые.
Константа типа long записывается так: 225
Инициализация переменных целого типа. Константы часто применяются при ''инициализации'' переменных. Это означает присвоение переменной некоторого значения перед началом обработки. Например:
k1 = 0; m2 = 1;
Можно инициализировать переменную в операторе описания. Например:
int m2 = 15; short k2, k3 = 0; long l1 = 25, l2 = 30;
Тип данных unsigned. Обычно этот тип служит модификатором одного из трех ранее описанных типов. Можно использовать варианты: unsigned int, unsigned long. Целые переменные без знака описываются и инициализируются совершенно аналогично тому, как это делается в случае обычных целых переменных. Например:
unsigned int kol; unsigned short s = 2;
Тип данных char. Этот тип определяет целые числа без знака в диапазоне от 0 до 255. Обычно, такое целое размещается в одном байте памяти. В машине используется некоторый код для перевода чисел в символы и обратно. В большинстве компьютеров это код ASCII. Для описания символьной переменной применяется ключевое слово char. Например:
char s2; char s2, s3; char sk = k;
В стандарте языка Си принято правило, согласно которому значения переменной и константы типа char могут быть только одиночные символы.
Типы данных float и double. В программах вычислительного характера часто применяется числа с плавающей точкой. В языке Си такие данные описываются типом float. Переменные с плавающей точкой описываются и инициализируются точно таким же образом, что и переменные целого типа. Например:
float s1, s2; double s; float pe = 7.52e-7;
Константы с плавающей точкой.
Общей формой записи константы с плавающей точкой является запись вида
-1.15Е+4; 2.52Е–3;
Разрешается опускать либо десятичную точку, либо экспоненциальную часть, но не одновременно. Кроме того, можно не писать дробную или целую часть, но не обе сразу. Приведем правильно записанные константы:
3.14159; .5; 4Е12; .7Е–4; 100.;
В процессе обработки константы с плавающей точкой рассматриваются в формате с удвоенной точностью. Предположим, например, что переменная PR типа float получает свое значение в результате выполнения оператора PR = 4.5*2.0.
В этом случая константы размещаются в памяти как данные типа double, т.е. для каждой из них (обычно) отводится 64 бит. Произведение вычисляется с двойной точностью, и только после этого производится усечение результата до размера, соответствующею типу float. Все это обеспечивает максимальную точность ваших вычислений. В языке Си имеется встроенная операция sizeof, которая позволяет определить размер объектов в байтах. Например:
printf (''Данные типа double занимают %d байт. \n'', sizeof (double));
Символьные строки. Символьная строка – это последовательность, состоящая из одного или более символов. В языке Си нет специального типа для описания строк. Строки можно предоставить в виде массива элементов типа char. Символы в строке можно представить себе расположенными в соседних ячейках памяти – по одному символу в ячейке. Последним элементом массива является символ \0. Нуль – символ является признаком конца строки. Для определения длины строки числом символов используется функция strlen.
Использование директивы #define имеет вид:
#define символическое имя константы величина значения
Например:
#define PI 3.14159
Директиву #define можно использовать для определения символьных и строковых констант. Необходимо использовать знак ''апостроф'' в первом случае и кавычки во втором. Например:
# define NUL L ‘\0’ # define BL 1 ''Блок 1''
Использование функции printf( ) и scanf( ).
Общий вид функции printf( ):
printf(<строка формата>, <объект>, <объект>…);
Строка формата ограничивается двойными кавычками. Перед выводом printf заменяет все дополнительно перечисленные объекты в строке в соответствии со спецификациями формата, указанными в сомой строке. Спецификации формата начинаются с символа процента (%) и сопровождаются одной буквой, обозначающей тип данных и способ их преобразования. Сами объекты могут быть переменными, константами, выражениями, вызовами функций. В таблице 1 приведены спецификации формата, используемые в языке Си.
#define PI 3.14159
#include <math.h>
main ( )
{ float S, r;
printf (“введите радиус круга \ n”);
scanf (“%f”, &r);
S=PI*r*r;
printf (“площадь круга = %f \n”, S); }
Таблица 1 – Спецификации формата
Спецификации формата |
Тип выводимой информации |
%d |
Десятичное целое число |
%с |
Один символ |
%s |
Строка символов |
%е |
Число с плавающей точкой, экспоненциальная запись |
%f |
Число с плавающей точкой, десятичная запись |
%g |
Используется вместо записей % f или % е, если он короче |
%u |
Десятичное целое число без знака |
%о |
Восьмеричное целое число без знака |
%х |
Шестнадцатеричное целое число без знака |
Применение функции scanf ( )
Общий вид функции scanf ( ):
scanf (<cтрока формата>, <адрес>, <адрес>, …);
Функция scanf( ) использует практически тот же набор символов спецификаций преобразования, что и функция printf ( ). Основные отличия в случае функции scanf ( ) следующие:
1. Отсутствует спецификация %g.
2. Спецификации %f и %e эквивалентны.
3. Для чтения целых чисел типа short применяется спецификация % h.
Заметим:
1. При записи адреса используется операция адреса (&) для передачи адресов переменных.
2. При вводе значения строковой переменной символ & не пишется.
Пример программы:
main ( )
{ char name[30];
printf (“Введите имя автора”);
scanf (“%s”, name);
printf (“Автором программы является % s\n”, name); }
т.к. name является массивом символов, значения name это адрес самого массива. Поэтому перед именем name не используется адресный оператор &.