- •1.Си программалау тілі туралы түсінік
- •2.Сызықтық құрылымды алгоритм. Мысал.
- •3.Си тілінде жазылған программаның құрылымы
- •4.Файлдармен жұмыс
- •5.Си тілінің қарапайым элементтері
- •6.Берілгендерді енгізу операторлары. Мысал
- •7.Float және double жылжымалы нүктелі нақты сандар типтері
- •8.Файлға мәлімет жазу және оқу
- •10. Графикалық режим орнату, одан шығу, мәтін жазу, сызық салу функциялары
- •11.Си тілндегі негізгі операторлар
- •12.Си программасын орындау ортасы
- •13.Программа жұмысын басқару операторлары
- •14.While операторы. Қолдану мысалдары
- •15.Шартты операторлар
- •16.Бүтін сан түріндегі мәліметтерді сипаттау
- •18. Екі өлшемді массивтер.Мысалдары.
- •19.Тұтынушы функциясын пайдалану
- •20. Блок-схема және оның қызметі
- •21. Алгоритмнің циклдік құрылымы
- •22.Айнымалылардың әрекет ету аймағы
- •23.Do... While цикл операторы
- •24.Массив дегенымыз- реттелген бір текті элементтердің жиыны
- •25.Таңдау операторлары - бұлар шартты оператор және ауыстырғыш.
- •26.Құрылымдарды пайдалану
- •27.Си тілінде кездейсоқ сандарды пайдалану
- •28.Қарапайым программа.Препроцессор.
- •29.1.Массивтерді өңдеу есептерінің түрлері (кластары)
- •30.Символдық тіркестер (жолдар, қатарлар)
- •32.Блок-схемада қолданылатын геометриялық фигуралардың атқаратын қызметі
- •33.Массивті сұрыптау (іріктеу, реттеу).
- •34. Си тілінің графиктік операторлары.
- •35. Жай алмастыру арқылы сұрыптау.
- •36. Бір өлшемді массивтер және оларды енгізу, шығару
- •37. Адрестік операциялар
- •38. Printf () функциясы
- •39. Массивтер және массивтерге қолданылатын нұсқауыштар
- •40. Бір өлшемді массивтер және оларды енгізу, шығару
- •41.Нұсқауыштарға қолданылатын операциялар
- •42.Return () функциясы
- •43.Көрсеткіштерді пайдаланып жиымдармен жұмыс істеу
- •44.Тақырыпта қолданылатын стандартты файлдар
- •45.Символдық тіркестер
- •46.Getch() функциясы
- •47. Матрицаның барлық элементтерін өңдейтін алгоритмдер
- •48. Басқарушы символдар
- •49. Символдық таңбаларды енгізу/шығару
- •50. Формат символдары
- •51. Сөз тіркестерін енгізу және шығару функциялары
- •52. Препроцессордың қызметі
6.Берілгендерді енгізу операторлары. Мысал
6.scanf() енгізу функциясы жоғарыда қарастырылған түрлендіру спецификациясының көбін пайдаланады.
scanf (<формат тіркесі>,<аргументтер тізімі>);
Аргументтер ретінде адрес нұсқауыштары пайдаланылады. Мысалы:
scanf("%d%f", &x,&y);
Кейбір айырмашылықтарын атап өтейік.
1) %е және %f спецификациялары енгізу кезінде бірдей болып табылады;
2) short типті бүтін санды енгізу кезінде %h спецификациясы қолданылады.
ЕСКЕРТУ. Айнымалы адресін беру үшін адрестерді жазғанда, айнымалы адресін анықтау үшін & символы қолданылады. Ал тіркестік (жолдық) айнымалыны енгізгенде, & символы жазылмайды.
Енді санның дәрежесін есептейтін программа құрайық.
/* Санды дәрежелеу */
#include <conio.h>
#include <stdio.h>
#include <math.h>
main()
{
float x,y,s;
clrscr();
printf("\n х-ті және оның дәрежесін-у енгізіңіз:\n");
scanf("%f%f",&x,&y);
s=pow(x,y);
printf("\nНәтижесі s=%9.2f",s);
}
7.Float және double жылжымалы нүктелі нақты сандар типтері
Нақты сандар компьютерде 2 бөліктен – дәреже мен мантиссадан тұрады. IBM-РС компьютерлерінде float типінің ені – 4 байт, оның бір разряды – сан таңбасы, 7 разряды – дәреже, 24 бит3 – мантисса.
Егер double типі аты алдында long сөзі тұрса, онда оған 10 байт орын беріледі.
Программалау практикасында көбінесе жылжымалы нүктелі нақты (аралас) сандар пайдаланылады.
Double типті сандар екі еселенген дәлдікпен 64 бит арқылы өрнектеледі. Double типінің ені – 8 байт, 1 бит – таңба, 11 бит – дәреже және 52 разряд – мантисса. Мантисса ені – санның дәлдігін, ал дәреже ені – оның диапазонын анықтайды.
Кейбір ЭЕМ-дерде мантисса үшін қосымша 32 бит беріледі де, санның дәлдігі артады. Ал кейде санның таңбасы мен дәрежесі үшін 32 бит беріліп, ол санның кескінделу диапазонын арттырады.
Мысалдар:
float s1, s2;
float sum=1.5;
8.Файлға мәлімет жазу және оқу
Файлға мәлімет жазу/оқу үшін жалпы енгізу/шығару функциялары тәріздес бірсыпыра функциялар пайдаланылады:
fprintf(), fscanf(), fputs(), fgets(), getc(), putc(), fgetc(), fputc().
Бұлардың ішіндегі getc()/fgetc(), putc()/fputc() функциялары әрекеттері ұқсас, айырмашылықтары тек getc() пен putc() макроанықтаулар да, aл fgetc() және fputc() – нағыз функциялар болып табылады.
Барлық файлдық функциялар прототиптері <stdio.h> файлында орналасқан.
Файлдардан мәлімет жазу/оқу әрекеттерін үш топқа бөлуге болады:
- символдарды енгізу/шығару операциялары;
- сөз тіркестері жолдарын енгізу/шығару операциялары;
- блок бойынша енгізу/шығару операциялары.
Символдарды енгізу/шығару операцияларында файлдан бір ғана символ оқылады немесе оған бір символ жазылады. Мысалы:
fgetc(FILE *fp); ашылған файлдан символ оқиды.
fputc(int ch,FILE *fp); ch символы кодын файлға жазады.
Сөз тіркестері жолдарын енгізу/шығару операцияларында бір мәлімет алмасуы кезінде файлдан сөз тіркесі жолдары оқылады немесе оған сөз тіркесі жазылады. Мысалы:
gets(char *S); файлдан мәлімет байттарын '\n' символы кездескенше біртіндеп оқиды да, оларды S тіркесіне орналастырып, '\n' символын ‘\0’ (нөл-терминатор) белгісіне айналдырады.
fgets(char *S,int m,FILE *fp); fp түрінде сипатталған файлдан байттарды оқып, оларды '\n' символы кездескенше немесе m байт оқылып біткенше S тіркесі мәні ретінде жазып шығады.
Блок бойынша енгізу/шығару операцияларында мәліметтер алмасу олардың бір блогын толық қамтиды. Мысалы:
fread (void *ptv, int size, int n, FILE *fp);
мұнда fp файлынан әрқайсысы size байттан тұратын мәліметтің n блогы ptv нұсқауышы көрсетіп тұрған жады аймағына оқылады (оқылатын блок үшін алдын ала орын дайындап қою қажет).
fwrite (void *ptv, int size, int n, FILE *fp);
мұнда ptv нұсқауышы көрсетіп тұрған жады аймағында орналасқан әрқайсысы size байттан тұратын мәліметтің n блогы ашық тұрған fp файлына жазылады.
fprintf және fscanf функцияларын пайдалану
fprintf - файлға информация жазу үшін, ал fscanf – файлдан информация оқу үшін қолданылады. Олардың жалпы жазылу түрі:
fprintf(fp, “спецификация шаблоны”,p);
мұндағы p-өрнек;
fscanf(fp, “спецификация шаблоны”,адрес);
Мысал: Бүтін сандар тізбегін n=5 пернелерден енгізіп, оларды файлға жазу керек болсын.
// файл ашып, оған 5 сан жазу
#include <stdio.h>
#include <conio.h>
main()
{ int k,i,n=5;
char fname[]="a:\\num.txt\0";
clrscr();
FILE *fp;
fp=fopen(fname,"w");
clrscr();
printf("Енгізілген сандар %s файлына жазылады\n",
fname);
puts("Әр сан енгізілген соң, Enter басыңыз\n");
for(i=0; i<n;i++)
{scanf("%i",&k);
fprintf(fp,"%d ",k);
}
fclose(fp);
printf("Енгізілген сандар %s файлына жазылды\n",
fname);
getch();
}
Нәтижесі:
Енгізілген сандар a:\num.txt файлына жазылады
Әр сан енгізілген соң, Enter басыңыз
1
2
3
4
5
Енгізілген сандар a:\num.txt файлына жазылды
Файлдағы мәлімет: 1 2 3 4 5
fgets және fputs функцияларын пайдалану
Сөз тіркестерімен жұмыс істегенде fgets және fputs функциялары қолданылады:
fgets функциясының жалпы жазылу түрі:
fgets(нұсқауыш,MAXLEN,fp);
нұсқауыш – ЭЕМ жадындағы орынға сілтейтін нұсқауыш; MAXLEN – оқылатын тіркестің максимальды ұзындығы; fp - файл нұсқауышы.
Мысалы:
#define L 20
main()
{
FILE *fp;
char *st[n];
fp=fopen(“stroka”,”r”);
while(fgets(st,L,fp)!=NULL)
puts (st);
}
Файлдарға сөз тіркестерін жазу үшін fputs функциясы келесі түрде қолданылады:
status=fputs(қатар нұсқауышы,fp);
status – бүтін сан, оның мәні eof функциясында жазылады, егер fputs()функциясы файлдың соңына шыққан болса немесе қате тапса, fputs функциясы жазылатын жолдың соңына /0символын жазбайды.
Төменде осы функцияларды пайдалану мысалы келтірілген.
#include <stdio.h>
void main ()
{
int n;
char str[50], str1[50], ch;
FILE *fp;
// Файлға мәлімет жазу
fp = fopen("ex.txt","w");
puts ("Бүтін сан енгізіңіз: "); scanf("%d",&n);
fprintf (fp, "%d\n", n) ;
puts ("Символ енгізіңіз: "); ch=getchar();
putc (ch, fp);
puts ("Сөз тіркесін енгізіңіз: "); gets(str);
fputs(str, fp);
fclose(fp);
// Файлдан мәлімет оқу
if((fp = fopen("ex.txt","r")) != NULL)
{
fscanf (fp, "%d", &n); printf ("n=%d\n", n) ;
ch = getc (fp); putchar (ch);
fgets(str1, 50, fp); puts (str1);
fclose (fp);
}
else printf ("\nФайлдан мәлімет оқылмайды!");
}
9. Printf және scanf функциялары
Си тілінде сыртқы ортамен мәліметтер алмасу <stdio.h> енгізу-шығару функциялары кітапханасын пайдалану арқылы орындалады. Ол тақырып файлы ретінде былай жазылады:
#include <stdio.h>
printf() функциясы мәліметтерді экранға шығару үшін қолданылады. Оның жалпы жазылу түрі:
printf(<формат тіркесі>,<аргументтер тізімі>);
(<формат тіркесі> – қостырнақшамен (”) шектеліп, аргументтердің қалай бейнеленетінін көрсетіп тұрады, экранға (баспаға) шығару алдында барлық аргументтер формат спецификациясына сәйкес түрлендіріледі, спецификация % символымен басталады және мәліметтер типін, оларды түрлендіру тәсілін көрсететін бір әріп жазылады. Объектілер ретінде айнымалылар, константалар, өрнектер қолданылуы мүмкін. Мысалы:
printf (“ Пи санының мәні = %f\n”, pi);
Формат тіркесінде мыналар болады:
1) мәтін ретінде шығарылатын символдар тіркесі;
2) түрлендіру спецификациялары;
3) басқару символдары.
Әрбір аргументке өз спецификациясы сәйкес келуі тиіс, олар:
%d – бүтін ондық сан шығарылуы тиіс,
%i – бүтін ондық сан шығарылуы тиіс,
%f – жылжымалы нүктелі нақты ондық сан ([-]dddd.dddd ) жазылып шығады,
%e – жылжымалы нүктелі экспоненциалды сан ([-]d.dddde±dd) шығарылады,
%E – жоғарыдағы сияқты, тек е орнына Е ([-]d.ddddE±dd) шығарылады,
%c – бір символ шығарылуы тиіс,
%s – символдар тіркесі (қатары) шығарылуы тиіс,
%g – нақты сан, сан ұзындығына қарай %e немесе %f қолданыла алады,
%u – таңбасыз ондық бүтін сан жазылып шығады,
%o – таңбасыз бүтін сегіздік сан шығады,
%x – таңбасыз бүтін он алтылық сан шығады.
\n – келесі жаңа жолға көшуді атқаратын басқару символы.
Мысалы:
%9i – бүтін сан ені 9 цифрдан тұрады, сан ені аз болса, оның сол жағында бос орындар орналасады.
%9.3f – нақты сан ені 9 цифрдан тұрады, оның 3 таңбасы бөлшекке беріледі, сан ені аз болса, оның сол жағында бос орындар орналасады.
Әрбір спецификация % символынан басталып, түрлендіру символымен аяқталады. Ол екеуінің ортасында мыналар тұруы мүмкін:- минус таңбасы, аргумент мәні сол жақ шетке ығыстырылып жазылады.- цифрлар, бүтін санның жалпы орналасу енін анықтайды. Сан осы енге немесе одан артық болып шығарылады. Егер аргумент ені көрсетілген еннен аз болса, онда ол бос орындармен толтырылып жазылады. - нүктеге дейін санның жалпы ені, нүктеден соң бөлшек сандар ені көрсетіледі. - L модификаторы, сәйкес аргумент мәні INT емес LONG екенін білдіреді.
scanf() енгізу функциясы жоғарыда қарастырылған түрлендіру спецификациясының көбін пайдаланады.
scanf (<формат тіркесі>,<аргументтер тізімі>);
Аргументтер ретінде адрес нұсқауыштары пайдаланылады. Мысалы:
scanf("%d%f", &x,&y);
Кейбір айырмашылықтарын атап өтейік.
1) %е және %f спецификациялары енгізу кезінде бірдей болып табылады;
2) short типті бүтін санды енгізу кезінде %h спецификациясы қолданылады.
