Получение символов кода ascii 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Получение символов кода ascii



Технология программирования

1. Роль вычислительной техники в ИС.

2. Методы автоматизации программирования.

3. Алгоритмические языки.

4. Назначение алгоритмического языка и требования, предяъвляемые к нему.

5. Понятие о процедурно-ориентированных языках

6. Понятие об объектно-ориентированном программировании.

7. Понятие о программном обеспечении ПК.

8. Диалоговые средства связи пользователей с ПК.

9. Интегрированные системы программирования.

10. Этапы и уровни разработки программ.

11. Этап технического проектирования программ.

12. Разработка структурных схем алгоритмов.

13. Организация данных.

14. Разработка структуры программ и внутрипрограммного интерфейса.

15. Методы проектирования программного обеспечения.

16. Нисходящее и восходящее проектирование программ и их сочетание.

17. Структурное программирование.

18. Модульное программирование.

19. Выбор языка программирования.

20. Стиль программирования.

21. Показатели качества программирования.

22. Читаемость программ, комментарии.

23. Программирование с защитой от ошибок.

24. Этап отладки и испытания программ.

25. Документирование программ.

26. Введение в систему программирования СИ.

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

28. Состав системы программирования, элементы языка.

29. Типы данных.

30. Объявления.

31. Выражения и присваивания.

32. Операции языка СИ.

33. Операторы языка СИ.

34. Условный оператор.

35. Операторы цикла.

36. Оператор выбора.

37. Функции ввода и вывода.

38. Функции.

39. Описание, определение функции.

40. Операторы goto, вreak и continiue.

41. Классы памяти.

42. Автоматические, статические, внешние, регистровые переменные.

43. Указатели и адресная арифметика.

44. Организация памяти и адресация.

45. Одномерные массивы и указатели.

46. Строки. Обработка строк.

47. Двумерные массивы.

48. Использование указателей для двумерных массивов.

49. Структуры данных.

50. Описание структур.

51. Указатели и структуры данных.

52. Файлы.

53. Описание структуры файлов.

54. Организация работы с файлами.

55. Организация связи с программами на других языках.

56. Использование функций библиотеки при программировании применений.

57. Работа с окнами.

58. Графика в СИ.

59. Особенности программирования на языке Си++.

60. Основы программирование на языке Си++.

 

 

Web-технологии

1. Понятие о Web-технологиях передачи и обработки информации.

2. Историческая справка развития Web-технологий.

3. Обзор типов Web-приложений.

4. Особенности разработки Web-приложений.

5. Современные профессиональные требования к специалистам по Web-технологиям.

6. Клиент-серверная архитектура в Интернет.

7. Клиент-серверное взаимодействие компьютеров и приложений.

8. Компьютерные сети. Иерархия сетей в Интернет.

9. Web-технологии в сетях различного уровня

10.. Понятия ISP, POP, NAP, «последняя миля» в Интернет.

11. Передача информации.

12. Стек протоколовTCP/IP.

13. Процесс IP- маршрутизации.

14. Система доменных имен. DNS-сервер.

15. Браузеры и серверы.

16. Проки-сервер. Формат URL-адреса.

17. Протоколы прикладного уровня модели OSI.

18. Гипертекст и Web-страницы.

19. HTTP сервер и клиент.

20. Электронная почта, протоколы SMTP, POP3, почтовый сервер и клиент.

21. Назначение FTP протокола, формат FTP-ресурса.

22. Назначение Telnet и NNTP.

23. Чат, службы мгновенной почты, сети IRC, IP-телефония, видеоконференции, мобильный Интернет на основе WAP-протокола.

24. Статические и динамические HTML-страницы.

25. Язык гиперстекстовый разметки HTML.

26. Особенности DHTML, XHTML, XML.

27. Технология использования в HTML CSS.

28. Технология, исполняющиеся на стороне клиента и сервера.

29. Механизм работы Web-сервера.

30. Переменные окружения сервера.

31. Технология CGI, заголовки ответов и запросов по CGI.

32. Серверные сценарии PERL, PHP, ASP, SSI.

33. Технология Java, Java-script, VB-script.

34. Графика в Web-приложениях.

35. Технология Flash.

36. Технология создания приложений на основе многоуревневой архитектуры клиент
Web-сервер – сервер баз данных.

37. Защита информации в компьютерных сетях на основе Web-технологий.

38. Сферы применения и перспективы развития Web-технологий.

39. Современное состояние Web-технологий в различных областях человеческой деятельности. Бизнес-приложения.

40. Администрирование Web-сервера.

41. Интерактивное взаимодействие (CGI, серверные включения).

42. Протокол HTTP, как создания интернет-приложений.

43. Заголовки запросов и ответов HTTP. Интерфейс CGI, заголовки CGI –программ.

44. Создание пользовательского интерфейса на основе WUI.

45. Технология создания приложений, исполняющихся на стороне сервера. (CGI –PERL, PHP).

46. Технология создания приложений с применением серверов баз данных.

47. Интерактивные компоненты на HTML-странице.

48. Исследование переменных среды окружения Web-сервера

49. Запись посылаемых данных на Web-сервере.

50. Выполнение прикладных задач на Web-сервере

51. Контроль ввода данных.

52. Ограничение доступа к файлам на Web-сервере.

53. Запись посылаемых данных на Web-сервере в отдельные файлы

54. Запись информации на компьютере клиента (файлы «Cookie».

 

Компьютерные сети.

1. Краткий исторический очерк развития компьютерных сетей.

2. Компьютерные сети, как основа построения информационной системы.

3. Классификация сетей.

4. Локальные и глобальные сети.

5. Сети отделов и кампусов, корпораций.

6. Архитектура сетей. Архитектура терминал – главный компьютер

7. Одноранговая архитектура

8. Архитектура клиент – сервер

9. Классификация топологических элементов сетей.

10. Основные понятия: узлы сети, кабельный сегмент, сегмент сети,

11. Основные понятия: логическая сеть, облако, пассивные и активные коммуникационные устройства.

12. Физическая и логическая топологии.

13. Методы доступа к среде передачи.

14. Источники стандартов.

15. Базовая модель организации взаимодействия открытых систем (модель OSI).

16. Понятие «открытая система».

17. Понятие функционального уровня.

18. Основные функции физического, канального уровней.

19. Основные функции сетевого, транспортного, сеансового уровней.

20. Основные функции представительного и прикладного уровней.

21. Понятие «интерфейс» и «протокол».

22. Понятие «стек коммуникационных протоколов».

23. Стандартные стеки коммуникационных протоколов.

24. Стек OSI, Стек TCP/IP, Стек IPX/SPX. Стек NETBIOS/SMB.

25. Стек SNA. Стек DECnet. Стандарты IEEE 802-x.

26. Аппаратные средства компьютерных сетей

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

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

29. Повторители и концентраторы

30. Мосты и коммутаторы, маршрутизаторы, шлюзы.

31. Функциональное соответствие коммуникационного оборудования уровням модели OSI.

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

33. Требования к серверу, рабочей станции и к сети в целом.

34. Технологии Ethernet. Метод доступа CSMA/CD. Стандарты 10BASE-5, -2, -T, -F.

35. Стандарты Fast Ethernet. Стандарты Gigabit Ethernet.

36. Стандарты локальных сетей. Token Ring. Стандарты FDDI и CDDI.

37. Стандарт 100VG-AnyLAN. Стандарты ARCnet и TCNS.

38. Стандарт Token Bus Local Talk.

39. Общая характеристика оборудования и функций для построения глобальной сети.

40. Структура глобальной сети.

41. Типы глобальных сетей: выделенные каналы, глобальные сети с коммутацией каналов

42. Глобальные сети с коммутацией пакетов.

43. Телефонные сети и их использование для передачи данных.

44. Аналоговые и коммутируемые и выделенные линии.

45. Цифровые выделенные линии. Tехнологии SONET/SDH. IP-телефония.

46. Технологии xDSL. Сети ISDN. Сети X.25.

47. Сети Frame Relay. Технология TDM. Сети ATM.

48. Организация сети. Тенденции и перспективы развития сетевых технологий.

49. Операционные системы одно-ранговых компьютерных сетей.

50. Операционные системы сетей с выделенным сервером.

51. Обзор средств анализа и управления сетями.

52. Обзор современных технологий и программных средств передачи, хранения, поиска, обработки и представления информации.

53. Рабочие станции. Сетевые адаптеры. Файловые серверы

54. Сетевые операционные системы

55. Сетевое программное обеспечение

56. Защита данных в сети

57. Использование паролей и ограничение доступа

58. Типы кабелей

59. Структура сетевой операционной системы

60. Клиентское программное обеспечение. Редиректоры. Распределители

 

31 Выражения и присваивания.

 

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

 

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

 

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

 

ВыражениеПрисваивания::= УсловноеВыражение

::= УнарноеВыражение ОперацияПрисваивания ВыражениеПрисваивания

ОперацияПрисваивания::= = | *= | /= | %= | += | -= |

>>= | <<= | &= | ^= | |=

Присваивание

В одной строке может стоять больше одной операции присваивания =.

Пример.

a=b=c=d=100;

Знак = всегда означает: "переменной слева присвоить значение, стоящее справа ". Операция выполняется справа налево. Поэтому первой значение 100 получает переменная d, затем с, b и а.

 

 

32 Операции языка СИ.

Операции отношения

Таблица 1.3.3.

Операции Описание
= = Равно
> Больше
< Меньше
>= Больше или равно
<= Меньше или равно
!= Не равно

Замечание 1.

Знак = никогда не используется как знак сравнения! Это знак присвоить значение.

Замечание 2.

В C++ нет логического типа. Поэтому, если выражение принимает ненулевое значение, то оно считается истинным, а если не нулевое - ложным.

Операции инкремента (++) и декремента (-)

В языке C++ предусмотрены две уникальные операции, которые увеличивают или уменьшают значение переменной на 1.

Таблица 1.3.4.

Оператор Пример Описание Эквивалентное выражение
+ + i + +; Постфиксная i =i+1; или i+=1;
+ + + + i; Префиксная i =i+1; или i+=1;
- - i - -; Постфиксная i =i-1; или i-=1;
- - - - i; Префиксная i =i-1; или i-=1;

 

Операция sizeof

Имеет формат

sizeof данные

или

sizeof (тип данных)

Операция sizeof возвращает размер в байтах указанного в ней данного или типа данных.

Операция "запятая"

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

Оператор?:

(Условие)? (выражение1):(выражение2)

Если условие истинно, то выполняется выражение1, а если ложно, то выражение2.

 

33 Операторы языка СИ.

Логические

Условные

Основные

 

Инструкция или оператор (англ. statement) — наименьшая автономная часть языка программирования; команда. Программа обычно представляет собой последовательность инструкций.

Многие языки (например, Си) различают инструкцию и определение. Различие в том, что инструкция исполняет код, а определение создаёт идентификатор (то есть можно рассматривать определение как инструкцию присваивания).

 

Все операторы языка СИ могут быть условно разделены на следующие категории:

- условные операторы, к которым относятся оператор условия if и оператор выбора switch;

- операторы цикла (for,while,do while);

- операторы перехода (break, continue, return, goto);

- другие операторы (оператор "выражение", пустой оператор).

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

Все операторы языка СИ, кроме составных операторов, заканчиваются точкой с запятой ";".

 

34 Условный оператор.

Для задания разветвляющихся вычислительных процессов обычно используются условные операторы, которые относятся к структурированным операторам языка Zonnon. Синтаксис условного оператора приведен на рис. 3.3.


IfStatement = if Expression then StatementSequence
{elsif Expression then StatementSequence}
[else StatementSequence]
end.

Рис. 3.3. Синтаксис условного оператора

Условный оператор в стандартной форме состоит из условия (логического выражения) и двух последовательностей операторов, размещенных после символа then и после символа else. Действие всего такого условного оператора совпадает (если при вычислении условия не возникают побочные эффекты, или,что тоже, самое изменения в состоянии памяти -- см. п. 6.1.5) с действием одной из двух составляющих его последовательностей операторов, выбор которой для исполнения осуществляется по значению условия, вычисление которого начинает выполнение условного оператора. Условный оператор назначает к исполнению первую последовательность операторов (он стоит непосредственно после символа then), если на текущем состоянии памяти ВМ условие принимает истинное значение, либо вторую последовательность операторов (она находится за символом else), если условие ложно.

 

 

35 Операторы цикла.

 

Оператор цикла

В языке С, как и в других языках программирования, операторы цикла служат для многократного выполнения последовательности операторов до тех пор, пока выполняется некоторое условие. Условие может быть установленным заранее (как в операторе for) или меняться при выполнении тела цикла (как в while или do-while).

Цикл for

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

for (инициализация; условие; приращение) оператор;

Цикл for может иметь большое количество вариаций. В наиболее общем виде принцип его работы следующий. Инициализация — это присваивание начального значения переменной, которая называется параметром цикла. Условие представляет собой условное выражение, определяющее, следует ли выполнять оператор цикла (часто его называют телом цикла) в очередной раз. Оператор приращение осуществляет изменение параметра цикла при каждой итерации. Эти три оператора (они называются также секциями оператора for) обязательно разделяются точкой с запятой. Цикл for выполняется, если выражение условие принимает значение ИСТИНА. Если оно хотя бы один раз примет значение ЛОЖЬ, то программа выходит из цикла и выполняется оператор, следующий за телом цикла for.

В следующем примере в цикле for выводятся на экран числа от 1 до 100:

#include <stdio.h> int main(void){ int x; for(x=1; x <= 100; x++) printf("%d ", x); return 0;}

Бесконечный цикл

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

for(;;) printf("Этот цикл крутится бесконечно.\n");

 

 

36 Оператор выбора.

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

CaseStatement = case Expression of Case {"|" Case} [ else StatementSequence] end.
Case = [CaseLabelList ":" StatementSequence].
CaseLabelList = CaseLabels {"," CaseLabels}.
CaseLabels = ConstExpression [".." ConstExpression].

Рис. 3.8. Синтаксис оператора выбора

В операторе выбора (см. рис. 3.8) также допускается несколько вариантов (альтернативных последовательностей операторов). При этом с каждым вариантом связывается свой (отличный от других) элемент разбиения всех возможных значений условия на непустые (попарно не пересекающиеся) подмножества так называемых меток вариантов. Условие должно быть целого типа, литерного типа или типа перечисления (см. гл. 4). При выполнении оператора выбора условие осуществляет выбор варианта -- выполняется тот альтернативный оператор, среди меток вариантов которого есть константа, совпадающая с текущим значением условия (если такой метки не окажется, то фиксируется ошибка в программе).

Например, оператор выбора

case X of
'=': K:=0
|'*', ' + ': K:=1
|'-': K:=2
else K:=3
end

равносилен оператору

if X = ' = ' then K:= 0
elsif (X = '*') or (X = '+') then K:= 1
elsif X = '-' then K:= 2
else K:=3
end.

37 Функции ввода и вывода.

Стандартные функции ввода/вывода в языке С. Сюда вошли функции, определенные как в Стандарте C89, так и в Стандарте C99. С функциями ввода/вывода ассоциирован заголовок <stdio.h>. Этот заголовок определяет некоторые макросы и типы, которые используются файловой системой. Наиболее важным из них является тип FILE, который используется для объявления указателя на файл. Два других часто используемых типа — size_t и fpos_t. Тип size_t, представляющий собой некоторую разновидность целых без знака, — это тип результата, возвращаемого функцией sizeof. Типfpos_t определяет объект, который однозначно задает каждую позицию в файле. Самым популярным макросом, определенным в этом заголовке, является макрос EOF, значение которого указывает на конец файла. Другие типы данных и макросы, определенные в заголовке <stdio.h>, описаны вместе с функциями, с которыми они связаны.

Многие функции ввода/вывода при возникновении ошибки присваивают встроенной глобальной переменной целого типаerrno определенное значение. Анализ этой переменной поможет программе получить более подробную информацию о возникшей ошибке. Значения, которые может принимать переменная errno, зависят от конкретной реализации компилятора.

В версии C99 введен квалификатор restrict, который применяется к некоторым параметрам нескольких функций, первоначально определенных в версии C89. При рассмотрении каждой такой функции будет приведен ее прототип, используемый в среде C89 (который одновременно является прототипом в C++), а параметры с атрибутом restrict будут отмечены в описании этой функции.

clearerr, fclose, feof, ferror, fflush, fgetc, fgetpos, fgets, fopen,
fprintf, fputc, fputs, fread, freopen, fscanf, fseek, fsetpos, ftell, fwrite,
getc, getchar, gets, perror, printf, putc, putchar, puts, remove, rename,
rewind, scanf, setbuf, setvbuf, snprintf, sprintf, sscanf, tmpfile,
tmpnam, ungetc, vprintf, vfprintf, vsprintf, vsnprintf, vscanf, vfscanf, vsscanf.

 

38 Функции.

Функция — многозначный термин, который означает такое отношение между элементами, в котором изменение в одном влечет изменение в другом:

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

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

В некоторых языках программирования (например, в Паскале) функции и процедуры (подпрограммы, не возвращающие значения) чётко разграничены синтаксисом языка. В других — например, в языке Си, — процедуры являются частным случаем (подмножеством) функций, возвращающими значение типа (псевдотипа[ источник не указан 963 дня ]) void — пустое значение.

 

39 Описание, определение функции.

Определение термина может быть. Определения функции нет. Есть описание (декларация) и реализация.
Описание функции - это написание прототипа функции. Прототип состоит из типа возвращаемого значения функции, идентификатора(имени) функции и списка параметров, после чего стоит точка с запятой.
А реализация - это тоже самое, только в конце вместо точки с запятой идет тело функции.

Пример:

Код:

 

//декларация

int Square(int a, int b);

 

//реализация

int Square(int a, int b)

{

return a*b;

}

 

40 Операторы goto, вreak и continiue.

Оператор goto

goto (от англ. go to — «перейти к») — оператор безусловного перехода (перехода к определённой точке программы, обозначенной номером строки либо меткой) в некоторых языках программирования.

Как правило, оператор goto состоит из двух частей: собственно оператора и метки, указывающей целевую точку перехода в программе: goto метка. Метка, в зависимости от правил языка, может быть либо числом (как, например, в классическом Бейсике), либо идентификатором используемого языка программирования. Для меток-идентификаторов метка, как правило, ставится перед оператором, на который должен осуществляться переход, и отделяется от него двоеточием (метка:).

 

Оператор вreak

Оператор break заканчивает выполнение ближайшего внешнего цикла или условного оператора, в котором он отображается. Элемент управления передаётся оператору, который следует за завершающим оператором, если таковой имеется.

break оператор используется с условным переключение выписка и с do" дляи пока выписки цикла.

В операторе switch оператор break заставляет программу выполнить оператор, следующий за оператором switch. Без a break выписка каждая из соответствующих, оператор case метка в конец switch выписка, включая default предложение во время выполнения.

в циклах, break оператор near заключать когда завершается выполнение do " for или while выписка. Элемент управления передаётся оператору, который следует за завершающим оператором, если таковой имеется.

В пределах вложенного выписок, break выписка только выполнение do " for " switch или while выписка, немедленно завершает его. Можно использовать a return OR goto выписка к элементу управления переключения из глубоко вложенных структур.

 

Оператор continiue

Оператор continue тоже предназначен для прерывания циклического процесса, организуемого операторами for, while, do-while. Но в отличае от оператора break, он не прекращает дальнейшее выполнение цикла, а только немедленно переходит к следующей интерации того цикла, в теле которого он оказался. Он как бы имитирует безусловный переход на конечный оператор цикла, но не за ее пределы самого цикла. Программа на примере 5.1 использует оператор continue для пропуска отрицательных элементов массива, суммируя только положительные.

 

 

41 Классы памяти.

Класс памяти переменной (англ. Storage class) — понятие в некоторых языках программирования. Он определяет область видимости переменной, а также как долго переменная находится в памяти.

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

 

42 Автоматические, статические, внешние, регистровые переменные.

auto — автоматическая (локальная), динамическая переменная. Автоматические переменные создаются при входе в функцию и уничтожаются при выходе из неё. Они видны только внутри функции или блока, в которых определены. Этот класс памяти используется, если не указан ни один из четырёх модификаторов, и в C++0x значение слова auto изменили.

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

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

register — регистровая переменная (локальная). Это слово является всего лишь «пожеланием» компилятору помещать часто используемую переменную в регистры процессора для ускорения программы.

 

43 Указатели и адресная арифметика.

Адресная арифметика (address arithmetic) - это способ вычисления адреса какого-либо объекта при помощи арифметических операций над указателями, а также использование указателей в операциях сравнения. Адресную арифметику также называют арифметикой над указателями (pointer arithmetic).

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

 

Указатель – это переменная, которая хранит адрес памяти.

Указатель (англ. pointer) — переменная, диапазон значений которой состоит из адресов ячеек памяти или специального значения — нулевого адреса. Последнее используется для указания того, что в данный момент там ничего не записано.

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

 

 

44 Организация памяти и адресация.

Организация памяти

Программы могут работать с памятью как с одним непрерывным массивом (модель памяти flat – плоская) или как с несколькими массивами (сегментированные модели памяти). Во втором случае для задания адреса любого байта требуется два числа – адрес начала массива и адрес байта внутри этого массива.

Кроме основной памяти программы могут использовать регистры процессора.

Выбор метода обращения к памяти определяется режимом работы процессора. Процессоры Intel могут работать в одном из трёх основных режимах:

· Реальный режим (режим реальной адресации – Real-address mode)

· Защищённый режим (Protected mode)

· Режим управления системой (System Management mode)

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

 

 

Адресация

Адресация — осуществление ссылки (обращение) к устройству или элементу данных по его адресу[1]; установление соответствия между множеством однотипных объектов и множеством их адресов; метод идентификации местоположения объекта[2].

Классовая адресация сетей — метод IP-адресации. Использование этого метода не позволяет экономно использовать ограниченный ресурс IP-адресов, поскольку невозможно применение различных масок подсетей к различным подсетям.

Многоуровневая адресация

Иногда указатель может ссылаться на указатель, который ссылается на число. Это называется многоуровневой адресацией. Иногда применение таких указателей существенно усложняет программу, делает ее плохо читаемой и подверженной ошибкам. Рис. 5.3 иллюстрирует концепцию многоуровневой адресации. На рисунке видно, что значением "нормального" указателя является адрес объекта, содержащего нужное значение. В случае двухуровневой адресации первый указатель содержит адрес второго указателя, который содержит адрес объекта с нужным значением.

 

 

45 Одномерные массивы и указатели.

В языке C понятие массива тесно связано с понятием указателя. Действительно, как было описано выше, имя массива представляет собой адрес области памяти, распределенной под этот массив, или иными словами адрес первого элемента массива. Пусть описаны следующие данные:

int a[100], *pa;

и осуществлено присваивание:

pa = a;

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

pa[0] или *pa будет обозначать a[0];

pa[1] или *(pa+1) будет обозначать a[1];

pa[2] или *(pa+2) будет обозначать a[2] и т. д. И вообще обозначения вида *(pa+n) и pa[n] являются полностью эквивалентными. Точно также эквивалентны выражения *(a+i) и a[i].

 

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

 

 

46 Строки. Обработка строк.

Строки

Строковый тип данных

Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:

var s: string[n];

var s: string;

n - максимально возможная длина строки - целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.

Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).

Обработка строк

В QBASIC функция состоит из имени и аргументов, которые заключаются в круглые скобки и располагаются всегда за именем функции. Значения функций обработки строк могут быть или типа STRING, или принадлежать к группе арифметических типов данных. Функции, наряду с переменными и константами, применяют в качестве составляющих оператора или используют при составлении выражений или логических условий. Естественно, зна- чение функции должно быть совместимо с остальными составляющими оператора, например, в арифметическое выражение нельзя встраивать функцию, значение которой является строковым выражением.

Определение длины строки

Выбор подстроки

Получение строчных символов

Устранение ведущих пробелов

Создание строки из пробелов

Преобразование строки в число

47 Двумерные массивы.

Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы. Другими словами, это набор однотипных данных, имеющий общее имя, доступ к элементам которого осуществляется по двум индексам. Наглядно двумерный массив удобно представлять в виде таблицы, в которой n строк и m столбцов, а под ячейкой таблицы, стоящей в i-й строке и j-м столбце понимают некоторый элемент массива a[i][j].

Действительно, если разобраться с тем, что такое a[i] при фиксированном значении i, то увидим, что это одномерный массив, состоящий из m элементов, к которым можно обращаться по индексу: a[i][1], a[i][2],..., a[i][m]. Схематически это вся i-я строка строка таблицы. Аналогично, если мы рассмотрим одномерный массив строк, то сможем заметить, что это так же двумерный массив, где каждый отдельный элемент - это символ типа char, а a[i] - это одномерный массив, представляющий отдельную строку исходного одномерного массива строк. Исходя из идеи определения думерного массива можно определить рекурентное понятие многомерного массива:

48 Использование указателей для двумерных массивов.

Пусть имеются следующие определения массивов и указателей:

int A[4][2], B[2];

int *p, (*pA)[4][2], (*pAstr)[2];

Здесь A представляет собой двумерный массив из четырех строк и двух столбцов, B - одномерный массив из двух элементов. Для каждого из этих массивов будет выделено соответствующее количество памяти, достаточное для хранения всех их элементов.

Указатель p представляет собой указатель на величину int, указатель pA - указатель на двумерный массив из четырех строк и двух столбцов, pAstr - указатель на одномерный массив из двух элементов. Все указатели имеют размер, равный размеру адреса для данных в используемой модели памяти. Память для хранения данных, естественно, не выделяется. Количество элементов данных из описания массивов будет использовано лишь для корректного изменения значения указателя при выполнении над ним допустимых арифметических операций.

49 Структуры данных.

Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс.

Термин «структура данных» может иметь несколько близких, но тем не менее различных значений[1]:

Абстрактный тип данных;

Реализация какого-либо абстрактного типа данных;

Экземпляр типа данных, например, конкретный список;

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

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

50 Описание структур.

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



Поделиться:


Последнее изменение этой страницы: 2016-08-01; просмотров: 136; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.146.37.35 (0.184 с.)