- •Категории типов данных
- •Базовые типы данных С
- •Виды переменных С
- •Массивы
- •Структурирование обработки данныхВозможности выбора
- •Возможности выбора:
- •eof, feof – конец файла
- •Ошибки открытия файлов и ввода вывода
- •Типичные ошибки программирования
- •Внимательно относитесь к типам функций!!!!
- •2 варианта – if … else и (или) условная операция Много вариантов -
- •(выражение)
- •!!!!! Если в теле цикла всего один оператор, то операторные скобки можно не
- •После того как массив определен, в него можно вводить информацию. Начальные значения элементам
- •Фрагмент, запрашивающий у пользователя 10 целых чисел,
- •Доступ к элементам многомерного массива в
- •Типичные ошибки программирования
- •Определение переменной в дополнении к ее имени и
- •В соответствии с реализуемой целью, функция может
- •Функция, выбирающая наименьшее из трех вещественных чисел.
- •Существуют функции, не требующие для своей работы
- •Типичные ошибки программирования
- •Типичные ошибки программирования
Массивы
Для определения массива необходимо указать типы значений, кото- рые он содержит, и максимальное количество элементов, которое может быть в него записано. Для того чтобы создать массив,
содержащий, например, 31 целое число, надо написать определение: int temps[31];
При определении массива одновременно определяются и его отдельные элементы.
Нумерация- с нуля К первому элементу массива
temps обращаются как к temps[0], ко второму — как к temps[1] и т.д.
индекс массива
Структурирование обработки данныхВозможности выбора
Выбор из 2х элементов
Множественный выбор
Повторять одни и те же действия - цикл
Возможности выбора:
eof, feof – конец файла
int eof(<дескриптор файла>) - ф-я для проверки конца файла (io.h)
int feof(<дескриптор файла>) - макрос для проверки конца файла (stdio.h)
Int err;
FILE *myfile;
… // открытие + обращение к файлу err=eof(myfile);
… //проверяемошибки,приихотсутствииработаемдальше Значения макроса feof:
0 послеобращениякфайлу–всевпорядке,работаемсфайлом Не 0 после обращения к файлу - достигнут конец файла Значения ф-и eof:
0послеобращениякфайлу–всевпорядке,работаемсфайлом 1 после обращения к файлу - достигнут конец файла -1 после обращения к файлу – ошибка обращения к файлу, переменной errno присваивается значение
EBADF – bad file number
Ошибки открытия файлов и ввода вывода
Условия выхода из цикла или завершения программы
Всеф-ибиблиотекввода-выводавозвращаютсообщенияобошибках!!!
int err, num; |
|
FILE *myfile; |
|
. . . |
|
main() |
|
{ |
|
. . . |
|
myfile=fopen(“<name>”,”<type>”); |
|
if (myfile!=NULL)// проверить, что файл открыт |
|
{ |
|
//остальное тело программы |
|
err=fscanf(myfile,”%d”,&num); |
|
if(err!=0) . . . // ошибка чтения!!!! |
|
else . . . // работаем дальше |
|
} |
|
return 0; |
|
} !!! Не забывайте сбрасывать буфер |
fflush(myfile); |
Типичные ошибки программирования
Отсутствует директива #include, подключающая необходимую библиотеку
ввода-вывода. На этапе компиляции ошибка приводит к сообщениям вида “Error: Undefined symbol printf, scanf”.
Неправильно прописаны знаки «””» и «< >» в директиве #include. На этапе компи-
ляции ошибка приводит к сообщениям вида “Error: Undefined symbol printf, scanf”.Неправильно прописаны пути в среде компилятора. На этапе компиляции
ошибка приводит к сообщениям вида “Error: Undefined symbol printf, scanf”.Отсутствует точка с запятой в конце оператора. Последствия этой ошибки
могут быть разнообразны, но весьма часто это сообщения вида “Error: Statement missing ;”, “Error: Declaration syntax”, “Error: Undefined symbol …”.Использование операции >> при работе с потоком вывода cout, и операции
<< при работе с потоком ввода cin. Сообщение – “Error: operator not implemented …”.
Несоответствие символа форматного преобразования (%d, %f и т.д.) типу
переменной (int, float, и т.д.) в операторах консольного ввода-вывода printf и scanf. Ошибка не распознается компилятором, однако приводит к неправильной работе соответствующих функций.
Используемая в программе переменная не объявлена. Такая ошибка
приводит к сообщению “Error: Undefined symbol …”.
Нарушена парность скобок в записи сложного алгебраического выражения.
Внимательно относитесь к типам функций!!!!
Распространенной ошибкой является использование
fgetc, getc или getchar для присваивания результата переменной типа char перед
сравнением его с EOF. |
Правильно |
Ошибка |
|
char c; |
int c; |
while ((c=getchar())!= EOF) |
while ((c = getchar()) != EOF) |
{ |
{ |
putchar(c); |
putchar(c); |
} |
} |
printf(“max=%d“, max);
2 варианта – if … else и (или) условная операция Много вариантов - вложенные условные операторы или
Оператор switch Форма записи:
(выражение)
printf(“\n please input number”); scanf(&rez);
}
if(i==12) printf(“wrong choose”); else printf(“true choose”);
. . .