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

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

элементов является управляющей последовательностью '\0'.

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

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

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

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

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

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

 

Лекция №12

 

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

План:

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

Лекция №13

 

Тема: Строки

План:

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

 

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

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

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

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

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

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

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

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

Задача 165

// Приветствие #include void main() {name[15]; // имяfam[20]; // фамилия

printfC'KaK Вас зовут?\п");("Введите свое имя и фамилию,");

printf("затем нажмите ");("%s", &name);("%s", sfam);

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

//до разделителя - пробела("Здравствуйте, Is %s!\n", name, f am) ;("\пДля завершения нажмите "); getch()

Задача 166

// Приветствие (посимвольный ввод строки) #include "); i = 0;

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

// клавиша

h); name[i++] - ch; }] = '\0'; printf("ХпЗдравствуйте, %s!\n", name); И

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

Задача 167// Вычисляет длину строки HI #include void main(){ char st[80]; // введенная строка int i = 0; // длина строки IB

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

III

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

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

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

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