Практикум для изучения дисциплины «Основы программирования»



Pdf көрінісі
бет54/81
Дата08.07.2020
өлшемі1,55 Mb.
#74978
түріПрактикум
1   ...   50   51   52   53   54   55   56   57   ...   81
Байланысты:
А.А. Тюгашев

ЗАМЕЧАНИЕ 
Понятие структуры является предком более сложного понятия, используемого 
в  объектно-ориентированных  языках  программирования  (например,  С++), — 
понятия класса. 
Контрольные вопросы 
1. 
В  чем  заключается  использование  массива  в  программе  на  Си? 
Приведите пример. 
2. 
В чем заключается обработка массива с помощью оператора for языка 
программирования Си? Приведите пример. 
3. 
Как  инициировать  массивы  при  объявлении  на  языке  Си?  Приведите 
примеры для различных типов данных. 
4. 
Опишите  условный  оператор  языка  программирования  Си.  В  чем 
разница между полной и сокращенной формами условного оператора? 
5. 
Опишите  оператор  выбора  в  языке  Си.  Зачем  он  нужен,  если  есть 
условный оператор? 
6. 
Приведите пример использования структур (записей) в Си. Как создать 
новый тип данных в программе на Си с помощью записей? 
7. 
Опишите, как с помощью оператора for языка программирования Си 
представлять бесконечный цикл, цикл ПОКА и цикл ДО. Как прервать 
бесконечный цикл в языке программирования Си? 
Обработка текстовых строк 
Текстовая информация представляет собой наиболее часто встречающуюся 
разновидность 
информации, 
обрабатываемой 
на 
современных 
компьютерах. Ушли в прошлое времена, когда компьютер был в основном 
вычислительным  устройством.  Сегодня  зачастую  компьютер —  просто 
пишущая машинка в конторе! 
В  языке  программирования  Си  текстовые  строки  рассматриваются  как 
одномерные  массивы  символов,  при  этом  ограничителем  строки  при 
выводе, например, на экран или в файл считается нулевой символ (символ 
с  кодом,  равным  нулю).  В  связи  с  этим  для  объявления  строки  с 
максимальным  числом  хранимых  символов  19  возможно  следующее 
описание: 
char x[20]; 


100 
 
Стандартная  библиотека  функций  для  работы  с  текстовыми  строками, 
описанная  в  заголовочном  файле string.h,  имеет следующие  наиболее 
употребительные функции для работы со строками: 
 
strcpy(<
строка1>,<строка2>) — для копирования строк; 
 
strcmp(<
строка1>,<строка2>) — 
для 
лексикографического 
сравнения  строк  (возвращает  ноль,  если  строки  одинаковые, 
положительное  значение,  если  первая  строка  «больше»,  и 
отрицательное — если «меньше»); 
 
strcat(<
строка1>,<строка2>) — для приписывания второй строки 
в конец первой (конкатенации строк); 
 
strstr(<
строка1>,<строка2>) —  для  проверки  вхождения 
подстроки  в  строку  (если  не  найдет,  возвращает  NULL,  в  противном 
случае  возвращает  указатель  на  начало  первого  вхождения  искомой 
подстроки в исходную строку); 
 
strlen(<
строка>) —  для  нахождения  длины  строки  (не  считает 
завершающий строку символ \0). 
Рассмотрим семантику некоторых из перечисленных функций библиотеки 
обработки  строк.  Интересно  передать  ее  по  аналогии  с  обработкой 
числовых  данных  с  помощью  стандартных  операций  языка 
программирования Си: 
 
strcpy(s1,s2); /* 
аналог s1=s2 */; 
 
strcat(s1,s2); /* 
аналог s1+=s2 */; 
 
if
 (!strcmp(s1,s2)) /* 
аналог if (s1==s2) */. 
Примеры возможного использования строковых функций: 
char s1,s2="
дядя ",s3="Ваня"; 
strcpy(s1,s2); /* s1= "
дядя " */ 
if (!strcmp(s1,s2)) 

  strcpy(s2,s3); /* s2= "
Ваня" */ 
  strcat(s1,s2); /* s1="
дядя Ваня" */ 

char *str1 = "
коля", *str2="оля"; 
*ptr = strstr(str1, str2); 
if (ptr!=NULL) printf("
Подстрока: %s\n", ptr); 
Контрольные вопросы 
1. 
Как  представляются  строки  в  «чистом»  Си?  Что  означает  символ  с 
кодом ноль (\0)? 


101 
 
2. 
Какой заголовочный файл подключается для использования библиотеки 
работы  со  строками  в  программах  на  Си?  Какие  основные  функции 
содержит библиотека? 
Использование параметров функции main() 
Как уже упоминалось, в Си имеется возможность получения программой 
некоторых  параметров  при  ее  запуске  операционной  системой  ЭВМ. 
Поскольку исполнение программы на Си начинается с функции main, это 
организовано  через  ее  аргументы.  Чтобы  указать,  что  программа 
использует  параметры,  вместо  имени  main()  с  пустыми  круглыми 
скобками  необходимо  указать  набор  предопределенных  параметров,  как 
показано в примере далее. Фактически, параметры могут задаваться либо в 
командной  строке  оболочки  операционной  системы,  либо  другими 
средствами. 
/* Передача параметров в функцию main*/ 
#include  
int main (int argc, char *argv[]) 

  int i=0; 
  printf ("\n 
Имя программы %s", argv[0]); 
  for (i=1; i>=argc; i++) 
     printf ("\n 
аргумент %d равен %s", argv[i]); 
 
  return 0; 

Итак,  первым  предопределенным  параметром  является  целочисленная 
переменная  argc.  Она  задает  количество  аргументов,  фактически 
переданных  при  запуске  программы.  Данное  обстоятельство  позволяет 
гибко  обрабатывать,  например,  последовательности  чисел  произвольной 
длины —  подсчет  количеств  берет  на  себя  операционная  система 
(используется  при  написании  одного  из  вариантов  программы  подсчета 
суммы нечетных в лабораторном практикуме). 
Далее  идет  массив  строк  char  *argv[].  Аргументы  передаются  в 
программу в виде строк текста, таким образом на программу возлагается 
обязанность  в  случае  необходимости  превратить  их  в  числа  (можно 
использовать,  например,  функцию  ввода  из  текстовой  строки  sscanf() 
или atoi()). Важным является то обстоятельство, что в качестве первого 
элемента  массива  строк  по  умолчанию  передается  имя  самой  программы 
(путь к исполняемому файлу) argv[0]. Соответственно, argc всегда как 
минимум  будет  равен  единице,  а  фактически  набранные  пользователем 
параметры доступны через argv[1], argv[2], argv[3]... 


102 
 


Достарыңызбен бөлісу:
1   ...   50   51   52   53   54   55   56   57   ...   81




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет