WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Московский государственный университет

физический факультет

кафедра квантовой теории и физики высоких энергий

В.А.Ильина П.К.Силаев

Краткий справочник по языку “C”

Москва 2012

Содержание

1 Введение 2

2 Минимальные требования к счетной программе на “С” 2 3 Минимальные сведения о типах переменных языка “С” 3 4 Массивы и указатели в языке “C” 4 5 Минимальные сведения о ядре языка “С” 5.1 Арифметические операторы и операторы присваивания.............. 5.2 Логические операторы................................. 5.3 Побитовые операторы................................. 5.4 Условный оператор.................................. 5.5 Оператор цикла for.................................. 5.6 Определение функций................................. 5.7 Параметры командной строки............................ 6 Минимальный набор библиотечных функций языка “С” 6.1 Математические функции............................... 6.2 Функции для работы со строками.......................... 6.3 Функции ввода-вывода................................ 7 Минимальные сведения о структуре программы на языке “С” 7.1 Функция “main” и другия функции......................... 7.2 Область локализации переменных.......................... 7.3 Пример простейшей бессмысленной программы.................. 1 Введение Это ни в коем случае не учебник “С”, а именно шпаргалка, которая дает возможность писать элементарные программы. Незнание любого приведенного здесь факта делает программирование на “С” практически невозможным.

Шпаргалка эта не претендует на особенную аккуратность. Главное предупреждение, которое необходимо сделать, касается приведенных в тексте примеров. В них часто перемешаны описания переменных и исполняемые операторы. В настоящей программе описания должны идти до исполняемых операторов.

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

Во-первых, касательно стиля программирования. Вы должны понимать, что хороший стиль программирования не есть инвариантная величина. То, что является обязательным требованием для кусочка какого-либо большого проекта (front end к какой-нибудь базе данных), становится совершенно необязательным, а зачастую и вредным, если Вы пишете счетную программу для себя. Нет ничего страшного в использовании глобальных переменных, если Вы пишете не кусочек очень большого проекта. И стандартная рекомендация: “если функции для работы нужна память, то в начале работы функции она должна эту память заказать, а в конце освободить” является не просто бесполезной, а вредной, потому что сильно замедляет работу программы (если функция вызывается достаточно часто). Гораздо разумнее застолбить эту память навсегда глобально или статически.

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

“это ошибка в компиляторе”. Все это проявление мании величия средней степени. Разумеется, надо поступать совершенно иначе. Надо написать маленький кусочек программы, и проверить, как он работает. (При этом следует всегда помнить, что 100% гарантии тут нет даже если этот кусочек правильно работает при тех входных данных, которые Вы использовали при тестировании, он может начать работать неправильно при других входных данных. Как правило такую ошибку поймать труднее всего). Дальше следует дописать еще кусочек, и тоже его оттестировать. И так далее.

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

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

3. Результаты счета должны выводиться в файл результатов, а не только на экран.

4. Программа должна быть легко читаема. Не надо бояться лишних пробельных строк и закомментированных строк-разделителей.

5. Не следует гоняться за лаконичностью в ущерб простоте Ваша задача состоит в написании понятной, работающей и легко отлаживаемой программы, а не в демострации гибкости, которую допускает язык “С”.

6. В программе не должны встречаться загадочные числа 7, 666 и т.п. Все эти константы должны быть заменены посредством #define на подходящие имена. Как правило, эти имена пишутся большими буквами, чтобы отличить константы от настоящих переменных.

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

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

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

3 Минимальные сведения о типах переменных языка “С” 1. Во-первых, существуют переменные типа char, т.е. буквы. Как правило, эти переменные имеют размер в 1 байт (т.е. 8 бит) и меняются в пределах 128... 127. Если отрицательные значения нежелательны, можно использовать модификатор unsigned: переменные unsigned char меняются в пределах 0... 255. В счетных программах переменные char употребляются главным образом для сооружения строк (см. ниже). Чтобы присвоить переменной char значение, соответствующее коду какой-либо буквы, достаточно написать На машине с ASCII-кодировкой такая запись вполне эквивалентна загадочной и неразумной записи “buk=68;”.

Кроме “обычных” (печатаемых) букв существуют и спецсимволы: ’\n’ переход на новую строку; ’\t’ табуляция; ’\r’ переход на первую позицию текущей строки;

“звонок”, т.е. одиночный писк терминала; ’\” ’ двойная кавычка; ’\’ ’ одиночная кавычка; ’\\’ сам символ “\” (обратный слэш).

2. Во-вторых, существуют переменные типа int, т.е. целые числа. Допустимы модификаторы unsigned и long: “long int”, “unsigned int” и “unsigned long int”. Диапазон изменения этих переменных зависит и от типа машины и от компилятора. Обычно int 2 байта (т.е. 32768... 32767 и 0... 65536 для unsigned int), а long int 4 байта (т.е. 2147483648... 2147483647 и 0... 4294967296 для unsigned long int). Нередко оба 3. В-третьих, это переменные типа double. Форма их записи традиционна для алгоритмических языков: 1.2345, -0.7777777777, -33.4444444e-86, -2.1111e33 (Существует еще тип float, но переменные этого типа безусловно не должны встречаться в счетных программах. Экономия памяти, которую они дают, довольно иллюзорна, а потеря точности будет очень существенна. Кроме того, использование float как правило приводит к замедлению работы программы.) Тип любой используемой переменной должен быть определен. Это делается так:

Подробнее о области действия этих определений см. ниже. Кроме того, Вам необходимо знать о модификаторе “static” (также см. ниже).

4 Массивы и указатели в языке “C” Обычно в счетных программах употребляются одномерные и двумерные массивы. Массив фиксированного размера определяется так:

int numer[9],indeks[20][30];

Число в квадратных скобках задает размер массива. После этих определений можно ссылаться на любой элемент массива Нумерация элементов массива начинается с нуля. Поэтому последний (девятый) элемент массива numer это numer[8]. Попытка написать numer[9] постоянная ошибка. Компиляторы языка “C” не проверяют неправильность индекса (отрицательный индекс или индекс, больший или равный размеру массива). Более того, если Вы положили число по неверному адресу, Вы с некоторой вероятностью его оттуда и возьмете. Поэтому неверная программа может иногда делать вид, что она работает правильно. Неустойчивость работы программы (разные результаты при последовательных запусках) верный признак неправильной работы с памятью.

В том случае, когда размер массива заранее неизвестен, приходится прибегать к динамической аллокации памяти.

Для одномерных массивов следует сначала определить указатель а затем, когда уже стал известен размер массива (например, 95), отвести память под массив и поместить указатель на его начало:

vect=(double *)malloc(95*sizeof(double));

if(vect==NULL) {printf(”No mem for vect!\n”); exit(1); } Функция malloc ничего не знает о типах переменных, поэтому она измеряет память просто в байтах и возвращает указатель типа “void *”. Так что размер массива в байтах вычисляется с помощью функции sizeof, которая возвращает размер переменной типа double в байтах, а запись “(double *)” является принудительным преобразованием типа от “void *” к “double *”.

Кстати, совершенно аналогично можно принудительно преобразовывать и другие типы.

Например, целочисленной переменной можно присвоить значение типа double: “n=1.5;”, но лучше записать это как “n=(int)1.5;”. Более того, “3/2” равно единице, а вот “3/2.0” или “3/(double)2” равно 1.5.

Если памяти не хватает, функция malloc возвращает константу NULL. В этом случае необходимо немедленно прекращать работу программы с помощью функции exit. Чтобы пользоваться функциями malloc и exit, в заголовке программы необходимо поставить Для двумерных массивов следует сначала определить указатель на массив указателей:

когда размер массива уже известен (например, 20 30), надо сначала отвести память под массив указателей:

dat=(int **)malloc(20*sizeof(int *));

if(dat==NULL) {printf(”No mem for dat!\n”); exit(1); } А затем для каждого из 20 указателей провести такую процедуру: отвести память под целых чисел и поставить этот указатель на начало соответствующего массива:

Результат действия оператора if очевиден при выполнении условия первый оператор или первый набор операторов, ограниченный фигурными скобками (блок) исполняется, в противном случае исполняется оператор или блок, расположенный после ключевого слова else.

Вторая половина условного оператора (начиная с else) может быть опущена.

Существуют несколько характерных ошибок при написании условного оператора. Одна из них уже упоминалась:

Здесь нет синтаксической ошибки, но a будет равно 7.

Здесь тоже нет синтаксической ошибки, но a будет равно 7.

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

Можно порекомендовать всегда ставить фигурные скобки в условном операторе, даже вокруг одного оператора. Это несколько уменьшает читабельность, но и уменьшает вероятность ошибки при редактировании (если вдруг понадобится дописать еще пару операторов).

5.5 Оператор цикла for Допустимые варианты синтаксиса иллюстрируются такими примерами:



Похожие работы:

«2 СОДЕРЖАНИЕ Стр. Раздел 1 История науки 4 Примерные темы рефератов 23 Рекомендуемая литература 24 Раздел 2 Философия науки 26 Часть I Общие проблемы философии науки 26 Часть II Философские проблемы социальногуманитарных наук 30 Рекомендуемая литература 34 3 РАЗДЕЛ 1 ИСТОРИЯ НАУКИ ПРОГРАММА – МИНИМУМ кандидатского экзамена по курсу История и философия науки ИСТОРИЯ ЭКОНОМИЧЕСКИХ УЧЕНИЙ Введение Настоящая программа подготовлена кафедрой истории экономических учений и народного хозяйства...»

«ПРОГРАММЫ от клуба красоты Дефанс Для милых Невест, юных Выпускниц, счастливых Именинников Программа Шикарное преображение Эта программа позволит Вам преобразиться как говорят с головы до ног. Вы ощутите на себе прикосновения красоты и блаженства, а также получите массу не забываемых впечатлений! 1.SPA процедура (программа по телу) Серия ENERGIA BIANKA 3ч. 3700 В комплексе с тонизирующей программой SPA Йогуртовая серия для капсула и применением техники тела и ступней (белая тонизирующего...»

«Публичный доклад МУНИЦИПАЛЬНОГО КАЗЕННОГО ОБЩЕОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ГАЗ-САЛИНСКАЯ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА 2014 Г. МКОУ ГСОШ с. Газ-Сале Содержание Раздел № 1 Общая характеристика учреждения Администрация учреждения Органы государственно-общественного управления и самоуправления Раздел № 2 Особенности образовательного процесса Обучение по программе начального общего образования Обучение по программе основного общего образования Обучение по программе среднего общего образования...»

«ОГЛАВЛЕНИЕ В. Петрова, М. Коева, ГИС СОФИЯ ЕООД, София, Болгария. Цифровая фотограмметрия в ГИС СОФИЯ LTD. М. Боруманд, А. Бахрами, М. Афшар, компания NPR, Иран. О локализации системы Photomod в Иране Алок Упадхайя, Сиддхартха Самал, Kampsax India Private Limited, Индия. Промышленное производство ЦМР в пакете PHOTOMOD в компании Kampsax, Индия – проблемы и перспективы Тараканов М.Ю., Информационный центр земельно-кадастровых данных и мониторинга земель, Минск, Беларусь. Photomod в Беларуси...»

«1МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МИНИСТЕРСТВО ПУТЕЙ СООБЩЕНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ СОГЛАСОВАНО: УТВЕРЖДАЮ: Заместитель Министра путей Заместитель Министра сообщения Российской Федерации образования Российской Федерации В.Н. МОРОЗОВ _В.Д. ШАДРИКОВ _03_ 04_2000 г. 05 04_2000 г. Регистрационный номер 301 тех/дс ГОСУДАРСТВЕННЫЙ ОБРАЗОВАТЕЛЬНЫЙ СТАНДАРТ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ НАПРАВЛЕНИЕ ПОДГОТОВКИ ДИПЛОМИРОВАННОГО СПЕЦИАЛИСТА 653600 ТРАНСПОРТНОЕ СТРОИТЕЛЬСТВО...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС по дисциплине С3.В.ДВ.2 Неврология Код и направление подготовки 111801 Ветеринария Профиль подготовки Ветеринарный врач Квалификация (степень) выпускника специалист Факультет ветеринарной медицины Ведущие преподаватели Забашта А.П. Козлов Ю.В. Кафедра-разработчик...»

«Системный робот Цель данной статьи - знакомство уже состоявшихся и потенциальных пользователей с новыми возможностями функционирования СКУД Кронверк Профессионал при использовании программного модуля Системный робот. Что такое системный робот Программный модуль Системный робот предназначен для выполнения в рамках СКУД макросов – именованного набора действий, созданного с помощью программы Конфигуратор системы, входящей в основной пакет ПО Кронверк профессионал. Причиною исполнения макроса может...»

«ПРОГРАММА ВСТУПИТЕЛЬНЫХ ЭКЗАМЕНОВ ДЛЯ ПОСТУПАЮЩИХ В ДОКТОРАНТУРУ ПО СПЕЦИАЛЬНОСТИ 06D072100 Химическая технология органических веществ Научно-образовательный центр Химическая инженерия Казахстанско-Британский технический университет Ул. Валиханова, 106, г. Алматы, 050010, Казахстан тел: +7(727)291-5784 e-mail: [email protected] http://www.cheng.kbtu.kz Программа вступительного экзамена для поступающих в докторантуру по специальности 06D072100 – Химическая технология органических веществ разработана...»

«ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования Санкт-Петербургский государственный электротехнический университет “ЛЭТИ” имени В.И. Ульянова (Ленина) (СПбГЭТУ) Учебно-методическое обеспечение для подготовки кадров по программам высшего профессионального образования для тематического направления ННС Нанотехнологии для систем безопасности Примерная основная образовательная программа высшего профессионального образования...»

«1 КОМИТЕТ ОБРАЗОВАНИЯ И НАУКИ АДМИНИСТРАЦИИ ГОРОДА НОВОКУЗНЕЦКА Программа развития МУНИЦИПАЛЬНОГО ОБЩЕОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ЛИЦЕЙ № 11 на 2009-2012 гг. Рассмотрена на педагогическом совете МОУ Лицей №11 _27_августа2009 г. протокол №_1_ УТВЕРЖДАЮ Директор МОУ Лицей № 11 В.Н. Пересыпкин 28 августа 2009г. Новокузнецк Содержание: Паспорт Программы развития I. Информационная справка о лицее II. Проблемный анализ состояния лицея III. Концепция развития лицея IV. План реализации направлений и...»

«    Развитие инфраструктуры Сибири 2013    1 – 4 октября 2013, Новосибирск  МВК Новосибирск Экспоцентр        Официальная программа    1  ОКТЯБРЯ,  вторник (1й день)     11:00 – 11:30  Торжественное открытие промышленной выставки Развитие инфраструктуры Сибири /  Фойе IDES 2013  11:30  12:00  Официальный обход выставочной экспозиции с участием официальных делегаций    12:00  17:30  Форум Социальная и экономическая политика в Сибирском Федеральном округе:  Конф. Зал ...»

«1 Рабочая программа профессионального модуля разработана на основе Федерального государственного образовательного стандарта по специальности среднего профессионального образования (далее – СПО) 060101 Лечебное дело. Организация-разработчик: ГАОУ СПО АО АМК Разработчик: Сажина Маргарита Борисовна, преподаватель первой квалификационной категории ГАОУ СПО АО Архангельский медицинский колледж. Рассмотрена и рекомендована к утверждению цикловой методической комиссией общих профессиональных дисциплин...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ Учебно-методическое объединение вузов Республики Беларусь по химико-технологическому образованию УТВЕРЖДАЮ Первый заместитель Министра образования Республики Беларусь А.И.Жук 2009 г. Регистрационный № ТД-/тип. ПРОЕКТИРОВАНИЕ ПРОИЗВОДСТВ ТЕКСТИЛЬНОЙ ПРОМЫШЛЕННОСТИ Типовая учебная программа для высших учебных заведений по специальности 1-50 01 01 Технология пряжи, тканей, трикотажа и нетканых материалов СОГЛАСОВАНО СОГЛАСОВАНО Заместитель председателя...»

«Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Амурский государственный университет Кафедра Дизайн УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС ДИСЦИПЛИНЫ ПРОИЗВОДСТВЕННАЯ ПРАКТИКА Основной образовательной программы специальности 070601.65 Дизайн, специализация Дизайн среды Благовещенск 2012 УМКД разработан кандидатом педагогических наук, доцентом Каримовой И.С., кандидатом архитектуры, доцентом...»

«Приложение 5 к Программе РЕГЛАМЕНТ приема участника региональной программы Оказание содействия добровольному переселению в Ярославскую область соотечественников, проживающих за рубежом на 2014 – 2020 годы, реализуемой в рамках Государственной программы по оказанию содействия добровольному переселению в Российскую Федерацию соотечественников, проживающих за рубежом, и членов его семьи, их временного размещения, предоставления правового статуса и обустройства на территории вселения 1. Общие...»

«Программа вступительных испытаний по специальности 05.12.04 Радиотехника, в том числе системы и устройства телевидения Содержание программы Раздел 1. Статистическая радиотехника 1.1. Математическое описание и методы анализа сигналов и помех Пространство сигналов. Метрические и линейные пространства сигналов. Дискретные представления сигналов. Полные ортонормальные системы. Интегральные представления сигналов. Преобразования Фурье, Гильберта и другие интегральные преобразования. Разложение...»

«Министерство образования и науки Российской Федерации Государственное бюджетное образовательное учреждение среднего профессионального образования Тольяттинский машиностроительный колледж УТВЕРЖДАЮ Директор ГБОУ СПО Тольяттинский машиностроительный колледж _/М.В.Оборин/ _ 2012 г. ОТЧЕТ по исполнению 1 этапа Государственного контракта от 19 ноября 2012 г. № 06.041.11.0006 Программа (задача, мероприятие): Федеральная целевая программа развития образования на 2011-2015 годы, задача 2 Приведение...»

«Пояснительная записка по технологии 8 класса. Рабочая программа разработана на основе: Федерального базисного учебного плана (приказ МО РФ от 09 марта 2004 года) №1312; приказа Минобразования РФ от 05.03.2004 № 1089 (ред. от 19.10.2009) Об утверждении федерального компонента государственных образовательных стандартов начального общего, основного общего и среднего (полного) общего образования; приказа МО РБ от 19.08.13 № 1384 О рекомендуемых БУП и примерных учебных планах для образовательных...»

«Музейная педагогика в средней школе В.М. Обросова, МОУ СОШ №199 Приоритет; Л.Л. Рыбцова, Т.И. Гречухина, УрГУ; Екатеринбург, Россия During fourteen years School № 199 (Ekaterinburg) implements the subject “This Fairy World”, which includes two modules “Ekaterinburg Museums” and “Ekaterinburg Theatres”. The necessity to integrate this subject into the school curriculum arises from the contradiction between the rich history and wonderful cultural traditions of the region and the inadequacy of the...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное бюджетное образовательное учреждение высшего профессионального образования КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ им. В.П. Астафьева (КГПУ им. В.П. Астафьева) Филологический факультет ПРОГРАММА вступительных испытаний для поступающих в магистратуру Направление подготовки 44.04.01 Педагогическое образование Программа магистратуры Литературное образование в системе современного гуманитарного знания...»




























 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.