- •Министерство образования Российской федерации новосибирский государственный технический университет
- •Часть 1
- •Работа подготовлена на кафедре
- •Последовательность этапов решения задач при нисходящем проектировании
- •Семь основных элементов программирования.
- •Другие функции вывода: puts() и putchar()
- •Типы данных
- •Использование gets() и getch() для ввода
- •Условные операторы
- •Операции сравнения
- •Логические операции
- •Операторы присваивания
- •Оператор запятая
- •Лабораторная работа № 1 условные операторы. Операторы цикла.
- •Цель работы
- •Общие положения Оператор if
- •Циклические конструкции в программах
- •3. Пример программной реализации
- •4. Варианты заданий
- •5. Контрольные вопросы.
- •Лабораторная работа № 2 массивы целых чисел. Символьные массивы.
- •1. Цель работы.
- •2. Общие положения.
- •3. Примеры программных реализаций
- •Пример 3. Введенное натуральное число записать в виде строки.
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа № 3 методы сортировки.
- •Цель работы
- •Общие положения
- •Сортировка простыми включениями.
- •Сортировка простым выбором.
- •Сортировка простым обменом.
- •Пример программной реализации
- •Варианты заданий.
- •Лабораторная работа № 4
- •Способы передачи параметров
- •Функция main()
- •Области действия функций. Определения и объявления
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 5 функции. Массивы указателей.
- •Цель работы
- •Общие положения
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
5. Контрольные вопросы.
Дайте определение алгоритма и перечислите основные способы записи алгоритмов.
Перечислите основные типы данных, количество занимаемых ими байт в памяти компьютера.
Покажите внутреннее представление разных типов данных в памяти компьютера. Приведите примеры для целого и вещественного типов данных.
Назовите основные лексемы языка Си. Дайте определение каждой из лексем и примеры.
Перечислите основные типы операторов языка.
Запишите операторы цикла, передачи управления, выбора.
Напишите примеры использования функций printf() и scanf().
Лабораторная работа № 2 массивы целых чисел. Символьные массивы.
1. Цель работы.
Приобретение практических навыков работы с массивами целых чисел и строками.
2. Общие положения.
Массив - поименованный набор элементов одного и того же типа, располагающихся в памяти последовательно друг за другом по возрастанию адресов. Элементы массива нумеруются от 0 до n-1. Каждый элемент имеет свой номер.
Массив имеет имя, тип и размер. Элемент массива имеет имя (совпадает с именем массива) и индекс (номер). Например:
float deg[20] - вещественный массив из 20 элементов (вещественных чисел).
int arr[10] - массив из 10-ти элементов - переменных целого типа.
char str[15] - массив str - строка длиной в 15 символов.
Массивы при объявлении могут быть инициированы (получать начальные значения):
int a[] = {1, 4, 9, 4, -7, 78, 100, -3, 0, 55, 8};
char s[20] = {'a', 'b', 'c'}, word [] = “Hello !”;
Имя массива трактуется как константный указатель или адрес его начала.
Можно инициализировать каждый элемент массива и через присваивание, a[5] = 31; // присваивание значения 31 6-му элементу массива a.
a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], …
Двумерные массивы . Хранятся в памяти строками: сначала помещаются все колонки 1-ой строки, затем все колонки 2-ой строки и т.д. Самый правый индекс массива меняется первым. Описание двумерного массива:
тип Имя_ массива [ число_строк ][ число_столбцов ];
float rain[5][9];
Инициализация массива int ag[2][3]= {{23,17,56}, {3,41,786} };
Строкой называется последовательность символов, ограниченная символом с кодом 0, то есть '\0'. Из ее определения видно, что она является объектом переменной размерности. Поскольку в Си допускаются переменные только фиксированной размерности, то единственным допустимым способом представления строки является массив символов. Проясним суть взаимоотношений между строкой и массивом символов:
- строка хранится в массиве символов, массив символов может быть инициализирован строкой, а может быть заполнен программно:
char A[20] = { 'С','т','р','о','к','а','\0' };
int i;
char B[80];
for (i=0; i<20; i++) B[i] = 'A';
B[20] = '\0';
- строка имеет переменную размерность, ограниченную символом '\0', поэтому работать с ней можно, просматривая ее от начала до конца, пока не встретится символ '\0':
for (i=0; B[i] !='\0'; i++)...
- соответствие размерности массива и длины строки транслятором не контролируется, за это несет ответственность программа (программист, ее написавший).
Способы определения строк:
строковая константа #define M “строка”
массив типа char char m[] = “строка”
указатель на тип char char *m = “строка”
массив из символьных строк char *m[2] = {“строка1”, “строка2”}