יום ראשון, 25 בדצמבר 2016

שפת C - מבנים struct (יום ראשון)

מבנים - struct


- המבנה מיועד לשמירת הרבה נתונים מסוגים שונים.
- איברי המבנה (השדות) נשמרים ברצף בזכרון.

הגדרה כללית:
        struct Name{
        type1  n1;
        type2  n2;
              .
              .
              .
        };

יום חמישי, 22 בדצמבר 2016

מחרוזות בשפת אסמבלי (יום חמישי)

מחרוזות בשפת אסמבלי - UnderWarrior PDF


מטרת המסמך היא להציג את פקודות השפה המסייעות בפעולות על מחרוזות.




Show/Hide me Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

יום רביעי, 21 בדצמבר 2016

שפת C - מצביע למצביע (יום רביעי)

מצביע למצביע


מצביע יכול להצביע למצביע אחר עם כוכבית אחת פחות משלו (וכן הלאה "מצביע למצביע למצביע" עוד כוכביות)

הגדרה:
type  **PName; 
שימוש:
int x = 13,*p,**q;  
p = &x;                    
q = &p;                    
הפקודה q = &x לא חוקית!

אם הכתובת של x היא 600 , של p היא 850 ושל q היא 900
אז נתבונן במצב אחרי הפקודות:
x = 13         &x = 600      *x
p = 600      &p = 850      *p = 13        **p
q = 850      &q = 900      *q = 600      **q = 13





הקצאת מטריצה דינאמית:

int n = 5(שורות), m = 4(עמודות), **A;

נעבור לתוכנית:

יום ראשון, 18 בדצמבר 2016

שפת C - פקודת realloc (יום ראשון)

פקודת realloc

מאמר מאת ויקיספר:


פונקציית שינוי-ההקצאה realloc

שינויי הקצאות אפשר לעשות בעזרת הפונקציה realloc, על ידי קריאות מהצורה הבאה:
realloc(<old_ptr>, <total_size>)
כאשר old_ptr היא כתובת הזיכרון המוקצאת הנוכחית, וtotal_size הוא הגודל החדש המבוקש (בבתים).
מערכת ההפעלה תנסה לראות האם אפשר לשנות את רצף הזיכרון הנוכחי לגודל המבוקש. אם הדבר אפשרי, הפונקציה תחזיר את כתובת הזיכרון של הרצף הנוכחי כvoid * (בדיוק כפי שראינו מקודם בהקצאה). אם הדבר אינו אפשרי, היא תבדוק האם יש רצף אחר מתאים בזיכרון. אם היא הצליחה, היא תעתיק את תוכן הרצף הנוכחי לרצף החדש, תשחרר את הרצף הנוכחי, ותחזיר את כתובת הרצף החדש. אם אין רצף אחר מתאים בזיכרון, היא לא תשנה כלום בזיכרון (ובפרט, לא תשחרר את הרצף הנוכחי), ותחזיר NULL כדי לסמן שלא הצליחה.

יום רביעי, 14 בדצמבר 2016

שפת C - הקצאת זיכרון דינאמי (יום רביעי)

הקצאת זיכרון דינאמי

נדגים מה הצורך בזיכרון דינאמי:

void main(){   
int n;               
scanf(%d,&n);
int A[n];         

הפקודה האחרונה לא חוקית!
למה?
* אסור שגודל מערך יהיה משתנה.
*אסור להגדיר משתנים אחרי שכבר כתבנו פקודות בתוכנית.

לכן יש שימוש בהקצאת זיכרון דינאמית!



- הקצאת זיכרון דינאמית היא האפשרות לייצר זיכרון (להקצות) במהלך ביצוע התוכנית.
- יש לעשות שימוש בספרייה  <stdlib.h>


אנחנו נשתמש בפקודות הבאות:

malloc - לבצע הקצאה חדשה
calloc  - לבצע הקצאה חדשה + לאפס אותה
realloc - להגדיל/להקטין זיכרון דינאמי
free     -  לשחרר זיכרון דינאמי

יום שני, 12 בדצמבר 2016

תירגול מצביע למערך

תרגיל:
כתוב פונקציה שמקבלת מערך של intים, את הגודל שלו, ומצביע לint כלשהו.
בדוק האם המצביע מצביע לאיבר כלשהו במערך.

אם כן: הדפס את כל האיברים במערך שנמצאים אחרי המצביע (כולל המצביע).
אם לא: הדפס "NO".







פתרון אפשרי:

יום ראשון, 11 בדצמבר 2016

שפת C - עוד על מצביעים (יום רביעי וראשון)

עוד על מצביעים:

- שם מערך הוא למעשה גם מצביע, שמצביע על הבית הראשון של האיבר הראשון במערך.

- כדי להצביע על מערך אפשר לעשות בפשטות (כש p הוא מצביע):
p = &A[0];  
  אבל אפשר לעשות גם:
.שכן שניהם מצביעים, ואפשר להשוות שני מצביעים-         p = A;  



- כל ערך שמוסיפים למצביע, ערך זה מייצג את כמות האיברים שרוצים להתקדם, ולא כמות הבתים.
  לדוגמה:
  אם p הוא מצביע מסוג int שמצביע על האיבר הראשון של המערך A
*p = 13;          =>      A[0] = 13
p++;               =>      p = 1004
*p = 27;          =>      A[1] = 27
p+=2;             =>      p = 1012
*p = 20;          =>      A[3] = 20

יום שלישי, 6 בדצמבר 2016

יום ראשון, 4 בדצמבר 2016

שפת C - פתרונות, מצביעים (pointer), ושאלות (יום ראשון)

פתרונות תרגילים 6,7



/*
#include <stdio.h>
void main() {
 char str[80];
 int i , cnt = 0;
 printf("Enter string:\n");
 gets( str );
 
 for(i=0; str[i] != NULL; i++) {
  if(str[i]>='a' && str[i]<='z' && !(str[i+1]>='a' && str[i+1]<='z' ) )
   cnt++;
 }
 printf("cnt: %d\n",cnt);
}
*/
 
 

יום רביעי, 30 בנובמבר 2016

שפת C - שאלות על מחרוזות וצילום המבחן והפתרונות (יום רביעי)

שאלות על מחרוזות:

מחרוזות - strings
1) כתוב תכנית אשר קולטת מחרוזת ותהפוך כל האותיות הקטנות לגדולות.
    והגדולות לקטנות.
    לדוגמא:
            “abA1#2cN”    à   “ABa1#2Cn”

2) כתוב תכנית אשר קולטת מחרוזת ומדפיסה כמה ספרות נמצאות במחרוזת זו.
    לדוגמא:
         עבור המחרוזת :    “1as9+23ke2k”
         הפלט יהיה:  5. 

3) כתוב תכנית אשר קולטת מחרוזת ומעתיקה כל האותיות במחרוזת זו למחרוזת
    שניה.
    לדוגמא:
      אם המחרוזת הראשונה היא:   “Ad3+3Laad”
      אז המחרוזת השנייה תהיה:   “AdLaad”

יום ראשון, 27 בנובמבר 2016

שפת C - סוגי משתנים, מחרוזות, הפונקציות puts ו gets, הספרייה (יום ראשון)

סוגי משתנים

__________________________________________________________________________

                       מקום ההגדרה              מקום ההכרה                         אורך חיים

                       |                                |                                            |
משתנה פנימי:    בתוך הפונקציה (בלוק).   בתוך אותה הפונקציה בלבד.         כאורך החיים של הפונקציה.
                       |                                |                                            |
משתנה גלובאלי:  מחוץ לכל פונקציה.       בכל הפונקציות המוגדרות מתחת.  כאורך החיים של התוכנית.
                       |                                |                                            |
משתנה סטטי:      בתוך הפונקציה.            בתוך הפונקציה.                       מהקריאה הראשונה לפונקציה עד סוף-
                                                                                                      |  -התוכנית.
                                                                                                        משתנה סטטי לא מאותחל יהיה 0.
                                                                                                     שומר על הערך שלו בין קריאה לקריאה.

__________________________________________________________________________

הערה: אם קיימים משתנה פנימי ומשתנה גלובאלי עם אותו שם (דבר שלא עושים), אז העדיפות היא למשתנה הפנימי.



יום שני, 21 בנובמבר 2016

חשיבה וJAVA - מעגל המתאבדים של יוספוס פלביוס (יום שני)

משימה:


לכתוב תרשים זרימה + תוכנית, שמתארת מי נשאר חי במעגל המתאבדים של יוספוס פלביוס (כלומר מקבלים מהמשתמש את מספר המתאבדים והתוכנית מחזירה את מספר האיש שנותר חי אחרון.)


פתרון:  בשפת C   בJAVA

משימה (משבוע שעבר):


להגיש תרשים זרימה של איקס עיגול.






יום ראשון, 20 בנובמבר 2016

שפת C - חזרה למבחן ותרגול פונקציות (יום ראשון)

חזרה למבחן




מחשבים א'

חזרה למבחן !
שאלה 1:
#include <stdio.h>
void main() {
          int i,m=0,t=0,k, A[10] = {1,2,-3,-2,31,5, 21,-7,20,10};
              for(i=0; i<10; i++)
          {
                 for(k=0; A[i]%2 != 0 && i<10;k++,i++);
                 if(k > m) {
                    m = k;
                    t = i - m;
                }
           }
          for(i=t; i<t+m; i++)
                   printf("%d",A[i]);
 }

יום ראשון, 6 בנובמבר 2016

שפת C - מערכים ו define (יום ראשון)

פתרונות המשימות מהשיעור הקודם:


#include <stdio.h>
void main() {
 int i , j , n;
 printf("Enter n: ");
 scanf("%d",&n);
 
 
 
 for(i=1; i<=n; i++) {
  for(j=1; j<=i ; j++)
   printf("%d",j);
  putchar('\n');
 }

יום חמישי, 3 בנובמבר 2016

התחלה עם JAVA

א. נוריד Java מכאן
ב. בדרך כלל צריך להוריד גם Java JDK 8 (כלים למתכנתים)
ג. נוריד NetBeans IDE בגרסה האחרונה. (שימו לב שאתם מורידים "Java EE")



תתקינו את כל זה ותוכלו להתחיל לעבוד!


יום רביעי, 2 בנובמבר 2016

שפת C - מספרים רנדומליים, דוגמאות ומשימות לשימוש בלולאות (יום רביעי)

מספרים רנדומליים

מספרים רנדומליים (אקראים) שימושיים להרבה מאוד תחומים, כדוגמת משחקים.
הנושא הוא לא פשוט שכן איך יכול אלגוריתם קבוע ליצור דבר אקראי?
קיימות מספר דרכים. חלקן יותר מדויקות מאחרות, (במספר רב של ניסיונות), וכולן משתמשות באקראיות שנמצאת בטבע.

בשפת C נשתמש בפונקציות rand ו srand.
srand מקבלת את הפונקציה time שמחזירה את מספר השניות שעברו מאז 1970, ובאמצעות חישוב מתמטי מסוים על המספר הפונקציה rand מחזירה מספר רנדומלי. לא נפרט, אך תזכרו שכל פעם rand מחזירה מספר אקראי חדש (גדול או שווה 0).



על מנת להשתמש במספרים רנדומליים יש להכליל גם את שתי הספריות:
<stdlib.h>                                          
< time.h>                                          

:ובתוכנית שלנו לכתוב פעם אחת את השורה
srand (time(0));                                 


:אחריה, כל פעם שצריך מספר רנדומלי נשתמש ב
rand();                                               



אחת הבעיות שלנו היא כשנרצה מספר אקראי מ X או עד X
לשם כך שימושי מאוד התו % (פעולת שארית)
לדוגמה:
p = rand()%100
עכשיו p שווה מספר אקראי בין 0 ל 99! (משום שהשארית של כל מספר לחלק ל 100 יכולה להיות רק בין 0 ל 99)
או:
p = rand()%91+10
עכשיו p שווה מספר אקראי בין 10 ל 100!

יום ראשון, 30 באוקטובר 2016

שפת C - תרגול, continue ו סידור טבלה (יום ראשון)

למדנו איך פותרים את המשימות מהשיעור האחרון בשפת C




/*
/////////////////// Exe no' 4 version a
#include <stdio.h>
void main() {
 int a , b , i;
 printf("Enter 2 numbers: ");
 scanf("%d %d",&a, &b);
 for(i=(a < b) ? a : b; a%i !=0  || b%i != 0; i--);
 printf("number: %d\n",i);
}
 
 
/////////////////// Exe no' 4 version b
#include <stdio.h>
void main() {
 int a , b;
 printf("Enter 2 numbers: ");
 scanf("%d %d",&a, &b);
 
 while(a != b) {
  if(a > b) a -= b; // a = a - b;
  else   b -= a; // b = b - a;
 }
 printf("Number: %d\n",a);
 
}

יום שני, 10 באוקטובר 2016

שיעור SQL - שאילתות (יום שני)

למדנו היום איך לבקש דברים ("שאילתות") בשפת SQL מבסיס הנתונים

עוד מידע תוכלו לראות כאן

יש להוריד את הקובץ Northwind.bak מדרובוקס (למי שעוד אין)
ולעשות את הדברים הבאים:

1. הצג את כל המידע מטבלת Orders.
2. הצג את כל העמודות מטבלת Employees.
3. הצג מטבלת Employees את העמודות הבאות:  FirstName , HireDate , Country , Region .
4. הצג את מטבלת Orders את העמודות הבאות:  OrderID , CustomerID , OrderDate .
5. הצג מטבלת Products את העמודות הבאות:
ProductID (אליאס - Prold) , UnitPrice (אליאס - UntPr) , ProductNam (אליאס - ProNm).

6. הצג מטבלת Employees את העמודות הבאות:
Address (אליאס - Add ) , City (אליאס - Ct) , Region (אליאס - reg).

7. הצג מטבלת customers שתי עמודות: קוד הלקוח בעמודה אחת, הכתובת והעיר משורשרות יחדיו בעמודה שנייה,
    יש לתת את השם "full address" לעמודה השנייה.







 תוכלו להעזר ב: ערוץ היוטיוב של גידי , וב מדריך SQL בסביבת SQL Server מאת Ram Kedem









יום ראשון, 9 באוקטובר 2016

שפת C - לולאות (יום ראשון)

למדנו 4 סוגי לולאות:


while
while (תנאי) {
  .
  .  T
  .
 }
.
.    F
.




for
for (קידום ; תנאי ; אתחול) {
  .
  .  T
  .
 }
.
.    F
.

יום רביעי, 28 בספטמבר 2016

שפת C - ספריית המתמטיקה, טבלת אסקי קוד, char והאופרטורים : ? (יום רביעי)

למדנו היום:


פונקצית הספריה <math.h>

pow 
מקבלת מספרים ומחזירה את התוצאה של הראשון בחזקת השני
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,t;
 
scanf ("%lf%lf",&a,&b);
t = pow(a,b);
t = pow(a+2,b);
}

בגלל שהחזקה יכולה גם להיות מינוס, שפת C מגדירה את הערך של הפונקציה תמיד כמספר ממשי.


sqrt
מקבלת מספר ומחזירה את השורש הריבועי שלו

יום שלישי, 27 בספטמבר 2016

יום שני, 26 בספטמבר 2016

שיעור SQL (יום שני)

למדנו:



שיעורי אינטרנט:

לכתוב בעזרת גוגל על הנושאים הבאים:

אילוצים בשפת (DML (Data Manipulation Language :

PK מפתח ראשי
FK מפתח זר

יום שישי, 23 בספטמבר 2016

אפליקציה לכתיבה בשפת C מהטלפון!

כמו שהכותרת אומרת...





Barkai_In_Blood_and_Soul

שיעור שפת סף - ארכיטקטורה ופקודות בשפת אסמבלי 86 (יום חמישי)

למדנו:
ארכיטקטורה של מעבד 8086:
במעבד יש 14 "אוגרים" מ5 סוגים:

4 "אוגרים כלליים" ( AX, BX, CX, DX) (לפעמים BX יכול לשמש כאוגר מצביע)
4 אוגרי מצביע (SI, DI, BP, SP)
4 אוגרי מקטע (DS, CS, SS, ES)
1 אוגר דגלים
1 אוגר מצביע הוראה IP


לעוד מידע:




פקודות בשפת אסמבלי 86:


MOV  (מעתיק)
XCHG  (החלפה)

יום רביעי, 21 בספטמבר 2016

שפת C - למדנו switch case (יום רביעי)

הסברים בשיעור:



חזרה:

///////////////////////// Exe num 4 #include <stdio.h> void main() { int num; printf("Enter number: "); scanf("%d",&num); if(num%3 == 0) printf("%d\n",num); else  if((num+1)%3 == 0)  printf("%d\n",num+1); else printf("%d\n",num-1); }

שיעור SQL (יום שלישי)



מושגים שצריך לכתוב עליהם:
Client Server
PK
Column
DDL
DML






יום רביעי, 24 באוגוסט 2016

פתיחה!

כל ה"סטודנטים" בברקאי שנה שנייה מוזמנים ליהנות מהבלוג החדש!

בבלוג תוכלו למצוא מידע, תמיכה, קישורים מומלצים ופוסטים
יומיים בנוגע לכל הקורסים הנילמדים השנה!

בהמשך יהיו גם סקרים דיונים המלצות ועוד...

יום רביעי, 17 באוגוסט 2016

התקנת ויזואל סטודיו


הורדת והתקנת Visual Studio



ויז'ואל סטודיו (Visual Studio) היא סביבת פיתוח מובילה מבית חברת מיקרוסופט, המאפשרת למתכנתים לפתח תוכניות מחשב, אתרי אינטרנט ועוד. איתה נכתוב את רוב הקוד שלנו במהלך הלימודים.

מומלץ תמיד להשתמש בגרסה האחרונה של Visual Studio. (שהיא אגב, חינמית). הגרסה האחרונה נכון לשנת 2019 היא: VS2019. אני מאמין שתצליחו למצוא ולהוריד אותה בקלות. לבד.






קישורים נוספים:
מדריך ישן להתקנת Visual Studio 2012



Visual Studio 2012 PRO

[נכתב וצולם על ידי: אליאב בוסקילה]

המדריך הבא הוא מדריך ישן להתקנת Visual Studio 2012 PRO.
(לחצו על התמונות להגדלה)



הורדת והתקנת  Visual Studio 2012

1. קובץ התקנה:  הורידו את הקובץ.
2. אחרי הורדת 2 הקבצים (קובץ התקנה וקובץ טקסט), פיתחו את הקובץ התקנה.



יום רביעי, 13 באפריל 2016

כללים פשוטים לקניית מחשב


מה מתכנת צריך לחפש במחשב





מחשב לא חייב הרבה, אבל יש דברים עיקריים שלא כדאי למתכנת להתפשר עליהם:

- שידלק מהר לאחר מצב שינה/כיבוי.
- שיהיה נוח לשימוש ארוך זמן.
- ששטח האיחסון יהיה גדול מספיק.
- שיצליח להריץ תוכנות עריכת קוד במהירות ובמקביל מבלי להיתקע.
- שיהיה בעל מספר נוח של חיבורים חיצוניים.

[כמובן שלמחשב יכולות להיות עוד הרבה תכונות חיוביות: גודל מסך, סוללה, משקל, רמקולים ועוד...
נסו להתמקד קודם כל בתכונות החשובות ביותר עבורכם, המתכנתים.]






נרד לפרטים הקטנים:
- רזולוציית מסך של 720p או 1080p. לא פחות ולא יותר! (רזולוציית 4K עדיין לא נתמכת בתוכנות רבות).
- זיכרון RAM של 8GB או 16GB.
- מעבד i7, או i5 שמהשנים האחרונות.
-  שטח אחסון של 256GB או יותר.
- עבור מהירות ההדלקה, מומלץ מאוד שלפחות מערכת ההפעלה תרוץ על כונן SSD.
- אין צורך בקורא דיסקים.
- לפחות שלוש כניסות USB.
- חיבור לכבל רשת.
- מערכת הפעלה: Windows 7/Windows 10.
- מומלץ מסך בגודל 15.6 או יותר. בפרט אם זה המחשב העיקרי שלכם.
- מניסיון שלי ושל חבריי אני לא ממליץ לקנות מחשבים של החברה Dell, ואני ממליץ במיוחד על Asus. כמובן יש שיחלקו.







כמה אמור לעלות המחשב?
מחשב פשוט אמור לעלות בין 2500₪-3600₪.
אם רוצים להשקיע אפשר להגיע גם ל-5500₪, אך יותר מזה כבר לא מומלץ להשקיע מהסיבה הפשוטה שכל שנה ערך המחשבים של השנה שלפניה יורד מאוד.
אם חסר לכם מקום אחסון תוכלו לרכוש כונן קשיח חיצוני.





קניה מהנה!