Ëåêöèÿ 1 (06.09.2021)
Ïîäîëüñêàÿ Íèíà Àðêàäüåâíà
Çàêîí÷èëà ìåõ-ìàò â 1985 ã.
1 êóðñ - ßçûê C, çàäà÷è
2 êóðñ — ßçûê C++, Computer Science (àëãîðèòìû è ñòðóêòóðû äàííûõ)
Ñêîðîñòü ðåøåíèÿ çàäà÷ — îòëè÷àåòñÿ â 100 ðàç.
Ìîæíî ïîâûøàòü ñêîðîñòü ïðîãðàììèðîâàíèÿ (îòëàäî÷íàÿ ïå÷àòü, îòëàä÷èê)
Ïñåâäîêîä (ÿçûê ïðîãðàììèðîâàíèÿ, ïðèáëèæåííûé ê ÷åëîâå÷åñêîìó).
(Ïàñêàëü, Å-ÿçûê — Åðøîâ)
===================
Ïðîöåäóðà Ïðîèçâåäåíèå
öåë x, y
ââåñòè(x)
ââåñòè(y)
öåë z = x*y
âûâåñòè(z)
Êîíåö ïðîöåäóðû
===================
Ñ — ÿçûê ñèñòåìíîãî ïðîãðàììèðîâàíèÿ (ìàêñèìàëüíî ïðèáëèæåí ê àññåìáëåðó — ÿçûêó ìàøèííûõ êîäîâ, çàïèñàííûõ â ïîíÿòíîì ÷åëîâåêó âèäå).
Ïðîãðàììà íà ÿçûêå C → ïðîãðàììà íà ÿçûêå àññåìáëåð → ïðîãðàììà èç ìàøèííûõ êîäîâ, êîòîðàÿ ìîæåò áûòü âûïîëíåíà íà êîìïüþòåðå.
Ïðèìåð êîìàíä íà ÿçûêå àññåìáëåðà: MOV R1, R2 (MV ax, bx); LDR R0, @ADDR (LOAD cx, dx)
Ïðîãðàììà — ýòî íàáîð äåéñòâèé, ïðîèçâîäèìûõ íàä íåêèìè äàííûìè.
Öåëûå ÷èñëà —
int,
long (äâîéíîé
òî÷íîñòè)
Âåùåñòâåííûå ÷èñëà — float, double (äâîéíîé òî÷íîñòè)
Ñèìâîëû — char (1 áàéò) (ìàññèâ char îáðàçóåò ñòðîêó)
Ëîãè÷åñêèõ òèïîâ - íåò (bool)! Âìåñòî íèõ èñïîëüçóåòñÿ òèï int: 0 – ëîæü, íå 0 — èñòèíà (ðåêîìåíäóåòñÿ äëÿ èñòèíû èñïîëüçîâàòü 1).
Áàéò — íàèìåíüøàÿ àäðåñóåìàÿ ÿ÷åéêà ïàìÿòè
Ïàìÿòü — çàíóìåðîâàííàÿ (îò 0 äî ???) ïîñëåäîâàòåëüíîñòü (ìàññèâ) áàéòîâ
Ñêîëüêî áàéòîâ â ïåðåìåííîé îïðåäåëåííîãî òèïà — îïåðàòîð sizeof
Ïðèìåð:
n = sizeof(int)
n = sizeof(double)
Îïåðàòîðû (êîìàíäû):
1. Ïðèñâàèâàíèå (êîïèðîâàíèå çíà÷åíèÿ â ïåðåìåíííóþ)
2. Âûçîâ ôóíêöèè (íàïðèìåð, f(x))
3. Óïðàâëÿþùèå êîíñòðóêöèè: if else, öèêëû for, while è do while, switch
4. Çàãîëîâîê ôóíêöèè:
<òèï âîçâðàùàåìîãî çíà÷åíèÿ> <èìÿ ôóíêöèè> (<ñïèñîê ïàðàìåòðîâ>)
ñïèñîê ïàðàìåòðîâ: <òèï ïàðàìåòðà> <èìÿ ïàðàìåòðà>, ..., <òèï ïàðàìåòðà> <èìÿ ïàðàìåòðà>
5. Îïåðàòîð âûõîäà èç ôóíêöèè: return èëè return <âîçâðàùàåìîå çíà÷åíèå>
6. Ñîñòàâíîé îïåðàòîð: {}
Ïðèìåð: { if (a) b(); a = b; while (a) --a; }
7. Àðèôìåòè÷åñêèå îïåðàöèè: +, -, *, /, %, ++ è -- (increment è decrement – ïðåôèêñíûå è ïîñòôèêñíûå - óâåëè÷åíèå è óìåíüøåíèå)
Ïðîãðàììà äîëæíû óìåòü ââîäèòü/âûâîäèòü äàííûå
Ââîä — ñ êëàâèàòóðû, èç ôàéëà, …
Âûâîä — íà ýêðàí, â ôàéë, …
Áèáëèîòåêà ââîäà-âûâîäà.
Ôóíêöèè èç áèáëèîòåêè ââîäà/âûâîäà îïèñàíû â ôàéëå stdio.h
Ïðàâèëî ÿçûêà C: ôóíêöèÿ äîëæíà áûòü çàäåêëàðèðîâàíà (îïèñàí òèï ôóíêöèè è òèïû åå ïàðàìåòðîâ) äî åå âûçîâà (äî — çíà÷èò, âûøå ïî òåêñòó)
Ñòðîêà
#include <stdio.h>
íà âðåìÿ êîìïèëÿöèè âêëþ÷àåò òåêñò ôàéëà stdio.h â êîìïèëèðóåìóþ ïðîãðàììó.
Òàêèì îáðàçîì, ìîæíî èñïîëüçîâàòü ôóíêöèè ââîäà-âûâîäà, íå îïèñûâàÿ èõ âðó÷íóþ.
Êîìïèëÿöèÿ - ïðîöåññ ïåðåâîäà ïðîãðàììû ñ ÿçûêà ïðîãðàììèðîâàíèÿ íà ÿçûê ìàøèííûõ êîäîâ.
Êîìïèëÿòîð - ýòî ïðîãðàììà, êîòîðàÿ îñóùåñòâëÿåò êîìïèëÿöèþ.
 äèñïëåéíûõ êëàññàõ ìåõ-ìàòà èñïîëüçóåòñÿ ÎÑ Linux.
Êîìïèëÿòîð gcc (Gnu C Compiler)
GNU – Gnu Not Unix
 Ëèíóêñå ìíîãî êîìàíä è ïîíÿòèé, îäèíàêîâûõ ïî íàïèñàíèþ ñ àíãëèéñêèìè ñëîâàìè — gnu, cat, lynx, …
Ðåêîìåíäóåìàÿ ëèòåðàòóðà:
"Ââåäåíèå â ÿçûê ïðîãðàììèðîâàíèÿ C" Êåðíèãàí, Ðèò÷è
===================================================
Ïðîãðàììà "Íè÷åãî íå äåëàòü"
#include <stdio.h>
int main(void) { return 0; }
===================================================
Ïðîãðàììà "Hello, World!"
#include <stdio.h>
int main(void) {
printf(“Hello, World!\n”);
return 0;
}
===================================================
Ïðîãðàììà “Ôàêòîðèàë öåëîãî ÷èñëà»
#include <stdio.h>
int main(void) {
int N, res = 1;
printf(“Input integer number:\n”);
scanf(“%d”, &N); /* %d – ôîðìàò ââîäà ïåðåìåííîé — decimal integer – äåñÿòè÷íîå öåëîå ÷èñëî, & - îïåðàòîð èçâëå÷åíèÿ àäðåñà ïåðåìåííîé */
while (N >= 1) {
res *= N; /* res = res * N - äîìíîæèòü*/
--N ; /* óìåíüøèòü íà 1 */
}
printf(“res: %d\n”, res); /* âìåñòî %d ïðè âûâîäå ïîäñòàâèòñÿ çíà÷åíèå res */
return 0;
}
& - îïåðàöèÿ èçâëå÷åíèÿ àäðåñà ïåðåìåííîé (íîìåð ñàìîãî ìëàäøåãî áàéòà)
scanf() ñ÷èòûâàåò äàííûå ñ êëàâèàòóðû è ïîìåùàåò â ïàìÿòü ïî óêàçàííîìó àäðåñó
while (<óñëîâèå ïðîäîëæåíèå öèêëà>) <îïåðàòîð>
Ðåçóëüòàò âûïîëíåíèÿ äàííîé ïðîãðàììû:
1) cd - Change Directory
2) ls - ñïèñîê ôàéëîâ â òåêóùåé äèðåêòîðèè
3) gcc - ñêîìïèëèðîâàòü ïðîãðàììó (gcc tmp.c -> ./a.out)
4) rm - óäàëèòü ôàéë
5) mv - ïåðåèìåíîâàòü èëè ïåðåìåñòèòü ôàéë
7) man - ïîêàçàòü äîêóìåíòàöèþ (âûõîä - ':')/\. Ïðèìåð: "man gcc", "man printf"
8) pwd - ïîêàçàòü ïóòü ê òåêóùåé äèðåêòîðèè
Ïóòü - ïóòü ïî äåðåâó. Äåðåâî äèðåêòîðèé (ïàïîê, ôîëäåðîâ, îãëàâëåíèé)
Êîðåíü - '/'