Birleştirme
- C kursu
- Uzman
- Ders 47/47
- 6 dk
Tüm uzman konularını birleştirerek çalışan bir mini uygulama yazarsın.
Birleştirme
Son derste tüm parçaları birleştirirsin. main, sırayla kernel_init'i, parse_command'u ve security_check'i çağırır. Her çağrının sonucu yazdırılır; program "Bitti" mesajıyla sonlanır.
Bu, bir sistem uygulamasının akışını modeller: önce çekirdek hazırlanır, sonra komutlar çözümlenir, her giriş güvenlik denetiminden geçer. Üç modül — çekirdek, derleyici ve güvenlik — tek bir main içinde çalışır. Önceki dersin çözümü başlangıç koduna dahildir; sen yalnızca security_check çağrısını ve "Bitti" mesajını eklersin. Programın tam çıktısı deterministiktir.
Sistem akışı
Birleştirilmiş programın akışı: main önce "Proje başladı" yazdırır, sonra kernel_init() ile çekirdeği hazırlar. Ardından parse_command("help") ile komutu çözer ve sonucu yazdırır.
Sıradaki adım, security_check("test", 4) ile güvenlik denetimidir; sonuç yazdırılır. Son olarak "Bitti" mesajı ile program sonlanır. Bu akış, gerçek bir sistemin başlatma ve komut işleme adımlarını basitleştirilmiş olarak gösterir. Her modül bir kez çağrılır; çıktı deterministiktir ve her çalıştırmada aynıdır.
Uygulama Son birleştirmeyi yap
main içinde printf("Komut: %d\n", parse_command("help")) satırından sonra printf("Güvenlik: %d\n", security_check("test", 4)) ekle. En son printf("Bitti\n") ile programı bitir.
Başlangıç kodu
#include <stdio.h>
#include <string.h>
void kernel_init(void);
int parse_command(const char *cmd);
int security_check(const char *buf, int len);
void kernel_init(void) {
printf("Çekirdek başladı\n");
}
int syscall(int num) {
return num * 2;
}
int parse_command(const char *cmd) {
if (strcmp(cmd, "help") == 0) return 1;
if (strcmp(cmd, "exit") == 0) return 2;
return 0;
}
int security_check(const char *buf, int len) {
if (len < 0 || len > 16) return 0;
if (buf == NULL) return 0;
return 1;
}
int main(void) {
printf("Proje başladı\n");
kernel_init();
printf("Komut: %d\n", parse_command("help"));
// security_check çağır ve Güvenlik yazdır
// Bitti yazdır
return 0;
}Örnek çözüm
#include <stdio.h>
#include <string.h>
void kernel_init(void);
int parse_command(const char *cmd);
int security_check(const char *buf, int len);
void kernel_init(void) {
printf("Çekirdek başladı\n");
}
int syscall(int num) {
return num * 2;
}
int parse_command(const char *cmd) {
if (strcmp(cmd, "help") == 0) return 1;
if (strcmp(cmd, "exit") == 0) return 2;
return 0;
}
int security_check(const char *buf, int len) {
if (len < 0 || len > 16) return 0;
if (buf == NULL) return 0;
return 1;
}
int main(void) {
printf("Proje başladı\n");
kernel_init();
printf("Komut: %d\n", parse_command("help"));
printf("Güvenlik: %d\n", security_check("test", 4));
printf("Bitti\n");
return 0;
}Beklenen çıktı
Proje başladı Çekirdek başladı Komut: 1 Güvenlik: 1 Bitti
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Modülü son görevine eşle
| Kavram | Anlamı |
|---|---|
Çekirdek |
kernel_init() |
Derleyici |
parse_command() |
Güvenlik |
security_check() |
Çıkış |
printf Bitti |
2 Projenin son adımı nedir?
- Sadece güvenliği çağır
- Sadece çekirdeği çağır
- Tüm modülleri çağır ve 'Bitti' yazdır Doğru cevap
- Hiçbir şey çağırma
Açıklama: Son adımda tüm modüller çağrılır ve 'Bitti' yazdırılır.
3 Son printf'i tamamla
printf("____
");
printf("Bitti
");
Açıklama: printf("Bitti\n"); programın sonlandığını bildirir.