Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-ОСНОВЫ ПРОГРАММИРОВАНИЯ.doc
Скачиваний:
87
Добавлен:
10.04.2015
Размер:
650.24 Кб
Скачать
    1. Структура программы на языке Си

Любая программа, написанная на языке Си, состоит из одной или более "функций", являющихся основными модулями, из которых она собирается.

Пример структуры простой программы на языке Си:

Общий вид

Пример

директивы препроцессора

# include <stdio.h>

# define N 10

имя главной функции

main( )

начало тела главной функции

{

объявления переменных и массивов

int x=1; char str[N];

операторы программы

puts("Введите имя");

gets(str);

printf("\n %s, Вы %d мой гость!",str,x);

Конец тела главной функции

}

      1. Директивы препроцессора

Составной частью компилятора является программа, называемая препроцессором. Препроцессор работает до трансляции программы с языка высокого уровня на машинный язык, выполняя её предварительное преобразование. Каждая директива препроцессора начинается с символа # (номер) и занимает всю строку. Директивы, которые не помещаются в одной строке, могут быть продолжены в следующей строке. Признаком продолжения строки является символ обратной косой черты ( \ ) в продолжаемой строке.

Наиболее часто используется директива включения в программу файла

#include <name>

где name – имя файла, включаемого в текст программы.

Эту директиву называют директивой подстановки. Она предписывает компилятору поместить на её место файл name. Файл name называется заголовочным. Он содержит объявления данных и функций, используемых в программе. Например, включение в программу директивы

#include <math.h>

позволит использовать в программе стандартные математические функции, такие как sin x, cos x, ln x и т.д. Список стандартных математических функций будет приведён ниже.

Директива

#include <stdio.h>

даёт возможность использования в программе стандартных функций ввода-вывода.

Другой часто используемой директивой является директива определения

#define S1 S2

где S1, S2 – строки символов.

Препроцессор отыскивает в тексте программы строку символов S1 и заменяет её строкой S2. Например, включение в программу директивы

#define P printf

позволит набирать на клавиатуре букву P вместо слова printf.

Эта замена не выполняется внутри текстовых строк (литералов), символьных констант и комментариев, т.е. действие директивы #define не распространяется на тексты, ограниченные кавычками, апострофами и находящимися внутри комментариев.

      1. Главная функция

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

void main(void)

или

void main( )

      1. Переменные и массивы

Массивом называется группа переменных одного типа с общим именем. Именем переменной или массива является идентификатор – последовательность, составленная из символов:

a – z, A - Z , 0 – 9,_(подчеркивание),

причём первым символом не может быть цифра. Строчные и прописные символы латинского алфавита воспринимаются как разные символы. В качестве имени переменной или массива не могут использоваться служебные слова языка Си. Основные служебные слова языка Си приведены в Приложении.

Элементы массива различаются своими номерами (индексами). Индекс может принимать только целые неотрицательные значения. Индекс записывается после имени массива в квадратных скобках. Индексов может быть несколько. В этом случае каждый индекс записывается в своих квадратных скобках.

В языке Си могут использоваться переменные и массивы различных типов. Данные каждого типа занимают определённое количество байт памяти и могут принимать значения из определённого диапазона. Объём этой памяти и, соответственно, диапазон принимаемых значений в разных реализациях языка Си могут различаться. Количество байт памяти, занимаемой переменной определённого типа для конкретной реализация языка Си можно определить с помощью операции sizeof (тип). Например, определить объём памяти, отводимой под переменную целого типа, можно так:

int k;

k = sizeof(int);

printf(“ Под переменную типа int отводится %d байт памяти”,k);

/*1*/

/*2*/

/*3*/

В данных методических указаниях рассматриваются три основных типа переменных и массивов, приведены типичные значения объёма занимаемой памяти и диапазона значений (табл. 1):

Таблица 1

Тип

Спецификатор типа (Ключевое слово)

Значение

Размер

памяти (байт)

Диапазон значений

Целый

int

Число целого типа

2

- 32768 . . . +32767

4

-2147483648 . . . +2147483647

Действительный

float

Число действительного типа

4

3.4ּ10 -38 . . . 3.4ּ10 38

(по модулю)

Символьный

char

Символ

1

-128 . . . +127

Несколько подробнее остановимся на переменной типа char. Как видно из табл. 1, переменная типа char занимает один байт памяти. В одном байте памяти можно записать либо целое число без знака из диапазона [0, 255], либо целое число со знаком из диапазона [–128, 127]. Это число является кодом одного из 256 символов. Символ, соответствующий данному коду, определяется используемой кодовой таблицей. Таким образом, значение переменной типа char может рассматриваться либо как целое число, либо как символ, код которого равен этому числу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]