1.11.1 Функции преобразования

Имеется переменная С:

ФУНКЦИЯ ПРОВЕРЯЕТ, ЯВЛЯЕТСЯ ЛИ C

isalpha(c) буквой

isdigit(c) цифрой

islower(c) строчной буквой

isspace(c) пустым символом (пробел, табуляция или новая строка)

isupper(c) прописной буквой

isalnum(c) алфавитноцифровым (буква или цифра)

isascii(c) кодом ASCII (0-127)

iscntrl(c) управляющим символом

ispunct(c) знаком пунктуации

toupper(c) преобразует c в прописную букву

tolower(c) преобразует c в строчную букву

Пример: преобразует букву A из прописной в строчную a.

#include <stdio.h>

#include <ctype.h>

main()

{

char Z,Y='A';

printf("Было %c\n ",Y);

Z=tolower(Y);

printf("Стало %c\n ",Z);

}

1.11.2 Преобразования символьных строк: atoi(), atof()

При вводе информации иногда целесообразнее ввести строку символов, а затем преобразовать в соответствующее число.

Для этого используются функции atoi() и atof(). Первая преобразует строку в целое, вторая - в число с плавающей точкой. Пример:

#include <stdlib.h>

#include <stdio.h>

main()

{

char ch[10];

int integ;

puts("Введите, пожалуйста, целое");

gets(ch);

integ=atoi(ch);

printf("Число было %d.\n", integ);

}

1.11.3 Функции, работающие со строками

 strlen()- находит длину строки;

strcat()- объединяет две строки;

strcmp()- сравнивает содержимое строк;

strcpy()- копирует строки.

Рассмотрим пример.

#include <string.h> #include <stdio.h> main() { char k[60]="Есть в дожде откровенье"; char l[20]="Потаенная нежность"; printf("Длина 1 строки= %d\n ",strlen(k)); strcat(k,l); puts(k); } В результате выполнения программы получится: Длина 1 строки= 24. Есть в дожде откровенье, Потаенная нежность.

В данном примере функция strlen(k) определяет длину строки k.

Функция strcat(k,l) присоединяет к концу строки k строку l.

 

1.12 Особенности программирования на языке Си

 

1.12.1 Модули. Многомодульное программирование

Можулем будем называть часть программы помещенная в отдельный файл и транслируемая независимо от других частей программы. Т.о. часть программы подключаемая при помощи препроцессорной команды include, согласно нашему определению, модулем являтся не будет. Напомним читателю некоторые стандартные положения трансляции программ:

1.  Стандартный процесс трансляции состоит из двух этапов: собственно трансляции и редактирования связей.

2.  На первой стадии трансляции текстовый файл, содержащий фрагмент программы преобразуется к объектному виду.

3.  На второй стадии трансляции все объектные модули (в том числе модули, содержащиеся в стандартных и других библиотеках) объединяются в один исполняемый модуль. На этой стадии происходит согласование используемых внешних переменных и внешних функций.

На первый взгляд кажется, что двухэтапный процесс трансляции усложняет и замедляет разработку программного обеспечения. Однако, разбивая программу на модули мы можем перевести их в объектный формат и далее подсоединять их только на втором этапе трансляции, что, в конечном итоге, ускоряет процесс трансляции. Кстати, все стандартные функции, которыми Вы пользуетесь в своих программах содержаться, в стандартных библиотеках объектных модулей. Описание же библиотечных функций содержится в H-файлах. Заметим, что при любом количестве модулей один и только один будет содержать функцию main. Этот модуль мы будем называть главным.

Современные средства трансляции позволяют легко разрабатывать многомодульные программы. Работая с Borland С вы можете либо включить все модули в проект (если Вы работаете с интегрированной средой) либо указать их в командном файле (если Вы работаете ) со строковым компилятором. При этом на первом месте должен стоять главный модуль. При этом, если Вы указали модуль с расширением .obj, то он будет учавствовать только во второй стадии трансляции, в противном случае он каждый раз будет перекомпилироваться. Стандартные библиотеки в проекте указывать не надо - система автоматически подключает их на втором этапе трансляции.

При разработке программного обеспечения разбиение на модули осуществляется тематически. Например, в один модуль помещаются все функции работающие с файлами, во второй - функции, осуществляющие математические расчеты и т.д.

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

Приведем пример двухмодульной программы.

/*Модуль 1, главный*/

#include <stdio.h>

extern int min(int, int, int); /*находит минимальное значение из 3*/

extern int max(int, int, int); /*находит максималное значение из 3*/

void main ()

{

 int a,b,c;

 a=2; b=10; c=14;

 /*напечатать произведение минимального и максимального числа*/

 printf("%d\n", max(a,b,c)*min(a,b,c)); /*ответ 28*/

}

/*Модуль 2*/

#include <stdio.h>

extern int min(int, int, int); //находит минимальное значение из 3

extern int max(int, int, int); //находит максималное значение из 3

int max(int a1, int b1, int c1)

{

 if(a1>b1)

 {

 if(c1>a1)return c1; else return a1;

 }

 else

 {

 if(b1>c1)return b1; else return c1;

 }

}

int min(int a1, int b1, int c1)

{

 if(a1<b1)

 {

 if(c1<a1)return c1; else return a1;

 }

 else

 {

 if(b1<c1)return b1;

 else return c1;

 }

}

Кратко прокоментируем приведенную выше программу.

Программа состоит из двух модулей. В главном модуле содержаться вызовы функций, которые содержаться во втором модуле. Как видно из текста программы при описании функций мы используем ключевое слово extern. Пусть первая программа называется modul1, а вторая modul1. Тогда после первого этапа трансляции на диске появятся объектные модули modul1.obj и modul2.obj. На втором этапе трансляции происходит объединение этих модулей и на диске появляется исполняемый модуль modul1.exe.


Информация о работе «Основы C»
Раздел: Информатика, программирование
Количество знаков с пробелами: 200759
Количество таблиц: 5
Количество изображений: 11

Похожие работы

Скачать
20474
0
0

... . Имеет ли право на существование эта биологизаторская интерпретация экологии? Видимо, да. Она широко представлена, и с этим следует считаться. Но она не может служить концептуальной основой комплексного непрерывного экологического образования. В структуре научного знания при таком подходе не остаётся места для географической и социальной экологии, экологии человека, а сама биология превращается ...

Скачать
5443
0
0

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

Скачать
8522
1
2

... важные функции управления предприятием, такие как: определение задач; планирование ресурсов; оценка деятельности и мотивация персонала на основе оценки; контроль исполнения. В целом, бюджетирование решает тактические вопросы и, по существу, для стратегического управления не предназначено. Связь бюджетирования со стратегией Практика стратегического планирования западных компаний ...

Скачать
11185
0
0

... . Для этого достаточно измерить его на карте и знать масштаб карты. Компас. Научиться пользоваться компасом нетрудно. Но компас, как правило, наилучшим помощником в ориентировании становится вместе с картой. В спортивном ориентировании пользуются специальными жидкостными компасами. Они позволяют быстро и просто взять с карты нужное направление и двигаться по местности по выбранному азимуту. ...

0 комментариев


Наверх