JavaRush /Java Blog /Random-IT /Materiali aggiuntivi per le lezioni CS50: Settimana 1 (le...
Masha
Livello 41

Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4)

Pubblicato nel gruppo Random-IT
cs50 in materiale aggiuntivo russo Compiti della settimana 1

Obiettivi della prima settimana

  • Acquisisci familiarità con i comandi di base di Linux
  • Impara la sintassi C di base e risolvi alcuni problemi
  • Inizia a pensare in modo più chiaro =)
IDE CS50
Per completare le attività, CS50 offre un IDE (ambiente di sviluppo integrato) nel cloud. Per utilizzarlo crea un account sulla piattaforma edX e registrati al corso originale . Successivamente:
1. Vai su cs50.io, seleziona edX dall'elenco, inserisci login e password, fai clic su Invia 2. Inserisci le informazioni del tuo account edX, fai clic su Ritorna a ID.CS50.NET . cs50.io 3. Ti aspettiamo: il tuo spazio virtuale è in fase di realizzazione. spazio virtuale cs50 4. Fatto! CS50 ideale
Riga di comando e avvio dell'IDE CS50
Nella parte inferiore della finestra IDE CS50, nella scheda Terminale, è presente una finestra di terminale o un pannello della riga di comando. Qui puoi inserire comandi stringa: puoi fare la stessa cosa che con l'interfaccia della finestra, ad esempio avviare applicazioni, eliminare e creare file, installare software. Se non hai mai lavorato con la riga di comando, questo metodo probabilmente ti sembra macchinoso: devi ricordare i comandi e digitarli invece di fare clic su icone e pulsanti. In una certa misura questo è vero, quindi è stata inventata l'interfaccia della finestra. Tuttavia, la riga di comando è disponibile in tutti i sistemi operativi e gli amministratori la adorano. E tutto perché a volte non puoi farne a meno. Nella finestra IDE del terminale vedrai una riga misteriosa: nomeutente:~/workspace $ al posto di "nome utente" verrà generato automaticamente un nome (in base ai dati di registrazione). Fare clic sulla finestra del terminale, digitare: update50 Premere Invio. Il comando chiede al sistema di aggiornarsi. Vedrai apparire delle linee nel terminale che descrivono il processo di installazione. Non chiudere l'IDE CS50 finché non viene visualizzato Aggiornamento completato! . Dopodiché apparirà nuovamente la riga predefinita, quella con il tuo nome.
Lavorare nell'IDE
Creiamo una cartella in cui verranno archiviati i tuoi file. Fare clic con il pulsante destro del mouse su ~/workspace (la directory principale) nell'angolo in alto a sinistra dell'IDE CS50 , selezionare Nuova cartella . Rinomina la cartella pset1 (se hai scritto male il nome, fai clic con il pulsante destro del mouse sulla cartella e seleziona Rinomina ). cartella rinomina ide cs50 Quindi fare clic con il tasto destro sulla cartella pset1 e selezionare Nuovo file . Viene visualizzato il file Untilted, rinominiamolo hello.txt . CS50 ideale Fare doppio clic su ciao.txt. Nell'IDE CS50 vedrai una nuova scheda e un campo sulla destra in cui puoi digitare. Se lo hai fatto, presta attenzione al simbolo asterisco (*) che appare prima del nome del file nella scheda: un indicatore che le modifiche sono state apportate al file, ma non sono state salvate. Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 1 Salva il file andando su *File > Salva o utilizzando comando + S (su macchine Apple) o Ctrl + S (su PC). L'asterisco dovrebbe scomparire. Controlliamo se il file è dove dovrebbe essere. Facciamolo usando la riga di comando, è ora di abituarsi :). Come prima, la riga attiva nel terminale assomiglia a questa: username:~/workspace $ Area di lavoro - la directory di lavoro corrente (quella aperta nell'ambiente di lavoro). La tilde (~) indica la directory root (lo spazio di lavoro si trova in essa). Tieni presente che l'area di lavoro nel terminale è uguale all'icona ~/workspace nell'angolo in alto a sinistra dell'IDE CS50. Facciamo un pò di pratica. Fare clic in un punto qualsiasi del terminale, digitare la riga di comando ls e premere Invio. Queste due lettere minuscole, abbreviazione di "elenco", faranno apparire un elenco di file e cartelle situati all'interno della directory dell'area di lavoro corrente. Tra le altre cose vedrai il pset1 che hai creato ! Ora apriamo la nostra cartella utilizzando il comando. Digitiamo cd pset1 o più dettagliatamente: cd ~/workspace/pset1 Il comando cd (cambia directory) cambia la directory attiva, nel nostro caso in ~/pset1 La riga attiva è cambiata in username:~/workspace/pset1 $ Ciò conferma che ora sei nella directory ~/workspace/pset1 (la riga sta per “Sono in pset1 all'interno dello spazio di lavoro cartella, che si trova nella cartella principale, indicata con ~"). Ora digita ls Vedrai il file hello.txt ! Se clicchi sul nome nel terminale, non succede nulla: è testo e non dà un nome attivo link, ma conferma che hello.txt è dove dovrebbe essere. Digita cd Se scrivi solo il comando cd stesso, ma non fornisci un argomento (cioè il nome della cartella in cui dovrebbe andare), ti restituirà alla directory root predefinita, quindi vedrai la seguente immagine sulla riga attiva: username:~ $ Per tornare a una cartella pset1, comporre cd workspace e premere Invio. Quindi cd pset1 inserisci di nuovo. Puoi anche sostituire questi due comandi con uno più autentico: cd workspace/pset1
Ciao C!
Finalmente questo momento è arrivato! Iniziamo a programmare. All'interno della nostra cartella pset1 nell'IDE, crea un file chiamato hello.c (l'estensione è richiesta), aprilo in una nuova scheda (pensiamo che ricordi come farlo dal paragrafo precedente). IMPORTANTE! Le lettere devono essere minuscole, Linux distingue tra maiuscole e minuscole. Hello.c e hello.c sono file diversi. Sul lato destro della finestra IDE CS50, digita esattamente lo stesso testo che vedi di seguito. Sì, puoi copiarlo, ma è più utile digitarlo. Le lettere sono di colori diversi poiché l'IDE CS50 dispone dell'evidenziazione della sintassi. Evidenzia i blocchi di testo con colori per una migliore leggibilità. I colori non vengono salvati nel file stesso; sono visibili solo nell'IDE. Se sono presenti, l'IDE capisce C e hai indicato che è C nell'estensione del file (*.c). Se chiamassi lo stesso file hello.txt, il testo sarebbe di un colore. Assicurati di aver digitato tutto esattamente come nell'esempio, altrimenti catturerai il primo bug =). Ancora una volta attiriamo la vostra attenzione sulla differenza tra lettere minuscole e maiuscole. Il carattere \n sposta il cursore alla riga successiva e il testo inserito successivamente non si unirà all'output del programma. Oh sì, e non dimenticare il punto e virgola (;). Questo è un separatore importante per le istruzioni del programma; il C non vorrà lavorare senza di essi. Fai clic su File > Salva (o comando o Ctrl-s). Hai notato che l'asterisco davanti al nome del file è scomparso? Se sì, le modifiche sono state salvate. Fai clic in un punto qualsiasi della finestra del terminale sotto il codice e assicurati di essere all'interno di ~/workspace/pset1 (in caso contrario, fai clic su cd e premi Invio, quindi cd workspace/pset1 e nuovamente Invio). La tua riga attiva dovrebbe assomigliare a questa: Assicuriamoci che il file hello.c sia esattamente dove dovrebbe essere. Digita e premi Invio. Vedi anche hello.c? In caso contrario, torna indietro di un paio di passaggi e crea nuovamente il file nella directory desiderata. ... Adesso arriva il momento solenne: incrociamo le dita e... digitiamo: e con le dita incrociate premiamo Invio. Esattamente ciao, non ciao.c. Se tutto ciò che vedi davanti a te dopo questa azione è la seconda linea attiva, che assomiglia esattamente alla precedente, allora funziona tutto! Il tuo codice sorgente è stato tradotto in codice macchina o oggetto (cioè nella sequenza di 0 e 1). Ora questo codice può essere eseguito (cioè il programma può essere eseguito!). Per fare ciò, digitare: nella riga di comando, premere Invio. Se non hai modificato il testo racchiuso tra "" s, vedrai di seguito: Se ora digiti il ​​comando e premi Invio, vedrai un nuovo file hello, insieme a hello.c e hello.txt. Il primo ciao dovrebbe avere un asterisco dopo il nome, che segnala che si tratta di un file eseguibile, cioè quello con cui si avvia il programma. #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
Bug?
Se dopo il comando make vedi degli errori, è il momento del primo debug! Iscrizioni come "dichiarazione prevista" significano che hai fatto un errore di battitura da qualche parte. Controlla di nuovo il codice sopra, fai solo molta attenzione a tutti i dettagli. Attenzione! Le descrizioni degli errori sono fornite in inglese. Se non è chiaro, utilizza un motore di ricerca, Google Translate o fai una domanda nei commenti. Una volta corretti gli errori, non dimenticare di salvare il codice utilizzando File > Salva (o comando- o Ctrl-s), fai nuovamente clic all'interno della finestra del terminale e digita make hello (Assicurati solo di essere in ~ /workspace/pset1 prima). Se non ci sono più errori, esegui il programma digitando il comando: ./hello in teoria dovrebbe apparire davanti a te la preziosa frase, racchiusa tra virgolette dell'operatore printf, che comanda "stampa". Se la finestra del terminale sembra troppo piccola, fai clic sull'icona più (+) cerchiata accanto a hello.c.
Verifica della correttezza
L'applicazione check50 è integrata nell'IDE CS50. Funziona dalla riga di comando e controlla la presenza di errori in alcuni programmi. Se non ci sei ancora, vai nella directory ~/workspace/pset1 eseguendo il comando nel terminale: cd ~/workspace/pset1 Ora esegui ls vedrai almeno un file hello.c. Assicurati che il nome del file sia simile a questo e non, ad esempio, Hello.c o hello.C. Puoi rinominare un file eseguendo il comando mv source destination source - il nome del file corrente, destinazione - il nuovo nome del file. mv (dalla mossa inglese) è un'utilità di ridenominazione. Se per errore hai chiamato il file Hello.c, digita la riga: mv Hello.c hello.c Dopo esserti assicurato che il file si chiami esattamente hello.c, chiamiamo il programma di controllo check50. Tieni presente che 2015.fall.pset1.hello è un identificatore univoco per il problema "ciao mondo". check50 2015.fall.pset1.hello hello.c Se il programma viene eseguito correttamente, vedrai: Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 2 Le faccine verdi indicano che il test è stato superato. Puoi anche vedere l'URL in fondo all'output di check50, ma è solo per i dipendenti (tuttavia, se sei interessato, dai un'occhiata!). check50 esegue 3 test: se il file hello.c esiste, se hello.c viene compilato e se l'applicazione produce una riga che dice "ciao, mondo\n". Se vedi emoticon rosse tristi, significa che hai un bug. :( hello.c exists \ expected hello.c to exist :| hello.c compiles \ can't check until a frown turns upside down :| prints "hello, world\n" \ can't check until a frown turns upside down Qui check50 non ha trovato hello.c e lo smiley rosso indica che hai commesso un errore nel nome o hai caricato il file nel posto sbagliato. Le emoticon gialle “neutre” indicano che i test non sono stati eseguiti. E da dove iniziare se il programma non trova il file da controllare? Ecco un'altra opzione che apparirà se hai cambiato il testo che la funzione printf() dovrebbe emettere: :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 segnala che la riga hello, world\n era prevista, ma è apparso qualcos'altro. check50 non conta punti per il completamento del corso, ma verifica se l'esito del compito differisce da quanto previsto. E ti consente di verificarlo prima di confermare la correttezza dell'attività all'interno del corso (ti diremo come farlo in seguito).
Nozioni di base su C: confronto con Scratch
Ciao mondo in Scratch e C:
Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 3 #include int main(void) { printf("hello, world\n"); }
  • Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 4rappresenta una funzione che stampa le "parole" di uno sprite in un fumetto in Scratch, c'è una funzione printf in C che fa la stessa cosa, solo senza le vignette.
  • main - in inglese - “main”. Punto di ingresso al programma. Uguale a Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 5.
Ciclo infinito
Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 6 tradotto in C: while (true) { printf("hello, world\n"); } while (true) fa la stessa cosa: il ciclo continua il suo lavoro mentre (through) il valore è vero (l'espressione booleana “true” o “uno”). Questo ciclo verrà eseguito all'infinito.
Un loop che visualizza una frase sullo schermo 10 volte
Scratch Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 7 C for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i è una variabile contatore; il suo valore viene modificato dall'operatore di incremento i++, aumentandolo di 1 ad ogni iterazione del ciclo. Inizialmente, a i viene assegnato il valore 0 utilizzando l'operatore di assegnazione =. Attenzione! Come in Java, in C l'uguaglianza è indicata con ==, l'operatore di assegnazione =. Cioè, a = 5 significa che alla variabile a è stato assegnato il valore 5, e (a= =5) significa un'espressione di Boulogne (se a è uguale a 5, allora l'espressione è vera, se non è uguale, allora falsa) . Il ciclo si fermerà quando i “cresce” fino a 9. È facile da calcolare, il ciclo verrà eseguito 10 volte. Quindi, se devi ripetere qualcosa un certo numero di volte, in C definisci un ciclo for (int i = 0; i < 10; i++). Un altro esempio: Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 8 E la stessa cosa tradotta in C: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • il contatore memorizza il valore in C e Scratch. In C impostiamo int counter = 0 invece di Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 9.
  • Contrassegniamo il tipo della variabile come int per chiarezza: i è un numero intero (dall'inglese intero, intero).
  • Il segno %i che usiamo in printf alla riga quattro è un segnaposto che ci dice di stampare l'intero decimale, proprio come diciamo a printf di sostituire il segnaposto con il valore assunto dalla variabile contatore.
Espressioni booleane
Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 10 È lo stesso di (x < y) ((x < y) && (y < z))
Condizioni
Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 11 E l'equivalente “merda”: Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 12 che dire della prima frase incomprensibile? Ne parleremo più avanti, nella sezione “Biblioteche”. #include
Dichiarazioni condizionali
Questi ragazzi controllano se una condizione (un'espressione logica, una domanda a cui si può rispondere solo con "sì" o "no") è vera e, in tal caso, eseguono alcune azioni legate a questa condizione. Un esempio dalla vita: se piove (supponendo che piova) e io sono fuori (sono fuori quando piove), apro l'ombrello. if (condition) { //исполнить, если meaning истинно } Un'opzione più complicata: se la condizione è soddisfatta, esegui un'azione; in caso contrario, esegui un'altra azione. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } Esempio: se hai più di 18 anni, approva l'accesso. Se è inferiore, non verrà approvato. Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 12
Operatore di selezione
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } Esempio: se n = 50, stampa "CS50 è Introduzione all'informatica I", se n = 51, stampa "CS51 è Introduzione all'informatica II", altrimenti stampa "Mi dispiace, non ho familiarità con quel corso!" switch (n) { case 50: printf("CS50 is Introduction to Computer Science I\n"); break; case 51: printf("CS51 is Introduction to Computer Science II\n"); break; default: printf("Sorry, I'm not familiar with that class!\n"); break; }
Cicli
while: controlla la condizione, quindi esegue l'azione mentre la condizione è vera while (condition) { // выполнять, пока истина } do/mentre è diverso in quanto la prima volta esegue l'azione senza controllare la condizione, e poi la controlla solo. Se la condizione è vera, ripete l'azione finché la condizione non diventa falsa. do { ) // выполнять, пока истина } while (condition); Il ciclo for ripete un'azione un numero specificato di volte. Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 13 I cicli possono essere nidificati l'uno nell'altro. In questo caso, ad ogni passo del ciclo esterno, il ciclo interno verrà eseguito completamente. Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 14
Tipi di dati di base in C
tipi di dati di base in C
Biblioteche C
Probabilmente ti sei già chiesto cosa significa la prima riga di un programma C: qual è il suo ruolo ed è possibile farne a meno? La riga #include fa una cosa molto importante: include librerie di codice già scritto nel tuo programma. Il nome della libreria collegata è racchiuso tra parentesi angolari (<>) e ha un'estensione (.h). Se non ci fossero le biblioteche, allora qualsiasi azione, anche la più elementare, dovrebbe essere descritta più e più volte ogni volta. Biblioteca che abbiamo collegato#include contiene funzioni di input/output. Questo è ciò che ci consente di utilizzare la funzione printf() per stampare sullo schermo. Cioè, se non avessimo scritto la riga #include , ma abbiamo lasciato la funzione printf() nel corpo del programma; quando avessimo provato ad eseguirla, avremmo ricevuto un errore! Perché senza questa libreria il compilatore non sa cosa sia printf(). Esistono librerie standard, costituiscono il vocabolario della lingua. La funzione printf() non è incorporata nel computer, ma è inclusa nella libreria standard del linguaggio C. Cioè, alcuni programmatori l'hanno precedentemente scritta e inclusa nella libreria. Ora altri possono usarlo senza reinventare la ruota. Affinché il compilatore possa “comprenderlo”, ci connettiamo . Esistono altre librerie standard utilizzate nel processo CS50. Ad esempio, una libreria di stringhe, che descrive le operazioni con le stringhe (determinazione della lunghezza, addizione, ecc.). Rispetto ad altri linguaggi di programmazione popolari, il numero di librerie C standard è molto ridotto. Ma ci sono biblioteche autoprodotte, molto spesso più altamente specializzate. Sì, biblioteca è stato creato appositamente per gli studenti CS50. È il momento di fare una nota importante: oltre a scrivere programmi e risolvere problemi utilizzando il proprio codice, un buon sviluppatore ha un'altra importante abilità: la conoscenza di strumenti già scritti e la capacità di usarli (librerie altrui) in modo da per non perdere tempo a reinventare la “ruota”. Quindi, se stai risolvendo un problema noioso o complesso che sembra abbastanza comune, impara a porsi la domanda: “qualcun altro ha scritto la soluzione?” Ci sono buone probabilità che sia così e puoi trovare questa funzione in una libreria esistente. In termini tecnici, una libreria è un file binario prodotto combinando una raccolta di file oggetto utilizzando un linker. I file oggetto sono quei file con estensione (*.o) che ottieni quando compili applicazioni.
Struttura delle librerie C
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 16 Author библиотеки передает программисту, который хочет её использовать, два file — с двоичным codeом, а также заголовочный файл. Таким образом, файл с исходным codeом программисту не нужен. Точнее, он может быть нужен, если программист хочет что-то поменять в самой библиотеке и перекомпorровать её под собственные нужды. Whatбы воспользоваться функциями библиотеки в своей программе нужно проделать следующее: 1. Включить заголовочный файл в программу с помощью строки #include В случае стандартных библиотек достаточно указать Name библиотеки в угловых скобках: #include <Name_библиотеки.h> Если библиотека, которую вы хотите подключить, лежит в той же папке, что и ваша программа, подключайте её следующим образом: #include “Name_библиотеки.h” 2.Присоединить бинарный файл для компиляции. Это очень важный шаг, поскольку, How мы говорor выше, заголовочный файл не содержит реализации элементов библиотеки. Whatбы это сделать, нужно вызвать компилятор clang с флагом –l и идущим непосредственно за ним названием библиотеки. Например, компонуем библиотеку cs50: clang hello –lcs50 Clang — один из компиляторов. Для компиляции можно также использовать уже знакомую вам программу make. По сути, она вызывает clang с определенными аргументами командной строки.
И снова Hello C: разбор синтаксиса простейших программ
Директива #include подключает библиотеку ввода/вывода . Программы в C состоят из функций, а те — из операторов и переменных. Функция — это кусок codeа, в котором уже есть or подаются Howие-то данные, а Howие-то данные получают в результате её исполнения. Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на самое себя, и результат этого умножения она выдает на выходе. int sqr(int a) { return a*a; } int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это How переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента. Пример: функция, которая отнимает от целого числа 0.5: double bit_less(int a) { double b; b = a – 0.5; return b; } int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов. Внимание! main всегда возвращает int, но return для неё не обязателен. Пример функции не возвращающей значения: void sayhello(void) { printf(“hello everyone!\n”); } При вызове функции в главной программе, она выведет приветствие. Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main(). В C, How и любом языке, есть такой элемент, How комментарий or примечание в коле программы, предназначенное не для компьютера, а для понимания людей. Например, описание, что именно делает code. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) codeе очень сложно. //пример однострочного комментария /** а это – многострочного **/ #include //функция возведения в квадрат числа a int sqr(int a) { return a*a; } //выводит приветствие void test(void) { printf ("hello everyone!\n"); } //главная функция int main(void) { test(); printf("%d\n", sqr(5)); } Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены How void.
Еще немного о вводе/выводе в C
Вы, наверное, уже успели заметить странные символы %d и %f в скобках оператора printf. Дело в том, что функция printf выводит данные в следующем обобщенном виде: рrintf ("управляющая строка", аргумент1, аргумент2,...); Управляющая строка содержит компоненты трех типов:
  • символы, которые выводятся на экран дисплея;
  • спецификаторы преобразования, которые вызывают вывод на экран очередного аргумента из последующего списка;
  • управляющие символьные константы.
Спецификатор преобразования начинается со знака % и заканчивается символом, задающим преобразование. Некоторые из таких символов:
  • с: meaningм аргумента является символ;
  • d or i: десятичное целое число;
  • f: десятичное число с плавающей точкой;
  • s: строка символов.
То есть, %d означает, что на экране появится целое десятичное, а %f — десятичное с плавающей запятой. What если нам нужно, чтобы пользователь ввёл данные с клавиатуры? Для этого можно использовать функцию scanf( ), прототип которой также лежит в библиотеке stdio. Whatбы считать с экрана вещественное число, в программе нужно написать строку scanf("%d", &a); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. Materiali aggiuntivi per le lezioni CS50: Settimana 1 (lezioni 3 e 4) - 17
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION