SHPORA.net :: PDA

Login:
регистрация

Main
FAQ

гуманитарные науки
естественные науки
математические науки
технические науки
Search:
Title: | Body:

Основные этапы и лексемы решения задач на языке СИ

. Основные элементы программирования
Большинство программ предназначено для решения прикладных задач. В программах это выполняется путем обработки информации. Для решения задачи программа должна выполнить следующие действия:
- ввести информацию в программу;
- запомнить введенную информацию;
- задать команды для обработки информации;
- передать информацию из программы пользователю,
Команды в программе должны быть организованы таким образом, чтобы:
- некоторые из них выполнялись только при истинном значении заданного условия (или набора условий);
- другие команды выполнялись многократно;
- отдельные команды разделены на части, и выполняемые из разных участков программы.
Итак, из выше описанных действий можно выделить семь основных элементов программирования: ввод, типы данных, операции, вывод, условное выполнение, циклы и подпрограммы ( функции для языка Си).
Синтаксис языка C
Есть шесть классов лексем: идентификаторы, ключевые слова, константы, строки, операторы и разделители.
Идентификаторы: последовательность букв и цифр произвольной длины. Первый символ-буква, например, NAME1, name 1, Name 1, name_1…
Ключевые слова: Они зарезервированы для языка и не могут использоваться другим образом. Список ключевых слов языка представлен в табл.
Ключевые слова языка
Типы данных Операторы
Eng Рус Eng Рус
Сhar Символ Asm
Class Класс Break Прерывание
Double Двойной Case Выбор
Enum Перечень Continue Продолжение
Float Плавающий Default По молчанию
Int Целый Delete Удалять
Long Длинное целое Do Делать
Short Короткое целое Else Иначе
Struct Структура For Для
Union Объединение Go to Идти (переход)
Unsigned Беззнаковый If Если
Void Пустой New Новый
Return Возврат Switch Прерывать
Extern Внешняя Inline В линию
Register Регистр Const Постоянный
Overload Переопределение Typedef Тип переменной
Auto Автоматически While Пока
Static Статический Public Открытый
Константы
Константа - значение, которое не можетбыть изменено. Пять типов констант:
–символы (символ - лексема, которая состоит изизображения символа и ограничивающихапострофов), например, 'А', 'а', 'В', '8', '0','+', ';'
–константы перечисляемого типа,
–вещественные числа,
–целые числа,
–нулевой указатель ("null-указатель")
Строки.
Строка – это последовательность символов, заключенная в двойные кавычки “…”. Строка имеет тип char, а класс памяти static. Она инициализируется заданными символами. Все строки, даже если они занесены одинаково, различны. Компилятор располагает в конце каждой строки нулевой (пустой) байт O с тем, чтобы сканирующая строку программа могла найти ее конец. В строке перед символом двойной кавычки должна стоять обязательно . Кроме того, могут использоваться те же обозначения, что были описаны для символьных констант. Примеры: “Это строковая константа”, “A”
Разделители
Разделители с C++ имеют синтаксическое и семантическое значение.
! % ^ & * ( ) - + = { } | ~ [ ] ; ' : " < > ? , . / #

2. Динамические массивы
Динамическим считается массив, который способен в любой момент изменять свой размер. Эта возможность обеспечивается за счет динамического выделения памяти под массив. При этом удобно создать класс, который является оболочкой для данного массива, отвечает за выделение и освобождение памяти под массив, а также обеспечивает доступ к элементам массива.
Когда пользователь создает объект класса-оболочки, конструктор класса выделяет память под массив, который имеет либо указанный пользователем размер, либо размер, заданный по умолчанию. Если по мере заполнения массива вся выделенная память окажется занятой, то при добавлении очередного элемента выделенная ранее память освобождается, все хранящиеся в массиве значения сохраняются во временном массиве. Затем выделяется память под массив большего размера и в него помещаются сохраненные значения. Таким образом, изменение размера массива происходит автоматически, невидимо для пользователя.

В настоящее время практически отпала необходимость использовать подобные динамические массивы, поскольку такие структуры данных, называемые контейнерами, в большом ассортименте представлены в стандартной библиотеке шаблонов С++ - Standard template library (STL), которая поддерживается практически всеми компиляторами. Наиболее типичным примером является класс vector, который содержит все необходимые функции и итераторы. Также полезными являются такие классы-контейнеры, как map, multymap,queue, deque, list, set, multyset.
Краткое описание:
map - ассоциативный массив, который содержит пары "ключ - значение", обеспечивает доступ к значению по ключу.
multymap -ассоциативный массив, в котором могут встречаться одинаковые по значению ключи.
queue - очередь, т.е. массив, организованный по принципу FIFO ("first in first out")
deque - очень напоминает vector; также как и vector поддерживает произвольный доступ к элементам, но не поддерживает некоторые функции, которые присутствуют в классе vector.
list - список, которые не поддерживает доступ к элементу по индексу; вместо этого осуществляется поиск элемента по значению.
set - множество (или простой ассоциативный массив), которое отличается от ассоциативного массива тем, что в нем ключ является одновременно и значением (имеет интерфейс, напоминающий интерфейс map, что позволяет безболезненно их чередовать)
multyset - множество, в котором могут встречаться одинаковые по значению ключи.
#include <vector>
std::vector
#include <map>
std::map
#include <list>
std::list
#include <set>
std::set
также malloc/calloc/realloc/free