- •1 Порядок разработки программного продукта
- •2 Структура программы на языке с
- •Int age; // Поле age
- •Void main(void) // Основная функция
- •3 Типы данных языка с
- •Void main(void)
- •Int *iptr; // Объявление указателя
- •Void main(void)
- •Int *iptr; // Объявление указателя
- •Void main(void)
- •Void show_string(char *string)
- •Void main(void)
- •4 Операции языка с
- •Арифметические операции
- •Void main(void)
- •Void main(void)
- •Логические операции
- •Void main(void)
- •Операции отношения
- •Поразрядные операции
- •Побитовые операции
- •Void main(void)
- •Адресные операции
- •Операция “условие”
- •Void main(void)
- •Операция sizeof()
- •Void main(void)
- •Int size;
- •Void main(void)
- •Int *iptr;
- •Void main(void)
- •Int *list,I;
- •Операция вызова функции
- •5 Операторы языка с
- •Условный оператор if
- •Оператор switch
- •Void main(void)
- •Void main(void)
- •Оператор цикла for
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Цикл while
- •Void main(void)
- •Цикл do ... While
- •Void main(void)
- •Вложенные циклы
- •Void main(void)
- •Void main(void)
- •Int I,j,score;
- •Int scores[line][column];
- •Оператор безусловного перехода
- •Оператор break
- •Void main(void)
- •Оператор continue
- •Void main(void)
- •If (I % 5) continue;
- •Оператор return
- •6 Организация функций
- •Int sum_vect(int V[], int n)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •7 Библиотечные функции
- •7.1 Функции форматного ввода-вывода
- •Int printf(char*format[, argument,...]);
- •Void main(void)
- •Void main(void)
- •Int scanf(char *format[,argument,...]);
- •Функции для работы с файлами
- •Void main(void)
- •Int vect[line];
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •7.3 Графические средства языка с
- •Void main(void)
- •Initgraph(&gdriver, &gmode, ""); // Инициализация графического режима
- •Int maxX, maxY;
- •Void far initgraph(int far *driver, int far *mode, char far *path);
- •Void main(void)
- •Int driver, mode, errorcode;
- •Void far rectangle(int left, int top, int right, int bottom);
- •Void far setviewport(int left, int top, int right, int bottom, int flag);
- •Void far circle(int X, int y, int radius);
- •7.4 Функции для работы со строками
- •Void main (void)
- •Void main (void)
- •Void main (void)
- •Void main (void)
- •Void main (void)
- •7.5 Математические функции
- •Продолжение таблицы а.7
- •Продолжение таблицы а.7
Министерство науки и образования Российской Федерации
Пензенский государственный университет
Основы программирования на языке С
в примерах
Учебное пособие
Пенза 2011
УДК 519.6
Чистова Г.К., Акимова Ю,С., Механов В.Б. Основы программирования на языке С в примерах: Учеб. пособие. — Пенза: Изд-во Пенз. гос. ун-та. — 75 с.
Изложены теоретические основы программирования на языке С и соответствующие примеры. В приложении А приведены: описание среды Borland C и основные библиотечные функции.
Учебное пособие разработано на кафедре “Автономные информационные и управляющие системы” и предназначено для специальностей 170105 «Взрыватели и системы управления средствами поражения» и 220203 «Автономные информационные и управляющие системы».
Ил. 3, табл. 8.
Рецензенты:
ВВЕДЕНИЕ
Широкое распространение языка С объясняется рядом его достоинств: универсальность, гибкость, лаконичность, мобильность. Он является языком высокого уровня: имеет полный набор конструкций структурного программирования, поддерживает модульность, блочную структуру программ, возможность раздельной компиляции модулей, и, в то же время, содержит низкоуровневые средства, позволяющие работать с аппаратными средствами компьютера и добираться до каждого бита памяти. Язык С — это язык системного программирования.
В учебном пособии изложены основные сведения по языку С: типы данных, операции и операторы, структура программы и варианты организации функций, библиотечные функции, в том числе: математические, для графического отображения, работы со строками и файлами. Пособие содержит 50 примеров, решение которых способствует закреплению теоретических знаний. В приложении можно найти справочную информацию о прототипах часто используемых библиотечных функций языка С.
Учебное пособие рассчитано на студентов, которые согласно учебному плану в течение одного семестра прослушивают лекционный курс, выполняют лабораторные и курсовые работы. Материал, изложенный в данном пособии поможет им самостоятельно освоить многие приемы программирования.
1 Порядок разработки программного продукта
Процесс разработки программы на языке С включает следующие этапы:
написание текста исходной программы (исходный код);
ввод исходного текста с помощью текстового редактора;
компиляция модулей. Компиляция — это преобразование исходного кода (программы на языке С) в объектный модуль (файл с расширением OBJ), выполняется компилятором (программой из состава среды программирования). Компилятор может показать синтаксические ошибки в программе — неверно написанный оператор, незакрытая скобка и т.д.;
проверка и отладка синтаксиса программы;
5) объединение (построение или связывание) откомпилированных модулей в программу (файл программы EXE). На этом этапе к программе подсоединяются необходимые библиотеки. Библиотека — это файл с расширением LIB, который содержит готовые для использования (откомпилированные) функции. Существуют стандартные библиотеки языка С. Они обеспечивают вывод информации на дисплей, ввод с клавиатуры, работу с файлами и многие другие необходимые при программировании функции;
отладка программы с помощью отладчика DEBUGGER. Отладка — действия программиста по поиску логических ошибок в программе: неверно написанная формула для вычислений, неправильно организованные данные программы и т.д. Отладчик — программа, позволяющая производить отладку при пошаговом выполнении файла программы;
запуск программы.
На различных этапах разработки программы можно воспользоваться информацией о работе в среде Borland C, содержащейся в приложении А (табл. А.1 — А.6).
2 Структура программы на языке с
Программа на языке С имеет следующую структуру:
< команды препроцессора >
< определение типов >
< прототипы функций >
< переменные >
< функции >.
Рассмотрим ее на примере вычисления среднего возраста людей.
// Пример 2.1
//Пример структуры программы
#include <stdio.h> // Подключает функцию printf()
#include <conio.h> // Подключает функции clrscr(), getch()
#define MAXLINE 3 // Задает константу MAXLINE, равную 3
typedef struct // Определяет тип данных “структура”
{
char *name; // Поле name
Int age; // Поле age
} list;
float function_sr(); // Прототип функции
list spisok[MAXLINE]={ “Петров”, 25, // Описание и
“Иванов”, 27, // инициализация
“Сидоров”, 29}; // переменной
Void main(void) // Основная функция
{
int i;
float sr;
clrscr();
printf(“Список лиц: \n”);
for (i=0; i<MAXLINE; i++)
printf(“%s %d лет \n”,spisok[i].name, spisok[i].age);
sr = function_sr();
printf(“Средний возраст лиц %3.0f лет \n”, sr);
getch();
}
float function_sr() // Функция вычисления среднего
{ // арифметического
int i;
float sum=0;
for(i=0; i<MAXLINE; i++)
sum+=spisok[i].age;
sum=sum/MAXLINE;
return(sum);
}
Препроцессор языка С — это программа, выполняющая обработку входных данных для другой программы. Препроцессор просматривает программу до компиляции, заменяет аббревиатуры в исходном коде на соответствующие директивы, отыскивает и подключает необходимые файлы.
Директива #include <> осуществляет подключение информации из другого файла в программу. Например, для использования функций форматного ввода-вывода printf() и scanf() необходимо подключить файл stdio.h; а функций очистки экрана clrscr() и ожидания ввода символа с клавиатуры getch() — файл conio.h.
Директивой #define в программе задаются константы. По соглашению программистов константы обозначаются прописными буквами. Обычно константы выносятся в отдельный файл, который можно озаглавить, например, const.h. К программе он подключается с помощью директивы #include “const.h”.
Директива #define вводит также макроопределение — макрос. Например, для возведения в квадрат можно определить макрос в виде
#define square(x) ((x)*(x)).
Когда компилятор встречает в программе макрос square(x), он заменяет его на произведение ((x)*(x)).
В блоке определения типов объявляют тип, который является произвольным от базового (раздел 3). Служебное слово typedef является необязательным. В данной программе объявлен тип struct (структура). Кроме того, язык С предусматривает типы: union (объединение) и enum (перечисление). Возможны следующие формы объявления типа:
typedef struct 2) struct 3) struct list
{ { {
} list; } list; };
Поля записываются в виде:
базовый_тип имя_переменной;
Язык С построен по функциональному принципу. Любая программа содержит одну основную функцию — main. Чаще всего ее тип не определен (void). Функции, имеющие базовый тип, возвращают вычисленное значение в основную программу или другую функцию. Они могут быть описаны одним из трех способов:
1-й способ: < прототип функции(й) >
< блок main >
< определение функции(й) >
2-й способ: < определение функции(й) >
< блок main >
3-й способ: функция может быть определена во внешнем блоке, например, как sred.h. В основной программе она подключается с помощью директивы #include “sred.h”
Прототип функции записывается в форме:
тип_функции имя_функции([тип аргумент,...]);
Аргументы и типы могут отсутствовать. Структура функций аналогична структуре программы.
В разделе программы “Переменные” обычно описывают глобальные переменные, доступные для любой части программы.