Comando de Entrada e Operadores - Curso de Algoritmos #03 - Gustavo Guanabara

2.24M views5352 WordsCopy TextShare
Curso em Vídeo
Aula do Curso de Algoritmos criado pelo professor Gustavo Guanabara para o portal CursoemVideo.com. ...
Video Transcript:
♫ Music ♫ opening Hello, welcome to another class of their current algorithm video My name is Gustavo Ganabara, I am your teacher And this is the third class of your algorithm course In the first lesson we have seen the evolution, history, functioning and what is an algorithm In the second we saw output commands What are the simplest things And now we will start working interactivity and arithmetic operators So once again you need to download the package Then, go to the area of ​​the algorithm of course, download your package And you'll have the VisuAlg, will have all the tools that we will use here So let's go straight to the content that we have scheduled for today So as I said, we will start working interactivity With our input commands Last lesson, we saw the output of commands that are the "Type" and "Escreval" The function of the command output is exactly as the name implies, generate an output Show something on the screen Following the same reasoning An input command would be a way for you to enter data on the computer Then, the output command will show something to you, will show an output And the input command will ask something to the user who is using the system Let's start with a simple example, you will be able to reason Because we saw this last class Let's start with a simple example using only assignments So I'll put here the basic structure of an algorithm that we saw last class So begins with the word algorithm, quotes puts the name of the algorithm I'll call MyName and we have two areas The area of ​​variable declaration, which is at the top And the program of the body that is between Home and FimAlgoritmo What we'll do here is to declare a variable "name" type character And just remember, variables are areas in memory that will store values In this case here, I'm creating a variable called name And that will save a value of type character, so whatever is in quotes, can be saved in this variable And this will be the only variable that we will work in this simple program Right after the start I'll just do an assignment What is "name" gets "Gustavo" Just to remind the assignment symbol is a representation of an arrow Which is made with a smaller sign and a minus sign with no space between them This line you are seeing now will be read as follows Name receives Gustavo And the variable "name" to be character can receive the value "Gustavo" in quotes Next, I will use an output command is the "type" I put there, write, be happy, comma name And then you must remember that last class When I put the "Write" and place two comma-separated values I'm asking the VisuAlg show me two things First the "Nice to meet you" and then immediately the contents of the variable name Then this is the program I suggested here In my case if I run this program, it will write "Very pleased Gustavo" on screen But there we have a big problem This program will work only showing "Very pleased Gustavo" And no, the user name that is using the program It would be great if we had a way to ask the user name at the beginning of the program For example, "What is your name? " or "Enter your name here" And then the user types his name, for example Glaucio, Glaucio great friend Glaucio Cancion Huh? Who works there as hell with the growth course in video Glaucio a big hug, brigadão!
So Glaucio type his name and will appear "Very pleased Glaucio" So that's the interactivity that we will create with the input commands Is there a way to do this is very simple and I'll show you how do you do now So as I said, you can have a command, you know, "Enter your name" That will be done by the "type", we have seen And right then, I want to wait for the user to enter a name For that, I'll use the command: Read And the command "Read" is exactly why this class, are the input commands The Read is the input command that we will use by default And all programming languages ​​have input commands For you can create interactivity with users we understand how the command syntax "read" considering that there is still one name variable within our program I'm showing here is an excerpt apena Then shortly after Read I will put in parenthesis the variable "name" Variable that had already been declared up in the program let us understand how this procedure of "Read" returning to our famous and known memory that closet I put in the last class for you. Basically, I have the statement and I have a defined variable that is my "name" character variable When I use the command: Read (Name) basically the cursor will start flashing on the screen and the user could type something For example here, I will enter the most beautiful name in the world Gustavo I do not need to type in quotes Quotes are only to show that this is a string When I type Gustavo and press "Enter" Automatically this string is placed in the variable name You get the idea? The instruction "Read" is very simple and works for characters pros numeric types integer and real for any given primitive that exists in the language then I have here the command "read" and a variable everything that is entered by the user It will be placed directly on that variable within the brackets so now you can rewrite that program in a more interesting way we put here the basic structure of an algorithm, the same structure as we saw earlier and let define a variable: Name as we did earlier also from now on, if you remember well the first thing we did in the previous algorithm was "Name" gets "Gustavo" from now will not be it, because it will not only work for a name What I will do here is to put a: Write ( "Enter your name:") and then immediately one: Read (Name) and from there you will be able to type what you want Lastly I will use another type command to put one ( "very pleased" and the user name it became clear that, or got a little confused?
If you got confused, open your VisuAlg pause the video on the screen where is the code I showed you enter this code and press F9 to run the program and see how it works as it is the first lesson, I'll show you in a more interactive way how it will work all here then came to me, now you will understand we put here on the screen and a display memory on the right, let's see line by line how the algorithm works first line of our algorithm is "MyName" then nothing will happen on the screen and not in memory then soon we will have the area of ​​variable declaration where I'll have the variable "Name" type: Character automatically, we will have in memory a definition of a "name" variable type: character we will start our program and the first instruction is: write ( "Enter your name:") As the "Write" is an output command it will show "Enter your name" on the screen. The next command is: Read (Name) from there, the program will be stopped, waiting for the user to type something I will enter my name: Gustavo and press "Enter. " When I press "Enter" Automatically String Gustavo will be placed in the name character variable.
So what we have here is the computer's memory, with a variable named name and its contents, Gustavo. Our next command, we will see in two. First part is: Write "Very pleased" this will generate an exit "Nice to meet you" on the screen, and then it prompts show, after the great pleasure the contents of the variable name.
If you look in the right corner of the screen, in memory, there is the content of the variable name. With Gustavo content. Soon, it will show "Very soon Gustavo.
" Speak the truth . . .
It was easy now right? So if you are already a user who has had algorithm class, sure you already know this Plus you should also remember that when he had difficulty studying these things to illustrate We'll put your hands dirty now and make a practical exercise More before leaving pro practical If you realize there my algorithm did not finish the lack FIMALGORITMO Now yes We can start to practice And the practice that I'm going to suggest is simple and every teacher is just the beginning of classes I want to ask number two for the user And I want to show the sum between them So basically what I want it is as if I came to you and falace like this: Speaks two numbers for me? Oh you tell me 3:05 Oh I tell you: The sum of 3:05 is 8 That's exactly what I want our program to do is very simple, more do not forget we are at the beginning So what we have to do It is from pro VISUALG Come on, then here is our open VISUALG If it is empty we will put exclamation (!
) + CONTROL + SPACE it will create the basic structure of my algorithm We'll put here basically I want two numbers, so I'll have two variables I will call "N1" and "N2" I can make the statement of two variables at the same time, doing so (as shown in the 3rd line) So I have: Variable N1, N2 variable, which are integers First thing I will do is ask the user to enter the two numbers I will not ask him to enter two direct numbers, I will first ask them to enter a number, And after he enter another. I'll put there: write ( "Enter a number:") Read (N1) Write ( "Enter another number:") Read (N2) So here, I made two "Leias," a Read to fill the variable N1, and other Read to fill the variable N2 Let's run and see if far, all're working perfectly. So here we open the program, and the first thing he does is ask: "Enter a number:" Note here, the cursor is flashing effect of the Read command, which is exactly the command that is running And you can see here, the blue arrow Let us enter a number: 3.
I will press "Enter" When I press "Enter", automatically you will see here (which shows the cursor) We have the variable N1, integer with value 3, N2, is integer and is still with the value 0 But now, the blue arrow is exactly the Read N2. All I enter here, will be placed directly in the variable. So if I type here: 5, when I press "Enter" you will realize that this 5 will go to N2 variable.
What is in memory representation here (which shows the cursor) I will press "Enter", and he has shown 5 here And of course, it happens for a reason, you did not send add up the numbers, You did not send the numbers show, you simply used four commands, A Write a Read a Write a Read. What he did was exactly the four commands. Although it appears that yes, computers do not do anything automatically.
It automatically does for you is that user, for who is programmer, the computer has to be Well warrant, if you have 20 steps to give, you have to clearly specify which These twenty steps, and each of the substeps of this routine. So we will complete our program sending add these two numbers and show the result To conclude the execution, or you close the red button, or press the Esc key keyboard, and you can continue. What am I missing here is to add those two numbers.
I think it is clear that we have to make N1 + N2 The result of this expression has to be placed in a variable. The first thing I will do here is to put a variable S, to save the sum, And I do here, that S receives the result of N1 and N2. It was clear?
I will not use the command read to read the sum. So if I asked two pro user numbers, I will not need to ask what is the sum of them The computer is able to do this. So basically, two variables will be to be used with the Read command, Pro user types.
The sum you will not need to type, so I have Read (S) I'll have S <- N1 + N2. We will have to show S. Simply put.
The simplest way possible I'll put here: Type (s) Let's run the program and see how it behaves. I will organize the screen here. For you able to see the two So, first, he has shown "Enter a number".
He is standing in the Read (N1). I will type 7 Pressing Enter, he calls another number, I will put 3 And then soon it will add 7 3, and will show on the screen the value 10, which is the result of 7 + 3. Simple, is not it?
So let's make it just a little more interactive, to show what would that 10 pro user, It is the sum of the values ​​he entered. Again we close and I'll change this here Type I'll put here quoted: "The sum is" comma S. Important to note that this space that I put after E It is very important because otherwise it will paste the sum of the number on the letter E, and this space has to be given within the quotation marks.
Let's run again, First number, 9. Another number, 4. The sum is 13 And if you want to create the most interactive thing still having a little bit more work, accounting for more users, you can make a very interesting thing.
Let's have improved here I'll put: The sum of, unquote, comma, N1, comma and semicolon, N2, and I quote It is equal to S. Then realizes the following O here. That was Type giant.
It will show: "The sum of" logo will then show me the N1 content, logo will then show me another string "and" soon after, the N2 content, then will show me, "equals" and finally, the contents of the variable S. And you can do that normally without any problem. A Type accepts multiple values ​​within a command.
Just separate them with commas. Let's see how it works, and how it behaves. Running the program again.
Enter a number: 5 after: 1 What he will show me is: "The sum of 5:01 is equal to 6". And you will agree with me that this output is much more elegant, is much more interactive even giving you more work. But what I always tell my students is pros: In the computing area, who have to work is you, the programmer, not the user.
The user does not have to guess what is a number that appeared on the screen nothing. You, when you use something when you access a website, and a number appears out of nowhere, you're troubled, you do not know the outcome. So why you, as a programmer, It is not concerned with the interactivity of your program to its users?
We will continue here. So the practical proposal that was here, the result was something like that. Then we have the algorithm values The three variables N1 N2 and S We have two groups of Write and Read The sum is calculated by an expression And finally a command to display the sum screen And if you noticed, we use without me explain, the plus (+) operator This operator, it is the addition between two variables or two values The plus symbol is universal, so I did not need or explain But the algorithms, there are some operators who are not so simple And so we need to study the arithmetic operators Operators supported by visualg and the most languages ​​are: The addition operator and subtraction are universal You use the + for addition and - for subtraction Multiplication and division are a little different The multiplication is made by * And not by a point or by an x The division is made by a slash to the right (/) If we do this slash to the left we have the entire division The exponentiation is done through the caret (^), and finally the percent sign (%) calculates the module To illustrate I created a small expression for each of the arithmetic operators Let us consider for this third column of the table the values ​​of A and B for 5 to 2 So in each of them we'll do For example in the first A + B, where A and B worth 5 worth 2 We will repeat this for all rows in this table The first is simple, 5 + 2 = 7 The second also sengue the same line of reasoning 5-2 = 3 Then let's go multiplication, 5 x 2 = 10 Then we go to division 5 ÷ 2 = 2.
5 And here fit two important observations 2:05 are integers, but dividing the two do not necessarily I will have an integer result So there is a whole division operator And the second point I want to make is that two and a half is not 2. 5 as agent're used here in Brazil It is 2. 5 which is the decimal separator there in the United States The entire division, she will pick up exactly the division of A by B is 2.
5, and catch only the integer part That's A \ B will give 2 and note that I'm not rounding, I'm talking about the whole of the division Exponentiation is also simple o worth 5 and B worth 2, 5 raised to 2 of 25 Finally we have the module line and the modulus is also known as the remainder of the division I will assemble the division here for you to see if will understand WHAT I'm talking about We will set up here on the right corner 5 divided by 2 5 divided by 2 will give 2 and left 1 This 2 that is coming up with a result of the division It is precisely the use of the operator backslash (\), which is integer division You can see that in the entire division of the column we have the 2 result The module is exactly the remainder of the division Then just below the 5 we have the rest of the division is 1 Since 2 x 2 is 4 and 1 to 5 remains This rest of the division is exactly WHAT the% operator returns And we will make use of this operator in a few classes when agent is studying conditional structures So this are the seven arithmetic operators that we have in visualg and here comes a very important thing you have to know the order of precedence the order of precedence, It indicates the order that operators will be considered within the same expression whenever we have an arithmetic expression, WHAT will be considered first is the parentheses Soon after the operators of "exponentiation" after Multiplication and division and finally Additions and subtractions let's see two examples here, which appear to be similar more will have different results In both the above example as in the low node we have 3 + 2/2 but in the first year note that even the "addition" appearing before if you look at the left of the table The "multiplication" and "division" has a higher order of precedence in the first case we will do first: 2/2 giving 1 and add this result "1" to "3", which will give me the result "4" In the second I got the parentheses, indicating that I want the "sum" is first made and if you look also in the left table you will see that the "parentheses" has the highest order of precedence of all so the first thing I will do is add 3 + 2 that will give "5" and then divide the result by "2", which will result in me "2. 5" (Two and a half) It was clear ? so whenever you are creating an expression use the "parentheses" to guide the order of execution of operations according to what you want let's make a change that our program to add two values for him to average, and you'll see what I'm talking about So here we have our algorithm, which will treat the values ​​here I will change the name of my variable "S" to "N" and it is clear that I will calculate an average This is not required is more a cleaner programming so I have here a number N1 N2 another number, and I will make the average between these two numbers The average between these two number is N1 + N2 / 2 put here: The average between N1 and N2 is equal to both And if you are smart and are attentive, you will see that I just generate a wrong statement here I will run because it happens too often For novice users we run this program, I'm already warning that it will give error The more we will see what will happen and how to solve it Right from the beginning you will run the program, it will work normally "7" was the first number "3" for the second number When I press ENTER it will add "7" to "3" that will give "10" and divide by "/ 2" that will give "5" But when I press it give me a error message there you may be wondering this "7" to "3" ten divided by two "5" What problem in that I have a whole number added with another integer divided by "2" resulting in other integer The big problem is that when I use the division operator automatically the language no longer works with integer values but only with REAL values We will solve it in a very simple way, declaring EME (M) as a REAL number so let's click here to finish He will tell me where the mistake was assigning values ​​of EME variable (M) and he indicated to me that there is a REAL type of problem for ALL Let's click OK He leaves marked the line where it detected the error Sometimes the error is not this line he scored, but in the previous row More keep an eye in this case he hit I will take the variable EME (M) FULL I will declare in low EME (M) as a variable REAL remembering REAL numbers are those numbers that have a decimal part, this is to have the comma (,) or floating point Let's run again Let's put "7" and "3" He made a mistake here I'm still using the "S" here at the end Obviously you have to modify for EME (M) again "7" and "3" And now he has put the average between "7" and "3" is equal to "5" Make another example here "9" and "7" average "8" we do a number to give REAL, "2" and "3" average (2.
5) two and half Get the idea? And now I will make a change by removing the parentheses of expression and you will see that actually the result will go wrong I will come here in the expression and will take the brackets of N1 and N2 Let's run, let's put the same values ​​that we put at the beginning "7" and "3" "7" and "3" will give "10" (/ 2) divided by two "5" If I press Enter it will give me (8. 5) eight and a half This is for a simple reason that he does is to first place (3/2) three divided by two That will give (1.
5) one and a half and that (1. 5) one and a half will be added to "7" resulting in (8. 5) through eight This happens thanks to the order of precedence.
This is not exclusive of the algorithms, this is a mathematical question And speaking of mathematics, arithmetic, this whole thing that you can not be afraid of it The VISUALG has some functions for arithmetic processing of numbers Let's see some of them: Some arithmetic functions that exist in VISUALG are: ABS is for the absolute value EXP for exponentiation INT for ENTIRE value SQRT for square root IP to return the value of PI (SEN) sine, (COS) and cosine (TAN) tangent for both values ​​in radians But as we are used to treat sine, cosine and tangent with values ​​DEGREES There is also a function (GRAUPRAD) DEGREE to radian What is the P-GRADE-RAD, which is DEGREE for RADIAN analogously I created a column here with several examples for us to work with them ABS is the absolute value So for example if I put ABS "-10" it will return me the value "10" that is the absolute value It is the value without the sign The exponentiation takes two parameters I'm laying there is not the exponentiation (3. 2) three point two Also because REAL numbers are represented by point What I'm saying here is that I want "3" superscript "2" (3²) three squared "9" you can use the EXP function Or the caret operator we saw earlier The INT function will return the integer part of a number For example there, I put INT (3. 9) "3.
9" is a REAL number what it will do is return me only the integer part is "3" Note! I have not spoken to rounding I spoke only in whole part SQRT will return the square root of a number, so if I put there SQRT "25" It is 5. Whenever I use Pi without any brackets, it will always return me the number Pi: ​​3.
1415 . . .
something. Functions Sine, Cosine and Tangent, are the same used by mathematics. 0523 is approximately in radians what we have 30 degrees.
Thus, Seno 30 is 0. 5. Cosine of 30 is root of 3 over 2.
And tangent 30 is root 3 on 3 If you want to know how much happens in radians a measure in degrees, you can use, for example, 30 degree to radian. He will return me 0523, we are using in the examples above. I was here to ask you a favor: Do not be alarmed by the amount of numbers, expressions and terms used in mathematics.
Mathematics're in our life, we have a tendency to be afraid of it the wrong way I show here for you some uses of these functions we just saw within an algorithm. Do not forget to always keep your open VisuAlg and practice everything that we're doing Again I say, do not learn anything in life without practicing. I will start a new program.
I will delete, Exclamation, Ctrl + Space, I will create a variable of the type Integer I will make the receive, for example, Abs -50 Soon after, Type A This assignment, when I run it will show me the value 50, which is the absolute value of -50. Let's make an example here of Exponential. Let exponenciar here 9 to 5 th power, I will change here Integer to Real, for him not to trouble with large numbers.
59,049 is 9 to the 5th power. Let's use, for example, here, Square Root. How much is the square root of 81?
Nine! And I can also join various expressions such as, I can put here, what is the square root of 90 Root 90 is Square 9:48 . .
. but I just want the whole of this then I put it all in parentheses, and only use the integer part. So what is the whole part of the root of 90?
Only nine. I, too, we put here Degrees conversion Radian 90 degrees Running: 90 degrees to radian is approximately 1. 5707.
If I want, I can put what the Seno 90. So we convert 90 to radians, and report this to Seno function, Only accept values ​​in radians And if you remember well that circle there mathematics, the sine of 90 is 1. Running: The result of Seno 90 is 1.
It was clear? So now you have tools to play with what you want. Want an example?
Let's create here: So I'm here with a new program, and I will call here the "Converter". I will ask an angle, it will be real, and I'll have a variable S also is pro Seno's angle And I'll put on the screen: Type ( "Enter an angle"). Read (angle).
The S will be exactly Seno this angle converted Degree to Radians Lastly, Write ( "The Seno of" angle, "equals", S). Pause your video class, type it in VisuAlg and then immediately run the program. I'll run my here.
Let's put: Enter an angle, 90. The Seno 90 is equal to 1. I will run again: 30.
30 Seno is 0. 5. You get the idea?
And with that you can do anything For example formula Bhaskara, rectangle area calculation Triangle area, what you want! Now you know the arithmetic operators and a number of arithmetic functions within the visualg And the only way to learn is to practice! So from now agent is ending the class, but you have a lot of work here in visualg Invents anything, asks the user to enter any information Perform any expression and see the result Do not forget to practice using brackets, the use of operators, the use of arithmetic functions Use the command "READ", and also the use of variables and their primitive types In the next lecture agent will continue with formatting numbers Some other operators are the relational operators and the logical operators And you will continue your walk to become a great programmer!
Again, I wanted to invite you to subscribe to the channel VIDEO COURSE Clicking on this button You will have access to all classes There the sign button on the side has a "engrenagenzinha" You can mark "I want to receive emails whenever you leave one video new class" You can put there, agent only puts video lesson quality You will be notified by e-mail, you will not miss any classes By clicking here you will have access to all classes Only algorithm course Then by clicking here you will get the playlist prissy Of all the classes that agent released so far This is the third But it may be that you have arrived and already has the full course of algorithm there for you Just as at that time there is already full course of HTML5 For you can create sites And all this you will find where? www. cursoemvideo.
com There you will see all the courses that are being created by our team Quality and for free! You will not be charged anything about the course lectures on video Agent can eventually sell some product DVD, shirt, something But their packages are free, your lessons are free! You only helps agent if you want Then I wanted to send a hug to everyone For everybody who is sharing, for everyone who is thanking The compliments are very important, keep praising Keep taking your questions on our facebook channel In our comments, by contacting me directly if you know me So keep your studies on time Studying is very important I want to meet you anywhere there In the event, the street, anywhere And you say, "Look I know now set for you, thank you!
" And I'll be very happy and very proud of it A big hug, good studies until the next class!
Related Videos
Operadores Lógicos e Relacionais - Curso de Algoritmos #04 - Gustavo Guanabara
26:41
Operadores Lógicos e Relacionais - Curso d...
Curso em Vídeo
1,494,745 views
Primeiro Algoritmo - Curso de Algoritmos #02 - Gustavo Guanabara
35:47
Primeiro Algoritmo - Curso de Algoritmos #...
Curso em Vídeo
3,371,777 views
Estruturas Condicionais 1 - Curso de Algoritmos #07 - Gustavo Guanabara
27:35
Estruturas Condicionais 1 - Curso de Algor...
Curso em Vídeo
1,142,691 views
Do Zero ao Profissional: Construindo um Projeto Profissional
34:34
Do Zero ao Profissional: Construindo um Pr...
Okivula Tech
53 views
Introdução ao Scratch - Curso de Algoritmos #05 - Gustavo Guanabara
24:57
Introdução ao Scratch - Curso de Algoritmo...
Curso em Vídeo
1,008,277 views
Curso Básico de Python 2024 - Aula 1 - Introdução ao Python
36:12
Curso Básico de Python 2024 - Aula 1 - Int...
Hashtag Programação
63,849 views
Hypermind Music — Limitless Productivity Playlist
57:06
Hypermind Music — Limitless Productivity P...
Chill Music Lab
4,801,056 views
Curso de C# - Aprenda o essencial em 5 HORAS
5:00:01
Curso de C# - Aprenda o essencial em 5 HORAS
Victor Lima - Ciência da Computação
689,936 views
Estruturas de Repetição 1 - Curso de Algoritmos #09 - Gustavo Guanabara
31:11
Estruturas de Repetição 1 - Curso de Algor...
Curso em Vídeo
1,388,006 views
What is JavaScript capable of doing? - JavaScript Course #01
28:50
What is JavaScript capable of doing? - Jav...
Curso em Vídeo
2,670,971 views
Funções - Curso de Algoritmos #13 - by Gustavo Guanabara
36:09
Funções - Curso de Algoritmos #13 - by Gus...
Curso em Vídeo
518,347 views
Curso de Power BI Gratuito 2024 | Dashboard do Zero | Mercado de Trabalho e Entrevista de Emprego
41:09
Curso de Power BI Gratuito 2024 | Dashboar...
Excelente João
22,327 views
Procedimentos - Curso de Algoritmos #12 - Gustavo Guanabara
34:28
Procedimentos - Curso de Algoritmos #12 - ...
Curso em Vídeo
669,034 views
Productive Work Music — Tony Stark's Concentration Mix
45:33
Productive Work Music — Tony Stark's Conce...
Chill Music Lab
10,051,495 views
Curso Python #01 - Seja um Programador
29:07
Curso Python #01 - Seja um Programador
Curso em Vídeo
8,154,463 views
TUDO QUE VOCÊ PRECISA SABER DE PROCESSADORES EM 26 MINUTOS
26:33
TUDO QUE VOCÊ PRECISA SABER DE PROCESSADOR...
MW Informática
104,952 views
Exercícios de Algoritmo Resolvidos - Curso de Algoritmos #06 - Gustavo Guanabara
26:30
Exercícios de Algoritmo Resolvidos - Curso...
Curso em Vídeo
1,110,164 views
Estruturas de Repetição 2 - Curso de Algoritmos #10 - Gustavo Guanabara
29:59
Estruturas de Repetição 2 - Curso de Algor...
Curso em Vídeo
875,479 views
Regular Expressions (Regex) Tutorial: How to Match Any Pattern of Text
37:55
Regular Expressions (Regex) Tutorial: How ...
Corey Schafer
1,292,197 views
Copyright © 2024. Made with ♥ in London by YTScribe.com