Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы для подготовки к экзамену по ОП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
297.52 Кб
Скачать

Способы записи алгоритма

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

  • Табличный — в форме двумерных таблиц (таблицы решений, таблицы переходов и т.п.) Не универсален, но удобен в отдельных случаях.

  • Графический — наиболее нагляден. Используется в виде схем алгоритмов и программ.

Схема алгоритма состоит из блоков, обозначающих действия, соединенных стрелками, определяющими порядок выполнения действий. Блоки называются символами.

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

Основными символами являются:

"процесс" (прямоугольник) — для описания операций ввода, обработки и вывода данных;

"решение" (ромб) — для разветвления алгоритма;

"пуск-останов" (овал) — обозначает начало, конец и прерывание выполнения алгоритма;

"комментарий" — для пояснения схемы.

Отмечу, что, введя понятие «Программи́рование» так, как это было сделано выше мы его подвергли искусственному суженное, так как программировать (предписывать) конечно же можно долеко не только для компьютеров.

Тема №2 Переменные

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

  • Символы английского алфавита.

  • Цифры и знак подчёркивания.

  • Переменная не должна совпадать с ключевыми словами (это специальные слова, которые используются в качестве управляющих конструкций, для определения типов и т.п.)

auto

double

int

struct

break

else

long

switch

register

typedef

char

extern

return

void

case

float

unsigned

default

for

signed

union

do

if

sizeof

volatile

continue

enum

short

while

inline

А также ряд других слов, специфичных для данной версии компилятора, например far, near, tiny, huge, asm, asm_ и пр.

Например, правильные идентификаторы

a, _, _1_, Sarkasm, a_long_variable, aLongVariable, var19, defaultX, char_type

неверные

1a, $value, a-long-value, short

Си — регистрозависимый язык. Переменные с именами a и A, или end и END, или perfectDark и PerfectDarK — это различные переменные.

Типы переменных

Тип переменной определяет

  • Размер переменной в байтах (сколько байт памяти выделит компьютер для хранения значения)

  • Представление переменной в памяти (как в двоичном виде будут расположены биты в выделенной области памяти).

В си несколько основных типов. Разделим их на две группы — целые и числа с плавающей точкой.

Целые

char - размер 1 байт. Всегда! Это нужно запомнить.

short - размер 2 байта

int - размер 4 байта

long - размер 4 байта

long long - размер 8 байт.

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

char <= short <= int <= long <= long long

Размер переменных стандартных типов данных Си вариируется в зависимости конкретной архитектуры и соответствующего её компилятора.

Теперь давайте определим максимальное и минимальное число, которое может хранить переменная каждого из типов. Числа могут быть как положительными, так и отрицательными. Отрицательные числа используют один бит для хранения знака. Иногда знак необходим (например, храним счёт в банке, температуру, координату и т.д.), а иногда в нём нет необходимости (вес, размер массива, возраст человека и т.д.). Для этого в си используется модификатор типа signed и unsigned. unsigned char — все 8 бит под число, итого имеем набор чисел от 00000000 до 11111111 в двоичном виде, то есть от 0 до 255 signed char от -128 до 128.

В си переменные по умолчанию со знаком. Поэтому запись char и signed char эквивалентны.

Тип

Размер, байт

Минимальное значение

Максимальное значение

unsigned char

1

0

255

signed char(char)

1

-128

127

unsigned short

2

0

65535

signed short(short)

2

-32768

32767

unsigned int (unsigned)

4

0

4294967296

signed int (int)

4

-2147483648

2147483647

unsigned long

4

0

4294967296

signed long (long)

4

-2147483648

2147483647

unsigned long long

8

0

18446744073709551615

signed long long (long long)

8

-9223372036854775808

9223372036854775807

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

#include<conio.h>

#include<stdio.h>

int main() {

char c;

short s;

int i;

long l;

long long L;

//Вызов sizeof как "функции"

printf("sizeof(char) = %d\n", sizeof(c));

printf("sizeof(short) = %d\n", sizeof(s));

printf("sizeof(int) = %d\n", sizeof(i));

printf("sizeof(long) = %d\n", sizeof(l));

printf("sizeof(long long) = %d\n", sizeof(L));

//Вызов как оператора

printf("sizeof(char) = %d\n", sizeof c);

printf("sizeof(short) = %d\n", sizeof s);

printf("sizeof(int) = %d\n", sizeof i);

printf("sizeof(long) = %d\n", sizeof l);

printf("sizeof(long long) = %d\n", sizeof L);

_getch();

}

(Переменные могут иметь любое валидное имя). Эту программу можно было написать и проще

#include<conio.h>

#include<stdio.h>

int main() {

printf("sizeof(char) = %d\n", sizeof(char));

printf("sizeof(short) = %d\n", sizeof(short));

printf("sizeof(int) = %d\n", sizeof(int));

printf("sizeof(long) = %d\n", sizeof(long));

printf("sizeof(long long) = %d\n", sizeof(long long));

//нельзя произвести вызов sizeof как оператора для имени типа

//sizeof int - ошибка компиляции

_getch();

}

В си один и тот же тип может иметь несколько названий:

  • short === short int

  • long === long int

  • long long === long long int

  • unsigned int === unsigned