- •И.А. Васюткина основы алгоритмизации и программирования.
- •Содержание
- •1.Обзор языКа программирования с
- •2.Этапы создания программы
- •3.Структура программы на языке си
- •3.1. Внутренняя структура программы
- •3.2. Пример программы на си
- •4.Базовые элементы языка си
- •5.Данные в программе на си
- •5.1. Константы
- •5.2. Базовые стандартные типы переменных
- •6.2. Операции отношения
- •6.3. Логические операции
- •6.4. Операции с разрядами
- •6.5. Операции сдвига
- •6.6. Операция условия ?:
- •6.7. Преобразование типов
- •6.8. Операции приведения
- •6.9. Дополнительные операции присваивания
- •7.Операторы языка си
- •Оператор может быть простым и составным. Позволяет пропустить оператор или блок операторов, если условие ложно.
- •1.Схема выполнения оператора
- •8. Оператор множественного выбора
- •9. Операторы цикла while
- •8. Операторы безусловных переходов
- •8.Стандартные функции ввода и вывода
- •8.1. Функция вывода данных на экран printf ()
- •8.2. Модификаторы спецификаций преобразования
- •8.3. Функция ввода данных с клавиатуры sсanf()
- •8.4. Функции ввода/вывода одного символа getchar(), putchar()
- •8.5. Функции небуфиризированного ввода с клавиатуры
- •8.7. Форматирование вывода
- •Заключительная программа
- •9. Массивы
- •9.1. Одномерные массивы
- •Стандартные алгоритмы работы с одномерными массивами
- •Инициализация одномерных массивов
- •9.2. Многомерные массивы
- •Инициализация многомерных массивов
- •9.2.2 Стандартные алгоритмы работы с двумерными массивами
- •10. Функции
- •10.1.Cоздание и использование пользовательских функций
- •10.2.Параметры функции
- •10.3.Возвращение значения функцией
- •10.4.Inline-функции
- •10.5.Значение формальных параметров функции по умолчанию
- •10.6.Перегрузка функций
- •11. Классы памяти и область действия
- •11.1.Глобальные переменные
- •Extern - внешние переменные
- •Статистические внешние переменные - static
- •11.2.Локальные переменные
- •Внутренняя статическая переменная
- •Регистровая переменная
- •Автоматические переменные
- •11.3.Доступ к функциям в многомодульной программе
- •12. Препроцессор языка си
- •12.1. Подстановка имен
- •12.2.Включение файлов
- •12.3.Условная компиляция
- •13. Указатели
- •13.1.Операция косвенной адресации *
- •13.2. Описание указателей
- •13.3.Использование указателей для связи функций
- •13.4.Указатели на одномерные массивы
- •13.5.Указатели на многомерные массивы
- •13.6.Операции над указателями
- •13.7.Передача массива в качестве параметра в функцию
- •13.8.Указатель на void *
- •14. Символьные строки и функции над строками
- •14.1.Массивы символьных строк
- •14.2.Массивы указателей
- •14.3.Указатель как возвращаемое значение функции Передача указателя как параметра функции
- •14.4.Функции, работающие со строками Функции, определеные в заголовочном файле stdio.H
- •14.5. Стандартные библиотечные функции Функции, определеные в заголовочном файле string.H
- •14.6. Преобразование символьных строк
- •Функции, определеные в заголовочном файле ctype.H.
- •15. Ссылки
- •16. Параметры командной строки
- •17. Производные типы данных
- •17.1.Структуры
- •Массивы структур
- •Вложенные структуры
- •17.1.3 Указатели на структуры
- •Операции над структурами
- •Передача структуры в функцию
- •17.2.Объединения
- •17.3. Синоним имени типа
- •17.4.Определение именнованных констант
- •17.5.Перечисления
- •17.6.Битовые поля
- •18. Динамическое выделение памяти
- •2. Функция void* calloc(n,size type);
- •18.2.Операция new с массивами
- •18.3.Инициализаторы с операцией new
- •18.4.Ошибки при использовании динамичской памяти
- •19. Файл
- •19.1.Открытие файла fopen()
- •19.2.Закрытие файла fclose()
- •19.3.Функции ввода/вывода одного символа fgetc(), fputc()
- •19.4.Функции форматированного ввода/вывода в файл
- •Int fprintf(file *stream,”управл.Cтрока”,arg1,…)
- •Int fscanf(file *stream,”управл.Cтрока”,&arg1,…)
- •19.5. Функции ввода/вывода строки символов в файл
- •19.6.Функции управления указателем в файле
- •Int fseek(file *stream, смещение, start)
- •19.7.Ввод/вывод записей фиксированной длины
- •20. Динамические структуры данных
- •20.1.Однонаправленные связные списки
- •Вставка узла
- •Удаление узла из списка
- •20.2.Бинарные деревья
- •21. Размещение данных в памяти
- •22.Модели памяти
- •Список литературы
14.5. Стандартные библиотечные функции Функции, определеные в заголовочном файле string.H
1. int strlen(char *) - опредляет длинну строки без'\0';
int k = strlen(str1);
2. char * strcat(char *, char *) - объединяет две строки в одну.
strcat(str1, str2); //результат в первом массиве.
void main (void){
char str1[80]="Мой любимый цветок";
char str2[10]="ромашка";
if (strlen(str1)+strlen(str2)< 80-1)
strcat(str1, str2); //Чтобы копировать - необходимо проверить,
//чтобы длины массива было достаточно на
//две строки + ноль-байт.
}
3. char * strncat(char *, char *,int) - объединяет 1-ю строку и n-байтов второй строки в одну.
4. int strcmp(char *, char *) - сравнение строк.
# define ANSWER "YES"
void main(void){
char try[10];
gets(try);
puts ("Вы студенты 203 группы?");
while (strcmp(try, ANSWER)!=0){
puts ("Попытайтесь ещё раз")
gets (try);
}
puts("Верно");
}
Функция возвращает 0, если строки одинаковы. Сравнение идёт до признака конца строки - '\0', а не до конца массива, или до первого несравнения:
В-А возвращает 1, А-В возвращает -1.
5. int strncmp(char *, char *,int) - сравнение n байт у 2-х строк .
6. char * strcpy(char *, char *) - копирование строк
#define WORD "Таблица результатов"
void main (void){
char str1[30]; //Длина массива не проверяется
strcpy(str1, WORD)
puts(str1);
}
7. char * strтcpy(char *, char *,int) - копирование n байт строки
8. char *strdup(char *) – выделяет память и копирует строку.
9. char *strupr(char *) – преобразует строчные буквы в прописные.
10. char *strlwr(char *) – преобразует прописные буквы в строчные.
11. char *strrev(char *) – реверсирует строку.
12. char *strchr(char *, int ) – устанавливает позицию первого вхождения символа
14. char *strrchr(char *, int c) – устанавливает позицию последнего вхождения символа с.
15. char *strstr(char *, char *) - устанавливает позицию первого вхождения подстроки str2 в строку str1.
16. int stricmp(char *, char *) – сравнивает не различая строчные и прописные буквы.
14.6. Преобразование символьных строк
Функции, определеные в заголовочном файле stdlib.h.
1. int atoi() - строку в целое.
double atof() - строку в число с плавающей точкой.
void main(void){
char num[10];
int val;
puts("Введите число");
gets(num);
val=atoi(num); // обрабатывает до 1-го символа не являющегося
} // цифрой
2. Существуют функции обратного преобразования числа в строку.
itoa(int val, char *str, int radix) - целое в строку, где
val – число;
str – строка результата;
radix – система счисления.
gcvt(double val, int sig, char *str) - с плавающей точкой в строку, где
val – число;
sig – кол-во цифр;
str – строка результата.
Функции, определеные в заголовочном файле ctype.H.
Выполняют преобразования только с буквами английского алфавита.
1. Преобразование строчной буквы в прописную - int toupper(int c)
2. Проверка буква прописная или нет - int isupper(int c)
3. Преобразование прописной буквы в строчную - int tolower(int c)
4. Проверка буква строчная или нет - int islower(int c)
#include <ctype.h>
void main(void){
int ch; crit=0; //Признак прописные или строчные буквы
while ((ch=getche())!='\n'){
if(crit==0){
ch=isupper(ch) ? tolower(ch): ch;
putchar(ch);
}
else{
ch=islower(ch)? toupper(ch):ch;
putchar (ch);
}
}