Файл: ПОНЯТИЕ ПЕРЕМЕННОЙ В ПРОГРАММИРОВАНИИ. ВИДЫ И ТИПЫ ПЕРЕМЕННЫХ (Простые и сложные типы данных).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 418

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

Цель работы практически любого программного обеспечения может быть представлена набором следующих задач – ввод информации, её хранение, изменение, а также вывод в удобном для пользователя формате. Для создания программ существует огромное количество языков программирования. И в любом языке одним из наиболее часто используемых понятий являются переменные.

Каждый язык программирования решает вопрос использования переменных по-своему. В одних языках используется статическая типизация, в других динамическая. В парадигме функционального или логического программирования, понятие и смысл использования переменной могут несколько отличаются от использования в парадигме процедурного программирования.

В данной курсовой работе будет рассмотрено понятие переменной в программировании, а также будут рассмотрены типы переменных языка Си.

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

В курсовой работе переменные будут рассмотрены на основе языка программирования Си. Это компилируемый статически типизированный язык программирования общего назначения. Он был разработан в 1969-1973 годах сотрудником Bell Labs Деннисом Ритчи. К 1973 году на языке Си была переписана большая часть ядра Unix, а сам язык оказал существенное влияние на всю индустрию разработки программного обеспечения. В том числе, синтаксис языка Си впоследствии стал основой для таких языков программирования, как C++, C#, Java.

Несмотря на то, что данному языку уже более 45 лет, Си до сих пор используется для разработки программного обеспечения. Особенно там, где необходимо максимальное быстродействие и экономия памяти.

А так же, данные язык хорошо подходит для начала изучения программирования, так как он имеет достаточно простую языковую базу, а Си-подобный синтаксис используют многие языки программирования, что позволяет выполнить переход на другие языки в будущем проще.

Данная курсовая работа состоит из трех глав.

В первой главе будет подробно рассмотрено понятие переменной.

Во второй главе мы рассмотрим простые и сложные типы данных и особенности работы с ними.

В третьей главе будут рассмотрены указатели и особенности работы с ними.

  1. Понятие переменной в программировании


1.1. Переменные

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

Для хранения данных программа использует память вычислительной системы. Управление памятью является одной из основных задач программиста. Ведь память в любой вычислительной системе является не бесконечным ресурсом. А грамотное использование ресурсов вычислительной системы является очень важным пунктом при создании эффективных программ. Сама память в вычислительной системе используется для хранения многих данных, в том числе:

  • сама выполняемая программа;
  • определенные пользователем переменные, структуры данных и константы;
  • системные программы, осуществляющие вспомогательные действия;
  • временная память для хранения промежуточных результатов вычислений;
  • точки возврата;
  • буферы ввода-вывода, которые используются для передачи данных между моментами передачи данных с устройства.

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

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

Аналогом ячеек памяти в языках программирования высокого уровня являются переменные.

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

После того, как переменной будет присвоено некоторое значение, то саму переменную можно использовать в дальнейших вычислениях. Например, в следующем участке кода в переменную X заносится значение 9, в переменную Y заносится значение -13. А в переменной c сохраняется значение сложения X и Y, равное -4.

X = 9;

Y = -13;

Sum = X + Y;


Значения переменных X и Y могут быть изменены, они могут быть считаны с клавиатуры от пользователя, или быть результатом других выражений. В переменную Sum будет занесен результат вычисления, основанный на значениях переменных X и Y. Таким образом, использование переменных в программировании позволяет писать универсальные программы. Программы, которые не зависят от конкретных значений, и могут запускаться и получать результат для различных начальных данных. При том, что внесения изменений в код программы не требуется.

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

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

На рисунке 1 изображена схема хранения значения переменных в ячейках памяти.

Рисунок 1. Хранение значений переменных в памяти

Для того, чтобы внутри программы разработчик мог обращаться к переменным, каждая переменная должна иметь своё собственное уникальное имя.

Именем переменной, или идентификатором переменной может выступать любая допустимая последовательность символов. Программист может выбирать любые допустимые имена для своих переменных, но рекомендуется выбирать такие имена, которые будут наиболее точно отображать смысл тех данных, которые содержит в себе переменная.

Например, пускай у нас есть две переменные X и Y. И мы хотим получить сумму двух этих чисел в отдельную переменную. Для имени результирующей переменной лучше выбрать значение sum, нежели абстрактное z.

sum = X + Y;

z = X + Y;

При таком подходе при разработке более крупных приложений намного легче ориентироваться в переменных, а не путаться в бесконечных A, B, C, A1, что способствует повышению скорости и качества разработки.

В языке Си существует некоторый набор требований к имени переменной.

Имя переменной не может являться ключевым словом языка. Ключевыми словами называются предопределенные идентификаторы, которые имеют специальное значение для компилятора языка Си. Список ключевых слов языка Си приведен в приложении 1.


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

Ниже приведены несколько примеров с корректными именами переменных:

«a», «abc», «Abc», «_aaa», «var1», «_var_12»

Ниже приведены несколько примеров с не корректными именами переменных:

«123», «awd awd», «переменная1»

Также нужно помнить, что язык Си является регистрозависимым языком. Это значит, что переменные с идентификаторами «abc» и «ABC», «var1» и «vaR1», «countItems» и «countitems» являются различными переменными и могут содержать в себе разные значения.

1.2. Типы данных переменных

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

Несмотря на это, при разработке программного обеспечения программисты уже давно работают с данными в их естественном представлении. Например, если в программе необходимо получить или вывести строку, то работа с ней для программиста выполняется не в виде последовательности кодов символов, а в естественном виде – с использованием букв и других символов. Такие возможности существуют благодаря тому, что программист для каждой переменной указывает тип данных, к которому будет относиться та или иная переменная.

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

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

Тип переменной задает следующие параметры:

  • размер ячейки;
  • способ кодирования содержимого ячейки;
  • допустимые операции преобразования над значением переменной.

Все используемые в программе переменные должны быть описаны до их первого использования.


А также, каждая переменная должны быть объявлена только один раз.

В языке Си имеется четыре базовых типа:

  • char – символьный тип;
  • int – целый тип;
  • float – вещественный тип одинарной точности;
  • double – вещественный тип двойной точности.

Подробнее про каждый тип данных будет рассказано во второй главе.

1.3. Хранение переменных в памяти компьютера

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

Для хранения данных, при выполнении программы, используются два участка оперативной памяти, которые называются кучей (heap) и стеком (stack).

Стеком называется такая область оперативной памяти, которая создаётся для каждого потока. Стек организован и работает в порядке LIFO (Last In, First Out, «последним пришел, первым вышел»). Другими словами, последний добавленный в стек элемент, в частности кусок памяти, будет первым в очереди на вывод из стека при получении данных. Каждый раз, когда функция программы объявляет новую переменную, она добавляется в стек, а когда эта переменная пропадает из области видимости (например, это происходит в тот момент, когда функция заканчивается), она автоматически удаляется из стека. В момент, когда стековая переменная освобождается, эта область памяти становится доступной для использования других стековых переменных. [1]

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

Размер стека — это фиксированная величина, и превышение лимита выделенной на стеке памяти приведёт к переполнению стека. Размер задаётся при создании потока, и у каждой переменной есть максимальный размер, зависящий от типа данных. Это позволяет ограничивать размер некоторых переменных (например, целочисленных), и вынуждает заранее объявлять размер более сложных типов данных (например, массивов), поскольку стек не позволит им изменить его. Кроме того, переменные, расположенные на стеке, всегда являются локальными.