МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Программирование на языках высокого уровня

    Recspisok, адрес которой содержится в указателе L увеличивается на единицу

    (k – тип word). Значению переменной st присваивается значение пустой

    строки, переменной b (признак наличия текущего слова в списке L)

    присваивается значение true. Указатель L принимает значение ссылки

    содержащейся в данном элементе списка, на который указывает указатель L.

    Иначе указатель L принимает значение ссылки содержащейся в данном элементе

    списка, на который указывает указатель L. И таким образом проверяется

    следующий элемент списка L и т. д. весь список L, на содержание текущего

    слова в списке. Если оно уже существует в списке L, то число вхождений

    этого слова в тексте программы увеличивается на 1, если оно не содержится в

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

    операторами IF и THEN. И это слово включается в список L.

    8) Проверяется условие: если переменная b (Признак наличия текущего

    слова в списке L) равна значению false, что соответствует отсутствию слова,

    содержащегося в переменной st в списке L, и переменная st не равна пустой

    строке, и переменная с (признак считывания раздела программы, после встречи

    слов: TYPE, VAR, CONST, PROCEDURE, FUNCTION) равна значению true, что

    соответствует то выполняется следующее. Указатель L принимает значение

    указателя Fst, имеющего адрес первого элемента списка L. Далее с помощью

    стандартной процедуры NEW резервируется память в ЭВМ под динамическую

    переменную, адрес которой будет содержать указатель Fst. В поле s

    динамической переменной, адрес которой содержится в указателе Fst

    присваивается значение слова, содержащегося в переменной st. Количество

    вхождений этого слова в тексте программы, содержится в поле k динамической

    переменной, на которую указывает указатель Fst. В данное поле записывается

    значение 1. И в поле ссылки данной динамической переменной, адрес которой

    содержится в указателе Fst записывается значение адреса указателя L,

    который имел значение адреса первого элемента списка L. А далее указатель L

    принимает значение адреса указателя Fst. Переменной st присваивается

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

    st присваивается значение пустой строки.

    На этом часть проверки слова заканчивается. Она начиналась с проверки

    значения переменной a. И если а не равно true, то тогда в конец слова,

    содержащегося в переменной st добавляется символ, содержащийся в переменной

    ch.

    Далее проверяется условие: если символ в переменной ch равен коду #26,

    что соответствует концу файла, то происходит выход из цикла, образованного

    операторами REPEAT и UNTIL, если же символ не равен этому коду, то тогда

    программа переходит к началу этого цикла. В результате чего формируется

    список L, содержащий все идентификаторы программы и число их вхождений в

    тексте программы.

    Далее формируется новый список (Est), который будет содержать эти слова

    в алфавитном порядке.

    С помощью процедуры NEW в памяти ЭВМ резервируется место под

    динамическую переменную, адрес которой будет содержаться в указателе FEst

    (указатель, содержащий адрес первого элемента списка Est). В поле s

    динамической переменной, адрес которой содержится в указателе Fest

    присваивается значение поля s динамической переменной, адрес которой

    содержится в указателе L. В поле k динамической переменной, адрес которой

    содержится в указателе Fest присваивается значение поля k динамической

    переменной, адрес которой содержится в указателе L. В поле p динамической

    переменной, адрес которой содержится в указателе Fest присваивается

    значение nil.

    Далее перед строкой стоит метка lb.

    Указатель L принимает значение, содержащееся в поле р динамической

    переменной, на которую ссылается этот указатель. Указателю Est (указатель,

    содержащий адрес произвольного элемента списка Est, который содержит все

    имена идентификаторов программы в алфавитном порядке, а также числе

    вхождений идентификаторов в программе) присваивается значение указателя

    Fest.

    Далее организуется цикл при помощи оператора WHILE. В то время как

    указатель L имеет значение отличное от nil выполняется следующие действия,

    разбитые на 4 пунктов. В результате этих операций будет сформирован список

    Est, который будет содержать идентификаторы в алфавитном порядке, а также

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

    1) Если слово, содержащееся в поле s динамической переменной, адрес

    которой находится в указателе L старше в алфавитном порядке слова,

    содержащегося в поле s динамической переменной, адрес которой находится в

    указателе Est (указатель, содержащий адрес произвольного элемента списка

    Est), то выполняется следующее. Это соответствует тому, что текущий

    идентификатор в списке L старше идентификатора в списке Est. Поэтому мы

    должны добавить идентификатор из списка L в ячейку, стоящую после

    идентификатора в списке Est. Для этого указателю PEst (указатель,

    содержащий адрес произвольного элемента списка Est) присваивается значение

    указателя Est. Указатель Est принимает значение содержащееся в поле р

    динамической переменной, на которую ссылается этот указатель. Таким образом

    в списке Est мы переходим к следующему элементу.

    2) Если в указатель Est содержит значение nil, то выполняется

    следующее. С помощью процедуры NEW в памяти ЭВМ резервируется место под

    динамическую переменную, адрес которой будет содержаться в указателе temp

    (вспомогательный указатель, для записи адреса вспомогательного элемента

    списка). В поле s динамической переменной, адрес которой находится в

    указателе temp записывается значение поля s динамической переменной, адрес

    которой находится в указателе L. В поле k динамической переменной, адрес

    которой находится в указателе temp записывается значение поля k

    динамической переменной, адрес которой находится в указателе L. Затем в

    поле р динамической переменной, адрес которой находится в указателе temp

    записывается значение nil. В поле р динамической переменной, адрес которой

    находится в указателе PEst записывается значение адреса указателя temp.

    Далее осуществляется переход по метке lb. Таким образом происходит

    добавление элемента списка Est в его конец.

    3) Если слово, содержащееся в поле s динамической переменной, адрес

    которой находится в указателе L младше в алфавитном порядке слова,

    содержащегося в поле s динамической переменной, адрес которой находится в

    указателе Est (указатель, содержащий адрес произвольного элемента списка

    Est), и адрес указателя Est не равен адресу первого элемента списка Est, то

    есть адресу указателя FEst, то выполняется следующее. С помощью процедуры

    NEW в памяти ЭВМ резервируется место под динамическую переменную, адрес

    которой будет содержаться в указателе temp (вспомогательный указатель, для

    записи адреса вспомогательного элемента списка). В поле s динамической

    переменной, адрес которой находится в указателе temp записывается значение

    поля s динамической переменной, адрес которой находится в указателе L. В

    поле k динамической переменной, адрес которой находится в указателе temp

    записывается значение поля k динамической переменной, адрес которой

    находится в указателе L. Затем в поле р динамической переменной, адрес

    которой находится в указателе temp записывается адрес, находящийся в

    указателе Est. В поле р динамической переменной, адрес которой находится в

    указателе PEst записывается значение адреса указателя temp. Далее

    осуществляется переход по метке lb.

    4) Если слово, содержащееся в поле s динамической переменной, адрес

    которой находится в указателе L младше в алфавитном порядке слова,

    содержащегося в поле s динамической переменной, адрес которой находится в

    указателе Est (указатель, содержащий адрес произвольного элемента списка

    Est), и адрес указателя Est равен адресу первого элемента списка Est, то

    есть адресу указателя FEst, то выполняется следующее. С помощью процедуры

    NEW в памяти ЭВМ резервируется место под динамическую переменную, адрес

    которой будет содержаться в указателе temp (вспомогательный указатель, для

    записи адреса вспомогательного элемента списка). В поле s динамической

    переменной, адрес которой находится в указателе temp записывается значение

    поля s динамической переменной, адрес которой находится в указателе L. В

    поле k динамической переменной, адрес которой находится в указателе temp

    записывается значение поля k динамической переменной, адрес которой

    находится в указателе L. Затем в поле р динамической переменной, адрес

    которой находится в указателе temp записывается адрес, находящийся в

    указателе FEst. В поле р динамической переменной, адрес которой находится в

    указателе FEst записывается значение адреса указателя temp. Далее

    осуществляется переход по метке lb.

    В результате этого цикла указатель L будет переходить к следующим

    ячейкам и достигнет значения nil. Когда это произойдет в результате цикла

    будет сформирован отсортированный список Est. Далее необходимо по условию

    задачи распечатать этот список. После выполнения этого цикла программа

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

    иметь адрес первого элемента отсортированного списка (FEst).

    Для распечатки на экран списка Est организуется цикл с помощью

    оператора WHILE. В то время как указатель Est не равен значению nil будет

    выполнятся следующее. С помощью оператора WRITE распечатывается значение,

    содержащееся в поле s и k динамической переменной, адрес которой содержится

    в указателе Est. И значению адреса указателя присваивается значение,

    содержащееся в поле р данной динамической переменной, на которую ссылается

    этот указатель.

    Далее программа ждет нажатия на клавишу "Enter" при помощи процедуры

    READLN. Программа завершает работу.

    5 РУКОВОДСТВО ОПЕРАТОРА

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

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

    Программа находится в текстовом файле. Максимальная длина

    идентификатора заранее неизвестна.

    Вначале программа спрашивает имя текстового файла, в котором находится

    программа. Программа выдает на экран строку:

    |File >: |

    Далее требуется ввести путь к файлу, содержащего текст программы, и его

    имя и нажать клавишу "Enter".

    К примеру возьмем текст данной программы. Для этого необходимо ввести

    путь к этому файлу и его имя. К примеру, если файл имеет имя "kurs.pas" и

    находится в директории "Programs" на логическом диске С, то для того, чтобы

    программа начала работу с текстом данного файла необходимо ввести следующую

    строку: "C:\Programs\kurs.pas".

    После этого программа начинает считывать каждый символ текста по

    очереди, формирует слова, исключает зарезервированные слова и другие

    символы, выбирает из этих слов идентификаторы, считает количество вхождений

    каждого идентификатора в программе и формирует список. Затем программа

    сортирует получившийся список по алфавиту и выводит на экран в алфавитном

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

    идентификатора программы.

    В данном примере список L можно представить в виде:

    |LB |5 | |

    |F |6 | |

    |TEMP |16 | |

    |EST |17 | |

    . . .

    |SPISOK |3 |nil|

    Далее программа составляет новый список, состоящий из элементов списка

    L (имен идентификаторов программы, а также чисел их вхождений в тексте

    программы), отсортированных в алфавитном порядке.

    Изначально список Est будет иметь один элемент (первый элемент списка

    L). Далее элементы из списка L по очереди будут добавляться в список Est.

    Список Est будет формироваться по алфавиту, то есть вначале список Еst

    содержит один элемент:

    |LB |5 |nil|

    Далее программа выберет из списка L следующий элемент:

    |F |6 | |

    Имя F младше по алфавиту имени LB, соответственно список Est будет

    преобразован в следующий список:

    |F |6 | |

    |LB |5 |nil|

    И так далее до тех пор пока список L не кончится. Программа проверяет

    старше ли имя идентификатора элемента списка L имени идентификатора

    изначально первого элемента списка Est. Если да, то программа переходит к

    сравнению имени идентификатора элемента списка L со следующим именем

    идентификатора элемента списка Est. Как только список Est заканчивается или

    же имя идентификатора списка L будет младше имени идентификатора элемента

    списка Est, то программа вставляет элемент списка L после предыдущего

    элемента списка Est.

    В итоге программа распечатает на экран содержание списка Est, что в

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

    A=4; B=4; C=7; CH=44; E=6; EST=17; F=6; FEST=10; FST=10; K=14; L=33;

    LB=5; P=14; PEST=4; RECSPISOK=2; S=19; SPISOK=3; ST=75; TEMP=16;

    Далее программа ждет нажатия на клавишу "Enter". После этого программа

    завершает работу.

    -----------------------

    ST:=''??????????????????????????????????????????????????????????????????????

    ????????????????????????????????????????????????????????????????????????????

    ????????????????????????????????????????????????????????????????????????????

    ????????????????????????????;

    (st='AND') or (st='XOR') or (st='NOT') or (st='OR') or (st='DIV') or

    (st='MOD') or (st='SHL') or (st='SHR') or (st='NIL') or (st='OBJECT') or

    (st='ARRAY') or (st='FILE') or (st='OF') or (st='RECORD') or (st='SET') or

    (st='BYTE') or (st='SHORTINT') or (st='WORD') or (st='INTEGER') or

    (st='LONGINT') or (st='STRING') or (st='BOOLEAN') or (st='REAL') or

    (st='DOUBLE') or (st='EXTENDED') or (st='COMP') or (st='CHAR') or

    (st='END') or (st='TEXT')

    c:=true; e:=true; ST:='';

    ST='LABEL'

    c:=true; e:=false; ST:=''

    Fst:=nil;

    Write('File >: '); ReadLn(st);

    Assign(f,st); Reset(f); st:='';

    L:=L^.p;

    L^.k:=L^.k+1;

    st:=''; b:=true; L:=L^.p;

    L^.s=st

    L<>nil

    L:=L^.p; Est:=FEst;

    (L<>nil) and (st<>'')

    ST:='';

    New(FEst); FEst^.s:=L^.s; FEst^.k:=L^.k; FEst^.p:=nil;

    st:=st+ch;

    (e=false) and (c=false) and ((st[1]='0') or (st[1]='1') or (st[1]='2') or

    (st[1]='3') or (st[1]='4') or (st[1]='5') or (st[1]='6') or (st[1]='7') or

    (st[1]='8') or (st[1]='9')) and (ch<>':')

    ST:='';

    L^.s>Est^.s

    (e=false) and (c=true) and ((st[1]='0') or (st[1]='1') or (st[1]='2') or

    (st[1]='3') or (st[1]='4') or (st[1]='5') or (st[1]='6') or (st[1]='7') or

    (st[1]='8') or (st[1]='9'))

    (b=false) and (st<>'') and (c=true)

    ch=#26

    st:=st+ch;

    Начало программы

    L:=Fst; New(Fst); Fst^.s:=st; Fst^.k:=1; Fst^.p:=L; L:=Fst; st:='';

    (ST='TYPE') OR (ST='VAR') OR (ST='CONST') OR (ST='PROCEDURE') OR

    (ST='FUNCTION')

    c:=false; e:=false;

    ST='BEGIN'

    a=true

    a:=true;

    (ch=' ') or (ch='!') or (ch='"') or (ch='#') or (ch='$') or (ch='%') or

    (ch='&') or (ch='*') or (ch='+') or (ch=',') or (ch='-') or (ch='.') or

    (ch='/') or (ch=':') or (ch=';') or (ch='') or

    (ch='@') or (ch='[') or (ch=']') or (ch='\') or (ch='^') or (ch='`') or

    (ch='|') or (ch='~') or (ch='(') or (ch=')') or (ch=#10) or (ch=#13) or

    (ch='}')

    ch='}'

    Read(f,ch);

    ch='{'

    ch=''''

    Read(f,ch);

    ch=''''

    L:=Fst;

    a:=false; b:=false;

    Read(f,ch);ch:=UpCase(ch);

    Est=nil

    New(temp); temp^.s:=L^.s; temp^.k:=L^.k; temp^.p:=nil; PEst^.p:=temp;

    PEst:=Est; Est:=Est^.p;

    New(temp); temp^.s:=L^.s; temp^.k:=L^.k; temp^.p:=Est; PEst^.p:=temp;

    (L^.sFest)

    Est<>nil

    Write(Est^.s,'=',Est^.k,'; '); Est:=Est^.p;

    ReadLn;

    Выход

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.