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
88
ОПК, семинар №2
Массивы, ассерты, тесты
Ilya
February 19, 2015
Tweet
Share
More Decks by Ilya
See All by Ilya
Программирование на ЯВУ, семинар 3
ilya
0
160
Программирование на ЯВУ, семинар 2
ilya
0
73
ОПК, семинар №8
ilya
0
55
ОПК, семинар №6
ilya
0
75
ОПК, семинар №4
ilya
0
110
Other Decks in Education
See All in Education
Sanapilvet opetuksessa
matleenalaakso
0
34k
Ch1_-_Partie_1.pdf
bernhardsvt
0
410
附属科学技術高等学校の概要|Science Tokyo(東京科学大学)
sciencetokyo
PRO
0
1.3k
20250910_エンジニアの成長は自覚するところから_サポーターズ勉強会
ippei0923
0
300
Software
irocho
0
520
生態系ウォーズ - ルールブック
yui_itoshima
1
290
Web Architectures - Lecture 2 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Web Application Frameworks - Lecture 3 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Test-NUTMEG紹介スライド
mugiiicha
0
230
SISTEMA DE MEMORIA Y SU IMPACTO EN LAS DECISIONES.
jvpcubias
0
180
日本の情報系社会人院生のリアル -JAIST 修士編-
yurikomium
1
130
Human Perception and Cognition - Lecture 4 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.2k
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Scaling GitHub
holman
463
140k
KATA
mclloyd
PRO
32
15k
Optimizing for Happiness
mojombo
379
70k
Side Projects
sachag
455
43k
BBQ
matthewcrist
89
9.8k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Raft: Consensus for Rubyists
vanstee
140
7.1k
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]); } }