In the next set of quizzes,
I am going to be showing you how
variables are actually used.
All the programs that you are about
to do in part 2, will compile.
Which means that the computer can
understand the code that's been written
for them, and
we'll be able to create an app.
Now, while the programs will
be able to run on the phone,
there's a chance that they might
not do what the intended goal was.
This is something known
as a logical error.
A logical error means that there's
something wrong with the logic which you
used to write the code.
Let's look at a short program and
an example scenario and I'll walk you
through how you solve one of these.
Okay, so here's an example.
Each of these programs will have a goal,
which will be written out here.
The program itself will
be in the green box.
Okay, so the goal of this program is to
calculate something called sleep debt.
Now, how much sleep you need varies
a little bit by age, but on average,
people need about eight
hours of sleep a night.
So what this program is trying to do is
calculate the sleep debt in one week.
The user of the program will go ahead
and estimate how much they sleep on
an average weekday, and how much they
sleep on an average weekend day.
For this example, we're assuming the
user sleeps five hours on a weekday and
nine hours on a weekend.
The code for
this task is here in the green box.
And the first thing that you're trying
to do is read through this code and
decide whether or
not the goal was accomplished.
Then what you're also going to do is
go through each of the statements that
happened in the code and decide what
was actually displayed to the screen.
Assume that these method calls here,
the things that look like display and
have parentheses and
something in between them,
will display content to the screen.
Now, some of these problems will have
multiple pieces of content that they
need to display, so you might see
display1, display2, display3.
Okay, so
if you're still watching this video,
you're probably wondering how
to solve one of these problems.
This isn't the first time you're
interacting with multiple variables,
the values of which might change
a few times during the problem.
So let me do the first one with
you before I set you loose.
Now I'm going to use a technique called
hand simulation and what this technique
involves is trying to figure out
what the computer is doing, but
without just sticking
it to the computer.
For us really it's just an organized way
to keep track of what's going on with
the variables.
Okay, now you're going to go line by
line so let me start this with you.
In the first line here I see
a declaration of a variable, so
I'm going to go ahead and write
the variable name which is weekday.
It's also initialized
to a value which is 5,
so under weekday I'm
going to put the value 5.
This is representing that the variable
weekday currently stores 5.
Okay, so that was the first line,
I'm going to move to the next line.
We have a variable called weekend,
so I'm going to write that out,
and the value of that variable is 9.
Okay, so that's looking good so
I'm going to move on to the next
line which is a declaration and
instantiation of the variable
optimalHours, so I'll do the same thing.
Okay, so
I'm not going to write the value 7*8.
I'm actually going to calculate
that out because that's
what gets stored in optimalHours.
So, with a little bit of mental math,
7 times 8 is 56.
Okay, we have another declaration here.
We make a variable called actualHours,
so I'll write that out.
Well, it's equal to
the value of weekday, and
this is the current value of weekday.
It's not some past value of weekday or
future value of weekday.
Now, we're keeping track of what the
current value of weekday is over here.
And so I could just look here and
see that it's 5.
So I should really think
about this as the number 5.
So it's saying int
actualHours is equal to 5, so
I'm going to go ahead and
write that there.
OK we'll move on to the next line.
So now we're changing actual hours
again to be equal to the current value
of actualHours plus weekend times 2.
So I can look over here, the current
value of actualHours is 5 and
the current value of weekend is 9.
And now I have this
little equation here.
So, I do the multiplication
before the addition, so,
9 times 2 is 18 and then I add 5.
And with a little bit more mental math,
18 plus 5 is 23.
Okay, so this all equals 23.
And what I have to do is cross out
the old value of actual hours, and
write in the new value of actual hours.
Okay, so that's done.
Let's move on to the next line.
We have n solution, so
that's a variable declaration.
And it's being set equal to something,
but
I'm going to write out
the word solution first.
And solution is equal to optimal
hours minus actual hours.
So let's go over here, optimal
hours is 56 and actual hours is 23.
Now it's okay to use your calculator,
I happen to do that earlier and
I know that 56 minus 23 is 33.
Okay, and
then we move on to the next and
final line which says display solution.
So, we can look over here to see what
the value of solution is, which is 33.
So it is going to display the number 33.
So that is how I, or you, or
anyone, could figure out
what this program just did.
But the real question is,
did it do the right thing?
Is there a logical error
somewhere in here or
is somebody who sleeps five hours on
a weekday and nine hours on a weekend
night going to have thirty three hours
of sleep debt at the end of the week.
And I want to know what you think.
All right, quick side note, now you've
created this practice set 2 app, so
I'm just going to show you how you could
also put the code into the practice
set 2 app if you wanted to test it out.
I really recommend
hand simulating first,
because it's going to give your brain
a better grasp about what's going on.
But it's also go to be able to put
the code into Android Studio and
play around with it a bit.
So my suggestion is that you copy and
paste the code for the problem,
which will be provided in the instructor
notes, into the onCreate method.
That's the first method you'll see
in your main activity class here.
Okay, just to be very clear,
here's what your onCreate looks like
before it's modified and then you can
paste over the code, like I've done.
Okay, the other thing you're going to
need to copy and paste over,
which will make this line of code work,
is down here.
It is this code, and I've also
included this in the instructor notes.
The one final thing that you'll
need to do is go to your XML, and
make sure your that your text
view has an Id/display_text_view,
and this should exactly
match what's shown here.
Ok, as long as those two
things match when you run this
code, you'll get the value
printed out to the screen.
It's a little bit hard to see but
it says 33 right there.
Okay, and with all of that,
then I'll try to hand simulate and
some help with getting it up and
running on your phone.
Go ahead and try to figure out is this
program doing what it's supposed to do.
في المجموعة التالية من الاختبارات
سأريكم كيف يتم استخدام
المتحولات في الواقع
وجميع البرامج التي ستقوم بها في
الجزء 2، ستترجم
مما يعني أن الكومبيوتر يمكن أن يفهم
الكود المكتوب
بالنسبة لهم، سنكون
قادرين على انشاء تطبيق
الآن، في حين أن البرامج سوف
يكون قادراً على التنفيذ على الهاتف
هناك إحتمال أنه قد لا
يقوم بالهدف المقصود منه
وهذا ما يعرف باسم
الخطأ المنطقي
يعني الخطأ المنطقي أن هناك شيء
خاطئ في المنطق الذي
استخدمته لكتابة الكود
لنلقي نظرة على البرنامج القصير
وسيناريو المثال وسوف أشرح لكم
كيفية حل أحد هذه الأخطاء
حسناً، إليكم هذا المثال
كل من هذه البرامج سيكون لها هدف
والتي سوف تكون مكتوبة هنا
البرنامج بنفسه سيكون
في الصندوق الأخضر
حسناً، ليكن لدينا الهدف في البرنامج
وهو لحساب ما يسمى "sleep debt"
الآن، ما تحتاج إليه من النوم مختلف
قليلاً عن طريق العمر، ولكن في المتوسط
يحتاج الناس حوالي
ثمان ساعات من النوم ليلاً
لذا فإن ما يحاول البرنامج القيام به هو
حساب "sleep debt" في أسبوع واحد
سيقوم مستخدم البرنامج بالتقدم ويقدر
كم ينام
بشكل وسطي في أيام الأسبوع
وكم ينام بشكل وسطي في يوم نهاية الأسبوع
على سبيل المثال، لنفترض أن المستخدم
ينام خمس ساعات في أيام الأسبوع
وتسع ساعات في
عطلة نهاية الأسبوع
إن الكود هنا
في المربع الأخضر
وأول شيء ستحاول القيام به
هو قراءة هذا الكود
وتقرير ما إذا كان
يحقق هذا الهدف
و ستقوم بهذا من
خلال جميع التعليمات
المكتوبة في الكود
وستقرر ما سيتم عرضه فعلاً على الشاشة
لنفترض أن هذه الطريقة تستدعى هنا
والأشياء التي تبدو مثل العرض
لدينا قوسين
وشيء بينهما، سيتم عرض
المحتوى على الشاشة
الآن، بعض هذه المشاكل لها
أجزاء متعددة من المحتوى الذي
ستحتاج إلى عرضها، لذلك قد
ترى display1، display2، display3
حسناً، لذلك ستشاهد هذا الفيديو
ربما كنت اتساءل كيف
نحل واحدة من هذه المشاكل
هذه ليست المرة الأولى التي تتفاعل بها
مع متحولات متعددة
و القيم التي تغيرت
عدة مرات خلال المشكلة
لذلك دعني أقوم بأول واحد
معك قبل أن أدعك وشأنك
سأستخدم تقنية تسمى المحاكاة
المكتوبة وما هذه التقنية
تتضمن محاولة تحديد ما
يقوم به الكمبيوتر، ولكن
دون مجرد الالتصاق
بجهاز الكمبيوتر
بالنسبة لنا حقاً إنها مجرد وسيلة
منظمة لتتبع ما يحدث مع
المتحولات
حسناً، الآن ستنطلق سطراً
سطراً لذا دعني أن أن أبدأ معك
في السطر الأول هنا أرى
التصريح عن متحول، لذلك
لذا سأمضي قدماً واكتب
اسم المتحول weekday
تمت تهيئته أيضاً
بالقيمة 5
وذلك في ظل أيام
الأسبوع سأضع قيمة 5
هذا يمثل أن أيام الأسبوع
متحول يخزن حاليا 5
حسناً، كان هذا السطر الأول
وسأنتقل إلى السطر التالي
لدينا متحول يسمى weekend
لذلك أنا أريد أن أكتبه
وقيمة هذا المتحول 9
حسناً، هذا يبدو جيداً حتى الآن
سأقوم بالانتقال إلى
السطر التالي وهو التصريح
وتجسيد للمتحول optimalHours
ولذا سأفعل الشيء نفسه
حسناً، لن أكتب قيمة 8*7
سأقوم بحسابها ذهنياً
لأن هذا هو
ما يخزن في optimalHours
لذلك، مع القليل من الرياضيات الذهنية
7 ضرب 8 يساوي 56
حسناً، لدينا تصريح آخر هنا
قمنا بإنشاء متحول يسمى actualHours
لذلك سأكتب ذلك
حسناً، انها مساوية لقيمة
يوم الأسبوع
هذه هي القيمة الحالية لـ weekday
إنها ليست قيم سابقة من weekday أو قيم مستقبلية
لقيمة weekday
سنتتبع القيمة الحالية weekday
هنا
لذلك دعنا نلقي نظرة
ونرى أن قيمتها 5
لذلك أعتقد أنني يجب
أن أفكر أكثر بالرقم 5
هكذا يقول أن معرف الصحيح actualHours
يساوي 5، لذا
سأمضي قدما وأكتب
ذلك هناك
حسناً، سوف ننتقل إلى السطر التالي
نحن نغير actualHours
مجدداً إلى القيمة الحالية
من actualHours بالإضاافة إلى
ضرب 2 قبل weekend
لذلك يمكن أن ننظر أكثر هنا
فإن القيمة الحالية لـ actualHours هي 5
والقيمة الحالية لـ weekend وهي 9
لدي هنا هذه المعادلة الصغيرة
قمت بعملية الضرب
قبل الجمع
9 ضرب2 يساوي 18 ثم أضيف 5
وباستخدام القليل من الرياضيات الذهنية
18 زائد 5 يساوي 23
حسنا، لذلك كل هذا يساوي 23
ويجب شطب القيمة
القديمة من actualHours
الكتابة القيمة الجديدة من actualHours
حسناً، تم ذلك
دعنا ننتقل إلى السطر التالي
لدينا n حل، لذلك هذا هو تعريف المتحول
ويجري تعيين أنها تساوي شيئا، ولكن
سأقوم بكتابة كلمة الحل أولاً
وهذا الحل مساوي
لـ optimalHours ناقص actualHours
لذلك دعونا ننتقل إلى هنا optimalHours هي 56
و actualHours هو 23
الآن استخدم آلتك الحاسبة
يمكن القيام بذلك في وقت سابق
وأنا أعرف أن 56 ناقص 23 يساوي 33
حسناً
ثم ننتقل الى المرحلة التالية
والسطر الأخير الذي يقول عرض الشاشة
لذلك، يمكننا أن ننظر إلى هنا لنرى
ما هي قيمة الحل وهو 33
لذلك يتم الانتقال إلى عرض الرقم 33
لذلك هذا هو كيف لي، أو لك، أو
أي شخص، معرفة
ماذا فعل البرنامج
ولكن السؤال الحقيقي هو
هل نفذ الشيء الصحيح؟
هناك خطأ منطقي
في مكان ما هنا
أو إن شخص ينام خمس ساعات في أيام الأسبوع
وتسع ساعات في ليلة عطلة نهاية الأسبوع
ستكون لديه ثلاثة وثلاثين ساعة
من"sleep debt" في نهاية الأسبوع
وأريد أن أعرف ما هو رأيك
حسناً، ملاحظة جانبية سريعة، الآن قمت
بإنشاء هذا التمرين "set 2 app" لذلك
سأريكم كيف يمكن أيضاً وضع
الكود في التمرين
إذا أردت اختبار "set 2 app"
أوصى حقاً بالمحاكاة
اليدوية أولاً
لأنها ستعطي ذهنك
فهماً أفضل حول ما يجري
لكنه يجب أن يكون قادراً على وضع
الكود في "Android Studio"
وقم باللعب بها قليلاً
لذلك اقتراحي هو أن تقوم بنسخ ولصق
الكود لهذه المسألة
التي ستكون مكتوبة في دليل المعلم
وفي نمط onCreate
هذه هي الطريقة الأول التي ستراها
في صفك MainActivity
حسناً، لكي تكون مفهومة تماماً
وهنا كيف تبدو الطريقة onCreate
قبل تعديلها ومن ثم يمكنك لصق
الكود، كما فعلت أنا
حسناً، والشيء الآخر الذي
ستحتاجه هو النسخ واللصق فوقه
الأمر الذي سيجعل هذا السطر من
الكود يعمل، إنه هنا في الأسفل
هذا هو الكود
ولقد ضمنته أيضاً في دليل المعلم
أمر أخير عليك القيام به
هو الذهاب إلى XML الخاص بك
تأكد من أن TextView الخاص بك
لديه id/display_text_view
ويجب أن يطابق تماماً
ما هو موضح هنا
حسناً، طالما يتطابق هذين الأمرين
عند تنفيذ هذا
الكود، ستتم
إظهار قيمته على الشاشة
من الصعب قليلا أن نراه
لكنه يقول 33 الآن
حسناً، وفي خضم كل ذلك
سأحاول محاكاته يدوياً
والحصول على بعض المساعدة في تشغيله
وتنفيذه على هاتفك
امضي قدماً وحاول معرفة هذا البرنامج
هل يفعل ما يفترض القيام به
A continuación, vamos a ver
cómo se usan en realidad las variables.
Todos los programas que harás
en esta segunda parte van a compilarse,
que quiere decir que el ordenador
entenderá el código que le has escrito
y nosotros podremos crear una app.
Aunque los programas
se puedan ejecutar en el teléfono,
es posible que no hagan
lo que se supone que debían hacer.
A esto se le conoce como errores lógicos.
En un error lógico hay algo mal
con la lógica usada para crear un código.
Veamos ahora un programa corto
y un ejemplo
y veremos cómo solucionar estos errores.
Este es el ejemplo.
Cada uno de los programas tendrá
un objetivo, que aparecerá arriba.
El programa en sí
aparecerá en el recuadro verde.
El objetivo de este programa es calcular
algo que se llama "la deuda de sueño".
La cantidad de sueño que se necesita
depende de la edad,
pero de media, la gente necesita
unas ocho horas de sueño por noche.
Este programa calcula la cantidad
de deuda de sueño en una semana.
El usuario debe estimar cuánto duerme
de media en un día de semana
y cuánto duerme de media
en un día en fin de semana.
Aquí suponemos que el usuario duerme
cinco horas en un día de semana
y nueve horas en un día de fin de semana.
El código de esta tarea
está en el recuadro verde.
Lo primero que tienes que hacer
es leer este código
y decidir si se cumple o no
con el objetivo.
También debes repasar
cada una de las instrucciones del código
y decidir qué es lo que se ve
en realidad en la pantalla.
Supongamos
que este método se enuncia así,
que las partes donde pone display
y que tienen paréntesis y algo en medio
mostrarán el contenido en la pantalla.
Algunos problemas tendrán
varios elementos que se deben ver,
así que por eso verás
display 1, display 2, display 3...
Si sigues viendo el vídeo, te preguntarás
cómo resolver los problemas.
Es la primera vez
que interactúas con muchas variables,
con unos valores que pueden cambiar
a lo largo del problema.
Voy a hacer el primero contigo
para que no te pierdas.
Voy a usar una técnica llamada
"simulación manual",
y lo que hace esta técnica
es averiguar qué hace el ordenador
pero sin ceñirse solo al ordenador.
Para nosotros es una forma
muy organizada de seguir las variables.
Vamos a ir línea por línea,
yo lo haré contigo.
En la primera línea veo
la declaración de una variable,
voy a escribir el nombre
de la variable, que es weekday.
Está iniciada con un valor,
que es de cinco,
así que debajo de weekday
voy a poner el valor cinco.
Esto representa que la variable weekday
tiene un valor de cinco.
Eso era de la primera línea,
vamos con la siguiente.
Tenemos una variable
que se llama weekend, la voy a escribir.
Y el valor de esa variable es nueve.
Por ahora vamos bien,
vamos con la siguiente línea,
que es la declaración
y la creación de una instancia
de la variable optimalHours,
así que voy a hacer lo mismo.
No voy a escribir el valor 7*8,
sino que lo voy a calcular,
porque ese es el valor real
de optimalHours.
Hacemos unos cálculos matemáticos,
y 7x8 es igual a 56.
Aquí tenemos otra declaración,
tenemos una variable
que se llama actualHours,
lo voy a escribir.
Es lo mismo
que el valor de weekday,
es el valor actual de weekday,
no el valor pasado o futuro de weekday.
Y sabemos cuál es el valor actual
de weekday, lo tenemos aquí,
así que podríamos suponer que es cinco.
Yo voy a asumir que es cinco.
Entonces,
int actualHours es igual a cinco,
así que lo voy a escribir también.
Vamos con la siguiente línea.
Vamos a volver a cambiar actualHours
para que sea igual
al valor actual de actualHours
más weekend*2.
Aquí pone que el valor actual
de actualHours es cinco.
Y el valor actual de weekend es nueve.
Y aquí tenemos una ecuación.
Voy a multiplicar antes de sumar,
así que 9x2 es 18
y luego sumo 5.
Y si hacemos cálculos,
18+5 es 23.
Todo esto es igual a 23.
Lo que tengo que hacer es tachar
el valor antiguo de actualHours
y escribir el valor nuevo de actualHours.
Muy bien,
vamos con la siguiente línea.
Tenemos int solution,
que es una variable de declaración,
que es igual a algo,
pero antes escribo la palabra solution.
Y solution es igual
a optimalHours menos actualHours.
Si venimos aquí,
optimalHours es 56,
y actualHours es 23.
No pasa nada si usas calculadora,
yo la he usado antes,
y sé que 56-23 es 33.
Bien, nos vamos a la última línea,
que dice display (solution).
Así que podemos venir aquí
y ver el valor de solution, que es 33,
por lo que mostrará este número, el 33.
Así es como yo, tú o cualquiera
puede averiguar qué hace este programa.
Pero la pregunta es:
¿ha hecho lo que debía hacer?
¿Hay algún error lógico?
¿O alguien que duerme cinco horas al día
entre semana y nueve el fin de semana
tendrá una deuda de sueño
de 33 horas al final de la semana?
Quiero saber qué piensas.
Un apunte rápido:
has creado esta app, PracticeSet2.
Vamos a ver cómo puedes meter
el código en la app de PracticeSet2,
por si quieres probarlo.
Aconsejo que primero hagas
una simulación manual,
para que tu cerebro entienda mejor
qué está pasando.
Pero también está bien meter el código
en Android Studio y jugar un poco con él.
Te sugiero que copies y pegues el código
para solucionar el problema,
lo verás en las notas del profesor,
en el método onCreate,
que es el primer método en MainActivity.
Para que quede muy claro,
así es como vemos onCreate
antes de modificarlo,
y ahora podemos pegar el código,
tal y como he hecho antes.
La otra cosa que tendrás
que copiar y pegar,
que hará que esta línea
de código funcione, está...
aquí abajo.
Es este código.
Esto también lo he puesto
en las notas del profesor.
Una última cosa que tendrás que hacer
es ir a tu XML
y asegurarte
de que en TextView está este ID:
display_text_view.
Y esto debería coincidir exactamente
con lo que aparece aquí.
Si estos dos elementos coinciden
cuando ejecutes el código,
verás el valor en la pantalla.
Es un poco difícil de ver,
pero se ve un 33.
Y con todo esto,
vamos a hacer una simulación manual
y con un poco de ayuda
intentar que funcione en el teléfono.
Ahora intenta averiguar
si el programa hace lo que debería hacer.
Dans l'ensemble de quizz suivant,
je vais montrer comment
les variables sont en fait utilisיes.
Tous les programmes que vous aller
faire dans la Partie 2, vont compiler.
ce qui signifie que l'ordinateur
peut comprendre le code qui a יtי יcrit
et nous serons
en mesure de crיer une app.
Alors que les programmes pourront
ךtre lancיs depuis un tיlיphone,
il y a une chance qu'ils ne fassent pas
ce qu'יtait le but visי.
C'est quelque chose
qu'on appelle erreur logique.
L'erreur logique signifie qu'une chose
est erronיe dans la logique
utilisיe pour יcrire le code.
Regardons un programme court
et un scיnario d'exemple et je vais
vous guider pour rיsoudre l'un eux.
Ok, voici donc un exemple.
Chacun de ces programmes
aura un objectif, qui sera יcrit ici
Le programme en lui-mךme
sera dans la boite verte.
Le but de ce programme est de calculer
une chose appelיe le dיficit de sommeil.
La quantitי de sommeil nיcessaire varie
un peu fonction de l'גge, mais en moyenne
les gens ont besoin d'environ
huit heures de sommeil par nuit.
Le but de ce programme, est de calculer
le dיficit de sommeil en une semaine.
L'utilisateur de ce programme va estimer
son nombre d'heures de sommeil
pour un jour de semaine ordinaire,
et pour un jour de week-end.
Pour cet exemple, disons que l'utilisateur
dort cinq heures un jour de semaine
et neuf heures pendant le week-end.
Le code pour cette tגche
est ici dans la boite verte.
Et la premiטre chose que vous allez
essayer de faire, c'est lire ce code, et
dיcider si oui ou non
l'objectif a יtי accompli.
Puis ce que vous allez faire,
c'est regarder chacun des יnoncיs
qui ont eu lieu dans le code, et dיcider
ce qui s'est vraiment affichי א l'יcran.
Disons qu'on utilise ces mיthodes ici,
ce qui qui ressemble א de l'affichage et
a des parenthטses et
quelque chose entre,
affichera du contenu א l'יcran.
Certains de ces problטmes auront
de multiples יlיments de contenus qu'ils
auront א afficher, vous pourriez donc
voir display1, display2, display3.
Ok, donc si vous regardez
toujours cette vidיo,
vous vous demandez probablement
comment rיsoudre ces problטmes.
Ce n'est pas la premiטre fois que vous
interagissez avec des variables multiples,
dont les valeurs pourraient changer
quelques fois pendant le problטme.
Donc, laissez-moi faire le premier
avec vous avant que vous laisse faire.
Je vais utiliser une technique appelיe
hand simulation, et ce qu'elle fait
c'est essayer de comprendre
ce que l'ordinateur fait,
sans passer uniquement
par l'ordinateur.
Pour nous, c'est une maniטre organisיe
de garder la trace de qu'il se passe
avec les variables.
Vous allez le faire ligne aprטs ligne
alors laissez-moi commencer avec vous.
Dans la premiטre ligne ici je vois
la dיclaration d'une variable, donc
Je vais commencer et יcrire le nom
de la variable qui est weekday.
Elle est יgalement initialisיe
א une valeur qui est 5,
donc sous weekday
je vais mettre la valeur 5.
Cela reprיsente que la variable
weekday enregistre actuellement 5.
Donc c'יtait la premiטre ligne, je passe
maintenant א la deuxiטme ligne.
On a une variable appelיe weekend,
donc je vais יcrire חa,
et la valeur de cette variable est 9.
Ok, donc חa a l'air bon, donc,
je vais passer א la ligne suivante
qui est une dיclaration et
l'initialisation de la variable
optimalHours, je vais donc faire pareil.
Ok, je ne vais pas יcrire la valeur 7*8.
Je vais en fait calculer חa car c'est
ce qui va s'enregistrer
dans optimalHours
Donc avec un peu de calcul mental,
7 fois 8 יgal 56.
Ok, on a une autre dיclaration ici.
On a fait une variable appelיe
actualHours, je vais donc יcrire חa.
Bien, c'est יgal א la valeur
de weekday, et
c'est la valeur actuelle
de weekday.
Ce n'est pas une valeur passיe de weekday
ou une valeur future de weekday
et on garde la trace de ce qu'est
la valeur actuelle de weekday ici.
Et donc je pourrai
juste regarder ici et voir 5.
Je devrai donc rיellement envisager
cela comme le chiffre 5.
Donc חa dit que actualHours
est יgal א 5, donc
Je vais poursuivre et יcrire cela ici.
OK passons א la ligne suivante.
On change א nouveau actualHours
pour יgaler la valeur actuelle
de actualHours
plus le weekend fois 2.
Donc je peux voir ici, la valeur actuelle
de actualHours est 5 et
la valeur actuelle de weekend est 9.
Et maintenant j'ai
cette petite יquation ici.
Donc je fais la multiplication
avant l'addition, donc
9 fois 2 font 18 et ensuite j'ajoute 5.
Et avec encore un peu de calcul mental,
18 plus 5 font 23.
Ok, dont le total fait 23.
Et ce que je dois faire, c'est rayer
l'ancienne valeur d'actualHours, et
יcrire la nouvelle valeur d'actualHours.
Ok, donc c'est fait.
Passons א la ligne suivante.
On a eu une solution,
donc c'est une dיclaration de variable.
Et חa a יtי dיfini comme
יgal א quelque chose, mais
je vais יcrire le mot
solution en premier.
Et la solution est יgale א
optimalHours moins actualHours.
Donc allons-y, optimalHours est א
56 et actualHours א 23.
ְ prיsent vous pouvez
utiliser une calculette.
Je l'ai fait plus tפt et
je sais que 56 moins 23 font 33.
Ok, passons א la suite et
la ligne finale qui affiche la solution.
Donc, nous pouvons regarder ici et
trouver la valeur de solution, qui est 33.
Donc חa va afficher le chiffre 33.
C'est donc ainsi que je, ou vous, ou
tout personne pourrait comprendre
ce que ce programme vient de faire.
Mais la vraie question est,
a-t-il fait la bonne chose?
Y-a-t-il une erreur de logique
quelque part, ou
quelqu'un qui dort cinq heures en semaine
et neuf heures le weekend
aura-t-il trentre-trois heures de dיficit
de sommeil א la fin de la semaine ?
Et je veux savoir ce que vous en pensez.
Petite note א part, vous avez donc crיי
cet ensemble pratique pour app, donc
je vais juste vous montrer comment
vous pourriez mettre le code en pratique
pour l'app si vous vouliez la tester.
Je recommande fortement
la simulation en premier
parce que חa permettra א votre cerveau
de mieux saisir ce qu'il se passe.
Mais il faut aussi que cela permette
de mettre le code dans Android Studio et
de jouer un peu avec.
Donc ma suggestion c'est de faire un
copier coller du code pour le problטme,
fourni dans les notes d'instruction,
dans la mיthode onCreate.
C'est la 1טre mיthode que vous verrez
dans votre classe d'activitי principale.
Ok, juste pour ךtre vraiment clair,
voici ce א quoi votre onCreate ressemble
avant d'ךtre modifiי, et vous pouvez
coller le code, comme je l'ai fait.
Ok, l'autre chose que vous allez devoir
copier et coller
qui fera fonctionner
cette ligne de code, est juste ici.
C'est ce code, et je l'ai aussi ajoutי
dans les notes de l'instructeur.
La derniטre chose que vous aurez א faire
c'est d'aller dans votre XML, et
de vous assurer que votre textview
ait un Id/display_text_view,
et cela devrait exactement correspondre
א ce qui est montrי ici.
Tant que ces deux choses correspondent
lorsque vous lancez ce
code, vous obtiendrez
la valeur affichיe א l'יcran.
C'est un peu difficile א voir
mais il y a יcrit 33 juste lא.
Ok, et avec tout חa, je vais
ensuite essayer de simuler א la main
un peu d'aide et de le faire fonctionner
sur votre tיlיphone.
Essayer de voir si ce programme
fait effectivement ce qu'il doit faire.
Pada kuis berikutnya,
saya akan menunjukkan cara
menggunakan variabel yang sebenarnya.
Semua program yang akan kau
kerjakan di bagian dua, akan digabungkan.
Itu artinya komputer dapat memahami
kode yang telah ditulis pada komputer
dan kita dapat membuat aplikasi.
Sementara program tersebut
dapat dijalankan pada ponsel,
ada kalanya program tidak dapat
berjalan seperti yang dikehendaki.
Inilah yang disebut
dengan kesalahan logis.
Kesalahan logis menunjukkan ada yang salah
dengan logika yang digunakan
dalam menulis kode.
Mari kita periksa satu program pendek
dan skenario contoh
dan saya akan memandumu
dalam menyelesaikan masalah ini.
Oke, ini contohnya.
Setiap program ini memiliki tujuan,
yang akan ditulis di sini.
Program itu sendiri ada
di dalam kotak hijau.
Oke, tujuan program ini adalah untuk
menghitung yang kita sebut utang tidur.
Tidur yang kauperlukan
sedikit banyak dipengaruhi oleh usia,
tapi rata-rata orang dewasa
membutuhkan sekitar 8 jam di malam hari.
Apa yang ingin dicoba dalam program ini
adalah hitung utang tidur dalam 1 minggu.
Pengguna program akan memulai
dan mengira-ngira berapa jam mereka tidur
pada rata-rata hari kerja,
dan berapa jam pada akhir pekan.
Pada contoh ini, anggaplah seorang
pengguna tidur lima jam pada hari kerja
dan sembilan jam pada akhir pekan.
Kode untuk tugas ini ada di kotak hijau.
Hal pertama yang harus kaulakukan
adalah membaca seluruh kode dan
memutuskan apakah tujuan
tercapai atau tidak.
Kau juga perlu memeriksa setiap pernyataan
yang ditemukan pada kode
dan memastikan apa yang sebenarnya
ditampilkan pada layar.
Anggaplah metode yang disampaikan di sini,
sesuatu seperti layar
dan memiliki tanda kurung
dan ada sesuatu di antaranya,
akan menampilkan konten ke layar.
Beberapa masalah ini memiliki beberapa
potong konten yang akan ditampilkan,
jadi kau akan melihat
layar1, layar2, layar3.
Oke,
jika masih menonton video ini,
kau mungkin bertanya-tanya tentang
cara menyelesaikan masalah ini.
Ini bukan kali pertama kau
berinteraksi dengan beberapa variabel,
yang nilainya dapat berubah
beberapa kali selama masalah masih ada.
Saya akan selesaikan masalah pertama
sebelum biarkan kau mencobanya.
Saya akan memakai teknik yang disebut
simulasi tangan dan mengapa teknik ini
dilibatkan adalah untuk coba memahami
apa yang akan diproses komputer,
tanpa terpaku pada komputer.
Bagi kami, ini cara yang terorganisasi
untuk terus mengetahui
apa yang terjadi pada variabel.
Kita akan membahasnya baris demi baris,
saya akan membahasnya denganmu.
Pada baris pertama di sini,
ada pernyataan variabel,
jadi saya akan menulis nama
variabel tersebut, yaitu weekday.
Pernyataan ini juga diinisialisasi
dengan angka, yaitu 5,
sehingga di bawah weekday,
saya akan menulis nilai 5.
Nilai ini menerangkan bahwa variabel
weekday saat ini menyimpan angka lima.
Oke, jadi itu baris pertama,
saya lanjutkan ke baris berikutnya.
Kita punya variabel weekend,
jadi saya juga akan menulisnya,
dan nilai untuk variabelnya
adalah sembilan.
Oke, kelihatannya bagus,
saya lanjutkan ke baris berikutnya
yang berupa pernyataan dan
inisiasi variabel optimalHours,
jadi saya akan menuliskannya juga.
Oke, di sini saya tidak akan
menuliskan nilai 7*8.
Saya sebenarnya akan menghitungnya
itulah yang akan tertulis di optimalHours.
Jadi, dengan secuil ingatan matematika,
7 dikali 8 sama dengan 56.
Oke, kita punya pernyataan lain di sini.
Kita buat variabel actualHours,
jadi saya akan menulisnya juga.
Nilainya sama dengan nilai weekday,
dan menjadi nilai weekday saat ini.
Ini bukan nilai weekday yang lalu
atau nilai weekday yang akan datang.
Sekarang, kita sudah mengetahui
nilai weekday saat ini di sini.
Jadi, bisa saya lihat
di sini ada nilai lima.
Maka, saya benar-benar berpikir
bahwa nilai ini sebagai angka lima.
Dikatakan di sini actualHours
sama dengan lima,
sehingga saya akan melanjutkan
dan menuliskannya di sana.
Oke, sekarang kita pindah
ke baris berikutnya.
Jadi sekarang kita mengubah
actualHours sekali lagi
menjadi sama dengan nilai
actualHours saat ini
ditambah weekend dikali dua.
Bisa saya lihat di sini,
nilai actualHours saat ini adalah lima
dan nilai weekend saat ini sembilan.
Maka kita punya sedikit persamaan di sini.
Jadi, saya menghitung
perkalian sebelum penjumlahan,
maka sembilan dikali dua sama dengan 18,
kemudian ditambah lima.
Dengan sedikit ingatan matematika lagi,
18 ditambah lima sama dengan 23.
Oke, jadi hasil perhitungan
sama dengan 23.
Lalu, saya perlu mencoret
nilai actualHours yang lama,
dan menulis nilai actualHours yang baru.
Oke, selesai.
Baris berikutnya.
Kita punya soluisnya
jadi itulah pernyataan variabel.
Pernyataan ini dibuat sama dengan sesuatu,
tapi saya menulis
kata solusi terlebih dahulu.
Solusi sama dengan
optimalHours dikurangi actualHours.
Lihat ke sini,
optimalHours 56 dan actualHours 23.
Tidak masalah jika menggunakan kalkulator,
saya sudah menghitungnya tadi dan
saya tahu 56 dikurangi 23 sama dengan 33.
Oke, pindah ke baris berikutnya
dan yang terakhir, yaitu layar solusi.
Bisa kita lihat di sini bahwa
nilai solusinya adalah 33.
Maka nilai yang ditunjukkan
nanti adalah angka 33.
Oleh karena itu, saya, atau dirimu,
atau siapa pun,
dapat mengetahui apa yang
baru saja dijalankan program ini.
Tapi pertanyaan sebenarnya adalah,
apakah beroperasi dengan benar?
Adakah kesalahan logis
di suatu tempat di sini,
atau apa seseorang yang tidur 5 jam
pada hari aktif dan 9 jam di akhir pekan,
akan memiliki 33 jam
utang tidur pada akhir minggu.
Saya mau apa yang kaupikirkan.
Oke, catatan pendek. Kau sudah
mengerjakan paket latihan ke aplikasi,
saya hanya ingin menunjukkan
bahwa kau bisa memasukkan kode
ke dalam latihan jika
kau ingin mencobanya.
Saya sarankan simulasi tangan
terlebih dahulu,
karena cara ini membuatmu
lebih mudah untuk mengerti.
Tapi bisa juga memasukkan kode ini
ke Android Studio dan sedikit mainkannya.
Jadi, saran saya adalah salin
dan tempel kode untuk masalah ini,
yang akan disediakan
di catatan instruktur ke metode onCreate.
Itulah metode pertama yang akan
kau lihat di kelas MainActivity hari ini.
Oke, agar lebih jelas, akan seperti inilah
onCreate nanti sebelum kode diubah
kemudian kau dapat menempelkan kodenya
seperti yang sudah saya lakukan.
Oke, kode lain yang perlu
kau salin dan tempel,
yang akan menghasilkan baris kerja kode,
ada di bawah di sini.
Inilah kode itu, dan saya juga telah
menyertakannya di catatan instruktur.
Terakhir yang perlu
kaulakukan adalah membuka XML,
dan pastikan tampilan teks
memuat Id/display_text_view,
dan bagian ini semestinya sama persis
dengan yang terlihat di sini.
Oke, selama kode dan tampilan teks
cocok saat menjalankan kode ini,
kau akan dapat nilai seperti
yang tertulis di layar.
Memang sedikit sulit melihatnya,
tapi ada angka 33 di sana.
Oke, sudah semuanya, sekarang
saya akan mencoba simulasi tangan
dan membantu menjalankannya di ponselmu.
Lanjutkan, coba pahami apakah program ini
dapat beroperasi sesuai harapan.
これからの一連のクイズで
変数の使い方をお見せします
パート 2 で行うプログラムは
全てコンパイルになるでしょう
つまり パソコンが書かれているコードを
理解することができ―
アプリを作成できるということです
プログラムがスマホで
実行出来ようになるまでの間は―
予定された目標を
達成しない事があるかもしれません
それはいわゆる「ロジカルエラー」です
ロジカルエラーとは
コードを作るに使われたロジックに
何か間違いがあることを意味します
短いプログラムとシナリオの例を見て―
そのうちの 1 つを
一緒に解決していきましょう
ここに 1 つの例があります
それぞれのプログラムに目標があり
ここに書きだされています
そのプログラム自体は
この緑の枠内にあります
このプログラムの目標は
「睡眠不足」というものを計算することです
必要となる睡眠量は年齢によって
若干変わりますが
平均では一晩に 8 時間の睡眠が必要です
ですので このプログラムは 1 週間分の
睡眠不足を計算しようというものです
プログラムのユーザーは
平日と週末の平均睡眠時間の―
概算をすることになっています
この場合 ユーザーの睡眠は
平日 5 時間で 週末 9 時間だと―
仮定しています
このタスクのコードは この緑枠の中です
まず最初にすることは
このコードを解読して―
目標が達成できたか否かを
見極めることです
コード内のステートメントを
1 つずつやってみて―
実際にスクリーン上に表示される
状態を見極めます
ここで呼び出されるメソッドには
displayと括弧内の要素があり
スクリーン上にこれを表示すると
予想されます
これらの問題では
複数の表示があり
display1, display2, display3等が
見られるでしょう
このビデオを見続けていると
問題の 1 つくらい 解決方法を
知りたいと思うでしょう
複数の変数の情報交換するのは
これが最初ではありません
変数はこの問題に取り組んでいる間
何度か値が変わるかもしれません
では 取り組んでもらう前に
最初の問題を一緒に解いてみましょう
今回は「ハンドシミュレーション」
という技術を使っていきます
この技術はパソコンからいったん離れて―
パソコンが実行しているモノを
把握する試みです
これは変数がどうなるかを追跡するのに―
本当に効率的な方法なのです
では 一行ずつ行きます
ここからいきますよ
一行目は変数の宣言ですので
変数の名前を書き入れます
「weekday (平日) 」ですね
この初期の値は 5 ですので
「 weekday 」の下に値の「 5 」を入れます
これは「平日の値が現在 5 である」
と言うことを表しています
一行目は終わりました
次の行へ移ります
「weekend (週末) 」という変数が
ありますので 書きだします
その変数の値は 9 です
良さそうですね
次の行に行きます これは変数
「 optimalHours (理想的睡眠時間)」の―
宣言と具現化ですので
同じことをやります
よし
でも値を「 7*8 」とはしません
実際に計算して値を出します
なぜなら それがoptimalHours の中に
保存されるからです
では 暗算で 7 × 8 =56
いいですね
もう 1 つ ここに宣言があります
「 actualHours (実際の睡眠時間)」
という変数を作りますので 書きだします
これは weekday の値と同じです
ちなみに 現在の weekday の値です
過去や未来の weekday の値ではありません
現在の weekday の値を追跡しているのは
こちらにありますね
これを確認すると 5 です
なので これは数字の 5 となるはずです
「 int actualHours = 5 」となるので―
こっちにそう書いていきます
OK 次の行です
再び actualHours を変更します
現在の actualHours の値 +
weekend の値 × 2
こちらを見ると
現在の actualHours の値は 5
現在の weekend の値は
9 となっています
そして ここに小さな方程式があります
掛け算を足し算の前にするので
9 × 2 = 18
そこに 5 を足します
暗算すると 18 + 5 = 23
この答えは 23 ですね
そうしたら actualHours の
古い値を消していく必要があります
そして 新しい値を書きます
よし 終わりました
次の行へ行きます
「 int solution ( 整数の解答)」とあるので
これは変数の宣言ですね
そして これは何かと
等しくなっているのですが
言葉の solution を先に書きます
solution = optimalHours - actualHours
ですので
optimalHours は 56 で
actualHours は 23 です
さあ 電卓を使ってもいいです
簡単ですね 56 - 23 = 33
OK そして 次の行
最後の行は「 display(solution)」
表示(解答)です
solution は 33 ですね
ですから「 33 」と表示されることになります
さて これが
プログラムの実行をすることを
見つける方法です
しかし 正しいことをしたか?
という疑問が実際のところありますね
ロジカルエラーが
このどこかにあるんじゃないか?
「誰かが平日に 5 時間寝て
週末は9時間寝ると
その週の終わりには 33 時間の
睡眠不足になる?」
どう思いますか? 知りたいですね
では やってみましょう
今 この実践セット2 のアプリを作りました
これを試すために
このコードをこの実践セット 2 に
入力する方法もお見せします
まずは ハンドシミュレーションを
することをお勧めします
なぜならどうなるかを
よりよく把握することができるからです
でも このコードを
AndroidStudio に入れて―
試してみることも有益です
お勧めは インストラクターノートにある
問題のあるコードを―
コピー & ペーストして
onCreate メソッドに入れることです
これが MainActivity クラスの
最初にあるメソッドです
見ていてください
ここに変更前の onCreate があります
そこへ この様に コードを貼り付けました
次にコピー & ペーストが必要なのは
このコードが機能するに必要な物で
下の方に行って このコードです
この部分を入れてコピーします
最後に必要なのは XMLに行って―
TextView に「 id/display_text_view 」
があるかを確認します
これが完全にこの部分に
一致しているかを確認してください
この 2 つが一致している限り
このコードを実行すれば―
スクリーン上に値が表示されます
見えにくいですが
こちらに「 33 」とあります
いいですね これで終わりです
ハンドシミュレーションを行い
作り方と実行の仕方も一緒にやりました
では引き続きプログラムの実行事項を
理解していきましょう
다음 퀴즈에서는,
저는 변수가 실제로
어떻게 작용하는지 보여드리고자 합니다.
모든 프로그램은
파트 2에서 사용된 것을 사용합니다.
컴퓨터는 작성된
코드를 이해한다는 것이며
그리고
우리는 앱을 제작할 수 있습니다.
이제, 프로그램은
휴대전화에서 사용할 수 있으며,
아마도 목표를 설정하는데
기회를 잘못 설정할 때가 있습니다.
이는 논리적 오류라고
알려져 있습니다.
논리적 오류는
논리에 오류가 있으며
개발자가 작성한 오류를 살펴봐야 합니다.
짧은 프로그램을 확인하고
예시안을 확인하고
이 문제 중 한가지를 어떻게 해결하는지 알려드리겠습니다.
좋습니다, 여기 예시가 있습니다.
이 프로그램들은
이미 작성된 목표가 있습니다.
프로그램은
녹색 칸에 있습니다.
좋습니다, 이 프로그램의 목표는
수면 빚으로 계산되어집니다.
이제, 나이별로
얼마나 많은 잠을 자는지
사람은 기본적으로 8시간을
수면을 취해야합니다.
이제 프로그램은
수면 빚을 한주에 계산하는 것입니다.
프로그램 사용자는 더 나아가
그들이 얼마나 수면을 취해야하는지
주별로 평균을 예상하고 얼마나
평일에 수면을 취하는지 평균을 구합니다.
이 예시에서, 우리는 사용자들이
평일에는 5시간을 자며
주말에는 9시간을 자는 것을 알 수 있습니다.
이 작업의 코드는
녹색 박스에 있습니다.
그리고 첫번째 당신이 시도해야하는것은
코드를 전체적으로 읽고
목표가 성공할지 안할지
결정하는 것입니다.
그리고 우리가
각 구문에서 할 수 있는 것은
코드를 작용하고 어떤 것이 실제로
화면에 보여지는지 결정하는 것입니다.
이방법을 가정하여
화면에 보이고
괄호를 표시하고
사이에 보이고자 하는
사항을 입력합니다.
이제, 몇가지 문제가
항목에서 여러 부분에서 발생할 것입니다.
이는 보여주는데,
화면 1, 화면 2, 화면 3에 보여질 것입니다.
만약
비디오를 보는데,
당신이 아마도 이 문제를
어떻게 해결해야하는지 궁금해 할지도 모릅니다.
이는 다양한 변수를 다루는데
첫번째가 아닙니다.
위의 값은 몇가지 변수를 이용하여
문제를 해결할 수 있습니다.
첫번째 변수를
당신이 잃기전에 시도해보겠습니다.
이제, 저는 방법 중 하나인
손 시뮬레이터를 사용하겠습니다. 이 방법은
어떤 컴퓨터가 사용되는지
알아내고,
컴퓨터에 연결하는 장치를 이용할
필요가 없습니다.
저희에게는 어떤일이
일어나는지 지속적으로 추적할 수 있게
돕는 변수이죠.
이제, 당신은 한줄씩
같이 살펴볼텐데요.
첫번째 줄에서 저는
변수를 확인할 수 있습니다
저는 앞서나가
변수의 이름을 평일이라고 입력하겠습니다.
이는 또한
값이 5로 설정되며,
평일과 같이
저는 값 5로 입력하겠습니다.
이는 평일이
주 5일이라는 변수를 표현합니다.
좋습니다, 그렇다면 첫줄에서
저는 다음 줄로 이동하겠습니다.
저희는 평일이라는 변수를 확인했으며
이제 적어나가겠습니다,
그리고 변수의 값은 9입니다.
좋습니다, 보기 좋네요 그리고
저는 다음 줄로 넘어가
발견 및
변수의 예시화인
optimalHours, 즉 같은 것을 할 것입니다.
좋습니다, 이제
7*8이라는 값을 적지 않을 것입니다.
저는 실제로 이것을 계산할 것입니다
왜냐하면
이는 optimalHours에 저장되는 사항이기 때문입니다.
그리고 암산으로
7곱하기 8은 56입니다.
좋습니다, 다른 발견사항이 있습니다.
저희는 actualHours라고 불리는 변수를 만듭니다.
적겠습니다.
이제 이 값은
평일의 값과 동등하며
이는 평일의 현재 값입니다.
이는 과거의 평일 값이 아니며
미래의 값이 아닙니다.
이제 우리는 어떤 현재 값이
있는지 확인해보겠습니다.
그리고 어떤 값을 확인하고
이것이 5인지 보겠습니다.
그리고 저는 숫자 5라고
생각하고 있습니다.
그리고 이는
actualHours에서 5이며, 그래서
저는 앞서나가
이곳에 적겠습니다.
다음 칸으로 이동할까요
그리고 이제 우리는 실제 시간을
현재 값과 같게 변경합니다.
actualHours 더하기 주말 곱하기 2.
이제 여기를 보시면, 현재
actualHours의 값은 5 이고
현재 주말의 값은 9입니다.
그리고 지금 저희는
작은 계산이 있습니다.
그래서, 저는 곱셈을 하여
더하기를 시작하는데요,
9 곱하기 2 i는 18 그리고 5를 더합니다.
그리고 암산을 하자면
18 더하기 5는 23입니다.
이 값은 23입니다.
그리고 어떤 값을 지우고
오래된 시간을 지우면
새로운 실제 시간을 적습니다.
좋습니다. 거의 완료되었습니다.
다음 줄로 이동하죠.
우리는 n 해결을 했으며,
변수 확인을 해야합니다.
그리고 이는 무엇과
일치하지만
저는 적어서
해결책을 먼저 적겠습니다.
그리고 해결은 표준 시간 빼기
현재 시간입니다.
그래서 여기서 해보면,
표준 시간은 56 그리고 현재 시간은 23입니다.
이제 계산기를 사용하셔도 됩니다.
이는 이전에도 계산했는데요
저는 56 빼기 23이 33이라는 것을 알고 있습니다.
좋습니다.
다음으로 이동하면,
해결책을 보여주는 마지막 단계입니다.
그래서, 저희는 여기를 보고
어떤 값이 해결책인지 알 수 있습니다. 33입니다.
그래서 33이 표시되어집니다.
그래서 어떻게 저 혹은 당신 혹은
어느 누구나
프로그램 값을 찾을 수 있는 것입니다.
하지만 이 실제 문제들은
제대로 이행되어진 것일까요?
이는 논리적인 문제가
어딘가에 존재하거나
누군가가 평일에 5시간을 자고
주말에 9시간을 자는데
33시간이라는 수면 빚이
한주마다 생기는 것일까요?
그리고 당신이 생각하는 것을 알고자 합니다.
좋습니다, 빠르게
당신은 연습 세트 2 앱을 만들고
어떻게 코드를
연습에 삽입하는지 보여드리겠습니다.
세트 2 앱은 당신이 시험해
보기를 원한다면 진행하세요.
저는 시뮬레이팅을 해보는 것을
강력히 추천하며,
이는 당신의 뇌가
더 많은 활동을 할 수 있게 돕습니다.
하지만 이는 안드로이드 스튜디오에
코드를 입력하고
조금 쉬다 갈 수 있게 해줍니다.
그래서 제 제안은 당신이 복사하고
문제에 코드를 붙여넣기 하면,
이는onCreate 방법에
사용되어지는 것입니다.
당신이 주요 활동에서 볼 수 있는
이것이 저의 첫번째 방법입니다.
좋습니다, 완벽하게 정리하기 위해,
여기 당신의 onCreate 모습이
있습니다. 당신이
코드를 붙여넣기 할 수 있습니다.
좋습니다, 한가지 더, 당신은
복사하고 붙여넣기를,
이 코드 작업에 있어서
아래에 시행합니다.
이 코드에서, 그리고 저는
강의안을 포함하였습니다.
이 최종 목표는 당신이
당신의 XML에 해야하는 사항을 포함하고
당신의 텍스트를
Id/display_text_view로 설정하고,
이는 정확하게
이곳과 일치하여야 합니다.
이 두가지 사항이 일치하면
당신이 이것을 실행할 때,
코드는, 당신이
화면에 보여주고자 하는 값을 가지고 있습니다.
이는 보기 어렵지만
33이라고 적혀있습니다.
좋습니다, 이 모든 값으로
저는 핸드 시뮬레이트와
다른 정보를 시험했으며
당신의 휴대전화로 시험해보았습니다.
이제 나아가서 이 프로그램이
제대로 작동하는지 한번 시도해보세요.
No próximo grupo de testes
vou mostrar para você como
variáveis são usadas.
Todos os programas que você está prestes
a fazer na parte 2 serão compilados.
O que significa que o computador
pode entender o código escrito
para ele, e seremos capazes de
criar um aplicativo.
Ao passo que os programas
poderão rodar no telefone,
há uma chance de que eles não façam
aquilo que pretendíamos.
Isto é algo conhecido como
erro lógico.
Um erro lógico significa que há
algo errado com a lógica que você
usou para escrever o código.
Vejamos um programa curto e
um cenário exemplo e eu vou guiá-lo
na solução de um destes erros.
Aqui está um exemplo.
Cada um destes programas tem um
objetivo, que será escrito aqui.
O programa em si estará
dentro da caixa verde.
O objetivo deste programa é calcular
algo chamado Débito de Sono.
O tempo de sono necessário varia um
pouco com a idade, mas na média
pessoas precisam cerca de 8 horas
de sono por noite.
Portanto o que este programa tenta fazer
é calcular o débito de sono numa semana.
O usuário do programa vai estimar
o quanto ele dorme num dia de semana
normal e o quanto ele dorme num dia
de fim de semana normal.
Para este exemplo, presumimos que o
usuário dorme 5 horas em dias de semana
e 9 horas no fim de semana.
O código para esta tarefa está
na caixa verde.
E a primeira coisa que você vai tentar
fazer é ler o código e
decidir se o objetivo foi
alcançado ou não.
Daí o que você também vai fazer é
passar por cada declaração que
ocorreu no código e decidir o que
foi exibido de fato na tela.
Presuma que estas chamadas de método aqui,
coisas que se parecem com display e
têm parênteses e
algo entre eles, exibirão
conteúdo na tela.
Alguns destes problemas terão muitas
partes de conteúdos que precisam
exibir, portanto você pode ver
display1, display2, display3.
Se você ainda estiver vendo este vídeo,
você está provavelmente imaginando
como resolver algum destes problemas.
Esta não é a primeira vez que você
interage com múltiplas variáveis,
cujos valores podem mudar algumas
vezes durante o problema.
Então deixe-me fazer o primeiro
com você antes de liberá-lo
Agora vou usar uma técnica chamada
simulação manual e o que esta técnica
envolve é tentar descobrir o que
o computador está fazendo, mas
sem ficar preso ao computador.
Para nós é apenas uma maneira organizada
de acompanhar o que se passa com
as variáveis.
Agora você vai linha por linha.
Deixe-me começar com você.
Na primeira linha eu vejo a
declaração de uma variável, assim
vou escrever o nome da variável,
que é weekday [dia de semana].
Ela também é inicializada com
um valor, que é 5,
portanto abaixo de weekday
colocarei o valor 5.
Isto representa que a variável
weekday agora armazena 5.
Esta foi a primeira linha.
Vou para a próxima linha.
Há variável chamada weekend
[fim de semana], então escreverei isso,
e o valor da variável é 9.
Parece bom, portanto
vou para a próxima linha, que
é uma declaração e
instanciação da variável optimalHours
[horas ótimas], então farei o mesmo.
Não escreverei o valor 7*8.
Calcularei isso pois é isso
que fica armazenado em optimalHours
Assim, com um pouco de matemática
mental, 7 vezes 8 é igual a 56.
Certo. Temos outra declaração aqui.
Criamos uma variável chamada actualHours
[horas de fato], portanto escrevemos isso.
Bem, é igual ao valor de weekday, e
este é o valor atual de weekday.
Não é algum valor passado
ou futuro de weekday.
Estamos acompanhando qual o valor
atual de weekday aqui.
Portanto posso apenas olhar aqui
e ver que é 5.
Portanto devo pensar sobre
isso como sendo o número 5.
Ele está dizendo int
actualHours é igual a 5.
Vou escrever isso aqui.
Certo. Vamos para a próxima linha.
Então agora mudamos actualHours
de novo para ser igual ao valor atual de
actualHours mais weekend vezes 2.
Posso olhar aqui. O valor atual de
actualHours é 5 e
o valor atual de weekend é 9.
E agora eu tenho esta pequena
equação aqui.
Eu faço a multiplicação antes
da adição, portanto
9 vezes 2 é 18, e então eu somo 5.
E com um pouco mais de matemática
mental, 18 mais 5 é 23.
Então isso é igual a 23.
E o que tenho que fazer é cortar
o valor antigo de actualHours e
escrever o novo valor de actualHours.
Certo. Está feito.
Vamos para a próxima linha.
Temos int solution, portanto
esta é uma declaração de variável.
E ela está sendo igual a algo, mas
escreverei a palavra
solution [solução] antes.
E solution é igual a optimalHours
menos actualHours.
Vamos para cá. optimalHours é 56,
e actualHours é 23.
Tudo bem usar a calculadora.
Eu fiz isso antes e sei que
56 menos 23 é 33.
Então seguimos para a próxima e
última linha, que diz display (solution).
Podemos olhar aqui para ver qual o
valor de solution, que é 33.
Portanto ele exibirá o número 33.
É assim que eu, ou você, ou
qualquer pessoa pode descobrir o
que este programa acabou de fazer.
Mas a questão real é:
ele fez a coisa certa?
Há um erro lógico em algum lugar aqui ou
alguém que dorme 5h por noite em dias
de semana e 9h nos finais de semana
terá um débito de sono de 33h ao
final de uma semana?
Quero saber o que você acha.
Só um aparte, agora que você criou
este aplicativo do Conjunto de Prática 2,
eu só vou mostrar como você poderia
também colocar o código dentro do
Conjunto de Prática 2 se
você quisesse testá-lo.
Recomendo muito testar
manualmente primeiro
pois isso dará ao seu cérebro
uma noção melhor do que está acontecendo.
Mas também é bom poder por o
código no Android Studio e
brincar um pouco com ele.
Sugiro que você copie e cole o
código do problema,
que será fornecido nas notas do
instrutor, dentro do método onCreate.
Este é o primeiro método que você verá
aqui no seu MainActivity class.
Só para ficar bem claro, é assim
que seu onCreate se parece
antes de ser modificado, e então você
pode colar o código, como eu fiz.
A outra coisa que você
precisará copiar e colar,
que fará esta linha de código
funcionar, está aqui embaixo.
É este código, e eu também o
incluí nas notas do instrutor.
A última coisa que você precisará
fazer é ir ao seu XML, e
certificar-se de que seu TextView tenha
um id display_text_view,
que deve ser exatamente como
o que é mostrado aqui.
Contanto que estas duas coisas
estejam certas quando você rodar este
código, você terá o valor
exibido na tela.
É um pouco difícil de ver, mas
diz 33 aqui.
E com tudo isso, o conhecimento
que teve ao simular manualmente e
alguma ajuda para fazer
funcionar no seu telefone,
siga em frente e tente descobrir: este
programa está fazendo o que deveria?
В следующем наборе тестов, —
Я покажу тебе, как в действительности
используются переменные.
Все программы, которые ты будешь писать
в части 2, будут компилироваться.
Это означает, что компьютер может
понять написанный для него код, —
а мы можем создать приложение.
Ок, хотя программы и могут
запускаться на телефоне, —
есть риск, что они, возможно, делают не
то, что требуется по условию задачи.
В таком случае говорят, что
в программе есть логическая ошибка.
Логическая ошибка означает, что в логике,
в соответствии с которой ты писал код, —
есть ошибка.
Давай посмотрим на небольшую программу —
и на пример сценария и я покажу тебе,
как нужно решить одну из таких проблем.
Вот этот пример.
У каждой программы будет своя цель,
которая записывается здесь.
Сама программа находится
в зеленом блоке.
Итак, цель этой программы – посчитать
что-то, что называется «дефицит сна».
Сколько нужно времени для сна, немного
зависит от возраста, но в среднем, —
людям надо около восьми
часов ночного сна.
Что эта программа пытается сделать –
это посчитать дефицит сна за одну неделю.
Пользователи программы могут указать,
сколько они спят в среднем —
в будние дни и сколько – на выходных.
Для примера, мы предположим, что пользо-
ватель спит по пять часов в будний день —
и по девять часов - на выходных.
Код для этого задания
находится здесь, в зеленом блоке.
Первое, что тебе надо сделать –
прочитать код и —
понять, достигает ли он цели.
Затем надо проанализировать
каждое выражение, —
которое есть в коде, и понять, что на
самом деле будет выведено на экран.
Допустим, этот метод вызывается здесь,
такие выражения со словом display, с —
круглыми скобками и —
чем-либо в скобках,
выводят содержимое скобок на экран.
В некоторых задачах будет по
нескольку кусочков контента для —
вывода на экран, тогда ты, возможно,
увидишь display1, display2, display3.
Ок, если ты ещё смотришь это видео, —
ты, наверное, думаешь, как же
решить одну из этих задач.
Ты уже не первый раз имеешь
дело с несколькими переменными, —
значения которых могут меняться
по несколько раз в тексте программы.
Давай я сделаю первую задачу с тобой,
а уже потом ты будешь делать их сам.
Я буду использовать прием, называемый
ручным моделированием, и суть его —
состоит в том, чтобы попытаться понять,
что делает компьютер, но —
не в том смысле, чтобы неотрывно
следить за компьютером.
42
00:02:03,090 --> 00:02:06,230
Нам нужно просто проследить за тем,
что происходит с —
переменными.
Ок, теперь надо пройти строку за строкой,
давай я начну вместе с тобой.
В первой строке здесь, я вижу,
объявляется переменная, поэтому —
я запишу имя переменной, weekday.
Она также инициализируется
значением 5, —
поэтому под weekday я записываю 5.
Это показывает, что сейчас в переменной
weekday лежит 5.
Ок, это была первая строка,
переходим к следующей.
Тут у нас переменная weekend,
я записываю её, —
и значение этой переменной – 9.
Выглядит неплохо, —
я перехожу к следующей строке,
которая является объявлением и —
инстанциированием переменной
optimalHours, здесь я сделаю то же самое.
Но я не буду записывать значение 7*8.
Я вычислю результат этого выражения,
потому что именно результат —
записывается в переменную optimalHours.
Вычислим немного в уме,
7 умножить на 8 – будет 56.
Здесь у нас ещё одно объявление.
Мы создаем переменную actualHours,
записываю её тоже.
Так, она равна
значению weekday, —
текущему значению переменной weekday.
Это не какое-то прошлое значение weekday
или будущее.
А следим мы за текущим значением
weekday здесь.
И я могу просто посмотреть и
увидеть, что это - 5.
Поэтому я могу просто считать,
что это число 5.
И, фактически, тут сказано int
actualHours равно 5, поэтому —
я записываю это значение здесь.
Переходим к следующей строке.
Мы присваиваем actualHours новое
значение, равное текущему значению —
actualHours плюс weekend умноженное на 2.
Текущее значение actualHours я могу
посмотреть здесь – это 5, а —
текущее значение weekend – 9.
Получаем небольшое выражение.
Умножение я делаю перед сложением, —
9 умножить на 2 – это 18, и плюс 5.
И ещё немного расчетов в уме,
18 плюс 5 – это 23.
В итоге получаем 23.
Что мне сейчас нужно сделать – это
зачеркнуть старое значение actualHours и
записать её новое значение.
Ок, сделано.
Переходим к следующей строке.
Мы видим int solution, это
объявление переменной.
И ей присваивается какое-то значение,
но —
сначала я записываю слово solution.
А равно оно разнице optimalHours
и actualHours.
Идем сюда, optimalHours равно 56,
а actualHours – 23, —
Можешь воспользоваться калькулятором, —
А я посчитаю быстрее тебя,
я знаю, что 56 минус 23 – это 33.
Ок, идем дальше и —
в последней строке видим
display(solution).
Смотрим сюда и видим, что
значение solution – 33.
Значит, на экран будет выведено число 33.
Значит, вот так я, или ты, или —
кто угодно может понять,
что эта программа только что сделала.
Но вопрос в другом, сделала
ли она все так, как надо?
Нет ли логической ошибки
где-нибудь здесь или —
может ли быть такое, что если человек спит
по пять часов в будние дни и по девять —
часов по выходным, то он получит тридцать
три часа дефицита сна к концу недели.
И я хочу знать, что ты думаешь об этом.
Ок, небольшое отступление, сейчас ты
добавил это упражнение в приложение и —
я хочу показать тебе, как ещё ты мог бы
добавить код из упражнения —
в приложение, если бы захотел
протестировать его.
Я настоятельно рекомендую сначала
выполнять ручное моделирование, —
потому что оно дает тебе лучшее
понимание того, что происходит.
Хорошо также уметь открыть
код в Андроид Студия и —
позапускать его немного.
Поэтому я предлагаю копировать
код из задания, —
который дается в заметках инструктора,
и вставлять в метод onCreate.
Это первый метод, который ты будешь
видеть в классе MainActivity здесь.
Давай ещё раз для ясности,
вот так твой метод onCreate выглядит —
до изменений, и в него ты можешь вставить
код, как это сделала я.
Ок, что ещё тебе надо будет
скопировать и вставить,
без чего эта строка кода не будет
работать – находится здесь.
Вот этот код, и я также добавила
его в заметки инструктора.
И последнее, что тебе нужно будет
сделать – это перейти в файл XML и —
убедиться, что в твоей текстовой
вьюшке есть Id/display_text_view, —
и это должно в точности совпадать
с тем, что показано здесь.
Ок, если эти два места совпадают,
когда ты запускаешь этот —
код, ты получишь значение,
напечатанное на экране.
Немного трудно увидеть, но
сейчас это 33.
Ок, прослушав материал этого урока: о
том,
как делать ручное моделирование и —
как доводить программу до
рабочего состояния на телефоне.
Можешь теперь выяснить, делает
ли
эта программа то, что требуется.
Aşağıdaki birkaç sorguda,
sizlere değişkenlerin aslında nasıl
kullandığını göstermiş olacağım.
Yapmanız gereken tüm programlar ikinci
bölümde derlenecektir.
Bilgisayarın kendisi için yazılan kodu
anlayabildiği anlamına
gelmektedir ve bir uygulama oluşturacağız.
Şimdi, programlar telefonda çalışırken,
istenilen amacı yapmama olasılığı vardır.
Bu bir mantık hatası olarak bilinmektedir.
Mantık hatası, kodu yazmak için
kullandığınızda mantıkla ilgili
bir sorun var demektedir.
Haydı, kısa programa ve senaryoya
bakalım ve bunları
nasıl çözeceğinizin üzerinden geçeceğim.
Tamam, işte size bir örnek.
Bu programların herbiri burada yazıya
dökülecek bir amaca sahip olacaktır.
Programın kendisi yeşil kutuda olacaktır.
Tamam, bu programın amacı uyku hesabı
denilen şeyi hesaplamak.
Şimdi, yaşa göre ne kadar uykuya ihtiyaç
duymanız değişmektedir, ancak ortalama
bir gece için insanlar sekiz saatlik bir
uykuya gereksinim duyarlar.
Şimdi bu programın yapmak istediği şey, bir
haftalık uykuyu hesaplamak.
Programı kullanan kişi devam edecek
ve ortalama bir hafta içinde
ve hafta sonunda ne kadar uyuduğunu
hesaplayacaktır.
Bu örnekte, kullanıcının hafta içinde beş
saat ve hafta sonunda
dokuz saat uyuduğunu varsayacağız.
Bu görevin kodu burada yeşil kutuda.
Ve yapmaya çalıştığınız ilk şey bu kodu
iyice okumak ve hedefin başarılıp
başarılamadığına karar vermektir.
Daha sonra, kodda oluşan her ifadeye
göz atmaya çalışacaksınız ve
ekranda aslında neyin gösterildiğine karar
vereceksiniz.
Farzedin bu metot burada çağrılıyor,
bunlar ekrana benziyor ve
paranteze sahipler ve
bunların arasında içeriği ekranda
gösterecekler.
Şimdi bu problemlerin bazıları göstermeleri
gereken çoklu içerik parçalarına
sahip olacaklar, siz display1, display2,
display3 olarak görebilirsiniz.
Eğer hala bu videoyu izliyorsanız,
muhtemelen bu problemlerin bir tanesinin
nasıl çözüleceğini merak ediyorsunuzdur.
İlk defa çoklu değişkenlerle etkileşim
içesinde değilsiniz, problem
esnasında değerler birkaç kez
değişebilir.
Sizi serbest bırakmadan önce, izin
verin bir tanesini birlikte yapalım.
Şimdi el simülasyonu denilen bir tekniği
kullanacağım ve bu teknik
bilgisayarın ne yaptığını hesaplamaya
çalışacak ancak
tabi ki bunu bilgisayara koymadan.
Bizim için gerçekten değişkenlerle ilgili
neler olup bittiğine takip
etmemiz gereken bir organize yöntemdir.
Tamam, şimdi satır satır gideceksiniz,
izin verin birlikte başlayalım.
İlk satırda burada değişkenin tanımını
görüyorum öyleyse
hafta içi olan değişkenin ismiyle
başlayacağım ve yazacağım.
Aynı zamanda 5 numaralı değer
ile başlatıldı,
öyleyse hafta içi günlerinin altına
5 değerini gireceğim.
Bu halihazır 5'de kaydedilen hafta içi
değişkenliğini temsil etmektedir.
Tamam, bu ilk satır içindi, ikinci
satıra geçeceğim.
Hafta sonu denilen değişkenimiz var,
şimdi bunu yazacağım
ve bu değişkenin değeri 9.
Tamam, bu iyi görünüyor
optimalHours değişkenin tanımı ve
örneklemesi olan
bir sonraki satıra geçiyorum ve
aynı şeyi yapacağım.
Tamam, değeri
7*8 olarak yazacağım.
Bunu aslında dışarıda hesaplayacağım,
çünkü bu
optimalHours'da kaydedildi.
Öyleyse, ufak bir mental matematikle
7 kere 8 eşittir 56.
Tamam, şimdi farklı bir tanımımız var.
actualHours denilen bir değişken
yapıyoruz, şimdi bunu yazacağım.
Bu hafta içi değerlerine eşit
ve hafta içi
günlerinin mevcut değeridir.
Bu geçmiş bazı hafta içi değer
veya gelecek hafta içi değer değildir.
Şimdi, mevcut hafta içi değerin burada
bitmiş olduğuna dikkat ediyoruz.
Ve sadece buraya bakıyorum ve
5 olduğunu görüyorum.
Öyleyse, bunu gerçekten 5 numara
olarak düşünmem gerekiyor.
Öyleyse actualHours sayı 5'dir ve
başlayacağım ve onu buraya yazacağım.
Tamam, bir sonraki satıra geçelim.
O zaman actual hours'u tekrar mevcut
actualHours değere artı hafta sonunu
2'ye eşitlemek için değiştiriyoruz.
O zaman bu yana bakabilirim, mevcut
actualHours değeri 5'dir ve mevcut
hafta sonu değeri 9'dur.
Ve şu an bu denkleme sahibim.
O zaman eklemeden önce bu çarpma
işlemini yapıyorum,
9 kere 2 eşittir 18 ve 5 ekliyorum.
Ve biraz daha mental matematikle
18 artı 5 eşittir 23.
Tamam, bunların hepsi eşittir 23.
Ve yapmam gereken şey, eski actual hours
veriyi listeden kaldırmak ve
yeni actual hours değerini yazmaktır.
Tamam, işte bitti.
Haydi, bir sonraki satıra geçelim.
Çözümümüz var, bu bir değişken tanımıdır.
Bu birşeye eşitleniyor ancak
öncelikle çözüm kelimesini yazacağım.
Ve çözüm eşittir optimal hours eksi
actual hours.
Haydi birlikte inceleyelim, optimal
hous 56 ve actual hours 23.
Şimdi, hesap makinanızı kullanabilirsiniz,
Bunu daha önce yapabilirdim ve
biliyorum 56 eksi 23 eşittir 33.
Tamam, şimdi ekran çözümü
(display solution)
denilen son satıra geçiyoruz.
Öyleyse çözüm değeri 33 olan şeyi
görmek için buraya göz atabiliriz
O zaman 33 numaralı sayıyı gösterecek.
İşte bu programın yaptığı da,
benim veya
sizin ya da başkasının yaptığı gibi.
Ancak önemli olan, doğru şeyi yaptı mı?
Burada manktıksal bir hata var mı veya
hafta içi birisi 5 saat ve hafta sonu
9 saat mi uyuyor, haftanın
sonunda uyku borcu
otuz üç saat olacak.
Ne düşündüğünüzü bilmek istiyorum.
Pekala hızlı bir ilave not, siz bu 2 app
uygulama metini oluşturdunuz.
Eğer test etmek isteseydiniz, 2 app
uygulama ayarı içerisine
kodu nasıl koyabileceğınizi sizlere
göstereceğim.
Gerçekten ilk önce el simülasyonunu
tavsiye ediyorum,
çünkü neler olduğuyla ilgili beyninize
bu daha iyi bir kavram sağlamaktadır.
Ancak aynı zamanda kodu Android
Studio ve play'in biraz
içerisine koyabilmektir.
O zaman size önerim onCreate metodu
içerisinde eğitici notlarda
sağlanan problemin kodunu
kopyalayı yapıştırmaktır.
Bu, buradaki esas aktivite sınıfınızda
göreceğiniz ilk metot.
Tamam, açık olmak gerekirse değiştirilmeden
önce işte sizin onCreate'nunuz
buna benziyor ve sonra benim yaptığım
gibi kodun üzerine yapıştırabilirsiniz.
Tamam, diğer bir şey aşağıda bu
kod çalışması satırı yapılacak yere
kopyalayıp yapıştırmanız gerekecek.
İşte o, bu kod ve aynı zamanda
ben bunu eğitim notlarına dahil ettim.
Son olarak XML'inize gitmeniz ve metin
görünümünüzün Id/display_text_view
olarak göründüğünü kontrol etmeniz
gerekecek ve
bunun burada gösterilenle tam
olarak eşleşmesi gerek.
Pekala, bu kodu çalıştırdığıızda bu iki
şey eşleştiği müddetçe ekranda
bilgisayar çıktısı değeri alacaksınız.
Bunu görmek biraz zor ancak
orada 33 olduğu söyleniyor.
Tamam ve bunların hepsiyle biraz
yardım alıp telefonunuzda
çalıştırarak el simülasyonu yapmaya
çalışacağım.
Devam edin ve bu programın yapmanız
gerekeni yapıp yapmadığını düşünün.
Trong loạt bài kiểm tra tiếp theo,
Tôi sẽ chỉ cho các bạn cách
các biến được sử dụng.
Tất cả các chương trình mà bạn sẽ
làm trong phần 2, sẽ biên dịch.
Điều đó có nghĩa là máy tính có thể
hiểu đoạn mã được viết ra
cho chúng, và chúng ta
sẽ có thể tạo ra một ứng dụng.
Bây giờ, khi các chương trình
có thể chạy trên điện thoại,
có khả năng rằng chúng có thể
không thực hiện được mục tiêu dự định.
Điều này được gọi là lỗi logic.
Lỗi logic nghĩa là có
cái gì đó sai logic mà bạn
thường viết mã.
Hãy xem một chương trình ngắn và
kịch bản ví dụ và tôi sẽ hướng dẫn bạn
cách giải quyết một trong những lỗi này.
Đây là ví dụ.
Mỗi chương trình này sẽ có một mục tiêu,
mà sẽ được viết ra ở đây.
Bản thân chương trình sẽ
được đóng khung màu xanh.
Được rồi, mục tiêu của chương trình này là
tính toán cái gọi là tình trạng thiếu ngủ.
Bạn cần ngủ bao nhiêu thay đổi chút ít
tùy theo độ tuổi, nhưng trung bình,
con người cần ngủ khoảng tám
tiếng mỗi đêm.
Cái mà chương trình này cố gắng làm là
tính toán sự thiếu ngủ trong một tuần.
Người dùng của chương trình sẽ tiến tới
và ước tính họ ngủ trung bình bao nhiêu
vào ngày thường trong tuần, và ngủ
trung bình bao nhiêu vào ngày cuối tuần.
Ở ví dụ này, chúng ta giả sử
người dùng ngủ năm giờ vào ngày thường
và chín giờ vào ngày cuối tuần.
Đoạn mã cho nhiệm vụ này là ở đây
trong khung màu xanh lá cây.
Điều đầu tiên mà bạn sẽ thử
làm là đọc qua đoạn mã này và
quyết định xem mục tiêu
đã được hoàn thành hay chưa.
Sau đó, bạn cũng sẽ
đi qua từng dòng lệnh
diễn ra trong đoạn mã và quyết định
cái gì thực sự hiển thị trên màn hình.
Giả sử rằng phương thức này gọi ra đây
những thứ trông giống như hiển thị và
có dấu ngoặc đơn và
thứ gì đó ở giữa chúng,
sẽ hiển thị nội dung lên màn hình.
Bây giờ, một vài trong số vấn đề này
sẽ có nhiều phần nội dung mà chúng
cần hiển thị, nên bạn có thể thấy
display1, display2, display3.
Được rồi,
nếu bạn vẫn đang theo dõi video này,
có lẽ bạn đang tự hỏi làm thế nào
để giải quyết một trong các vấn đề này.
Đây không phải là lần đầu tiên bạn
tương tác với nhiều biến,
các giá trị có thể thay đổi
một vài lần trong vấn đề.
Để tôi thực hiện cái đầu tiên cùng
bạn trước khi tôi để bạn thoải mái.
Bây giờ tôi sẽ sử dụng kỹ thuật gọi là
mô phỏng tay và kỹ thuật này
liên quan đến việc cố gắng tìm hiểu
máy tính đang làm gì,
mà không gắn
nó với máy tính.
Với chúng ta, nó là một cách có tổ chức
để theo dõi những gì đang xảy ra với
các biến.
Được rồi, giờ bạn sẽ đi từng dòng một
để tôi bắt đầu dòng này với bạn.
Trong dòng đầu tiên ở đây tôi thấy
khai báo của một biến, vì vậy
Tôi sẽ tiếp tục và viết tên biến
là ngày trong tuần.
Nó cũng được khởi tạo
đến một giá trị là 5,
vậy ở ngày trong tuần, tôi
sẽ đặt giá trị 5.
Nó thể hiện rằng biến
ngày trong tuần hiện lưu trữ 5.
Được rồi, đó là dòng đầu tiên,
Tôi sẽ di chuyển đến dòng kế tiếp.
Ta có một biến gọi là ngày cuối tuần,
vì vậy tôi sẽ viết ra,
và giá trị của biến đó là 9.
Nó trông ổn rồi, nên
tôi sẽ chuyển sang dòng tiếp theo
là một khai báo và
thuyết minh của biến
optimalHours, nên tôi sẽ làm tương tự.
Được rồi,
Tôi sẽ không viết các giá trị 7*8.
Thực ra, tôi sẽ tính toán nó ra,
bởi vì nó là
cái được lưu trữ trong optimalHours.
Bằng cách tính nhẩm,
7 lần 8 là 56.
Rồi, chúng ta có một khai báo khác ở đây.
Ta tạo ra một biến gọi là actualHours,
vậy tôi sẽ viết nó ra.
Nó bằng giá trị
của ngày trong tuần, và
là giá trị hiện tại của ngày trong tuần.
Đó không phải giá trị quá khứ hay
giá trị tương lai của ngày trong tuần.
Giờ ta đang theo dõi giá trị hiện tại
của ngày trong tuần kết thúc ở đây là gì.
Vì vậy, tôi có thể tìm ở đây và
thấy rằng nó là 5.
Tôi thực sự nên nghĩ
nó là con số 5.
Nó nói rằng int
actualHours bằng 5, nên
Tôi sẽ tiếp tục và
viết nó ở đó.
Chúng ta sẽ chuyển đến dòng kế tiếp.
Bây giờ chúng ta lại thay đổi giờ thực tế
để bằng với giá trị hiện tại
của actualHours cộng cuối tuần nhân 2.
Tôi có thể xem đến đây, giá trị
hiện tại của actualHours là 5 và
giá trị hiện tại của cuối tuần là 9.
Bây giờ tôi có phương trình
nhỏ này ở đây.
Tôi làm phép nhân trước
phép cộng sau,
9 lần 2 là 18 và sau đó cộng thêm 5.
Và tính nhẩm một chút,
18 cộng 5 là 23.
Nó bằng 23.
Và tôi cần phải gạch đi giá trị cũ
của số giờ thực tế, và
điền vào giá trị mới của giờ thực tế.
Xong rồi.
Tiếp tục chuyển đến dòng kế tiếp.
Chúng ta có n giải pháp, vậy
đó là một khai báo biến.
Nó được thiết lập bằng một cái gì đó,
nhưng trước hết, tôi sẽ viết ra
các giải pháp từ.
Và giải pháp bằng số giờ tối ưu
trừ đi giờ thực tế.
Hãy chuyển qua đây, số giờ tối ưu
là 56 và giờ thực tế là 23.
Giờ bạn có thể sử dụng máy tính,
Tôi đã làm việc đó trước rồi và
Tôi biết 56 trừ 23 bằng 33.
Được rồi,
hãy đi tiếp đến dòng tiếp theo và
dòng cuối cho biết giải pháp hiển thị.
Chúng ta có thể nhìn qua đây để xem
giá trị của giải pháp là gì, đó là 33.
Vậy nó sẽ hiển thị số 33.
Đó là cách mà tôi, hoặc bạn, hoặc
bất cứ ai, có thể tìm ra
chương trình này vừa thực hiện điều gì.
Nhưng câu hỏi thực sự là,
nó đã làm điều đúng?
Có một lỗi logic ở đâu đó
ngay đây hoặc
liệu ai đó ngủ 5 giờ đêm ngày trong tuần
và chín giờ vào đêm ngày cuối tuần
sẽ có ba mươi ba giờ
thiếu ngủ khi hết tuần.
Và tôi muốn biết bạn nghĩ gì.
Như một phụ chú nhanh, giờ bạn đã
tạo ra bộ 2 ứng dụng thực hành này, nên
Tôi chỉ sẽ cho bạn thấy làm thế nào bạn
có thể đưa đoạn mã này vào bộ
hai ứng dụng thực hành nếu bạn muốn thử.
Tôi thực sự khuyên nên
mô phỏng tay trước,
bởi vì nó sẽ cho phép não của bạn
nắm bắt tốt hơn về những gì đang xảy ra.
Nhưng nó cũng có thể đưa
mã vào Android Studio và
thử nó một chút.
Gợi ý của tôi là bạn sao chép và dán
đoạn mã về vấn đề,
vốn sẽ được cung cấp trong ghi chép
hướng dẫn, vào phương thức onCreate.
Đó là phương thức đầu tiên bạn thấy
ở lớp hoạt động chính của bạn ở đây.
Để rõ hơn,
onCreate của bạn trông sẽ thế này
trước khi nó được sửa đổi và sau đó bạn
có thể dán lên đoạn mã, như tôi đã làm.
Thứ khác mà bạn sẽ
cần phải sao chép và dán,
thứ sẽ làm dòng mã này hoạt động,
là ở dưới đây.
Nó là mã này, và tôi cũng đã
đưa nó vào trong ghi chép hướng dẫn.
Một thứ cuối cùng mà bạn cần làm
là đi đến XML của mình, và
đảm bảo rằng dạng xem văn bản
của mình có Id/display_text_view,
và nó cần khớp chính xác
với những gì đang thể hiện ở đây.
Miễn là hai thứ đó khớp nhau
khi bạn chạy
đoạn mã này, bạn sẽ thấy giá trị
được in ra trên màn hình.
Nó khá khó nhìn nhưng
nó cho biết 33 ở ngay đó.
Và với tất cả điều đó,
tôi sẽ thử mô phỏng tay và
một số có tác dụng và
chạy trên điện thoại của bạn.
Mạnh dạn và thử tìm hiểu xem chương trình
này có đang hoạt động như mong muốn.
在接下来的一组测验中
我要给你展示变量是如何使用的
你在第二部分做的所有程序都将会编译
这意味着计算机能够理解写下的代码
我们能够创建一个应用
当程序能在手机上运行时
它可能不会按照预期目标运行
这是一个逻辑错误
逻辑错误意味着有你编写代码时的
的逻辑有一些错误
我们来看这个小程序
和一个示例场景 我将引导你如何去解决它们
好 这里是一个例子
每个程序都有一个目标 将它们写在这
程序本身在这个绿色的框里
所以 这个程序的目标是计算所谓的睡眠欠债
你需要的睡眠时间在不同的年龄会不同 但是一般情况下
人们每晚大约需要8小时的睡眠
这个程序试图计算一周的睡眠欠债
程序用户将继续估计他们平均一周睡多长时间
以及平均每天睡多长时间
对于这个例子 我们假设用户平日里睡5个小时
在周末睡9个小时
在这个绿色的框里是这个任务的代码
你要做的第一件事是阅读这个代码
并决定目标是否已经实现
然后 你要做的是浏览代码里的每个语句
决定在屏幕上显示什么
假设这些方法在这里调用 看起来像 display
括号
和它们之间的代码 将显示在屏幕上
现在 其中的一些问题将会有他们想要展示的多个内容块
所以你可能看到 display1 display2 display3
如果你仍然在看这个视频
你可能想知道如何解决这些问题
这不是第一次处理多个变量
它的值可能在问题里多次改变
所以在你毫无头绪之前 我来展示第一个
现在我要使用一个叫做手工模拟的技术
这种技术涉及的是试图理清计算机正在做的
不需要非在计算机上运行
对于我们来说 它只是一个组织方式来用一个变量
跟踪我们正在做的事
现在 逐行阅读代码 我们一起开始
第一行 我看到了一个变量的声明
所以 继续并写下变量名 weekday
初始化为5
所以在 weekday 下边写下值5
这代表着变量 weekday 当前储存为5
好了 这是第一行 我移动到下一行
有一个名为 weekend 的变量写下它
变量值为9
好了 看起来很好
移动到下一行变量 optimalHours 的声明和初始化
所以我会做同样的事情
我不打算写下值7*8
实际上 我会计算出来
因为那是储存在 optimalHours 里的
用心算 为56
这里 我们有了另一个声明
我们有了一个叫 actualHours 的变量 所以写出来
它等于 weekday 的值
这是 weekday 的当前值
它不是 weekday 的过去值或将来值
现在 我们跟踪 weekday 的当前值到这里
我只能看这里 它的值为5
我真的应该想想这个 5
继续 在这里写下5
移动到下一行
所以现在再次改变 actualHours 的值 让它等于
当前的 actualHours 的值加 2倍的 weekend 的值
看这里 当前的 actualHours 的值为5
当前的 weekend 的值为9
现在这有一个等式
做加法之前先做乘法
9*2=18 然后再加5
18加5是23
所以 现在 actualHours 的值为23
我必须要做的是划掉 actualHours 之前的值
写下 actualHours 的新值
所以就这样做了
移动到下一行
有一个 solution 那是一个变量声明
它被设置等于一些东西 但是
首先我先写下这个单词 solution
solution 等于 optimalHours 减 actualHours
我们看这边 optimalHours 的值为56 actualHours 的值为23
现在使用计算器是没有关系的
我之前正好这样做了 我知道56减去23是33
移动到下一行
最后一行是 display(solution)
所以看这边可以知道 solution 的值为33
它将显示数字33
所以 那是我或你或任何人
都可以计算出这个程序的结果
但是真正的问题是 它是否做了对的事
在这里会不会有逻辑错误
或是否有平日睡5个小时和周末睡9个小时的人
在一周的最后可能有33个小时的睡眠时间差
我想要知道你的想法
好吧 快速滑动笔记 现在你已经创建这个 Practice Set 2 应用
所以我只是要告诉你怎样把代码放到 Practice Set 2 应用里
如果你想要测试一下这段代码
我建议首先是手动模拟
它将给你正在做的事的一个更好的理解
但是它也可以把代码加入到 Android Studio 里
测试一下它
所以我的建议是你复制粘贴问题的代码到 onCreate 方法里
代码将在讲师注释里提供
那是你在这里 MainActivity 里看到的第一个方法
好了 只是要很清楚 这里是你 onCreate 方法修改之前的样子
然后你可以粘贴代码 就像我所做的一样
好了 你需要做的另一件事是复制粘贴代码
它将使下面的这一行代码有效
这段代码 我也会把它加入到讲师注释里
你要做的最后一件事是到你的 XML 文件
确保你的文本视图的 ID 为 Id/display_text_view
这应该完全匹配在这里所显示的
只要这两点匹配了 当你运行这段代码时
你会得到屏幕上的输出结果
这可能有一点不清楚 但是它显示的是33
所有的这一切 然后我会试着去手动模拟
并未获得一些帮助让它能在手机上运行
继续 试着确认这个程序是否和预期一样
在下面的小測驗中
我將演示變數實際上是如何使用的
在第2部分你將要編寫的程式將會被編譯
這意味著計算可以理解所編寫的代碼
我們將能夠創建一個應用程式
現在 程式將能夠在電話上運行
它們也可能不會按照預期運行
例如出現邏輯錯誤等
邏輯錯誤意味著你用于編寫代碼的邏輯
出現錯誤
讓我們來看一個小程式
這是一個示例性場景 我將告訴你如何解決這些問題
這里有一個示例
這些程式的每個程式將有一個全域 將會寫在這里
程式本身將位于綠色方塊中
這個程式的目標是計算睡眠不足時間
睡眠時間根據年齡有所變更 但是平均來說
人類平均一晚睡八個小時
因此這個程式嘗試計算一周的睡眠不足時間
此程式的用戶將進行操作并估算他們工作日平均每天
睡眠多少個小時 以及周末平均睡眠多少個小時
對於這個例子 我們假設用戶工作日睡眠五個小時
周末睡眠九個小時
代碼位于綠色方塊中
你要做的第一件事情是讀完這段代碼
并確定目標是否已經完成
然后你要做的事情就是檢查代碼中的每一條聲明
決定屏幕上的實際顯示內容
假設這些方法在這里調用屏幕上顯示的內容
而且有括號
它們之間的代碼將在屏幕上顯示內容
現在有一些問題 它們需要顯示多個內容塊
因此你可以看到display1, display2, display3
如果你仍然在看這個視訊
你可能在想如何解決這些問題
這并不是你第一次使用多個變數
這些變數的值可能會變更多次
我們先做重要的事情
現在我要使用一項名為手動模擬的技術
這項技術模擬計算機的運行
而不需要真實地在計算機上運行代碼
對我們來說 這是一個有條不紊的方法
可以跟蹤變數的變更情況
現在你需要逐行識讀 我們從這里開始
在第一行 我看到一個變數宣告
我寫入變量名 也就是weekday
把它的初始值設定為5
在weekday變數下方 我輸入值5
這代表weekday變數當前存放的值是5
這是第一行 現在我轉到下一行
另一個變數的名稱是weekend 我在這里寫出
這個變數的值是9
好了 看上去還不錯
我要轉到下一行 這是一個宣告
是optimalHours變數的實例化 我將做同樣的事情
我不會寫入值 7*8.
我準備計算出這個值
因為optimalHours變數將會存放這個值
我們來做一個小算數 7乘8等于56
我們在這里進行另一個宣告
我們設定一個名為actualHours的變數 我在這里寫出
它等于weekday的值
這是weekday的當前值
它不是weekday的以往值或weekday的未來值
現在 我們跟蹤weekday的當前值在這里顯示為多少
因此我可以在這里看到 它顯示為5
因此我應該認為它是數字5
因此actualHours等于5
現在我將繼續 并寫在那里
我們轉入下一行
現在我把實際小時數再次變更為
actualHours的當前值加上weekend乘2
在這里我可以看到 actualHours的當前值是5
weekend是9
在這里算式已經設定好了
在做加法之前先做乘法
9乘2等于18 然后再加5
做個小算術 18加5等于23
因此結果是23
現在我要做的是取消舊的實際小時數
寫入新的實際小時數值
好了 完成了
轉到下一行
我們一個n求解 因此這是一個變數宣告
它將等于一個值
但是我想先寫出求解字樣
求解值等于optimalhours減去實際小時數
讓我們轉到這里 optimalhours是56 actualhours是23.
現在可以使用計算器了
前面我們算過 56減23等于33
好了 然后我們轉入下一行
這是最后一行 顯示求解得數
在這里我們可以看到求解值 也就是33
將會顯示數值33
這樣 我 你
或任何人都可以知道程式剛才做了什么
但是真正的問題是 它是否做得正確
這里的某個位置是否有邏輯錯誤
或者 一個人在工作日睡五個小時
在周末睡九個小時 是否在一周結束是會產生三十三個小時的睡眠不足
我想知道你是怎么想的
好了現在你已經創建了一個練習組2應用程式
我要告訴你怎樣在這個練習組2應用程式中放入代碼
如果你要測試它的結果
我建議首先進行手動模擬
因為它會讓你更好理解程式是如何運行的
而且 你能夠把代碼放入Android Studio
并執行代碼
因此我的建議是 你複製指導說明中的代碼
并貼入onCreate方法
這是你在主活動類別中看到的第一個方法
請看清 這是修改之前的onCreate方法的內容
然后你可以在這里貼上代碼 就像我做的這樣
你要做的另外一件事情是在這里復制并貼上
這將會讓這行代碼正常執行
就是這段代碼 我已經把它放入指導說明中
最后一件要做的事情是檢視XML
保證你的文字檢視圖是Id/display_text_view,
這應該與這里顯示的內容完全一致
在執行代碼時 只要這兩項匹配
值就會列印在屏幕上
這有一點不好看到 因為在這里它顯示為33
完成所有這些工作后 我嘗試手動模擬
并想辦法讓它在你的電話上運行
我們繼續進行 看這個程式是否按照期望的那樣執行