User Tools

Site Tools


Sidebar






Old

courses:programming:topic1

This is an old revision of the document!


Лекция 1: Введение

  • Введение
    • О курсе
    • Структура занятий:
      • Вопросы в начале каждой пары (вопросы заранее на pr1@)
      • Самостоятельная работа c MOOC
    • Об инструментах:
      • IDE vs simple tools
      • default toolchain
        • editor, compiler, linker
      • gcc
      • git
      • make
    • Модель вычислений в архитектуре Фон-Неймана
    • Обзор парадигм/стилей программирования
      • Императивный
      • Декларативный
      • Функциональный
    • Исполнение программ. Компиляция и интерпретация.
    • О языке C. Процесс компиляции программы.
    • Введение в синтаксис. Составные элементы программы.
    • Справочные материалы:
      • KRC Керниган, Ритчи. Язык программирования Си
      • KRU Керниган, Пайк. Программное окружение Unix
      • GIT С.Чансон. Pro git
    • Домашнее задание:
      • KRC главы 1-3. Изучить, подготовить вопросы.
      • GIT 1.1–1.3, 2.*

Практика 1: Лабораторная работа №1

Задание:

1. Создайте проект, состоящий из пяти файлов: main.c, print_str.c, get_name.c, print_str.h, get_name.h в каталоге, имя которого содержит Ваше имя, Фамилию и номер лабораторной (например, ivanov_ivan_1).

  • Файл get_name.c должен содержать описание функции, которая считывает из входного потока имя пользователя и возвращает его.
  • Файл get_name.h должен содержать прототип функции, которая считывает из входного потока имя пользователя и возвращает его.
  • Файл print_str.c должен содержать описание функции, которая принимает в качестве аргумента строку и выводит её (функция ничего не возвращает).
  • Файл print_str.h должен содержать прототип функции, которая принимает в качестве аргумента строку и выводит её (функция ничего не возвращает).
  • Файл main.c содержит главную функцию, которая вызывает функцию из файла get_name.h, добавляет к результату выполнения функции строку “Hello, ” и передает полученную строку в функцию вывода строки из print_str.h.

2. После того, как Ваш проект будет готов, создайте для него Makefile.

В результате:

  1. Ваш проект, включающий в себя три файла .c, два файла .h и Makefile, должен быть выложен в репозиторий:
  2. Должен быть создан pullrequest в ветку master.

Файлы, созданные в процессе компиляции выкладывать не требуется!

Дополнительная информация для выполнения лабораторной работы:

Заголовочный файл стандартной библиотеки, который содержит функции консольного ввода/вывода:

stdio.h

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

string.h

Прототип функции вывода строки str:

int puts(const char *str);

Прототип функции конкатенации строк:

char * strncat( char * destptr, char * srcptr, size_t num );

Функция добавляет первые num символов строки srcptr к концу строки destptr, плюс символ конца строки. Если строка srcptr больше, чем количество копируемых символов num, то после скопированных символов неявно добавляется символ конца строки. Подробнее

Описание функции для ввода массива символов name (предполагается, что строка не содержит более 80 символов):

char* get_name(){
    char* name = (char*)malloc(80*sizeof(char));
    int i = 0;
    char ch;
    while ((ch = getchar()) != '\n')
    {
      name[i] = ch;
      i++;
    }
    name[i] = '\0';
    return name;
}  

Описание главной функции:

int main(){
    char hello[90] = "Hello, ";
    char* result;
    result = get_name();
    print_str(strncat(hello, result, 80));
    free(result);
    return 0;
}
courses/programming/topic1.1474379056.txt.gz · Last modified: 2022/12/10 09:08 (external edit)