Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ОПК, семинар №2
Search
Ilya
February 19, 2015
Education
0
85
ОПК, семинар №2
Массивы, ассерты, тесты
Ilya
February 19, 2015
Tweet
Share
More Decks by Ilya
See All by Ilya
Программирование на ЯВУ, семинар 3
ilya
0
160
Программирование на ЯВУ, семинар 2
ilya
0
72
ОПК, семинар №8
ilya
0
54
ОПК, семинар №6
ilya
0
74
ОПК, семинар №4
ilya
0
110
Other Decks in Education
See All in Education
Tangible, Embedded and Embodied Interaction - Lecture 7 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
1.7k
Visualisation Techniques - Lecture 8 - Information Visualisation (4019538FNR)
signer
PRO
0
2.4k
Human-AI Interaction - Lecture 11 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
450
Pythonパッケージ管理 [uv] 完全入門
mickey_kubo
20
14k
SkimaTalk Introduction for Students
skimatalk
0
380
ビジネスモデル理解
takenawa
0
5k
Avoin jakaminen ja Creative Commons -lisenssit
matleenalaakso
0
1.9k
郷土教育モデル事業(香川県小豆島町).pdf
bandg
0
190
Education-JAWS #3 ~教育現場に、AWSのチカラを~
masakiokuda
0
160
自己紹介 / who-am-i
yasulab
PRO
3
5.2k
『会社を知ってもらう』から『安心して活躍してもらう』までの プロセスとフロー
sasakendayo
0
230
Linuxのよく使うコマンドを解説
mickey_kubo
1
130
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Thoughts on Productivity
jonyablonski
69
4.7k
Done Done
chrislema
184
16k
We Have a Design System, Now What?
morganepeng
53
7.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Making Projects Easy
brettharned
116
6.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Transcript
Функции double linear(double a, double x, double b) { return
a * x + b; } void main() { double a = 1.5, b = 1; int x; double y; for(x = 0; x < 5; x++) { y = linear(a, x, b); printf("%.2f*x+%.2f at %d = %.2f\n", a, b, x, y); } } > 1.50*x+1.00 at 0 = 1.00 > 1.50*x+1.00 at 1 = 2.50 > 1.50*x+1.00 at 2 = 4.00 > 1.50*x+1.00 at 3 = 5.50 > 1.50*x+1.00 at 4 = 7.00
Массивы Массив — последовательная область памяти, для набора однотипных данных.
int array[4]; array[0] array[2] int int int int int int int int int int int int
int a0, a1, a2, a3, a4, a5; a0 = pow(10,
0); a1 = pow(10, 1); a2 = pow(10, 2); a3 = pow(10, 3); a4 = pow(10, 4); a5 = pow(10, 5); printf("%d %d %d %d %d %d\n", a0, a1, a2, a3, a4, a5);
for(i = 0; i < 6; i++) { ai =
pow(10, i); // NO printf("%d ", ai); // NO }
int i; int a[6]; for(i = 0; i < 6;
i++) { a[i] = pow(10, i); printf("%d ", a[i]); } > 1 10 100 1000 10000 100000
void swap(double arr[]) { double x; x = arr[0]; arr[0]
= arr[1]; arr[1] = x; } void main() { double arr[2]; arr[0] = 1.0; arr[1] = 2.0; swap(arr); printf("%f %f\n", arr[0], arr[1]); } > 2.000000 1.000000 Массивы и функции
Нужно больше stdlib.h printf("%f %2.f %.2f\n", M_PI, M_PI, M_PI); >
3.141593 3 3.14 printf("%e %2.e %.2e\n", M_PI, M_PI, M_PI); > 3.141593e+00 3e+00 3.14e+00
#include <stdio.h> #include <stdlib.h> void main() { int i, number;
for(i = 0; i < 5; i++) { number = rand() % 100; printf("%d: %d\n", i, number); } } > 0: 83 > 1: 86 > 2: 77 > 3: 15 > 4: 93 Случайные числа
assert.h int factorial(int n) { // вырезано цензурой } void
main() { int i, result; for(i = 1; i < 6; i++) { result = factorial(i); printf("%d! = %d\n", i, result); } } > 1! = 1 > 2! = 2 > 3! = 6 > 4! = 24 > 5! = 120
printf("%d! = %d\n", -5, factorial(-5)); Segmentation fault (core dumped)
int factorial(int n) { assert(n >= 0); // вырезано цензурой
} printf("%d! = %d\n", -5, factorial(-5)); main: main.c:5: factorial: Assertion `n >= 0' failed. Aborted (core dumped)
Тестирование int celsius_to_fahrenheit(int c) { return c * 9/5 +
32; } int fahrenheit_to_celsius(int f) { return (f - 32) * 5/9; } void main() { printf("%d\n", celsius_to_fahrenheit(30)); // 86 assert(celsius_to_fahrenheit(30) == 86); assert(fahrenheit_to_celsius(86) == 30); assert(celsius_to_fahrenheit(0) == 32); assert(fahrenheit_to_celsius(32) == 0); }
Стиль // Вычисление 2*X^2 + 3*X — 5 для X
int some_fun(int i) { int j=2,k,l=3,m,n=-5; if(i!=0) return j*i*i+l*i+n; else {printf("invalid x %d",i);} return -5; }
int polynomial(int x) { int a = 2, b =
3, c = -5; if(x == 0) { printf("Zero?!!"); return c; } else { return a * pow(x, 2) + b * pow(x, 1) + c; } }
Константы int i; int a[7]; // Ещё хуже, когда a[5]
for(i = 0; i < 6; i++) { a[i] = pow(10, i); printf("%d ", a[i]); } // Совсем плохо, когда так: for(i = 0; i < 6; i++) { ... for(i = 0; i < 6; i++) { ... for(i = 0; i < 6; i++) { ... for(i = 0; i < 6; i++) { ... for(i = 0; i < 6; i++) {
const unsigned size = 6; void main() { int i;
int a[size]; for(i = 0; i < size; i++) { a[i] = pow(10, i); printf("%d ", a[i]); } }