180 likes | 299 Views
Школа Рајак Програмерска радионица. ПОКАЗИВАЧИ И СТРИНГОВИ Предавач: Себастиан Новак Техничка подршка: Илија Рајак, Ким Новак www.rajak.rs. “ Bubble sort ” Алгоритам. ПОЧЕТАК. Целобројни х [4] = { 6 , 5, 1 , 3 } Целобројни i,j , temp. i=n. T. Сортиран низ. i>0. КРАЈ. T. j=1. T.
E N D
Школа РајакПрограмерска радионица ПОКАЗИВАЧИ И СТРИНГОВИПредавач: Себастиан НовакТехничка подршка: Илија Рајак, Ким Новак www.rajak.rs
“Bubble sort” Алгоритам ПОЧЕТАК Целобројни х[4] = { 6 , 5, 1, 3} Целобројни i,j, temp i=n T Сортиран низ i>0 КРАЈ T j=1 T j<=i i- - www.rajak.rs T x[j-1] >x[j] T j++ T temp=x[j-1]x[j-1]=x[j]x[j] = temp
“Bubble sort” анимација Укључи / Искључи Wikipediaанимације i 6 1 5 3 j www.rajak.rs
Низови и показивачи • Име низа је показивач на нулти члан низа. • Пример: Доказ да је име низа показивач на нулти члан: www.rajak.rs
Низови у меморији рачунара www.rajak.rs
Низови у меморији рачунара • Низови, када је реч о програмском језику C, се заузимају као један непрекидан блок дела меморије. • На пример низ целих бројева од 10 елемената се заузима као 10 промељивих целобројног типа, са једном разликом. Код низа су сви елементи један поред другог у меморији. 10 различитих променљивих могу да буду било где у меморији, на 10 различитих локација, нимало близу једна другој. • Оператор индексирања [ ] даје приступ елементу тако увећава адресу нултог члана за индекс елемента кога тражимо.&X[1] = &X[0] +1 • Зашто је ово важно?Због ове чињенице се низови преко функција обрађују исто као и у главном потпрограму. www.rajak.rs
Пример 1: Испис низа употребом функцијеи показивача Помери слику кода Целобројни ispisNiza( Целобројни* P, Целобројни brEle) ПОЧЕТАК Целобројни i Целобројни Х[10] Целобројни rez i=0; ispisNiza(X,10) T i<brEle rez www.rajak.rs T i++ Врати 0 P[i] T T rez == 0 Успешно извршен програм Неуспешно извршен програм КРАЈ
Пример 1: Испис низа употребом функцијеи показивача www.rajak.rs
Пример 2: Измена низа употребом функције и показивача www.rajak.rs Сви подаци испод 20 су грешке при преносу, или грешка уређаја.Санирају се постављањем вредности тих елемената на 0.
Пример 2: Измена низа употребом функције и показивача obradiPodatke(Целобројни* P, Целобрoјни n) ПОЧЕТАК Целобројни i Целобројни i Целобројни X[4] i=0 Т preuzmiPodatke(X, 4) i<n i++ Т obradiPodatke(X, 4) www.rajak.rs Т P[i]<100 ispisNiza(X,4) Т Обрађени подаци P[i]=0 КРАЈ Врати се одакле си позван
Пример 2: Измена низа употребом функције и показивача www.rajak.rs
ASCII табела www.rajak.rs
Пример 3: Играње са начином конвертовања јединица и нула из меморије у вредности променљивих www.rajak.rs
Пример 3: Играње са начином конвертовања јединица и нула из меморије у вредности променљивих www.rajak.rs
Стрингови • Стрингови су само обичан низ типа char. Са једном битном особином. Последњи елемент мора да буде знак NULL односно ‘\0’. • Знак NULL даје смисао обичном низу знакова и говори је у питању стринг. • NULL је неопходан, да би функције које обрађују стрингове знале где је његов крај. • Примери неких стрингова: www.rajak.rs
УНОС СТРИНГА • Strings.h • Stdio.h www.rajak.rs
GETS / PUTS #include <stdio.h>#include <strings.h>int main(){ char str [10];scanf(“%s”, str);printf(“%s”, str); gets(str); puts(str); return 0; } www.rajak.rs
Пример 4: Бројање самогласника у стрингу prebrojSamoglasnika(Знаковни* S) ПОЧЕТАК Целобројни i,n,brSm=0 Знаковни str[10] Целобројни brSmgls i=0 str i<n T prebrojSamoglasnike(str) www.rajak.rs T i++ Врати brSm brSmgls S[i] samoglasnik? T T brSmgls brSm++ КРАЈ