Главная страница
Навигация по странице:

  • На языке ассемблера пишут

  • Достоинства языка ассемблера

  • Недостатки языка ассемблера

  • 48 Объектно-ориентированное программирование на примере С++

  • вопросы. общие вопросы. Программа ипрограммирование


    Скачать 1.45 Mb.
    НазваниеПрограмма ипрограммирование
    Анкорвопросы
    Дата28.06.2022
    Размер1.45 Mb.
    Формат файлаdocx
    Имя файлаобщие вопросы .docx
    ТипПрограмма
    #619339
    страница12 из 12
    1   ...   4   5   6   7   8   9   10   11   12

    Работа с файлами в языке Си


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

    Когда поток открывается для ввода-вывода, он связывается со стандартной структурой типа FILE, которая определена в stdio.h. Структура FILE содержит необходимую информацию о файле.

    Открытие файла осуществляется с помощью функции fopen(), которая возвращает указатель на структуру типа FILE, который можно использовать для последующих операций с файлом.


    FILE *fopen(name, type);


     

    name – имя открываемого файла (включая путь),
    type — указатель на строку символов, определяющих способ доступа к файлу:

    • "r" — открыть файл для чтения (файл должен существовать);

    • "w" — открыть пустой файл для записи; если файл существует, то его содержимое теряется;

    • "a" — открыть файл для записи в конец (для добавления); файл создается, если он не существует;

    • "r+" — открыть файл для чтения и записи (файл должен существовать);

    • "w+" — открыть пустой файл для чтения и записи; если файл существует, то его содержимое теряется;

    • "a+" — открыть файл для чтения и дополнения, если файл не существует, то он создаётся.

     
    Возвращаемое значение — указатель на открытый поток. Если обнаружена ошибка, то возвращается значение NULL.

    Функция fclose() закрывает поток или потоки, связанные с открытыми при помощи функции fopen() файлами. Закрываемый поток определяется аргументом функции fclose().

    Возвращаемое значение: значение 0, если поток успешно закрыт; константа EOF, если произошла ошибка.


    #include 
    int main() {
      FILE *fp;
      char name[] = "my.txt";
      if ((fp = fopen(name, "r")) == NULL)
      {
        printf("Не удалось открыть файл");
        getchar();
        return 0;
      }
      // открыть файл удалось
      ...      // требуемые действия над данными
      fclose(fp);
      getchar();
      return 0;
    }



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16


    Чтение символа из файла:


    char fgetc(поток);



     

    Аргументом функции является указатель на поток типа FILE. Функция возвращает код считанного символа. Если достигнут конец файла или возникла ошибка, возвращается константа EOF.

    Запись символа в файл:


    fputc(символ,поток);


     
    Аргументами функции являются символ и указатель на поток типа FILE. Функция возвращает код считанного символа.

    Функции fscanf() и fprintf() аналогичны функциям scanf() и printf(), но работают с файлами данных, и имеют первый аргумент — указатель на файл.


    fscanf(поток, "ФорматВвода", аргументы);



     




    fprintf(поток, "ФорматВывода", аргументы);



     


    Функции fgets() и fputs() предназначены для ввода-вывода строк, они являются аналогами функций gets() и puts() для работы с файлами.


    fgets(УказательНаСтроку, КоличествоСимволов, поток);


     

    Символы читаются из потока до тех пор, пока не будет прочитан символ новой строки ‘\n’, который включается в строку, или пока не наступит конец потока EOF или не будет прочитано максимальное количество символов. Результат помещается в указатель на строку и заканчивается нуль- символом ‘\0’. Функция возвращает адрес строки.


    fputs(УказательНаСтроку,поток);


     

    Копирует строку в поток с текущей позиции. Завершающий нуль- символ не копируется.
    Пример Ввести число и сохранить его в файле s1.txt. Считать число из файла s1.txt, увеличить его на 3 и сохранить в файле s2.txt.


    #include 
    #include 
    int main()
    {
      FILE *S1, *S2;
      int x, y;
      system("chcp 1251");
      system("cls");
      printf("Введите число : ");
      scanf("%d", &x);
      S1 = fopen("S1.txt", "w");
      fprintf(S1, "%d", x);
      fclose(S1);
      S1 = fopen("S1.txt", "r");
      S2 = fopen("S2.txt", "w");
      fscanf(S1, "%d", &y);
      y += 3;
      fclose(S1);
      fprintf(S2, "%d\n", y);
      fclose(S2);
      return 0;
    }



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Результат выполнения — 2 файла

    Работа с файлами в C++ описана здесь.


    46 Язык Ассемблера
    Язык ассемблера — тип языка программирования низкого уровня, представляющий собой формат записи машинных команд, удобный для восприятия человеком.
    На языке ассемблера пишут:

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

    программы, взаимодействующие с внешними устройствами: драйверы, программы, работающие напрямую с портами, звуковыми и видеокартами;

    программы, использующие полностью возможности процессора: ядра многозадачных операционных систем, серверы;

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

    Достоинства языка ассемблера
    Знание языка ассемблера позволяет понять:


    • Как программы взаимодействуют с ОС, процессором и BIOS;

    • Как данные представлены в памяти и других внешних устройствах;

    • Как процессор обращается к инструкции и выполняет её;

    • Как инструкции получают доступ и обрабатывают данные;

    • Как программа обращается к внешним устройствам.


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


    • Программы на нём требует меньше памяти и времени выполнения;

    • Это упрощает сложные аппаратные задачи;

    • Подходит для работ, в которых время выполнения является критичным;

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



    Недостатки языка ассемблера


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

    • трудоемкость чтения;

    • непереносимость на другие платформы, кроме совместимых

    • ассемблер малопригоден для совместных проектов


    47 Специфические возможности языка Си
     Язык имеет низкоуровневые возможности, позволяющие

    непосредственно работать с машинными ячейками, в том числе битовые

    операции и так называемую адресную арифметику. В связи с этим

    некоторые ученые относят Си к языкам промежуточного, а не высокого

    уровня.

     Си позволяет создавать высокоэффективные — быстрые и не

    требующие больших объемов памяти программы.

     Язык Си отличается минимализмом и лаконичностью программ.
    48 Объектно-ориентированное программирование на примере С++
    В традиционном программировании (чем мы занимались до этого момента), программа — это набор инструкций для компьютера, которые определяют данные (через объекты), а затем работают с этими данными (через операторы и функции). Объекты и функции, которые работают с этими данными, являются отдельными единицами, которые объединяются для получения программистом желаемого результата. Из-за того, что они являются отдельными единицами, традиционное программирование часто не позволяет использовать интуитивное представление реальности. Это является делом программиста — управлять и соединять свойства (переменные) с поведением (функциями) соответствующим образом, что приводит к созданию следующего кода:

    1

    driveTo(you, work);





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

       свойства (например, вес, цвет, размер, прочность, форма и т.д.);

       поведение, которое они могут проявлять (например, открывать что-либо, делать что-то и т.д.).

    Свойства и поведение неотделимы друг от друга.

    Объектно-ориентированное программирование (сокр. «ООП») предоставляет возможность создавать объекты, которые объединяют свойства и поведение в самостоятельный союз, который затем можно многоразово использовать. Это приводит к созданию следующего кода:

    1

    you.driveTo(work);





    Так не только читабельнее, но и понятнее, кем является объект (you — вы) и какое поведение вызывается (driveTo — поездка). Вместо того, чтобы сосредоточиться на написании функций, мы концентрируемся на определении объектов, которые имеют четкий набор поведений. Вот почему эта парадигма называется «объектно-ориентированной».

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

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

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

    Обратите внимание, термин «объект» перегружен, он имеет несколько значений, что может вызывать некоторую путаницу. В традиционном программировании, «объект» — это часть памяти для хранения значений. В объектно-ориентированном программировании, «объект» — это тот же объект, что и в традиционном программировании, но который соединяет в себе как свойства, так и способы поведения. С этого момента мы будем использовать термин «объект» в объектно-ориентированном смысле этого слова.
    1   ...   4   5   6   7   8   9   10   11   12


    написать администратору сайта